212 G4double AtomicNumber, G4double, G4double, G4double)
214 static const G4double epsmin = 1.e-4, epsmax = 1.e10;
216 static const G4double Zdat[15] = { 4., 6., 13., 20., 26., 29., 32., 38., 47.,
217 50., 56., 64., 74., 79., 82. };
220 static const G4double celectron[15][22] = {
221 { 1.125, 1.072, 1.051, 1.047, 1.047, 1.050, 1.052, 1.054, 1.054, 1.057,
222 1.062, 1.069, 1.075, 1.090, 1.105, 1.111, 1.112, 1.108, 1.100, 1.093,
224 { 1.408, 1.246, 1.143, 1.096, 1.077, 1.059, 1.053, 1.051, 1.052, 1.053,
225 1.058, 1.065, 1.072, 1.087, 1.101, 1.108, 1.109, 1.105, 1.097, 1.090,
227 { 2.833, 2.268, 1.861, 1.612, 1.486, 1.309, 1.204, 1.156, 1.136, 1.114,
228 1.106, 1.106, 1.109, 1.119, 1.129, 1.132, 1.131, 1.124, 1.113, 1.104,
230 { 3.879, 3.016, 2.380, 2.007, 1.818, 1.535, 1.340, 1.236, 1.190, 1.133,
231 1.107, 1.099, 1.098, 1.103, 1.110, 1.113, 1.112, 1.105, 1.096, 1.089,
233 { 6.937, 4.330, 2.886, 2.256, 1.987, 1.628, 1.395, 1.265, 1.203, 1.122,
234 1.080, 1.065, 1.061, 1.063, 1.070, 1.073, 1.073, 1.070, 1.064, 1.059,
236 { 9.616, 5.708, 3.424, 2.551, 2.204, 1.762, 1.485, 1.330, 1.256, 1.155,
237 1.099, 1.077, 1.070, 1.068, 1.072, 1.074, 1.074, 1.070, 1.063, 1.059,
239 { 11.72, 6.364, 3.811, 2.806, 2.401, 1.884, 1.564, 1.386, 1.300, 1.180,
240 1.112, 1.082, 1.073, 1.066, 1.068, 1.069, 1.068, 1.064, 1.059, 1.054,
242 { 18.08, 8.601, 4.569, 3.183, 2.662, 2.025, 1.646, 1.439, 1.339, 1.195,
243 1.108, 1.068, 1.053, 1.040, 1.039, 1.039, 1.039, 1.037, 1.034, 1.031,
245 { 18.22, 10.48, 5.333, 3.713, 3.115, 2.367, 1.898, 1.631, 1.498, 1.301,
246 1.171, 1.105, 1.077, 1.048, 1.036, 1.033, 1.031, 1.028, 1.024, 1.022,
248 { 14.14, 10.65, 5.710, 3.929, 3.266, 2.453, 1.951, 1.669, 1.528, 1.319,
249 1.178, 1.106, 1.075, 1.040, 1.027, 1.022, 1.020, 1.017, 1.015, 1.013,
251 { 14.11, 11.73, 6.312, 4.240, 3.478, 2.566, 2.022, 1.720, 1.569, 1.342,
252 1.186, 1.102, 1.065, 1.022, 1.003, 0.997, 0.995, 0.993, 0.993, 0.993,
254 { 22.76, 20.01, 8.835, 5.287, 4.144, 2.901, 2.219, 1.855, 1.677, 1.410,
255 1.224, 1.121, 1.073, 1.014, 0.986, 0.976, 0.974, 0.972, 0.973, 0.974,
257 { 50.77, 40.85, 14.13, 7.184, 5.284, 3.435, 2.520, 2.059, 1.837, 1.512,
258 1.283, 1.153, 1.091, 1.010, 0.969, 0.954, 0.950, 0.947, 0.949, 0.952,
260 { 65.87, 59.06, 15.87, 7.570, 5.567, 3.650, 2.682, 2.182, 1.939, 1.579,
261 1.325, 1.178, 1.108, 1.014, 0.965, 0.947, 0.941, 0.938, 0.940, 0.944,
263 { 55.60, 47.34, 15.92, 7.810, 5.755, 3.767, 2.760, 2.239, 1.985, 1.609,
264 1.343, 1.188, 1.113, 1.013, 0.960, 0.939, 0.933, 0.930, 0.933, 0.936,
268 static const G4double cpositron[15][22] = {
269 { 2.589, 2.044, 1.658, 1.446, 1.347, 1.217, 1.144, 1.110, 1.097, 1.083,
270 1.080, 1.086, 1.092, 1.108, 1.123, 1.131, 1.131, 1.126, 1.117, 1.108,
272 { 3.904, 2.794, 2.079, 1.710, 1.543, 1.325, 1.202, 1.145, 1.122, 1.096,
273 1.089, 1.092, 1.098, 1.114, 1.130, 1.137, 1.138, 1.132, 1.122, 1.113,
275 { 7.970, 6.080, 4.442, 3.398, 2.872, 2.127, 1.672, 1.451, 1.357, 1.246,
276 1.194, 1.179, 1.178, 1.188, 1.201, 1.205, 1.203, 1.190, 1.173, 1.159,
278 { 9.714, 7.607, 5.747, 4.493, 3.815, 2.777, 2.079, 1.715, 1.553, 1.353,
279 1.253, 1.219, 1.211, 1.214, 1.225, 1.228, 1.225, 1.210, 1.191, 1.175,
281 { 17.97, 12.95, 8.628, 6.065, 4.849, 3.222, 2.275, 1.820, 1.624, 1.382,
282 1.259, 1.214, 1.202, 1.202, 1.214, 1.219, 1.217, 1.203, 1.184, 1.169,
284 { 24.83, 17.06, 10.84, 7.355, 5.767, 3.707, 2.546, 1.996, 1.759, 1.465,
285 1.311, 1.252, 1.234, 1.228, 1.238, 1.241, 1.237, 1.222, 1.201, 1.184,
287 { 23.26, 17.15, 11.52, 8.049, 6.375, 4.114, 2.792, 2.155, 1.880, 1.535,
288 1.353, 1.281, 1.258, 1.247, 1.254, 1.256, 1.252, 1.234, 1.212, 1.194,
290 { 22.33, 18.01, 12.86, 9.212, 7.336, 4.702, 3.117, 2.348, 2.015, 1.602,
291 1.385, 1.297, 1.268, 1.251, 1.256, 1.258, 1.254, 1.237, 1.214, 1.195,
293 { 33.91, 24.13, 15.71, 10.80, 8.507, 5.467, 3.692, 2.808, 2.407, 1.873,
294 1.564, 1.425, 1.374, 1.330, 1.324, 1.320, 1.312, 1.288, 1.258, 1.235,
296 { 32.14, 24.11, 16.30, 11.40, 9.015, 5.782, 3.868, 2.917, 2.490, 1.925,
297 1.596, 1.447, 1.391, 1.342, 1.332, 1.327, 1.320, 1.294, 1.264, 1.240,
299 { 29.51, 24.07, 17.19, 12.28, 9.766, 6.238, 4.112, 3.066, 2.602, 1.995,
300 1.641, 1.477, 1.414, 1.356, 1.342, 1.336, 1.328, 1.302, 1.270, 1.245,
302 { 38.19, 30.85, 21.76, 15.35, 12.07, 7.521, 4.812, 3.498, 2.926, 2.188,
303 1.763, 1.563, 1.484, 1.405, 1.382, 1.371, 1.361, 1.330, 1.294, 1.267,
305 { 49.71, 39.80, 27.96, 19.63, 15.36, 9.407, 5.863, 4.155, 3.417, 2.478,
306 1.944, 1.692, 1.589, 1.480, 1.441, 1.423, 1.409, 1.372, 1.330, 1.298,
308 { 59.25, 45.08, 30.36, 20.83, 16.15, 9.834, 6.166, 4.407, 3.641, 2.648,
309 2.064, 1.779, 1.661, 1.531, 1.482, 1.459, 1.442, 1.400, 1.354, 1.319,
311 { 56.38, 44.29, 30.50, 21.18, 16.51, 10.11, 6.354, 4.542, 3.752, 2.724,
312 2.116, 1.817, 1.692, 1.554, 1.499, 1.474, 1.456, 1.412, 1.364, 1.328,
318 static const G4double hecorr[15] = { 120.70, 117.50, 105.00, 92.92, 79.23,
319 74.510, 68.29, 57.39, 41.97, 36.14, 24.53, 10.21, -7.855, -16.84, -22.30 };
324 Z23 = G4Pow::GetInstance()->Z23(G4lrint(AtomicNumber));
330 G4double eKineticEnergy = KineticEnergy;
332 if (
mass > electron_mass_c2) {
333 G4double TAU = KineticEnergy /
mass;
334 G4double c =
mass * TAU * (TAU + 2.) / (electron_mass_c2 * (TAU + 1.));
336 G4double tau = 0.5 * (w + sqrt(w * w + 4. * c));
337 eKineticEnergy = electron_mass_c2 * tau;
340 G4double eTotalEnergy = eKineticEnergy + electron_mass_c2;
341 G4double beta2 = eKineticEnergy * (eTotalEnergy + electron_mass_c2) /
342 (eTotalEnergy * eTotalEnergy);
343 G4double bg2 = eKineticEnergy * (eTotalEnergy + electron_mass_c2) /
344 (electron_mass_c2 * electron_mass_c2);
349 sigma = 2. * eps * eps;
350 else if (eps < epsmax)
351 sigma = G4Log(1. + 2. * eps) - 2. * eps / (1. + 2. * eps);
353 sigma = G4Log(2. * eps) - 1. + 1. / eps;
355 sigma *=
ChargeSquare * AtomicNumber * AtomicNumber / (beta2 * bg2);
358 G4double c1, c2, cc1, cc2, corr;
362 while ((iZ >= 0) && (Zdat[iZ] >= AtomicNumber)) iZ -= 1;
363 if (iZ == 14) iZ = 13;
364 if (iZ == -1) iZ = 0;
366 G4double ZZ1 = Zdat[iZ];
367 G4double ZZ2 = Zdat[iZ + 1];
369 (AtomicNumber - ZZ1) * (AtomicNumber + ZZ1) / ((ZZ2 - ZZ1) * (ZZ2 + ZZ1));
371 if (eKineticEnergy <=
Tlim) {
374 while ((iT >= 0) && (
Tdat[iT] >= eKineticEnergy)) iT -= 1;
375 if (iT == 21) iT = 20;
376 if (iT == -1) iT = 0;
379 G4double T =
Tdat[iT], E = T + electron_mass_c2;
380 G4double b2small = T * (E + electron_mass_c2) / (E * E);
383 E = T + electron_mass_c2;
384 G4double b2big = T * (E + electron_mass_c2) / (E * E);
385 G4double ratb2 = (beta2 - b2small) / (b2big - b2small);
388 c1 = celectron[iZ][iT];
389 c2 = celectron[iZ + 1][iT];
390 cc1 = c1 + ratZ * (c2 - c1);
392 c1 = celectron[iZ][iT + 1];
393 c2 = celectron[iZ + 1][iT + 1];
394 cc2 = c1 + ratZ * (c2 - c1);
396 corr = cc1 + ratb2 * (cc2 - cc1);
401 c1 = cpositron[iZ][iT];
402 c2 = cpositron[iZ + 1][iT];
403 cc1 = c1 + ratZ * (c2 - c1);
405 c1 = cpositron[iZ][iT + 1];
406 c2 = cpositron[iZ + 1][iT + 1];
407 cc2 = c1 + ratZ * (c2 - c1);
409 corr = cc1 + ratb2 * (cc2 - cc1);
418 if ((AtomicNumber >= ZZ1) && (AtomicNumber <= ZZ2))
419 sigma = c1 + ratZ * (c2 - c1);
420 else if (AtomicNumber < ZZ1)
421 sigma = AtomicNumber * AtomicNumber * c1 / (ZZ1 * ZZ1);
422 else if (AtomicNumber > ZZ2)
423 sigma = AtomicNumber * AtomicNumber * c2 / (ZZ2 * ZZ2);