00001 /*! 00002 00003 $Id$ 00004 00005 Last update to: 00006 Id: Readme-Questions 150 2008-08-24 15:25:30Z maire 00007 00008 00009 \file "jour3c/.Readme-Questions" 00010 \brief L'exercise de jour3c 00011 00012 \mainpage jour3c 00013 00014 \section s1 GEOMETRIE 00015 00016 Une navette spatiale est modelisee par un cylindre d'Aluminium. 00017 A l'interieur de la cabine se trouve un plancher, egalement en Aluminium. 00018 La navette est placée dans l'espace ('World') : une boite aussi petite que 00019 possible. 00020 00021 Un (mini)astronaute est placé sur le plancher. 00022 00023 00024 \section s2 COMMENT DEMARRER ? 00025 00026 - lire le code : jour3c.cc (main) et les 5 classes DetectorConstruction, 00027 DetectorMessenger, PhysicsList, PrimaryGeneratorAction, 00028 PrimaryGeneratorMessenger. 00029 00030 - compiler et generer un executable : 00031 \verbatim 00032 % gmake 00033 \endverbatim 00034 00035 - executer jour3c en mode interactif avec visualisation : 00036 \verbatim 00037 % $G4WORKDIR/bin/$G4SYSTEM/jour3c 00038 .... 00039 Idle> /run/beamOn 1 00040 .... 00041 Idle> exit 00042 \endverbatim 00043 00044 \section s3 CORRIGE et COMMENTAIRES de jour3b 00045 00046 a remplir 00047 00048 \section s4 EXERCICES 00049 00050 \subsection s But 00051 00052 On veut calculer la 'depth dose distribution' = profile longitudinal 00053 de la dose recue par l'astronaute. Cela revient a couper l'astronaute en 00054 tranches (slices) le long de son axe des z et a sommer l'energie recue dans 00055 chaque tranche. 00056 00057 Pratiquement, on ne decoupe pas le volume de l'astronaute. Dans RunAction on 00058 creer un tableau m_depthDose[nbSlices]; chaque entree de ce tableau contiendra 00059 la somme de l'energie deposee dans le slice correspondant. 00060 00061 A la fin du run, on ecrira ce tableau dans un fichier ascii. 00062 00063 \subsection sub1 Question 1 00064 00065 Dans RunAction le tableau m_depthDose est deja defini comme donnee membre : 00066 voir RunAction.hh. On utilise std::vector parce que la dimension du tableau 00067 (le nombre de slices) peut etre defini dynamiquement. 00068 00069 Ce tableau est construit et initialise dans RunAction::BeginOfRunAction(). 00070 Question : pourquoi ici, et non pas dans le constructeur de RunAction ? 00071 00072 \subsection sub2 Question 2 00073 00074 Le code pour remplir le tableau m_depthDose est deja implemente dans 00075 SteppingAction, mais desactive. 00076 Commentaires sur ce code (pour plus d'informations, voir la doc Geant4) : 00077 00078 a) trouver le point ou l'on veut deposer l'energie. G4Kernel travaille en 00079 'coordonnees absolues', c'est a dire dans le systeme de reference du World. 00080 00081 b) convertir ce point en coordonnees locales, c'est a dire dans le systeme de 00082 reference du volume 'astronaut'. 00083 00084 c) en extraire la coordonnee zLocal (hauteur de l'astronaute). 00085 00086 d) passer l'information 'energie deposee a l'altitude z' a RunAction qui 00087 calculera le numero du slice correspondant et sommera edep dans m_depthDose[n] 00088 00089 Question : ecrire cette fonction RunAction::SumDepthDose(zLocal,edep). 00090 Activer le code dans SteppingAction. 00091 00092 \subsection sub3 Question 3 00093 00094 Dans RunAction::EndOfRunAction(), convertir le tableau m_depthDose de 'energie' 00095 en 'dose'. 00096 00097 \subsection sub4 Question 4 00098 00099 Ecrire une fonction RunAction::WriteDepthDose(G4String fileName) pour creer 00100 un fichier tel que celui donne en exemple : depthDose.ascii 00101 00102 (On pourra s'inspirer de l'exemple TestEm11 : HistoManager::saveAscii() ) 00103 00104 \section s5 CORRIGE : voir jour3d 00105 00106 */