170   G4double reducedEnergy = kineticEnergy * proton_mass_c2/particleMass ;
 
  171   if(reducedEnergy < 1.0*
keV) reducedEnergy = 1.0*
keV;
 
  172   if( (reducedEnergy > ionCharge * 10.0 * 
MeV) ||
 
  173       (ionCharge < 1.5) ) 
return ionCharge*ionCharge ;
 
  175   static const G4double vFermi[92] = {
 
  176     1.0309,  0.15976, 0.59782, 1.0781,  1.0486,  1.0,     1.058,   0.93942, 0.74562, 0.3424,
 
  177     0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712,
 
  178     0.81707, 0.9943,  1.1423,  1.2381,  1.1222,  0.92705, 1.0047,  1.2,     1.0661,  0.97411,
 
  179     0.84912, 0.95,    1.0903,  1.0429,  0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207,
 
  180     1.029,   1.2542,  1.122,   1.1241,  1.0882,  1.2709,  1.2542,  0.90094, 0.74093, 0.86054,
 
  181     0.93155, 1.0047,  0.55379, 0.43289, 0.32636, 0.5131,  0.695,   0.72591, 0.71202, 0.67413,
 
  182     0.71418, 0.71453, 0.5911,  0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884,
 
  183     0.71801, 0.83048, 1.1222,  1.2381,  1.045,   1.0733,  1.0953,  1.2381,  1.2879,  0.78654,
 
  184     0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065,
 
  187   static const G4double lFactor[92] = {
 
  188     1.0,  1.0,  1.1,  1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9,
 
  189     0.82, 0.81, 0.83, 0.88, 1.0,  0.95, 0.97, 0.99, 0.98, 0.97,
 
  190     0.98, 0.97, 0.96, 0.93, 0.91, 0.9,  0.88, 0.9,  0.9,  0.9,
 
  191     0.9,  0.85, 0.9,  0.9,  0.91, 0.92, 0.9,  0.9,  0.9,  0.9,
 
  192     0.9,  0.88, 0.9,  0.88, 0.88, 0.9,  0.9,  0.88, 0.9,  0.9,
 
  193     0.9,  0.9,  0.96, 1.2,  0.9,  0.88, 0.88, 0.85, 0.9,  0.9,
 
  194     0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1,  1.08, 1.08,
 
  195     1.08, 1.08, 1.09, 1.09, 1.1,  1.11, 1.12, 1.13, 1.14, 1.15,
 
  196     1.17, 1.2,  1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16,
 
  199   static const G4double c[6] = {0.2865,  0.1266, -0.001429,
 
  200                           0.02402,-0.01135, 0.001475} ;
 
  204   const G4double* theAtomicNumDensityVector =
 
  210   G4double z = 0.0, vF = 0.0, lF = 0.0, norm = 0.0 ;
 
  212   if( 1 == NumberOfElements ) {
 
  213     z = material->
GetZ() ;
 
  216     else if(iz > 91) iz = 91 ;
 
  221     for (
G4int iel=0; iel<NumberOfElements; iel++)
 
  223         const G4Element* element = (*theElementVector)[iel] ;
 
  225         const G4double weight = theAtomicNumDensityVector[iel] ;
 
  230         else if(iz > 91) iz =91 ;
 
  231         vF   += vFermi[
iz] * weight ;
 
  232         lF   += lFactor[
iz] * weight ;
 
  240   if( ionCharge < 2.5 ) {
 
  245     for (
G4int i=1; i<6; i++) {
 
  250     q = 1.0 + ( 0.007 + 0.00005 * 
z ) * 
G4Exp( -q*q ) ;
 
  251     return  4.0 * q * q * (1.0 - 
G4Exp(-x)) ;
 
  257     G4double v1 = std::sqrt( reducedEnergy / (25.0 * 
keV) )/ vF ;
 
  259     G4double z13 = std::pow(ionCharge, 0.3333) ;
 
  263       y = vF * v1 * ( 1.0 + 0.2 / (v1*v1) ) / (z13*z13) ;
 
  267       y = 0.6923 * vF * (1.0 + 2.0*v1*v1/3.0 + v1*v1*v1*v1/15.0) / (z13*z13) ;
 
  272                             0.38157*y - 0.008983*y*y ) ;
 
  273     if( q < 0.0 ) q = 0.0 ;
 
  276     sLocal = 1.0 + ( 0.18 + 0.0015 * 
z ) * 
G4Exp( -sLocal*sLocal )/ (ionCharge*ionCharge) ;
 
  282     G4double lambda = 10.0 * vF * std::pow(1.0-q, 0.6667) / (z13 * (6.0 + q)) ;
 
  283     G4double qeff   = ionCharge * sLocal *
 
  284       ( q + 0.5*(1.0-q) * std::log(1.0 + lambda*lambda) / (vF*vF) ) ;
 
  285     if( 0.1 > qeff ) qeff = 0.1 ;
 
std::vector< G4Element * > G4ElementVector
 
G4hIonEffChargeSquare(const G4String &name)
 
G4double GetKineticEnergy() const 
 
G4ParticleDefinition * GetDefinition() const 
 
const G4ElementVector * GetElementVector() const 
 
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material)
 
const G4double theHeMassAMU
 
G4double IonEffChargeSquare(const G4Material *material, G4double kineticEnergy, G4double particleMass, G4double ionCharge) const 
 
const G4double * GetAtomicNumDensityVector() const 
 
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const 
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
G4double GetPDGMass() const 
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
G4double energy(const ThreeVector &p, const G4double m)
 
const G4double x[NPOINTSGL]
 
size_t GetNumberOfElements() const 
 
static const double eplus
 
G4double GetPDGCharge() const 
 
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const 
 
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const