Geant4 Cross Reference |
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 18 13 19 ============================================== 14 ================================================================================================ 20 15 21 Introduction: << 16 This example is for simulating depth-of-interaction enabled positron emission tomography (PET) scanner 22 17 23 This example simulates depth-of-interaction (d << 18 1-GEOMETRY 24 and NEMA NU phantoms.The example can be execut << 19 The detector construction has two main parts: constructing the PET system and the phantoms. 25 of identifying crystal ID are presented. << 26 << 27 - The center of mass of the position of int << 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 20 37 The above steps are illustrated figuratively i << 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. 38 22 39 ============================================== << 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. 40 1-Geometry and Phantoms << 41 24 42 The detector construction has two main parts: << 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. 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 >> 59 >> 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. >> 61 >> 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. >> 63 >> 64 8-ANALYSIS >> 65 >> 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. >> 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: 91 68 92 The SteppingAction class is the one which is u << 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. 93 photon with the crystal and the phantoms are e << 94 is passed into the Analysis.cc class, which ou << 95 70 96 Generation of the source (F-18 ion) is confine << 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). 97 the physical volume. << 98 72 99 7-ANALYSIS << 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. 100 74 101 In the doiPETAnalysis class, several realistic << 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. 102 crystal dependent energy resoltion, etc are p << 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. 103 89 104 ***** Geant4 ROOT ANALYSIS << 90 ***** ROOT ANALYSIS >> 91 To have ROOT Analysis, Be in the build director 105 /Path/doiPET/build/ and type: 92 /Path/doiPET/build/ and type: 106 cmake -DWITH_ANALYSIS_USE=ON -DGeant4_DIR=/pat << 93 cmake -DWITH_ANALYSIS_USE=ON -DGeant4_DIR=.... ../ 107 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 ====================