Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/doiPET/README

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/advanced/doiPET/README (Version 11.3.0) and /examples/advanced/doiPET/README (Version 10.6.p1)


  1 ==============================================      1 ===========================================================
  2 ---------------Geant4 doiPET example----------      2 ---------------Geant4 doiPET example---------------------
  3 ==============================================      3 ===========================================================
  4  Author list to be updated, with names of co-a      4  Author list to be updated, with names of co-authors and contributors from National Institute of Radiological Sciences (NIRS)
  5 
                                                   5 
  6  Abdella M. Ahmed (1, 2), Andrew Chacon (1, 2)      6  Abdella M. Ahmed (1, 2), Andrew Chacon (1, 2), Harley Rutherford (1, 2),
  7  Hideaki Tashima (3), Go Akamatsu (3), Akram M      7  Hideaki Tashima (3), Go Akamatsu (3), Akram Mohammadi (3), Eiji Yoshida (3), Taiga Yamaya (3)
  8  Susanna Guatelli (2), and Mitra Safavi-Naeini      8  Susanna Guatelli (2), and Mitra Safavi-Naeini (1, 2)
  9 
                                                   9 
 10 *Corresponding authors
                        << 
 11 e-mail: abdella.ahmed@health.nsw.gov.au
       << 
 12         mitras@ansto.gov.au 
                  << 
 13         susanna@uow.edu.au
                    << 
 14 
                                              << 
 15 (1) Australian Nuclear Science and Technology      10 (1) Australian Nuclear Science and Technology Organisation, Australia
 16 (2) University of Wollongong, Australia
           11 (2) University of Wollongong, Australia
 17 (3) National Institute of Radiological Science     12 (3) National Institute of Radiological Sciences, Japan
                                                   >>  13 
                                                   >>  14 ================================================================================================
 18 
                                                  15 
 19 ============================================== <<  16 This example is for simulating depth-of-interaction enabled positron emission tomography (PET) scanner
 20 
                                                  17 
 21 Introduction:
                                 <<  18 1-GEOMETRY 
                                                   >>  19 The detector construction has two main parts: constructing the PET system and the phantoms.
 22 
                                                  20 
 23 This example simulates depth-of-interaction (d <<  21 The PET system is constructed from depth-of-interaction (DOI)detectors blocks. Each detector consisted of 16 x 16 x 4 crystal array constructed from GSO scintillation material. Material are defined in the DefineMaterials() using Geant4 NIST database. The geometrical specifications are given (and can be changed) in the GlobalParameters.hh file. 
 24 and NEMA NU phantoms.The example can be execut <<  22 
 25 of identifying crystal ID are presented.
      <<  23 The scanner has 4 ring detectors. The detectors are covered with Aluminum material. Gaps between crystal elements, as well as adjacent rings are introduced.
 26   
                                            <<  24 
 27    - The center of mass of the position of int <<  25 Various types of NEMA NU phantoms has been provided and are defined in the ConstructPhantom() method. To precisely create the image quality phantom, the G4UnionSolid from the Constructive Solid Geometry (CSG) has been used. The type, position and size of the phantoms can be changed using the macro file when necessary. A macro file is provided for each type of phantom imaging. For example, to run the simulation with image quality phantom, the run_imageQualityPhantom_wholeBody.mac should be used.
 28    
                                           << 
 29   * Note: the following steps are performed if << 
 30     the inputParameter.txt
                    << 
 31   - Four ideal photomultiplier tubes (PMTs) ar << 
 32   - Perform Anger type calculation method to i << 
 33   - Shift the position response based on the r << 
 34   - DOI is identified by using a look-up-table << 
 35   - Crystal ID in 3D is determined 
           << 
 36 
                                              << 
 37 The above steps are illustrated figuratively i << 
 38 
                                              << 
 39 ============================================== << 
 40 1-Geometry and Phantoms
                       << 
 41 
                                              << 
 42 The detector construction has two main parts:  << 
 43 
                                              << 
 44 The PET system is constructed from depth-of-in << 
 45 of 16 x 16 x 4 crystal array constructed from  << 
 46 DefineMaterials() using Geant4 NIST database.  << 
 47 in the GlobalParameters.hh file. 
             << 
 48 
                                              << 
 49 The scanner has 4 ring detectors. The detector << 
 50 elements, as well as adjacent rings are introd << 
 51 
                                              << 
 52 Various types of NEMA NU phantoms has been pro << 
 53 To precisely create the image quality phantom, << 
 54 has been used. The type, position and size of  << 
 55 A macro file is provided for each type of phan << 
 56 phantom, the run_imageQualityPhantom_wholeBody << 
 57   
                                                26   
 58  2- PHYSICS LIST
                                  27  2- PHYSICS LIST
 59 
                                                  28 
 60 The physics list contains standard electromagn <<  29 The physics list contains standard electromagnetic processes and the RadioactiveDecay module for GenericIon. It is defined in the PhysicsList class as a Geant4 modular physics list with registered physics builders provided in Geant4:
 61 defined in the PhysicsList class as a Geant4 m << 
 62    - G4DecayPhysics - defines all particles an     30    - G4DecayPhysics - defines all particles and their decay processes
 63    - G4RadioactiveDecayPhysics - defines radio     31    - G4RadioactiveDecayPhysics - defines radioactiveDecay for GenericIon
 64    - G4EmStandardPhysics_option3 - defines EM      32    - G4EmStandardPhysics_option3 - defines EM standard processes
 65     
                                              33     
 66  3- ACTION INITALIZATION
                          34  3- ACTION INITALIZATION
 67 
                                                  35 
 68    The ActionInitialization class instantiates <<  36    The ActionInitialization class instantiates and registers to Geant4 kernel all user action classes by invoking the ActionInitialization::Build().
 69 ActionInitialization::Build().
                << 
 70 
                                                  37 
 71  4- PRIMARY GENERATOR
                             38  4- PRIMARY GENERATOR
 72 
                                                  39 
 73 The default particle beam is F-18 ion at rest  <<  40 The default particle beam is F-18 ion at rest defined in the GPS (General particle Source). The GPS is used for all types of activity distribution. Various macro files are provided with the name appended on it for specific simulation. The following macro files are provided:
 74 of activity distribution. Various macro files  << 
 75 macro files are provided:
                     << 
 76  
                                                 41  
 77 run_imageQualityPhantom_wholeBody.mac
             42 run_imageQualityPhantom_wholeBody.mac
 78 run_imageQualityPhantom_smallAnimal.mac
           43 run_imageQualityPhantom_smallAnimal.mac
 79 run_NECR.mac
                                      44 run_NECR.mac
 80 run_sensitivity.mac
                               45 run_sensitivity.mac
 81 run_spatialResolution.mac
                         46 run_spatialResolution.mac
 82 run_normalization.mac (This one is not given i     47 run_normalization.mac (This one is not given in the NEMA NU manual but it is an important part of image reconstruction) 
 83    
                                               48    
 84 5-EVENT ACTION
                                    49 5-EVENT ACTION
 85 
                                                  50 
 86 At the end of each event, the information is e <<  51 At the end of each event, the information is extracted by calling FindInteractingCrystal() function and associative container (multimap and set methods) and the containers are cleared by calling the Clear() function.
 87 (multimap and set methods) and the containers  <<  52 
                                                   >>  53 6-RUN ACTION
                                                   >>  54 
                                                   >>  55 The RunAction class is used mainly to conform all the events are processed. At the beginning of the run, a file is created and opened to write the output file and the file is closed at the end of the run and other instances are deleted.
 88 
                                                  56 
 89       
                                            57       
 90  6- STEPPING ACTION
                           <<  58  7- STEPPING ACTION
 91 
                                                  59 
 92 The SteppingAction class is the one which is u <<  60 The SteppingAction class is the one which is used to track the steps. In the stepping action, interaction information of the photon with the crystal and the phantoms are extracted. The interaction information (such as energy deposition, blockID, crystalID, etc) is passed into the Analysis.cc class, which outputs the result into an ASCII file. 
 93 photon with the crystal and the phantoms are e << 
 94 is passed into the Analysis.cc class, which ou << 
 95 
                                                  61 
 96 Generation of the source (F-18 ion) is confine <<  62 Generation of the source (F-18 ion) is confined in the physical volume by killing the event in the SteppingAction class when it is out of the physical volume.
 97 the physical volume.
                          << 
 98 
                                                  63 
 99 7-ANALYSIS
                                    <<  64 8-ANALYSIS
100 
                                                  65 
101 In the doiPETAnalysis class, several realistic <<  66 The interaction information from SteppingAction is passed to the Analysis class. In this class, multiple mapping of the interaction information is stored in the multimap (associative container) by taking the blockID as key value. The information obtained (such as the energy deposition, etc) is then blurred before writing it into the output file. 
102 crystal dependent energy resoltion,  etc are p <<  67 Blurring parameters are given and can be changed in the inputparameters.txt file. The inputparameter.txt file include some characteristics of the scanner such as: 
103  
                                             <<  68 
104 ***** Geant4 ROOT ANALYSIS
                    <<  69 Crystal dependent energy resolution: this can be set between a minimum and a maximum value. The crystals are not assigned a constant energy resolution.
105 /Path/doiPET/build/ and type:
                 <<  70 
106 cmake -DWITH_ANALYSIS_USE=ON -DGeant4_DIR=/pat <<  71 b)  Dead time: the default dead time for each block is 256 ns. An option for axially arranged (multiplexed) detectors can also be set (the default value is 0 ns).
                                                   >>  72 
                                                   >>  73 c)  Detection efficiency (Quantum efficiency): This parameter represents the effect of the transfer efficiency of the crystal and of the quantum efficiency of the photo-detector. To model the efficiency of the system, a coefficient (between 0 and 1) can be set. 
