21 #include "G4PhysicalConstants.hh" 22 #include "G4SystemOfUnits.hh" 23 #include "G4Electron.hh" 24 #include "G4EmParameters.hh" 31 : G4VEnergyLossProcess(name), magneticCharge(mCharge), isInitialised(
false) {
38 SetProcessSubType(fIonisation);
39 SetStepFunction(0.2, 1 * mm);
54 G4double
x = 0.5 * cut / electron_mass_c2;
55 G4double
mass = mpl->GetPDGMass();
57 G4double gam = x * ratio +
std::sqrt((1. + x) * (1. + x * ratio * ratio));
58 return mass * (gam - 1.0);
68 SetBaseParticle(
nullptr);
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);
98 out <<
"No description available." << G4endl;
99 G4VEnergyLossProcess::ProcessDescription(out);
CMSmplIonisation(G4double mCharge=0.0, const G4String &name="mplIoni")
void SetParticle(const G4ParticleDefinition *p)
G4double MinPrimaryEnergy(const G4ParticleDefinition *p, const G4Material *, G4double cut) final
void PrintInfo() override
void ProcessDescription(std::ostream &) const override
void InitialiseEnergyLossProcess(const G4ParticleDefinition *, const G4ParticleDefinition *) override
~CMSmplIonisation() override
G4bool IsApplicable(const G4ParticleDefinition &p) override