64 chargeCorrection = 1.0;
65 energyHighLimit = 20.0*MeV;
66 energyLowLimit = 1.0*keV;
68 massFactor = amu_c2/(proton_mass_c2*keV);
88 if(p == lastPart && material == lastMat && kineticEnergy == lastKinEnergy)
93 lastKinEnergy = kineticEnergy;
99 chargeCorrection = 1.0;
107 G4double reducedEnergy = kineticEnergy * proton_mass_c2/mass ;
111 if( reducedEnergy > Zi*energyHighLimit || Zi < 1.5 || !material)
return charge;
114 reducedEnergy = std::max(reducedEnergy,energyLowLimit);
119 static G4double c[6] = {0.2865, 0.1266, -0.001429,
120 0.02402,-0.01135, 0.001475} ;
122 G4double Q = std::max(0.0,std::log(reducedEnergy*massFactor));
125 for (
G4int i=1; i<6; i++) {
130 if(x < 0.2) ex = x * (1 - 0.5*x);
131 else ex = 1. - std::exp(-x);
135 G4double tt = ( 0.007 + 0.00005 * z );
136 if(tq2 < 0.2) tt *= (1.0 - tq2 + 0.5*tq2*tq2);
137 else tt *= std::exp(-tq2);
139 effCharge = charge*(1.0 + tt) * std::sqrt(ex);
156 G4double vF = std::sqrt(eF/energyBohr);
160 y = vF * std::sqrt(v1sq) * ( 1.0 + 0.2/v1sq ) / zi23 ;
164 y = 0.692308 * vF * (1.0 + 0.666666*v1sq + v1sq*v1sq/15.0) / zi23 ;
170 q = 1.0 - std::exp( 0.803*y3 - 1.3167*y3*y3 - 0.38157*y - 0.008983*y*y ) ;
179 if(q < qmin) q = qmin;
181 effCharge = q*charge;
192 G4double tq = 7.6 - std::log(reducedEnergy/keV);
194 G4double sq = ( 0.18 + 0.0015 * z ) / (Zi*Zi);
195 if(tq2 < 0.2) sq *= (1.0 - tq2 + 0.5*tq2*tq2);
196 else sq *= std::exp(-tq2);
204 G4double lambda = 10.0 * vF / (zi13 * (6.0 + q));
205 if(q < 0.2) lambda *= (1.0 - 0.66666667*q - q*q/9.0);
206 else lambda *= std::pow(1.0-q, 0.666666);
211 if(lambda2 < 0.2) xx *= lambda2*(1.0 - 0.5*lambda2);
212 else xx *= std::log(1.0 + lambda2);
214 chargeCorrection = sq * (1.0 + xx);
G4double GetZeffective() const
G4double GetFermiEnergy() const
G4IonisParamMat * GetIonisation() const
G4double GetZ13(G4double Z)
static G4NistManager * Instance()
G4double GetPDGMass() const
G4double GetPDGCharge() const
G4double EffectiveCharge(const G4ParticleDefinition *p, const G4Material *material, G4double kineticEnergy)
virtual ~G4ionEffectiveCharge()