107 
                                                  74 
                                                   >>  75 d)  Reflector insertion: In addition to the 2D plane (tangential and axial dirction), the interaction points along the depth direction are identified by DOI technique. One method is to control the optical photons by means of reflectors. Since it takes a very long time to simulate optical photons, the response due to reflector is modeled without real reflector insertion. This is done by reading reflector patterns for each layer and then shift the response based on the existence of the reflector between crystals. The reflector patter is given in the inputparameter.txt file.
                                                   >>  76 
                                                   >>  77 (Virtual) photomultiplier tube (PMT)
                                                   >>  78 
                                                   >>  79 Four PMTs are assumed to be placed at each corners of the crystal block. These PMTs are linear in that the signals are calculated based on their distances from the interaction position.
                                                   >>  80 
                                                   >>  81 Anger Logic calculation
                                                   >>  82 
                                                   >>  83 In PET analysis, the lines of response (LOR) needed for the image reconstruction is drawn between two opposing crystals. In simulation, these crystals are identified based on the highest energy deposition. In reality, however, errors are introduced in identifying the crystals which includes the Anger Logic calculation. Without additional blurring of the crystal, simulation results will always have a better spatial resolution than experimental measurements. To include the blurring in identifying the crystals, we included the Anger Logic calculation method. The steps in identifying the crystals are as follows:
                                                   >>  84  
                                                   >>  85 Crystal ID in 3D (tangential, axial and DOI directions) are identified with the highest energy deposition and this information along with energy deposition and position interaction is passed into the AngerLogic(c) function.
                                                   >>  86 Signals (energy deposition) on the PMTs are obtained based on the lateral distance of the PMTs from the interaction position.
                                                   >>  87 Anger Logic position calculation is performed based on the signals on each PMT to obtain position interaction in 2D. The response of the PMTs are then shifted based on whether reflector exists between crystals or not. Note that, each layer has different reflector pattern.
                                                   >>  88 The new crystal ID is then calculated by comparing the look-up-table which is provided in the code based on a publication from NIRS. 
                                                   >>  89  
                                                   >>  90 ***** ROOT ANALYSIS
                                                   >>  91 To have ROOT Analysis, Be in the build director
                                                   >>  92 /Path/doiPET/build/ and type:
                                                   >>  93 cmake -DWITH_ANALYSIS_USE=ON -DGeant4_DIR=.... ../
                                                   >>  94 
