13 #include <simulation/monopoles/G4mplIonisation.h>
14 #include <simulation/monopoles/G4mplIonisationWithDeltaModel.h>
17 #include <CLHEP/Units/PhysicalConstants.h>
18 #include <CLHEP/Units/SystemOfUnits.h>
19 #include <G4Electron.hh>
20 #include <G4EmParameters.hh>
24 using namespace Belle2::Monopoles;
25 using namespace CLHEP;
27 G4mplIonisation::G4mplIonisation(G4double mCharge,
const G4String& name)
28 : G4VEnergyLossProcess(name),
29 magneticCharge(mCharge),
36 SetProcessSubType(fIonisation);
37 SetStepFunction(0.2, 1 * mm);
38 SetSecondaryParticle(G4Electron::Electron());
53 G4double x = 0.5 * cut / electron_mass_c2;
54 G4double mass = mpl->GetPDGMass();
55 G4double ratio = electron_mass_c2 / mass;
56 G4double gam = x * ratio + std::sqrt((1. + x) * (1. + x * ratio * ratio));
57 return mass * (gam - 1.0);
61 const G4ParticleDefinition*)
75 G4EmParameters* param = G4EmParameters::Instance();
76 G4double emin = std::min(param->MinKinEnergy(), ion->LowEnergyLimit());
77 G4double emax = std::max(param->MaxKinEnergy(), ion->HighEnergyLimit());
78 G4int bin = G4lrint(param->NumberOfBinsPerDecade() * std::log10(emax / emin));
79 ion->SetLowEnergyLimit(emin);
80 ion->SetHighEnergyLimit(emax);
81 SetMinKinEnergy(emin);
82 SetMaxKinEnergy(emax);
86 AddEmModel(1, ion, ion);