View on GitHub

Geant4 Zero to Hero

The Definitive Guide for End Users

Physics

YouTube alpha beta gamma muon neutron optical decay X-ray

Terminology

  1. physics model: what happens in a certain energy range
  2. physics process: model + cross section (how often it happens)
  3. physics list: a list of processes for common particles
  4. modular lists: lists of processes that can be used as building blocks to construct a more complex list
  5. reference lists: official modular lists shipped with Geant4
  6. 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:

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

YouTube

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

YouTube

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:

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.