Geant4 Cross Reference |
>> 1 $Id$ 1 ---------------------------------------------- 2 ------------------------------------------------------------------- 2 3 3 ========================================= 4 ========================================================= 4 Geant4 - an Object-Oriented Toolkit for S 5 Geant4 - an Object-Oriented Toolkit for Simulation in HEP 5 ========================================= 6 ========================================================= 6 7 7 Example B3 8 Example B3 8 ---------- 9 ---------- 9 10 10 This example simulates schematically a Positr 11 This example simulates schematically a Positron Emitted Tomography system. 11 << 12 12 1- GEOMETRY DEFINITION 13 1- GEOMETRY DEFINITION 13 14 14 The support of gamma detection are scintill 15 The support of gamma detection are scintillating crystals. A small number 15 of such crystals are optically grouped in a 16 of such crystals are optically grouped in a matrix of crystals. In 16 this example, individual crystals are not d 17 this example, individual crystals are not described; only the matrix of 17 crystals is and it is still called 'Crystal 18 crystals is and it is still called 'Crystal' hereafter. 18 19 19 Crystals are circularly arranged to form a 20 Crystals are circularly arranged to form a ring. Few rings make up the full 20 detector (gamma camera). This is done by po << 21 detector (gamma camera). This is done by positionning Crystals in 21 Ring with an appropriate rotation matrix. S << 22 Ring with an appropriate rotation matrix. Several copies of Ring are 22 then placed in the full detector. << 23 then placed in the full detector. 23 24 24 The head of a patient is schematised as a h 25 The head of a patient is schematised as a homogeneous cylinder of brain 25 tissue, placed at the center of full detect 26 tissue, placed at the center of full detector. 26 << 27 27 The Crystal material, Lu2SiO5, is not inclu << 28 The Crystal material, Lu2SiO5, is not included in the G4Nist database. 28 Therefore, it is explicitly built in Define 29 Therefore, it is explicitly built in DefineMaterials(). 29 << 30 30 2- PHYSICS LIST 31 2- PHYSICS LIST 31 32 32 The physics list contains standard electrom 33 The physics list contains standard electromagnetic processes and the 33 radioactiveDecay module for GenericIon. It << 34 radioactiveDecay module for GenericIon. It is defined in the B3PhysicsList 34 class as a Geant4 modular physics list with << 35 class as a Geant4 modular physics list with registered physics builders 35 provided in Geant4: 36 provided in Geant4: 36 - G4DecayPhysics - defines all particles an 37 - G4DecayPhysics - defines all particles and their decay processes 37 - G4RadioactiveDecayPhysics - defines radio 38 - G4RadioactiveDecayPhysics - defines radioactiveDecay for GenericIon 38 - G4EmStandardPhysics - defines all EM stan 39 - G4EmStandardPhysics - defines all EM standard processes 39 << 40 40 This physics list requires data files for: 41 This physics list requires data files for: 41 - low energy electromagnetic processes whic << 42 - low energy electromagnetic processes which path is defined via 42 the G4LEDATA envirnoment variable 43 the G4LEDATA envirnoment variable 43 - nuclides properties which path is defined << 44 - radioactive decay hadronic processes which path is defined via 44 the G4ENSDFSTATEDATA envirnoment variable << 45 - radioactive decay hadronic processes whic << 46 the G4RADIOACTIVEDATA envirnoment variabl 45 the G4RADIOACTIVEDATA envirnoment variable. 47 << 46 48 See more on installation of the datasets in << 47 3- PRIMARY GENERATOR 49 Chapter 3.3: Note On Geant4 Datasets: << 48 50 http://geant4.web.cern.ch/geant4/UserDocume << 49 The default particle beam is an ion (F18), at rest, randomly distributed 51 /Ins << 50 within a zone inside a patient and is defined in 52 3- ACTION INITALIZATION << 51 B3PrimaryGeneratorAction::GeneratePrimaries(). 53 << 52 The type of a primary particle can be changed with G4ParticleGun commands 54 B3[a,b]::ActionInitialization class instant << 55 all user action classes. << 56 << 57 While in sequential mode the action classes << 58 via invoking the method: << 59 B3[a,b]::ActionInitialization::Build() << 60 in multi-threading mode the same method is << 61 and so all user action classes are defined << 62 << 63 A run action class is instantiated both thr << 64 and global that's why its instance is creat << 65 B3[a,b]::ActionInitialization::BuildForM << 66 which is invoked only in multi-threading mo << 67 << 68 4- PRIMARY GENERATOR << 69 << 70 The default particle beam is an ion (F18), << 71 within a zone inside a patient and is defin << 72 B3::PrimaryGeneratorAction::GeneratePrimari << 73 The type of a primary particle can be chang << 74 (see run2.mac). 53 (see run2.mac). >> 54 >> 55 4- DETECTOR RESPONSE: scorers 75 56 76 5- DETECTOR RESPONSE: scorers << 57 A 'good' event is an event in which an identical energy of 511 keV is 77 << 58 deposited in two separate Crystals. A count of the number of such events 78 A 'good' event is an event in which an iden << 59 corresponds to a measure of the efficiency of the PET system. 79 deposited in two separate Crystals. A count << 60 The total dose deposited in a patient during a run is also computed. 80 corresponds to a measure of the efficiency << 61 81 The total dose deposited in a patient durin << 62 Scorers are defined in DetectorConstruction::CreateScorers(). There are 82 << 63 two G4MultiFunctionalDetector objects: one for the Crystal (EnergyDeposit), 83 Scorers are defined in B3::DetectorConstruc << 84 two G4MultiFunctionalDetector objects: one << 85 and one for the Patient (DoseDeposit) 64 and one for the Patient (DoseDeposit) 86 << 65 87 The scorers hits are saved in form of ntupl << 66 EventAction::EndOfEventAction() collects informations event per event 88 analysis tools. This feature is activated i << 67 from the hits collections, and accumulates statistic for 89 G4TScoreNtupleWriter. << 68 RunAction::EndOfRunAction(). 90 << 69 91 Two variants of accumulation event statisti << 70 5- STACKING ACTION 92 in this example: << 71 93 << 72 Beta decay of Fluor generates a neutrino. One wishes do not track this 94 B3a: << 73 neutrino. Therefore one kills it immediately, before created particles 95 << 74 will put in a stack. 96 At the end of event, the values acummulated << 75 The function B3StackingAction::ClassifyNewTrack() is invoked by G4 kernel 97 in B3a::RunAction and summed over the whole << 76 each time a new particle is created. 98 In multi-threading mode the data accumulate << 99 workers is merged to the master in B3a::Run << 100 result is printed on the screen. << 101 << 102 G4Accumulable<> type instead of G4double an << 103 data members in order to facilitate merging << 104 to the master. Currently the accumulables << 105 and G4AccumulablesManager::Merge() has to b << 106 to be further simplified with a closer inte << 107 the Geant4 kernel next year. << 108 << 109 B3b: << 110 << 111 B3b::Run::RecordEvent(), called at end of e << 112 event per event from the hits collections, << 113 B3b::RunAction::EndOfRunAction(). << 114 In addition, results for dose are accumulat << 115 standard floating-point summation and using << 116 class called G4StatAnalysis. The G4StatAnal << 117 (1) the sum, (2) sum^2, (3) number of entri << 118 less than mean * machine-epsilon (the machi << 119 between 1.0 and the next value representabl << 120 From these 4 values, G4StatAnalysis provide << 121 standard deviation, variance, coefficient o << 122 and r2eff. << 123 << 124 In multi-threading mode the statistics accu << 125 to the master in B3b::Run::Merge(). << 126 << 127 6- STACKING ACTION << 128 << 129 Beta decay of Fluor generates a neutrino. O << 130 neutrino; therefore one kills it immediatel << 131 are put in a stack. << 132 The function B3::StackingAction::ClassifyNe << 133 each time a new particle is created. << 134 77 135 The following paragraphs are common to all ba 78 The following paragraphs are common to all basic examples 136 79 137 A- VISUALISATION 80 A- VISUALISATION 138 81 139 The visualization manager is set via the G4 82 The visualization manager is set via the G4VisExecutive class 140 in the main() function in exampleB3.cc. << 83 in the main() function in exampleB3.cc. 141 The initialisation of the drawing is done v 84 The initialisation of the drawing is done via a set of /vis/ commands 142 in the macro vis.mac. This macro is automat 85 in the macro vis.mac. This macro is automatically read from 143 the main function when the example is used 86 the main function when the example is used in interactive running mode. 144 87 145 By default, vis.mac opens an OpenGL viewer << 88 By default, vis.mac opens an OpenGL viewer. 146 The user can change the initial viewer by c << 89 The user can switch to other graphics systems by commenting out this line 147 and instead uncommenting one of the other / 90 and instead uncommenting one of the other /vis/open statements, such as 148 HepRepFile or DAWNFILE (which produce files 91 HepRepFile or DAWNFILE (which produce files that can be viewed with the 149 HepRApp and DAWN viewers, respectively). N << 92 HepRApp and DAWN viewers, respectively). 150 open new viewers at any time from the comma << 151 you already have a view in, say, an OpenGL << 152 "viewer-0", then << 153 /vis/open DAWNFILE << 154 then to get the same view << 155 /vis/viewer/copyView viewer-0 << 156 or to get the same view *plus* scene-modifi << 157 /vis/viewer/set/all viewer-0 << 158 then to see the result << 159 /vis/viewer/flush << 160 93 161 The DAWNFILE, HepRepFile drivers are always 94 The DAWNFILE, HepRepFile drivers are always available 162 (since they require no external libraries), << 95 (since they require no external libraries), but the OGL driver requires: 163 that the Geant4 libraries have been built w << 96 1- the visualisation & interfaces categories have been compiled 164 << 97 with the environment variable G4VIS_BUILD_OPENGLX_DRIVER. 165 Since 11.1, the TSG visualization driver ca << 98 2- exampleB3.cc has been compiled with G4VIS_USE_OPENGLX. 166 file output in png, jpeg, gl2ps formats wit << 99 (This is best done through Configure or CMake.) 167 It can be controlled via UI commands provid << 168 demonstrated in the tsg_offscreen.mac macro << 169 100 170 For more information on visualization, incl 101 For more information on visualization, including information on how to 171 install and run DAWN, OpenGL and HepRApp, s 102 install and run DAWN, OpenGL and HepRApp, see the visualization tutorials, 172 for example, 103 for example, 173 http://geant4.slac.stanford.edu/Presentatio 104 http://geant4.slac.stanford.edu/Presentations/vis/G4[VIS]Tutorial/G4[VIS]Tutorial.html 174 (where [VIS] can be replaced by DAWN, OpenG 105 (where [VIS] can be replaced by DAWN, OpenGL and HepRApp) 175 106 176 The tracks are automatically drawn at the e 107 The tracks are automatically drawn at the end of each event, accumulated 177 for all events and erased at the beginning 108 for all events and erased at the beginning of the next run. 178 109 179 B- USER INTERFACES 110 B- USER INTERFACES 180 << 111 181 The user command interface is set via the G 112 The user command interface is set via the G4UIExecutive class 182 in the main() function in exampleB3.cc << 113 in the the main() function in exampleB3.cc 183 << 114 The selection of the user command interface is then done automatically 184 The selection of the user command interface << 115 according to the Geant4 configuration. The default command interface, 185 according to the Geant4 configuration or it << 116 called G4UIterminal, is done via a standard G4cin/G4cout. 186 the third argument of the G4UIExecutive con << 117 On Linux and Sun-cc one can use a smarter command interface G4UItcsh. 187 << 118 It is enough to set the environment variable G4UI_USE_TCSH before compiling 188 The gui.mac macros are provided in examples << 119 exampleB3.cc 189 is automatically executed if Geant4 is buil << 120 190 It is also possible to customise the icons << 121 191 demonstrated in the icons.mac macro in exam << 192 << 193 C- HOW TO RUN 122 C- HOW TO RUN 194 123 195 - Execute exampleB3a in the 'interactive m << 124 - compile and link to generate an executable 196 % ./exampleB3a << 125 % cd B3 197 and type in the commands from run1.mac l << 126 % make >> 127 >> 128 - execute exampleB3 in the 'interactive mode' with visualization >> 129 % exampleB3 >> 130 and type in the commands from run1.mac line by line: 198 Idle> /control/verbose 2 131 Idle> /control/verbose 2 199 Idle> /tracking/verbose 2 132 Idle> /tracking/verbose 2 200 Idle> /run/beamOn 1 << 133 Idle> /run/beamOn 1 201 Idle> ... 134 Idle> ... 202 Idle> exit 135 Idle> exit 203 or 136 or 204 Idle> /control/execute run1.mac 137 Idle> /control/execute run1.mac 205 .... 138 .... 206 Idle> exit 139 Idle> exit 207 140 208 - Execute exampleB3a in the 'batch' mode f << 141 - execute exampleB3 in the 'batch' mode from macro files 209 (without visualization) 142 (without visualization) 210 % ./exampleB3a run2.mac << 143 % exampleB3 run2.mac 211 % ./exampleB3a exampleB3.in > exampleB << 144 % exampleB3 exampleB3.in > exampleB3.out 212 << 213 145 >> 146