Belle II Software development
G4mplIonisation Class Reference

Monopole ionisation class. More...

#include <G4mplIonisation.h>

Inheritance diagram for G4mplIonisation:

Public Member Functions

 G4mplIonisation (G4double mCharge=0.0, const G4String &name="mplIoni")
 Constructor.
 
virtual ~G4mplIonisation ()
 Destructor.
 
virtual G4bool IsApplicable (const G4ParticleDefinition &p) override
 Dummy to check if the proccess is is applicable to a certain particle.
 
virtual G4double MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut) final
 Threshold for zero value.
 
G4mplIonisationoperator= (const G4mplIonisation &right)=delete
 Assignment operator should be hidden.
 
 G4mplIonisation (const G4mplIonisation &copy)=delete
 Copy constructor should be hidden.
 

Protected Member Functions

virtual void InitialiseEnergyLossProcess (const G4ParticleDefinition *p, const G4ParticleDefinition *) override
 G4VEnergyLossProcess::InitialiseEnergyLossProcess() implementation.
 

Private Attributes

G4double magneticCharge
 Monopole charge, in e+ units.
 
G4bool isInitialised
 Is the process initialised.
 

Detailed Description

Monopole ionisation class.

A wrapper, rather than a concrete class. Different ionisation models can be plugged in.

Definition at line 32 of file G4mplIonisation.h.

Constructor & Destructor Documentation

◆ G4mplIonisation() [1/2]

G4mplIonisation ( G4double  mCharge = 0.0,
const G4String &  name = "mplIoni" 
)
explicit

Constructor.

Parameters
mChargeMonopole magnetic charge
nameName of the ionisation process in GEANT4

Definition at line 25 of file G4mplIonisation.cc.

26 : G4VEnergyLossProcess(name),
27 magneticCharge(mCharge),
28 isInitialised(false)
29{
30 // By default 1e magnetic charge is used
31 if (magneticCharge == 0.0) { magneticCharge = 1.0 * eplus; }
32
33 SetVerboseLevel(0);
34 SetProcessSubType(fIonisation);
35 SetStepFunction(0.2, 1 * mm);
36 SetSecondaryParticle(G4Electron::Electron());
37}
G4double magneticCharge
Monopole charge, in e+ units.
G4bool isInitialised
Is the process initialised.

◆ ~G4mplIonisation()

~G4mplIonisation ( )
virtual

Destructor.

Definition at line 39 of file G4mplIonisation.cc.

40{}

◆ G4mplIonisation() [2/2]

G4mplIonisation ( const G4mplIonisation copy)
delete

Copy constructor should be hidden.

Parameters
copyCopy reference

Member Function Documentation

◆ InitialiseEnergyLossProcess()

void InitialiseEnergyLossProcess ( const G4ParticleDefinition *  p,
const G4ParticleDefinition *   
)
overrideprotectedvirtual

G4VEnergyLossProcess::InitialiseEnergyLossProcess() implementation.

Initialise ionisation proccess, if not it has not been initialised yet.

Concrete ionisation model is called inside this function.

Parameters
pParticle definition pointer, the monopole in our case

Definition at line 58 of file G4mplIonisation.cc.

60{
61 if (isInitialised) { return; }
62
63 SetBaseParticle(0);
64
65 // monopole model is responsible both for energy loss and fluctuations
66
69
70 ion->SetParticle(p);
71
72 // define size of dedx and range tables
73 G4EmParameters* param = G4EmParameters::Instance();
74 G4double emin = std::min(param->MinKinEnergy(), ion->LowEnergyLimit());
75 G4double emax = std::max(param->MaxKinEnergy(), ion->HighEnergyLimit());
76 G4int bin = G4lrint(param->NumberOfBinsPerDecade() * std::log10(emax / emin));
77 ion->SetLowEnergyLimit(emin);
78 ion->SetHighEnergyLimit(emax);
79 SetMinKinEnergy(emin);
80 SetMaxKinEnergy(emax);
81 SetDEDXBinning(bin);
82
83 SetEmModel(ion);
84 AddEmModel(1, ion, ion);
85
86 isInitialised = true;
87}
void SetParticle(const G4ParticleDefinition *p)
Read definition of the monopole.

◆ IsApplicable()

G4bool IsApplicable ( const G4ParticleDefinition &  p)
overridevirtual

Dummy to check if the proccess is is applicable to a certain particle.

Parameters
pParticle definition reference
Returns
true

Definition at line 42 of file G4mplIonisation.cc.

43{
44 return true;
45}

◆ MinPrimaryEnergy()

G4double MinPrimaryEnergy ( const G4ParticleDefinition *  p,
const G4Material *  ,
G4double  cut 
)
finalvirtual

Threshold for zero value.

Definition at line 47 of file G4mplIonisation.cc.

50{
51 G4double x = 0.5 * cut / electron_mass_c2;
52 G4double mass = mpl->GetPDGMass();
53 G4double ratio = electron_mass_c2 / mass;
54 G4double gam = x * ratio + std::sqrt((1. + x) * (1. + x * ratio * ratio));
55 return mass * (gam - 1.0);
56}

◆ operator=()

G4mplIonisation & operator= ( const G4mplIonisation right)
delete

Assignment operator should be hidden.

Parameters
rightAssign reference

Member Data Documentation

◆ isInitialised

G4bool isInitialised
private

Is the process initialised.

Definition at line 87 of file G4mplIonisation.h.

◆ magneticCharge

G4double magneticCharge
private

Monopole charge, in e+ units.

Definition at line 86 of file G4mplIonisation.h.


The documentation for this class was generated from the following files: