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 ;
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
const G4double * GetAtomicNumDensityVector() const
const G4double theHeMassAMU
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
size_t GetNumberOfElements() const
const G4ElementVector * GetElementVector() const