Physics
Terminology
- 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
- reference lists: official modular lists shipped with Geant4
- factory: a Geant4 class that can be used to call reference lists by their names
How to choose a physics list
G4PhysListFactory.cc allows users to select from the reference lists using an environment variable PHYSLIST
before a Geant4 executable, for example,
$ PHYSLIST=FTFP_BERT_EMZ exampleApp
**************************************************************
Geant4 version Name: geant4-11-03 [MT] (6-December-2024)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
: NIM A 835 (2016), 186-225
WWW : http://geant4.org/
**************************************************************
G4PhysListFactory::GetReferencePhysList <FTFP_BERT_EMZ> EMoption= 4
<<< Geant4 Physics List simulation engine: FTFP_BERT
...
PreInit> /run/initialize
Idle> /run/beamOn
where /run/initialize
initializes physics based on the list, and /run/beamOn
dumps information of physics models on screen.
Available reference lists can be found in G4PhysListFactory.cc. The naming scheme is introduced on page 24 in a SLAC tutorial. A guidance on how to choose a proper physics list is also available in the same tutorial.
Physics processes
Major categories of processes provided in Geant4 include:
- 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 /process/list
after /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 we can use, for example, /process/inactivate nCapture
to disable neutron capture process in your simulation. And we can use, for example, /process/setVerbose 20 RadioactiveDecay
to change the verbosity of the radioactive decay process.
Radioactive decay
Radioactive decay processes can be enabled before run/initialize
:
PreInit> /physics_lists/factory/addRadioactiveDecay
PreInit> /run/initialize
Idle> /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/pos/radius 7 cm
/gps/pos/halfz 2.5 cm
Optical processes
Optical processes can be enabled before /run/initialize
:
/physics_lists/factory/addOptical
/run/initialize
/process/list Electromagnetic
phot, compt, conv, msc
eIoni, eBrem, CoulombScat, annihil
muIoni, muBrems, muPairProd, hIoni
hBrems, hPairProd, ionIoni, hIoni
...
hIoni, hIoni, 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
More built-in commands related to optical processes can be found here. Example usages can be found here.
It is useful to categorize the processes the following way:
- Production of optical photons:
- Transportation of optical photons inside certain material:
- Absorption (OpAbsorption)
- Scattering: Rayleigh scattering (OpRayleigh), and Mie scattering (OpMieHG), etc.
- Wavelength shifting (OpWLS)
- Transportation of optical photons on the boundary of two materials:
- Reflection, refraction and transmission (OpBoundary)
It is also important to understand that optical photons are treated differently from gamma and x-rays in Geant4, since completely different physics processes are assigned to them.
Optical properties of materials and surfaces
To generate Cerenkov light, one MUST specify the refractive index of the material where the light is generated.
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.
The parameter, RAYLEIGH and ABSLENGTH, related to the transportation of optical photons in a mertial also have to be attached to the material.
In an ideal optical interface, the transportation of optical photons can be calculated given the refractive indices of the matierials on both sides.