65 lowEnergyLimit(1.*
MeV),
66 highEnergyLimit(100.*
GeV),
67 twoln10(2.*std::log(10.)),
85 G4double eloss = BetheBlochFormula(material,energy,particleMass) ;
97 G4double eloss = BetheBlochFormula(material,kineticEnergy,particleMass) ;
108 return highEnergyLimit ;
127 return highEnergyLimit ;
135 return lowEnergyLimit ;
156 G4double G4hBetheBlochModel::BetheBlochFormula(
167 G4double tau = kineticEnergy/particleMass ;
171 if ( tau < taul ) tau = taul ;
175 G4double gamma,bg2,beta2,tmax,
x,delta,sh ;
188 bg2 = tau*(tau+2.0) ;
189 beta2 = bg2/(gamma*gamma) ;
195 x = std::log(bg2)/twoln10 ;
200 delta = twoln10*x - cden ;
201 if ( x < x1den ) delta += aden*std::pow((x1den-x),mden) ;
208 if ( bg2 > bg2lim ) {
209 for (
G4int k=0; k<=2; k++) {
211 sh += shellCorrectionVector[k]/
x;
215 for (
G4int k=0; k<=2; k++) {
217 sh += shellCorrectionVector[k]/
x;
219 sh *= std::log(tau/taul)/std::log(taulim/taul) ;
224 ionloss -= delta + sh ;
227 if ( ionloss < 0.0) ionloss = 0.0 ;
G4IonisParamMat * GetIonisation() const
G4double GetAdensity() const
G4double GetKineticEnergy() const
G4double GetX1density() const
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const
G4double GetElectronDensity() const
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material)
G4hBetheBlochModel(const G4String &name)
G4double GetX0density() const
G4double GetPDGMass() const
G4double GetCdensity() const
G4double energy(const ThreeVector &p, const G4double m)
G4double * GetShellCorrectionVector() const
static constexpr double GeV
G4double GetMeanExcitationEnergy() const
static constexpr double MeV
G4double GetMdensity() const
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const