66 chargeCorrection = 1.0;
67 energyHighLimit = 20.0*MeV;
68 energyLowLimit = 1.0*keV;
70 massFactor = amu_c2/(proton_mass_c2*keV);
76 inveplus = 1.0/CLHEP::eplus;
91 if(p == lastPart && material == lastMat && kineticEnergy == lastKinEnergy)
96 lastKinEnergy = kineticEnergy;
102 chargeCorrection = 1.0;
110 G4double reducedEnergy = kineticEnergy * proton_mass_c2/mass ;
115 if(Zi < 1.5 || !material || reducedEnergy > Zi*energyHighLimit ) {
119 reducedEnergy = std::max(reducedEnergy,energyLowLimit);
125 {0.2865,0.1266,-0.001429,0.02402,-0.01135,0.001475};
130 for (
G4int i=1; i<6; ++i) {
135 if(x < 0.2) { ex = x * (1 - 0.5*x); }
136 else { ex = 1. -
G4Exp(-x); }
140 G4double tt = ( 0.007 + 0.00005 * z );
141 if(tq2 < 0.2) { tt *= (1.0 - tq2 + 0.5*tq2*tq2); }
142 else { tt *=
G4Exp(-tq2); }
144 effCharge = charge*(1.0 + tt) * std::sqrt(ex);
157 G4double vF = std::sqrt(eF/energyBohr);
161 y = vF * std::sqrt(v1sq) * ( 1.0 + 0.2/v1sq ) / zi23 ;
165 y = 0.692308 * vF * (1.0 + 0.666666*v1sq + v1sq*v1sq/15.0) / zi23 ;
171 q = 1.0 -
G4Exp( 0.803*y3 - 1.3167*y3*y3 - 0.38157*y - 0.008983*y*y);
172 q = std::max(q, minCharge/Zi);
174 effCharge = q*charge;
178 G4double sq = 1.0 + ( 0.18 + 0.0015 * z )*
G4Exp(-tq2)/ (Zi*Zi);
186 G4double lambda = 10.0 * vF *g4calc->
A23(1.0 - q)/ (zi13 * (6.0 + q));
192 chargeCorrection = sq * (1.0 + xx);
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4double GetZeffective() const
G4double GetFermiEnergy() const
G4IonisParamMat * GetIonisation() const
G4double GetPDGMass() const
G4double GetPDGCharge() const
static G4Pow * GetInstance()
G4double A13(G4double A) const
G4double A23(G4double A) const
G4double EffectiveCharge(const G4ParticleDefinition *p, const G4Material *material, G4double kineticEnergy)
virtual ~G4ionEffectiveCharge()