- physics model: what happens in a certain energy range
- physics process: model + cross section (how often it happens)
- physics list: a list of processes for common particles
- modular lists: lists of processes that can be used as building blocks to construct a more complex list
- pre-packaged lists: official modular lists shipped with Geant4
- reference lists: a subset of the pre-packaged lists that are well-maintained and tested
- factory: a Geant4 class that can be used to call pre-packaged lists by their names
How to choose a physics list
# select a pre-packaged physics list. For example, # LBE: low background experiment # LIV: EM model based on Livermore data /physics_lists/select LBE_LIV # initialize physics based on the list /run/initialize # dump the lists on screen /run/beamOn
The available names are listed in G4PhysListFactory.cc. The naming scheme is introduced on page 24 in this tutorial. A guidance on how to choose a proper physics list is also available in the tutorial.
- Electromagnitism (EM)
- Standard processes (~1 keV to ~PeV)
- Low energy processes (250 eV to ~PeV)
- Optical photon tracking
- Weak interaction
- decay of subatomic particles
- radioactive decay of nuclei
- Hadronic physics
- pure strong interaction (0 to ~TeV)
- electro- and gamma-nuclear (10 MeV to ~TeV)
- Parameterized physics (not from first principles) for fast simulation
- Transportation (change from one volume to another)
/run/initialize, you will get something like this:
Transportation, Decay, RadioactiveDecay, msc hIoni, ionIoni, hBrems, hPairProd CoulombScat, eIoni, eBrem, annihil phot, compt, conv, muIoni muBrems, muPairProd, hadElastic, neutronInelastic nCapture, nFission, protonInelastic, pi+Inelastic pi-Inelastic, kaon+Inelastic, kaon-Inelastic, kaon0LInelastic kaon0SInelastic, lambdaInelastic,anti-lambdaInelastic, sigma-Inelastic anti_sigma-Inelastic, sigma+Inelastic,anti_sigma+Inelastic, xi-Inelastic anti_xi-Inelastic, xi0Inelastic, anti_xi0Inelastic, omega-Inelastic anti_omega-Inelastic,anti_protonInelastic,anti_neutronInelastic,anti_deuteronInelastic anti_tritonInelastic, anti_He3Inelastic,anti_alphaInelastic
Now you can use, for example,
/process/inactivate nCapture to disable neutron capture process in your simulation. And you can use, for example,
/process/setVerbose 20 RadioactiveDecay to change the verbosity of the radioactive decay process.
Radioactive decay processes can be enabled after a reference list is chosen:
# choose a reference physics list /physics_lists/select QGSP_BERT_EMV # cmd below becomes available only when the cmd above is used /physics_lists/factory/addRadioactiveDecay # must be run after the cmds above /run/initialize /process/list Decay Decay RadioactiveDecay
Detailed control of radioactive decay is provided by the /grdm/ command, for example,
/grdm/deselectVolume chamber # disabled radioactive decay in volume "chamber" /grdm/nucleusLimits 1 80 # enabled radioactive decay only when z in [1, 80]
Here is an example to create Pb210 on the surface of a cylindrical CsI detector:
/gps/particle ion /gps/ion 82 210 # default energy is 1 MeV, must be set to zero to let it decay at rest /gps/energy 0 /gps/pos/type Surface /gps/pos/shape Cylinder /gps/radius 7 cm /gps/halfz 2.5 cm
Split decay chain
Some isotopes in a radioactive decay chain have long half lives. They decay long after the first decay on top of the chain. However, Geant4 simulate the whole chain in one event. It is the user’s task to split different decays in the chain to different events based on the times when they happen.
GEARS provides a macro command
/grdm/setTimeWindow for you to split the chain based on a time window specified by you:
# choose a reference physics list /physics_lists/select QGSP_BERT_EMV # cmd below becomes available only when the cmd above is used /physics_lists/factory/addRadioactiveDecay # must be run after the commands above /run/initialize # If a decay that happens 1 second after its previous one, # it is saved to another event in the output n-tuple # The command can be run before or after /run/initialize, # but only becomes available after radioactive decay is enabled /grdm/setTimeWindow 1 s # a time window <= 0 will disable splitting: # /grdm/setTimeWindow 0 # show detailed instruction of this command: help /grdm/setTimeWindow # turn on tracking and event verbose # to understand Geant4 tracking and stacking processes /tracking/verbose 2 /event/verbose 2 # record output to check the splitting result /analysis/setFileName output # simulate just one or a few events to check result /run/beamOn 1
root  t->Scan("pdg:trk:pid:stp:dt/1e9:t/1e9","","colsize=10 precision=10")
For the impatient, new particles created after the specified time window in a decay process will be tagged as
G4UserStackingAction::ClassifyNewTrack(). This postpones the tracking of them after the call of
G4UserStackingAction::NewStage(). One can then save and reset the current event in the
NewStage() function so that the postponed tracks will be saved in a separate event.
Stop decay chain
If the half life of a daughter nucleus is longer than a measurement duration, there is no need to simulate its decay anymore. In this case, instead of splitting its decay to another event, we should simply stop its radioactive decay completely. This is done using a Geant4 macro command
/grdm/nucleusLimits, for example,
# enable radioactive decay physics /physics_lists/select QGSP_BERT /physics_lists/factory/addRadioactiveDecay /run/initialize # start with the alpha decay of Am-241 /gps/particle ion /gps/ion 95 241 /gps/energy 0 # since Np-237, the daughter of Am-241, is not in the following range, # it will not alpha-decay into its daughter nucleus in this simulation. # The simulation will stop when Np-237 decays into its ground state. /grdm/nucleusLimits 241 241 95 95
Optical processes can be enabled after a reference list is chosen:
# based on Geant4 example OpNovice2 (EMZ: option4 of EM) /physics_lists/select QGSP_BERT_EMZ # cmd below becomes available only when the cmd above is used /physics_lists/factory/addOptical # must be run after the cmds above /run/initialize /process/list Electromagnetic phot, compt, conv, msc eIoni, eBrem, CoulombScat, annihil muIoni, muBrems, muPairProd, hIoni hBrems, hPairProd, ionIoni, Cerenkov Scintillation /process/list Optical OpAbsorption, OpRayleigh, OpMieHG, OpBoundary OpWLS
Individual optical processes can be toggled by the following commands:
/process/optical/processActivation Cerenkov true/false /process/optical/processActivation Scintillation true/false /process/optical/processActivation OpAbsorption true/false /process/optical/processActivation OpRayleigh true/false /process/optical/processActivation OpMieHG true/false /process/optical/processActivation OpBoundary true/false /process/optical/processActivation OpWLS true/false
It is useful to categorize the processes the following way:
- Production of optical photons:
- Transportation of optical photons inside certain material:
- Transportation of optical photons on the boundary of two materials:
- Reflection, refraction and transmission (OpBoundary)
Optical properties of materials and surfaces
At least two parameters need to be specified to generate scintillation light: the light yield, i.e., the number of photons per unit energy deposition (SCINTILLATIONYIELD), and the variation of the number of generated photons (RESOLUTIONSCALE). The parameters need to be attached to the material that scintillates, they are hence specified in the detector geometry description file as well.
In an ideal optical interface, the transportation of optical photons can be calculated given the refractive indices of the matierials on both sides. To simulate more complicated interfaces, please see here.
- CsI3inWLS.tg: it models a cylindrical CsI crystal with a diameter of about 3 inches. It is wrapped in Teflon tape (painted with TPB) on the side surface and coupled to two PMT SiO2 windows on its end surfaces.
- CerenkovInPMTwindow.mac: an electron is shot to a PMT window from the vacuum side, generating Cereknov light in the PMT silica window.
- ScintillationInCsI.mac: a 6 keV gamma is emitted in the center of the CsI crystal generating scintillaiton light in the crystal.
- groundFrontPainted.mac and CsI2Teflon.tg: optical photons shot to an unpolished surface between a CsI crystal and PTFE reflector without an air gap in between.