jour4a
1.0
Cet exercice est decoupe en trois petits exercices :
- --> jour4a --> jour4b1 : implementation d'un sensitive detector pour collecter les depots d'energies dans les tranches, ces depots etant sommes dans un tableau du RunAction.
- jour4b2 --> jour4b3 : implementation d'un format de hit, d'une collection de hits et relecture de ces hits dans EventAction, avec a nouveau sommation dans un tableau du RunAction.
- jour4b4 --> jour4b5 : utilisation de "scorers" pour collecter des hits.
Une navette spatiale est modelisee par un cylindre d'Aluminium. A l'interieur de la cabine se trouve un plancher, egalement en Aluminium. La navette est placée dans l'espace ('World') : une boite aussi petite que possible.
Un (mini)astronaute est placé sur le plancher.
- compiler et generer un executable :
On utilise un 'G4VSensitiveDetector' pour calculer le meme profil longitudinal que dans les exercices precedents. Dans ces exercices, le code permettant d'extraire les energies deposees etait place dans le 'SteppingAction'. Nous allons ici 'transplanter' ce code dans la classe 'SensitiveDetector', qui herite de la classe de base 'G4VSensitiveDetector'.
Pour faciliter la comparaison entre le profil de dose ecrit depuis le SteppingAction et le SensitiveDetector, un fichier ascii 'depthDoseSD.ascii', similaire a 'depthDose.ascii' est ecrit en fin de run. Pour ce faire, le RunAction est dans cet exemple equipe d'un tableau 'stdvector<G4double> m_depthDoseSD;' similaire au 'stdvector<G4double> m_depthDose;', et qui peut etre ecrit avec la methode 'SumDepthDoseSD(G4double, G4double)'.
Examiner la classe
SensitiveDetector, et sa methode ProcessHits. Dans le
DetectorConstruction, un objet
SensitiveDetector est attache au volume logique 'logicAstronaut'. Identifier la facon dont cela se fait.
La macro 'vis.mac' positionne /tracking/verbose 1. Executer jour4a en mode interactif avec visualisation :
% $G4WORKDIR/bin/$G4SYSTEM/jour4a
La methode ProcessHits imprime a l'ecran le numero de step plus un commentaire chaque fois qu'elle est appelee. A quels moments apparaissent ces prints ? Quelle difference par rapport au SteppingAction ?
Une nouvelle serie de commandes apparait dans le menu 'help'. Laquelle ?
Essayer des commandes comme:
% /hits/list
->> a quoi correspond le nom affiche ?
% /hits/inactivate astronautSD
% /hits/list
->> le SensitiveDetector est inactive.
Comment s'assurer que c'est bien le cas ?
% /hits/activate astronautSD
% /hits/list
->> le SensitiveDetector est re-active.
S'assurer que c'est bien le cas.
Dans
SensitiveDetector::ProcessHits(...) implementer le calcul de dose de facon similaire a ce qui a ete fait dans le
SteppingAction (le code du
SteppingAction est rappele en commentaire dans ProcessHits).
Utiliser RunAction::SumDepthDoseSD(zLocal,edep) pour ecrire dans le vecteur prevu a cet effet dans le RunAction.
Processer une statistique raisonnable. Comparer les sorties 'depthDose.ascii' et 'depthDoseSD.ascii'. Ces sorties sont elles similaires ? Pourquoi ne sont elles pas strictement identiques ?