85 #include "Geant4/G4PhysicalConstants.hh" 86 #include "Geant4/G4SystemOfUnits.hh" 87 #include "Geant4/G4Electron.hh" 88 #include "Geant4/G4MuonPlus.hh" 89 #include "Geant4/G4MuonMinus.hh" 90 #include "Geant4/G4BraggModel.hh" 91 #include "Geant4/G4BetheBlochModel.hh" 93 #include "Geant4/G4MuBetheBlochModel.hh" 94 #include "Geant4/G4BetheBlochNoDeltaModel.hh" 96 #include "Geant4/G4UniversalFluctuation.hh" 97 #include "Geant4/G4IonFluctuations.hh" 98 #include "Geant4/G4BohrFluctuations.hh" 99 #include "Geant4/G4UnitsTable.hh" 100 #include "Geant4/G4ICRU73QOModel.hh" 101 #include "Geant4/G4EmParameters.hh" 108 : G4VEnergyLossProcess(name),
109 theParticle(nullptr),
110 theBaseParticle(nullptr),
114 SetProcessSubType(fIonisation);
115 SetSecondaryParticle(G4Electron::Electron());
122 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
131 G4double
x = 0.5*cut/electron_mass_c2;
133 return mass*(gam - 1.0);
139 const G4ParticleDefinition* bpart)
149 G4EmParameters* param = G4EmParameters::Instance();
150 G4double elow = 0.2*MeV;
151 G4double emax = param->MaxKinEnergy();
152 G4double ehigh = std::min(1*GeV, emax);
156 if(q > 0.0) { SetEmModel(
new G4BraggModel()); }
157 else { SetEmModel(
new G4ICRU73QOModel()); }
159 EmModel(0)->SetLowEnergyLimit(param->MinKinEnergy());
160 EmModel(0)->SetHighEnergyLimit(elow);
161 AddEmModel(1, EmModel(0),
new G4IonFluctuations());
164 if (!FluctModel()) { SetFluctModel(
new G4UniversalFluctuation()); }
168 if (!EmModel(1)) { SetEmModel(
new G4BetheBlochNoDeltaModel()); }
169 EmModel(1)->SetLowEnergyLimit(elow);
170 EmModel(1)->SetHighEnergyLimit(ehigh);
171 AddEmModel(2, EmModel(1), FluctModel());
176 if (!EmModel(2)) { SetEmModel(
new G4BetheBlochNoDeltaModel()); }
177 EmModel(2)->SetLowEnergyLimit(ehigh);
178 EmModel(2)->SetHighEnergyLimit(emax);
179 AddEmModel(3, EmModel(2), FluctModel());
195 out <<
" Muon ionisation with NO delta production";
196 G4VEnergyLossProcess::ProcessDescription(out);
virtual G4bool IsApplicable(const G4ParticleDefinition &p) override
const G4ParticleDefinition * theBaseParticle
const G4ParticleDefinition * theParticle
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition *p, const G4Material *, G4double cut) override
MyG4MuIonisationNoDelta(const G4String &name="muIoni")
virtual void PrintInfo() override
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition *, const G4ParticleDefinition *) override
virtual void ProcessDescription(std::ostream &) const override