108 
                                                  95 
109 ***** How to run a  simulation:
                   96 ***** How to run a  simulation:
110 
                                                  97 
111 Be in the build director
                          98 Be in the build director
112 /Path/doiPET/build/ cmake ../
                     99 /Path/doiPET/build/ cmake ../
113 /Path/doiPET/build/ make
                         100 /Path/doiPET/build/ make
114 /Path/doiPET/build/ ./doiPET run.mac
             101 /Path/doiPET/build/ ./doiPET run.mac
115 
                                                 102 
116 Simulation output:
                               103 Simulation output:
117 
                                                 104 
118 ASCII and ROOT files are created depending on     105 ASCII and ROOT files are created depending on the type of the output format. The following information of the event is written in the output file:
119 
                                                 106 
120 EventID, BlockID, tangentialCrystalID, AxialCr    107 EventID, BlockID, tangentialCrystalID, AxialCrystalID, DOI_ID, time, and Energy deposition in the crystal is written to the file as a list-mode format. 
121 
                                                 108 
122 The user can choose to make the output either  << 109 The user can choose to make the output either in singles or coincidence mode in the inputParameter.txt file as follows: 
123 
                                              << 
124 #Choose the type of output: singlesOutput or c << 
125 TypeOfOutput: coincidenceOutput
               << 
126 
                                              << 
127 - Use the code analysis.cpp to analyse the raw << 
128 Before compiling, change the option in the hea << 
129 as follows:
                                   << 
130 
                                              << 
131 
                                              << 
132     Compile: g++ analysis.cpp -o analysis `roo << 
133     Run: ./analysis
                           << 
134 
                                                 110 
135 Then, the axial sensitivity will be saved in a << 
136 
                                                 111 
137 The reference data for this example are in: ht << 
138 The user can compare his/her simulation result << 
139 =================== end ====================
     112 =================== end ====================