85 G4double q = IonEffChargeSquare(material,energy,particleMass,charge) ;
100 G4double q = IonEffChargeSquare(material,kineticEnergy,particleMass,charge) ;
157 G4double G4hIonEffChargeSquare::IonEffChargeSquare(
170 if(reducedEnergy < 1.0*
keV) reducedEnergy = 1.0*
keV;
171 if( (reducedEnergy > ionCharge * 10.0 *
MeV) ||
172 (ionCharge < 1.5) )
return ionCharge*ionCharge ;
175 1.0309, 0.15976, 0.59782, 1.0781, 1.0486, 1.0, 1.058, 0.93942, 0.74562, 0.3424,
176 0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712,
177 0.81707, 0.9943, 1.1423, 1.2381, 1.1222, 0.92705, 1.0047, 1.2, 1.0661, 0.97411,
178 0.84912, 0.95, 1.0903, 1.0429, 0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207,
179 1.029, 1.2542, 1.122, 1.1241, 1.0882, 1.2709, 1.2542, 0.90094, 0.74093, 0.86054,
180 0.93155, 1.0047, 0.55379, 0.43289, 0.32636, 0.5131, 0.695, 0.72591, 0.71202, 0.67413,
181 0.71418, 0.71453, 0.5911, 0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884,
182 0.71801, 0.83048, 1.1222, 1.2381, 1.045, 1.0733, 1.0953, 1.2381, 1.2879, 0.78654,
183 0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065,
187 1.0, 1.0, 1.1, 1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9,
188 0.82, 0.81, 0.83, 0.88, 1.0, 0.95, 0.97, 0.99, 0.98, 0.97,
189 0.98, 0.97, 0.96, 0.93, 0.91, 0.9, 0.88, 0.9, 0.9, 0.9,
190 0.9, 0.85, 0.9, 0.9, 0.91, 0.92, 0.9, 0.9, 0.9, 0.9,
191 0.9, 0.88, 0.9, 0.88, 0.88, 0.9, 0.9, 0.88, 0.9, 0.9,
192 0.9, 0.9, 0.96, 1.2, 0.9, 0.88, 0.88, 0.85, 0.9, 0.9,
193 0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1, 1.08, 1.08,
194 1.08, 1.08, 1.09, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15,
195 1.17, 1.2, 1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16,
198 static G4double c[6] = {0.2865, 0.1266, -0.001429,
199 0.02402,-0.01135, 0.001475} ;
203 const G4double* theAtomicNumDensityVector =
211 if( 1 == NumberOfElements ) {
212 z = material->
GetZ() ;
215 else if(iz > 91) iz = 91 ;
220 for (
G4int iel=0; iel<NumberOfElements; iel++)
222 const G4Element* element = (*theElementVector)[iel] ;
229 else if(iz > 91) iz =91 ;
239 if( ionCharge < 2.5 ) {
241 G4double e = std::log(std::max(1.0, kineticEnergy / (
keV*theHeMassAMU) )) ;
244 for (
G4int i=1; i<6; i++) {
249 q = 1.0 + ( 0.007 + 0.00005 *
z ) * std::exp( -q*q ) ;
250 return 4.0 * q * q * (1.0 - std::exp(-x)) ;
256 G4double v1 = std::sqrt( reducedEnergy / (25.0 *
keV) )/ vF ;
258 G4double z13 = std::pow(ionCharge, 0.3333) ;
262 y = vF * v1 * ( 1.0 + 0.2 / (v1*v1) ) / (z13*z13) ;
266 y = 0.6923 * vF * (1.0 + 2.0*v1*v1/3.0 + v1*v1*v1*v1/15.0) / (z13*z13) ;
270 G4double q = 1.0 - std::exp( 0.803*y3 - 1.3167*y3*y3 -
271 0.38157*y - 0.008983*y*y ) ;
272 if( q < 0.0 ) q = 0.0 ;
274 G4double sLocal = 7.6 - std::log(std::max(1.0, reducedEnergy/
keV)) ;
275 sLocal = 1.0 + ( 0.18 + 0.0015 *
z ) * std::exp( -sLocal*sLocal )/ (ionCharge*ionCharge) ;
281 G4double lambda = 10.0 * vF * std::pow(1.0-q, 0.6667) / (z13 * (6.0 + q)) ;
282 G4double qeff = ionCharge * sLocal *
283 ( q + 0.5*(1.0-q) * std::log(1.0 + lambda*lambda) / (vF*vF) ) ;
284 if( 0.1 > qeff ) qeff = 0.1 ;