00001 /*! 00002 00003 $Id$ 00004 00005 Last update to: 00006 Id: 00007 00008 00009 \file "jour4b2/.Readme-Questions" 00010 \brief L'exercise de jour4b2 00011 00012 \mainpage jour4b2 00013 00014 00015 Cet exercice est decoupe en trois petits exercices : 00016 00017 - jour4a --> jour4b1 : implementation d'un sensitive detector 00018 pour collecter les depots d'energies 00019 dans les tranches, ces depots etant 00020 sommes dans un tableau du RunAction. 00021 - ->> jour4b2 --> jour4b3 : implementation d'un format de hit, 00022 d'une collection de hits et relecture 00023 de ces hits dans EventAction, avec 00024 a nouveau sommation dans un tableau 00025 du RunAction. 00026 - jour4b4 --> jour4b5 : utilisation de "scorers" pour collecter 00027 des hits. 00028 00029 \section s1 GEOMETRIE 00030 00031 Une navette spatiale est modelisee par un cylindre d'Aluminium. 00032 A l'interieur de la cabine se trouve un plancher, egalement en Aluminium. 00033 La navette est placée dans l'espace ('World') : une boite aussi petite que 00034 possible. 00035 00036 Un (mini)astronaute est placé sur le plancher. 00037 00038 00039 \section s2 COMMENT DEMARRER ? 00040 00041 - lire le code des classes: 00042 - AstroHit <<-- new 00043 - AstroHitCollection <<-- new 00044 - SensitiveDetector 00045 - EventAction 00046 - RunAction 00047 00048 - compiler et generer un executable : 00049 \verbatim 00050 % gmake 00051 \endverbatim 00052 00053 00054 \section s4 EXERCICES 00055 00056 \subsection sub1 But 00057 00058 On montre un exemple d'utilisation des outils de Geant4 pour definir 00059 des hits et des collections de hits. 00060 00061 Dans le cas present de notre exercice, soyons clairs : c'est un peu 00062 prendre un marteau-pilon pour ecraser une mouche. La mise en place 00063 de cette infrastructure pour gerer les hits et les collections de 00064 hits demande en effet un certain investissement, qui ne se justifie 00065 pas dans le cas de notre exemple simple. Cette infrastructure est 00066 en revanche bien utile dans le cas de grosses applications, avec 00067 beaucoup d'informations a collecter, de differents endroits. 00068 00069 Mais revenons a notre exemple... ;-) 00070 00071 o AstroHit: 00072 00073 Nous commencons par definir notre format de hit : AstroHit. Ici nous 00074 gardons comme information: 00075 - le numero de tranche 00076 - l'energie cumulee dans cette tranche 00077 En plus de cela, les methodes "new" et "delete" sont surchargees, 00078 ceci pour des raisons de performance (mais pour nous ici, ce n'est 00079 pas un probleme, c'est juste pour montrer comment faire). 00080 00081 o AstroHitCollection: 00082 00083 Les hits que nous allons crees seront places dans une collection 00084 de ce type. Cette collection est creee en debut d'evenement par 00085 le SensitiveDetector, qui "l'accroche" au G4Event. 00086 Cette collection est accessible dans l'EventAction, au travers 00087 du pointeur sur le G4Event, passe en argument. 00088 00089 o SensitiveDetector: 00090 00091 La methode ProcessHits(...) est modifiee pour creer les hits 00092 et les inserer dans la collection. 00093 La methode Initialize(...) a ete modifiee aussi pour creer 00094 la collection en debut d'evenement et "l'accrocher" au 00095 G4Event. Des lors, c'est le kernel qui se charge de gerer la 00096 collection, et, en particulier, c'est le kernel qui fait le 00097 delete de cette collection avant de passer a l'evenement 00098 suivant. 00099 00100 00101 o EventAction: 00102 00103 Dans EventAction::EndOfEventAction(const G4Event* event), on montre 00104 comment acceder a la collection creee, et les hits pour les 5 premiers 00105 evenements sont imprimes. 00106 00107 o RunAction: 00108 00109 Une methode nouvelle methode SumDepthDose(G4int, G4double) qui permet 00110 d'ecrire dans le tableau m_depthDoseSD en passant le numero de tranche 00111 (et pas le z) est definie. 00112 00113 00114 \subsection sub2 Question 1 00115 00116 On se propose d'enrichir la classe AstroHit pour avoir comme informations: 00117 - l'energie moyenne des protons passant dans la tranche 00118 - le nombre de protons passant dans cette tranche 00119 00120 Que faut-il modifier pour avoir ces informations ? 00121 00122 \subsection sub3 Question 2 00123 00124 Accumuler les quantites des hits pour des runs entiers et modifier 00125 l'ecriture du fichier depthDoseSD.ascii pour ajouter le nombre de 00126 proton et l'energie moyenne de ces protons. 00127 00128 00129 \section s5 CORRIGE : voir jour4b3 00130 00131 00132 */