11#include <simulation/monopoles/G4mplIonisation.h>
12#include <simulation/monopoles/G4mplIonisationWithDeltaModel.h>
15#include <CLHEP/Units/PhysicalConstants.h>
16#include <CLHEP/Units/SystemOfUnits.h>
17#include <G4Electron.hh>
18#include <G4EmParameters.hh>
22using namespace Belle2::Monopoles;
26 : G4VEnergyLossProcess(name),
27 magneticCharge(mCharge),
34 SetProcessSubType(fIonisation);
35 SetStepFunction(0.2, 1 * mm);
36 SetSecondaryParticle(G4Electron::Electron());
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);
59 const G4ParticleDefinition*)
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);
84 AddEmModel(1, ion, ion);
Concrete monopole ionisation model.
void SetParticle(const G4ParticleDefinition *p)
Read definition of the monopole.
G4mplIonisation(G4double mCharge=0.0, const G4String &name="mplIoni")
Constructor.
G4double magneticCharge
Monopole charge, in e+ units.
virtual ~G4mplIonisation()
Destructor.
G4bool isInitialised
Is the process initialised.
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition *p, const G4ParticleDefinition *) override
G4VEnergyLossProcess::InitialiseEnergyLossProcess() implementation.
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.
Abstract base class for different kinds of events.