Low Energy Electromagnetic Physics - Livermore


Livermore low-energy electromagnetic models describe the interactions of electrons and photons with matter down to about 250 eV (close to the K-shell Auger peak from C) using interpolated data tables based on the Livermore library.

Design of Physics process and model classes

The software design has been adopted by the Standard Electromagnetic Physics working group in 2006. A single Physics process can handle several models which are registered to the process.


  • All photon model classes derive from the G4VEmModel abstract base class. They use the naming format: G4LivermoreYYYModel, where YYY is the model name (for eg. G4LivermoreComptonModel for Compton scattering). Several methods are implemented : 
    • G4LivermoreYYYModel::Initialise(...) : model initialisation
    • G4LivermoreYYYModel::ComputeCrossSectionPerAtom(...) : computation of model total cross section 
    • G4LivermoreYYYModel::SampleSecondaries(...) : computation of model final state

Available Physics processes and models

We indicate in the table below the Livermore Physics models and particles available in the Geant4 toolkit, as well as their energy range of applicability. Default process names as displayed by tracking are also given.


Physics process Process class Model class Recommended low enery applicability limit of model (*) High enery applicability limit of model Process name (#)
Photo-electric effect G4PhotoElectricEffect G4LivermorePhotoElectricModel 250 eV 100 GeV phot
Polarized photo-electric effect G4PhotoElectricEffect G4LivermorePolarizedPhotoElectricModel 250 eV 100 GeV phot
Compton scattering G4ComptonScattering G4LivermoreComptonModel 250 eV 100 GeV compt
Polarized Compton scattering G4ComptonScattering G4LivermorePolarizedComptonModel 250 eV 100 GeV compt
Rayleigh scattering G4RayleighScattering G4LivermoreRayleighModel 250 eV 100 GeV Rayl
Polarized Rayleigh scattering G4RayleighScattering G4LivermorePolarizedRayleighModel 250 eV 100 GeV Rayl
Conversion G4GammaConversion G4LivermoreGammaConversionModel 1.022 MeV 100 GeV conv
Polarized conversion G4GammaConversion G4LivermorePolarizedGammaConversionModel 1.022 MeV 100 GeV conv
Ionisation G4eIonisation G4LivermoreIonisationModel 10 eV 100 GeV eIoni
Bremsstrahlung G4eBremsstrahlung G4LivermoreBremsstrahlungModel 10 eV 100 GeV eBrem

(*) The models are applicable down to the binding energy of corresponding atomic shells (values are taken from the EADL database), but accuracy is not guaranteed.
(#) We indicate for information the process name as it would be displayed in stepping verbose mode, for example with the instruction: 


Example physics list


  • Please check the following section, which suggests our reference Physics lists, based on the usage of Physics constructors . Two Physics constructors are available: 
    • G4EmLivermorePhysics including unpolarized gamma models 
    • G4EmLivermorePolarizedPhysics including polarized gamma models

How to access Physics ?

It is possible to retrieve Physics quantities using a G4EmCalculator object.

For example, in order to retrieve the total cross section of a PHOTON process with name "procName", do as follows :

#include "G4EmCalculator.hh"
G4EmCalculator emCalculator;
G4double density = material->GetDensity();
G4double massSigma = emCalculator.ComputeCrossSectionPerVolume(energy,particle,procName,material)/density;                     
G4cout << G4BestUnit(massSigma, "Surface/Mass") << G4endl;

A good example is TestEm14 located in $G4INSTALL/examples/extended/electromagnetic, look in particular at the RunAction.cc class

How to simulate atomic deexcitation?

Follow this page.

Production cuts

Remember that production cuts for secondaries can be specified as range cuts, which at initialisation time are converted into energy threshold for secondary gamma, electron, positron and proton production.

1) Range cut value is set to 0.7 mm in Geant4 reference Physics Lists. This value can be specified in the optional SetCuts() method of your Physics list or via UI command, for eg. to set a range cut of 10 micrometers, one can use:

  /run/setCut  0.01 mm

or for a given particle type (for e.g. electron)

  /run/setCutForAGivenParticle e- 0.01 mm

2) Since not all Geant4 models are able to work with very low production thresholds, an energy threshold limit is used, its default value is set to 990 eV. You can change this value (for eg. to 250 eV) by using the UI command:

  /cuts/setLowEdge 250 eV

or alternatively directly in your Physics list in the optional SetCuts() method with:

  G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(250*eV, 1*GeV);

Documentation of Livermore models

Full documentation on the low energy electromagnetic package is available from : 

Related papers