Scaling factors for cross sections

For the evaluation of systematic errors due to uncertainties in the Geant4 hadronic cross sections we recommend the following approach. Scaling up (e.g. by 10%, by using a scaling factor of 1.10) or down (e.g. using a scaling factor of 0.90) the cross sections, independently for elastic and inelastic interactions, and independently for different types of hadrons. Currently, this is possible for the following three categories of hadrons:

  • nucleons : proton and neutron together

  • pions : \(\pi^{+}\) and \(\pi^{-}\) together

  • all the rest of hadrons :

    • kaons,

    • hyperons,

    • anti-baryons,

    • light ions,

    • light anti-ions,

    • charm and bottom hadrons all together

The choice of scaling value is up to the user and should be considered in the context of estimating sytematic uncertainties along with a knowledge of accuracy of the experimental data for which the cross-section was produced.

Public methods of the singleton class G4HadronicParameters allow to enable the scaling of cross sections (disabled by default), and to set the scaling factors (by default 1.0) for the 6 cases considered: the three above hadron categories, for the two types of interactions, elastic and inelastic.

An example of how to use them is the following:

// First enable the scaling of cross section (by default disabled):
G4HadronicParameters::Instance()->SetApplyFactorXS( true );

// Scaling up the nucleon inelastic cross sections by 10%
G4HadronicParameters::Instance()->SetXSFactorNucleonInelastic( 1.10 );

// Scaling down the nucleon elastic cross sections by 15%
G4HadronicParameters::Instance()->SetXSFactorNucleonElastic( 0.85 );

// Scaling up the pion inelastic cross sections by 7%
G4HadronicParameters::Instance()->SetXSFactorPionInelastic( 1.07 );

// Scaling down the pion elastic cross sections by 12%
G4HadronicParameters::Instance()->SetXSFactorPionElastic( 0.88 );

// Scaling up all the other hadrons (excluding nucleons and pions)
// inelastic cross sections by 20%
G4HadronicParameters::Instance()->SetXSFactorHadronInelastic( 1.20 );

// Scaling down all the other hadrons (excluding nucleons and pions)
// elastic cross sections by 25%
G4HadronicParameters::Instance()->SetXSFactorHadronElastic( 0.75 );

(Note that, contrary to what shown in the example above, for evaluation of systematic errors, it makes more sense to scale up and down these 6 cases independently and invidually.)

Currently only the above C++ calls are available for users to scale the cross sections (i.e. no UI commands), and they should be issued before the run initialization.

The choice of scaling value is up to the user and should be used as a basis for understanding systematic variations according to the uncertainties in the base cross-section and not as a means of tuning results to fit data.