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 =
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] ;
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 ;