Warning, /geant4/examples/advanced/doiPET/README is written in an unsupported language. File is not indexed.
0001 ===========================================================
0002 ---------------Geant4 doiPET example---------------------
0003 ===========================================================
0004 Author list to be updated, with names of co-authors and contributors from National Institute of Radiological Sciences (NIRS)
0005
0006 Abdella M. Ahmed (1, 2), Andrew Chacon (1, 2), Harley Rutherford (1, 2),
0007 Hideaki Tashima (3), Go Akamatsu (3), Akram Mohammadi (3), Eiji Yoshida (3), Taiga Yamaya (3)
0008 Susanna Guatelli (2), and Mitra Safavi-Naeini (1, 2)
0009
0010 *Corresponding authors
0011 e-mail: abdella.ahmed@health.nsw.gov.au
0012 mitras@ansto.gov.au
0013 susanna@uow.edu.au
0014
0015 (1) Australian Nuclear Science and Technology Organisation, Australia
0016 (2) University of Wollongong, Australia
0017 (3) National Institute of Radiological Sciences, Japan
0018
0019 ================================================================================================
0020
0021 Introduction:
0022
0023 This example simulates depth-of-interaction (doi) enabled positron emission tomography (PET) scanner
0024 and NEMA NU phantoms.The example can be executed in a multithreading mode. Some realistic approches
0025 of identifying crystal ID are presented.
0026
0027 - The center of mass of the position of interaction is identified based on energy weighting
0028
0029 * Note: the following steps are performed if the option for AngerLogic is enabled (ApplyAngerLogic: true) in
0030 the inputParameter.txt
0031 - Four ideal photomultiplier tubes (PMTs) are placed at each corner of the crystal block
0032 - Perform Anger type calculation method to identify the position of interaction in 2D based
0033 - Shift the position response based on the reflector pattern
0034 - DOI is identified by using a look-up-table and
0035 - Crystal ID in 3D is determined
0036
0037 The above steps are illustrated figuratively in the supplementary document.
0038
0039 ================================================================================================
0040 1-Geometry and Phantoms
0041
0042 The detector construction has two main parts: constructing the PET system and placing the phantoms.
0043
0044 The PET system is constructed from depth-of-interaction (DOI)detectors blocks. Each detector consisted
0045 of 16 x 16 x 4 crystal array constructed from GSO scintillation material. Materials are defined in the
0046 DefineMaterials() using Geant4 NIST database. The geometrical specifications are given (and can be changed)
0047 in the GlobalParameters.hh file.
0048
0049 The scanner has 4 ring detectors. The detectors are covered with Aluminum material. Gaps between crystal
0050 elements, as well as adjacent rings are introduced.
0051
0052 Various types of NEMA NU phantoms has been provided and are defined in the ConstructPhantom() method.
0053 To precisely create the image quality phantom, the G4UnionSolid from the Constructive Solid Geometry (CSG)
0054 has been used. The type, position and size of the phantoms can be changed using the macro file when necessary.
0055 A macro file is provided for each type of phantom imaging. For example, to run the simulation with image quality
0056 phantom, the run_imageQualityPhantom_wholeBody.mac should be used.
0057
0058 2- PHYSICS LIST
0059
0060 The physics list contains standard electromagnetic processes and the radioactiveDecay module for GenericIon. It is
0061 defined in the PhysicsList class as a Geant4 modular physics list with registered physics builders provided in Geant4:
0062 - G4DecayPhysics - defines all particles and their decay processes
0063 - G4RadioactiveDecayPhysics - defines radioactiveDecay for GenericIon
0064 - G4EmStandardPhysics_option3 - defines EM standard processes
0065
0066 3- ACTION INITALIZATION
0067
0068 The ActionInitialization class instantiates and registers to Geant4 kernel all user action classes by invoking the
0069 ActionInitialization::Build().
0070
0071 4- PRIMARY GENERATOR
0072
0073 The default particle beam is F-18 ion at rest defined in the GPS (General Particle Source). The GPS is used for all types
0074 of activity distribution. Various macro files are provided with the name appended on it for specific simulation. The following
0075 macro files are provided:
0076
0077 run_imageQualityPhantom_wholeBody.mac
0078 run_imageQualityPhantom_smallAnimal.mac
0079 run_NECR.mac
0080 run_sensitivity.mac
0081 run_spatialResolution.mac
0082 run_normalization.mac (This one is not given in the NEMA NU manual but it is an important part of image reconstruction)
0083
0084 5-EVENT ACTION
0085
0086 At the end of each event, the information is extracted by calling FindInteractingCrystal() function and associative container
0087 (multimap and set methods) and the containers are cleared by calling the Clear() function.
0088
0089
0090 6- STEPPING ACTION
0091
0092 The SteppingAction class is the one which is used to track the steps. In the stepping action, interaction information of the
0093 photon with the crystal and the phantoms are extracted. The interaction information (such as energy deposition, blockID, crystalID, etc)
0094 is passed into the Analysis.cc class, which outputs the result into an ASCII file.
0095
0096 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
0097 the physical volume.
0098
0099 7-ANALYSIS
0100
0101 In the doiPETAnalysis class, several realistic parameters are provided. Deadtime of the detector and/or module, efficiency of the detector,
0102 crystal dependent energy resoltion, etc are provided. The parameters can be changed in the inputparameters.txt file.
0103
0104 ***** Geant4 ROOT ANALYSIS
0105 /Path/doiPET/build/ and type:
0106 cmake -DWITH_ANALYSIS_USE=ON -DGeant4_DIR=/path/to/geant4_install_dir ../
0107
0108
0109 ***** How to run a simulation:
0110
0111 Be in the build director
0112 /Path/doiPET/build/ cmake ../
0113 /Path/doiPET/build/ make
0114 /Path/doiPET/build/ ./doiPET run.mac
0115
0116 Simulation output:
0117
0118 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:
0119
0120 EventID, BlockID, tangentialCrystalID, AxialCrystalID, DOI_ID, time, and Energy deposition in the crystal is written to the file as a list-mode format.
0121
0122 The user can choose to make the output either in singles or coincidence mode in the inputParameter.txt file as follows:
0123
0124 #Choose the type of output: singlesOutput or coincidenceOutput
0125 TypeOfOutput: coincidenceOutput
0126
0127 - Use the code analysis.cpp to analyse the raw simulation output data stored in the "resultCoincidence.data" or "resultCoincidence.root" file.
0128 Before compiling, change the option in the header whether to analyse ASCII or root file (e.g. to use root file #define UseROOT). Then complie the code
0129 as follows:
0130
0131
0132 Compile: g++ analysis.cpp -o analysis `root-config --cflags --libs`
0133 Run: ./analysis
0134
0135 Then, the axial sensitivity will be saved in a CSV file, and the total sensitivty will be displayed in the screen.
0136
0137 The reference data for this example are in: https://bitbucket.org/AbdellaAhmed/doipet_advancedexample_referencedata
0138 The user can compare his/her simulation results with this data, after elaborating them with the provided analysis scripts.
0139 =================== end ====================