stim_pixe_tomography advanced example
The stim_pixe_tomography advanced example is developed to simulate three dimensional STIM or PIXE tomography experiments. The simulation results are written in a binary file and can be easily accessed using the provided scripts.
Publications:
[1] Li Z, Incerti S, Beasley D, Shen H, Wang S, Seznec H, et al. Accuracy of three-dimensional proton imaging of an
inertial confinement fusion target assessed by Geant4 simulation. Nucl Instrum Methods Phys Res B. 2023;
536:38-44. https://doi.org/10.1016/j.nimb.2022.12.026.
[2] Michelet C, Li Z, Jalenques H, Incerti S, Barberet P, Devs G, et al. A Geant4 simulation of X-ray emission
for three-dimensional proton imaging of microscopic samples. Phys Med. 2022;94:85-93. https://doi.org/10.1016/j.ejmp.2021.12.002.
[3] Michelet C, Li Z, Yang W, Incerti S, Desbarats P, Giovannelli J-F, et al. A Geant4 simulation for
three-dimensional proton imaging of microscopic samples. Phys Med. 2019;65:172-80. https://doi.org/10.1016/j.ejmp.2019.08.022.
Contact:
michelet@lp2ib.in2p3.fr (Claire Michelet)
zhuxin.li@outlook.com (Zhuxin Li)
More information and a detailed UserGuide are available: http://geant4.in2p3.fr (Documentation section)
1 - GEOMETRY DEFINITION
Three phantoms are available, users can build up new phantoms or choose the following three phantoms by setting the "phantom_type":
1) A simple cube (see publication [2-3]), phantom_type = 1
The absorber is a box made of a given material.
2) Upper part of Caenorhabditis elegans (C.elegans) worm (see publication [2-3]) , phantom_type = 2
C.elegans phantom is composed of 6 ellipsoids. The size and shape of ellipsoids are based on the
nanotoxicology studies carried-out at LP2I Bordeaux laboratory .
3) Inertial confinement fusion (ICF) target (see publication [1]), phantom_type = 3
ICF target is sphere shell, made of Ge-doped glow discharge polymer (GDP)
##2 - PHYSICS LIST
Physics lists are based on modular design. Several modules are instantiated:
1) Transportation
2) EM physics
3) Decay physics
4) Hadron physics, optional
EM physics builders can be local or from G4 kernel physics_lists subdirectory.
- "emlivermore" default low-energy EM physics using Livermore data
- "local" local physics builders, options are explicit in PhysListEmStandard
- "emstandard_opt0" recommended standard EM physics for LHC
- "emstandard_opt1" best CPU performance standard physics for LHC
- "emstandard_opt2" similar fast simulation
- "emstandard_opt3" best standard EM options - analog to "local" above
- "emstandard_opt4" best current advanced EM options standard + lowenergy
- "emstandardWVI" standard EM physics and WentzelVI multiple scattering
- "emstandardSS" standard EM physics and single scattering model
- "emstandardGS" standard EM physics and Goudsmit-Saunderson multiple scatt.
- "empenelope" low-energy EM physics implementing Penelope models
- "emlowenergy" low-energy EM physics implementing experimental
Decay and StepMax processes are added to each list.
Optional components can be added:
- "elastic" elastic scattering of hadrons
- "binary" QBBC configuration of hadron inelastic models
- "binary_ion" Binary ion inelastic models
Physics lists and options can be (re)set with UI commands.
##3 - HOW TO RUN
To run a PIXE tomography simulation in 'batch' mode using a pixe3d.mac file:
./stim_pixe_tomography -p pixe3d.mac
or if you want to specify the number of threads:
./stim_pixe_tomography -p pixe3d.mac N
N is the number of threads
An example of pixe3d.mac is provided. It is designed for the PIXE-T simulation of the cube phantom of 40 um. It is defined for 10 projections 1 slice 20 pixels. 1000000 protons are used for each beam.
To run a STIM tomography simulation:
./stim_pixe_tomography -s pixe3d_stim.mac
or if you want to specify the number of threads:
./stim_pixe_tomography -s pixe3d_stim.mac N
N is the number of threads
An example of pixe3d_stim.mac (arbitrarily name, you may rename it pixe3d.mac if you wish) is provided. It is designed for the STIM-T simulation of the cube phantom of 40 um. It is defined for 10 projections 1 slice 20 pixels. 100 protons are used for each beam.
##4 - VISUALISATION To visualize the phantoms, run:
./stim_pixe_tomography
##5 - OUTPUT FILES
If a PIXE tomography simulation is made, two files are going to be generated:
1) GammaAtCreation.dat, which keeps the info of secondary photons at creation
2) GammaAtExit.dat, which keeps the info of secondary photons at exit of the phantom
If a STIM tomography simulation is made, ProtonAtExit.dat is generated, in which the info of primary protons is kept
##6 - LIST OF MACROS AND SCRIPTS
Once you build the example, the following macros and script will be copied to your build directory:
pixe3d.mac: an example macro to run a PIXE-T simulation for cube of 40 um
pixe3d_stim.mac: an example macro to run a STIM-T simulation for cube of 40 um
pixe3d_initial.mac: it contains the information of physics processes
init_vis.mac and vis.mac: for the visualization
GPSPointLoop.C: it generates a macro file to run the simulation by reading pixe3d_initial.mac
In the Scripts folder, you will find other scripts for different uses.
To obtain the reconstruction data:
BinToStd_ProtonAtExit.C: it reads the STIM-T simulation results and generates the data file for STIM-T reconstruction using selection with particle momentum.
BinToStd_GammaAtCreation.C: it reads the PIXE-T simulation results for X-rays at creation and generates the data file for PIXE-T reconstruction using selection with particle momentum.
BinToStd_GammaAtExit.C: it reads the PIXE-T simulation results for X-rays at exit and generates the data file for PIXE-T reconstruction using selection with particle momentum.
BinToStd_proton_position.C: it reads the STIM-T simulation results and generates the data file for STIM-T reconstruction using selection with particle position and momentum
BinToStd_gamma_position.C: it reads the PIXE-T simulation results for X-rays and generates the data file for PIXE-T reconstruction using selection with particle position and momentum
To locate the interruption if an interruption of simulation occurs:
LocateInterruption_ProtonAtExit.C: in case of interruption, it locates the projection position of interruption for STIM-T simulation.
LocateInterruption_GammaAtExit.C: in case of interruption, it locates the projection position of interruption for PIXE-T simulation.
To obtain the reconstruction data in case of an interruption of simulation:
Concatenate_BinToStd_ProtonAtExit.C: in case of one interruption, it reads STIM-T simulation results and generates the data file for STIM-T reconstruction.
Concatenate_BinToStd_GammaAtCreation.C: in case of one interruption, it reads PIXE-T simulation results for X-rays at creation and generates the data file for PIXE-T reconstruction.
Concatenate_BinToStd_GammaAtExit.C: in case of one interruption, it reads PIXE-T simulation results for X-rays at exit and generates the data file for PIXE-T reconstruction.
To visualize the spectrum:
Spectrum_proton.C: it visualizes the spectrum of protons and plots a histogram by reading simulation result ProtonAtExit.dat.
Spectrum_gamma.C: it visualizes the spectrum of X-rays and plots a histogram by reading simulation result GammaAtCreation.dat or GammaAtExit.dat.
TomoSpectrum_HIST_proton.C: it visualizes the spectrum of protons and plots a histogram by reading StimEvent data. It also writes the spectrum data in a txt file.
TomoSpectrum.C: it visualizes the spectrum of X-rays and plots a graph by reading PixeEvent data. It also writes the spectrum data in a txt file.
TomoSpectrum_HIST.C: it visualizes the spectrum of X-rays and plots a histogram by reading PixeEvent data. It also writes the spectrum data in a txt file.
Scripts for specific use:
Extract_Projection.C: it extracts 50 projections from a PixeEvent data file for tomographic reconstruction, which contains 100 projections. In fact, it extracts the projection 0, 2, 4, 6, 898 from projections 0-99. It eventually generates a new file with new index number of projections 0-49.
Check_PixeEventFile.C: it checks if the index of projections of a PixeEvent data file for tomographic reconstruction is correct. For example, if the user extract 50 projections from a data file composed 100 projections, it is necessary to make sure in the new data file, the index of projection starts from 0 and ends at 49.
Extract_Slice.C: it extracts a certain number of slice(s) from a PixeEvent data file for tomographic reconstruction. Users need to specify the first and the last slice to be extracted. Note that when writing a new data file, the index of slices will be initiated from 0.
Concatenate_BinToStd_GammaAtCreation_fabricate.C: if users make a PIXE-T simulation on a symmetrical object with only one projection, this script can be used to fabricate the other 99 projection data for X-rays at creation with same energy.
Concatenate_BinToStd_GammaAtExit_fabricate.C: if users make a PIXE-T simulation on a symmetrical object with only one projection, this script can be used to fabricate the other 99 projection data for X-rays at exit with same energy
Scripts to generate voxelized phantoms:
In order to compare the reconstructed tomographic images with original phantoms, it may be necessary to use a voxelized phantom.
generate_voxelized_sphere_phantom.py: it generates a voxelized phantom of an inertial confinement fusion target.
generate_voxelized_worm_phantom.py: it generates a voxelized phantom of the upper part of C. elegans.
More information can be found in the UserGuide.