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 ;