Physics process | Particle(s) | Old Penelope Process | New Penelope Model |
Rayleigh scattering | gamma | G4PenelopeRayleigh | G4PenelopeRayleighModel |
Compton scattering | gamma | G4PenelopeCompton | G4PenelopeComptonModel |
Photo-electric effect | gamma | G4PenelopePhotoElectric | G4PenelopePhotoElectricModel |
Pair production | gamma | G4PenelopeGammaConversion | G4PenelopeGammaConversionModel |
Ionisation | e± | G4PenelopeIonisation | G4PenelopeIonisationModel |
Bremsstrahlung | e± | G4PenelopeBremsstrahlung | G4PenelopeBremsstrahlungModel |
Positron annihilation | e+ | G4PenelopeAnnihilation | G4PenelopeAnnihilationModel |
In the old approach there were multiple versions of the same process, one in the standard EM package and one/two in the LowEnergy EM package (e.g. for Compton Scattering: G4LowEnergyCompton, G4PenelopeCompton and G4ComptonScattering).
In the new approach there is only one process (e.g. G4ComptonScattering) and multiple models that can be registered to the process (same approch as hadronic physics). For instance, the models available for the Compton scattering (to be registered to G4ComptonScattering) are: G4KleinNishinaCompton (default), G4PenelopeComponModel(Penelope) and G4LivermoreComptonModel (former LowEnergy model).
The most direct way to implement the Penelope physics in a user application is to register the ready-for-the-use constructor G4EmPenelopePhysics provided by Geant4 into the application physics list. The constructor can be directly registered to the modular physics list of the user application as
#include "G4EmPenelopePhysics.hh";
G4VPhysicsConstructor* emPhysicsList = new G4EmPenelopePhysics();
emPhysicsList->ConstructProcess();
or
#include "G4EmPenelopePhysics.hh";
RegisterPhysics( new G4EmPenelopePhysics() );
To get the full flexibility about the energy window and the types of models to be registered for each physics process, the application physics list must be written ad-hoc. The following code can be used in the user physics list, to register the individual Penelope models to the EM processes: first instantiate the process and then register the model to the process.
In this example, the Penelope model is used up to 1 GeV; above 1 GeV the default model is considered (which is G4KleinNishinaCompton for Compton Scattering and G4MollerBhabhaModel for electron ionisation).
#include "G4PenelopeComptonModel.hh";
#include "G4ComptonScattering.hh";
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
theComptonScattering->SetEmModel(new G4PenelopeComptonModel());
theComptonScattering->SetHighEnergy(1.*GeV);
pmanager->AddDiscreteProcess(theComptonScattering);
#include "G4PenelopeIonisationModel.hh";
#include "G4eIonisation.hh";
G4eIonisation* theIonisation = new G4eIonisation();
theIonisation->SetEmModel(new G4PenelopeIonisationModel());
heIonisation->SetHighEnergy(1.*GeV);
pmanager->AddProcess(theIonisation,-1,1,1);
The processes to which the Penelope models have to be registered are summarized in the table below:
Physics process | Particle(s) | Process to which register the model | Penelope Model |
Rayleigh scattering | gamma | G4RayleighScattering | G4PenelopeRayleighModel |
Compton scattering | gamma | G4ComptonScattering | G4PenelopeComptonModel |
Photo-electric effect | gamma | G4PhotoElectricEffect | G4PenelopePhotoElectricModel |
Pair production | gamma | G4GammaConversion | G4PenelopeGammaConversionModel |
Ionisation | e± | G4eIonisation | G4PenelopeIonisationModel |
Bremsstrahlung | e± | G4eBremsstrahlung | G4PenelopeBremsstrahlungModel |
Positron annihilation | e+ | G4eplusAnnihilation | G4PenelopeAnnihilationModel |
The ordering of the continuous processes for electrons and positrons is the same as for Standard and Livermore models, namely:
electrons:
pmanager->AddProcess(new G4eMultipleScattering,-1, 1, 1);
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-3, 3);
positrons:
pmanager->AddProcess(new G4eMultipleScattering,-1, 1, 1);
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
/run/setCut 0.01 mmor for a given particle type (for e.g. electron)
/run/setCutForAGivenParticle e- 0.01 mm2) 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 eVor alternatively directly in your Physics list in the optional SetCuts() method with:
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(250*eV, 1*GeV);