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.