151{
152 static constexpr G4double epsmin = 1.e-4;
153 static constexpr G4double epsmax = 1.e10;
154
155 static constexpr G4double Zdat[15] = { 4., 6., 13., 20., 26., 29., 32., 38.,
156 47., 50., 56., 64., 74., 79., 82. };
157
158
159 static constexpr G4double celectron[15][22] = {
160 { 1.125, 1.072, 1.051, 1.047, 1.047, 1.050, 1.052, 1.054,
161 1.054, 1.057, 1.062, 1.069, 1.075, 1.090, 1.105, 1.111,
162 1.112, 1.108, 1.100, 1.093, 1.089, 1.087 },
163 { 1.408, 1.246, 1.143, 1.096, 1.077, 1.059, 1.053, 1.051,
164 1.052, 1.053, 1.058, 1.065, 1.072, 1.087, 1.101, 1.108,
165 1.109, 1.105, 1.097, 1.090, 1.086, 1.082 },
166 { 2.833, 2.268, 1.861, 1.612, 1.486, 1.309, 1.204, 1.156,
167 1.136, 1.114, 1.106, 1.106, 1.109, 1.119, 1.129, 1.132,
168 1.131, 1.124, 1.113, 1.104, 1.099, 1.098 },
169 { 3.879, 3.016, 2.380, 2.007, 1.818, 1.535, 1.340, 1.236,
170 1.190, 1.133, 1.107, 1.099, 1.098, 1.103, 1.110, 1.113,
171 1.112, 1.105, 1.096, 1.089, 1.085, 1.098 },
172 { 6.937, 4.330, 2.886, 2.256, 1.987, 1.628, 1.395, 1.265,
173 1.203, 1.122, 1.080, 1.065, 1.061, 1.063, 1.070, 1.073,
174 1.073, 1.070, 1.064, 1.059, 1.056, 1.056 },
175 { 9.616, 5.708, 3.424, 2.551, 2.204, 1.762, 1.485, 1.330,
176 1.256, 1.155, 1.099, 1.077, 1.070, 1.068, 1.072, 1.074,
177 1.074, 1.070, 1.063, 1.059, 1.056, 1.052 },
178 { 11.72, 6.364, 3.811, 2.806, 2.401, 1.884, 1.564, 1.386,
179 1.300, 1.180, 1.112, 1.082, 1.073, 1.066, 1.068, 1.069,
180 1.068, 1.064, 1.059, 1.054, 1.051, 1.050 },
181 { 18.08, 8.601, 4.569, 3.183, 2.662, 2.025, 1.646, 1.439,
182 1.339, 1.195, 1.108, 1.068, 1.053, 1.040, 1.039, 1.039,
183 1.039, 1.037, 1.034, 1.031, 1.030, 1.036 },
184 { 18.22, 10.48, 5.333, 3.713, 3.115, 2.367, 1.898, 1.631,
185 1.498, 1.301, 1.171, 1.105, 1.077, 1.048, 1.036, 1.033,
186 1.031, 1.028, 1.024, 1.022, 1.021, 1.024 },
187 { 14.14, 10.65, 5.710, 3.929, 3.266, 2.453, 1.951, 1.669,
188 1.528, 1.319, 1.178, 1.106, 1.075, 1.040, 1.027, 1.022,
189 1.020, 1.017, 1.015, 1.013, 1.013, 1.020 },
190 { 14.11, 11.73, 6.312, 4.240, 3.478, 2.566, 2.022, 1.720,
191 1.569, 1.342, 1.186, 1.102, 1.065, 1.022, 1.003, 0.997,
192 0.995, 0.993, 0.993, 0.993, 0.993, 1.011 },
193 { 22.76, 20.01, 8.835, 5.287, 4.144, 2.901, 2.219, 1.855,
194 1.677, 1.410, 1.224, 1.121, 1.073, 1.014, 0.986, 0.976,
195 0.974, 0.972, 0.973, 0.974, 0.975, 0.987 },
196 { 50.77, 40.85, 14.13, 7.184, 5.284, 3.435, 2.520, 2.059,
197 1.837, 1.512, 1.283, 1.153, 1.091, 1.010, 0.969, 0.954,
198 0.950, 0.947, 0.949, 0.952, 0.954, 0.963 },
199 { 65.87, 59.06, 15.87, 7.570, 5.567, 3.650, 2.682, 2.182,
200 1.939, 1.579, 1.325, 1.178, 1.108, 1.014, 0.965, 0.947,
201 0.941, 0.938, 0.940, 0.944, 0.946, 0.954 },
202 { 55.60, 47.34, 15.92, 7.810, 5.755, 3.767, 2.760, 2.239,
203 1.985, 1.609, 1.343, 1.188, 1.113, 1.013, 0.960, 0.939,
204 0.933, 0.930, 0.933, 0.936, 0.939, 0.949 }
205 };
206
207 static constexpr G4double cpositron[15][22] = {
208 { 2.589, 2.044, 1.658, 1.446, 1.347, 1.217, 1.144, 1.110,
209 1.097, 1.083, 1.080, 1.086, 1.092, 1.108, 1.123, 1.131,
210 1.131, 1.126, 1.117, 1.108, 1.103, 1.100 },
211 { 3.904, 2.794, 2.079, 1.710, 1.543, 1.325, 1.202, 1.145,
212 1.122, 1.096, 1.089, 1.092, 1.098, 1.114, 1.130, 1.137,
213 1.138, 1.132, 1.122, 1.113, 1.108, 1.102 },
214 { 7.970, 6.080, 4.442, 3.398, 2.872, 2.127, 1.672, 1.451,
215 1.357, 1.246, 1.194, 1.179, 1.178, 1.188, 1.201, 1.205,
216 1.203, 1.190, 1.173, 1.159, 1.151, 1.145 },
217 { 9.714, 7.607, 5.747, 4.493, 3.815, 2.777, 2.079, 1.715,
218 1.553, 1.353, 1.253, 1.219, 1.211, 1.214, 1.225, 1.228,
219 1.225, 1.210, 1.191, 1.175, 1.166, 1.174 },
220 { 17.97, 12.95, 8.628, 6.065, 4.849, 3.222, 2.275, 1.820,
221 1.624, 1.382, 1.259, 1.214, 1.202, 1.202, 1.214, 1.219,
222 1.217, 1.203, 1.184, 1.169, 1.160, 1.151 },
223 { 24.83, 17.06, 10.84, 7.355, 5.767, 3.707, 2.546, 1.996,
224 1.759, 1.465, 1.311, 1.252, 1.234, 1.228, 1.238, 1.241,
225 1.237, 1.222, 1.201, 1.184, 1.174, 1.159 },
226 { 23.26, 17.15, 11.52, 8.049, 6.375, 4.114, 2.792, 2.155,
227 1.880, 1.535, 1.353, 1.281, 1.258, 1.247, 1.254, 1.256,
228 1.252, 1.234, 1.212, 1.194, 1.183, 1.170 },
229 { 22.33, 18.01, 12.86, 9.212, 7.336, 4.702, 3.117, 2.348,
230 2.015, 1.602, 1.385, 1.297, 1.268, 1.251, 1.256, 1.258,
231 1.254, 1.237, 1.214, 1.195, 1.185, 1.179 },
232 { 33.91, 24.13, 15.71, 10.80, 8.507, 5.467, 3.692, 2.808,
233 2.407, 1.873, 1.564, 1.425, 1.374, 1.330, 1.324, 1.320,
234 1.312, 1.288, 1.258, 1.235, 1.221, 1.205 },
235 { 32.14, 24.11, 16.30, 11.40, 9.015, 5.782, 3.868, 2.917,
236 2.490, 1.925, 1.596, 1.447, 1.391, 1.342, 1.332, 1.327,
237 1.320, 1.294, 1.264, 1.240, 1.226, 1.214 },
238 { 29.51, 24.07, 17.19, 12.28, 9.766, 6.238, 4.112, 3.066,
239 2.602, 1.995, 1.641, 1.477, 1.414, 1.356, 1.342, 1.336,
240 1.328, 1.302, 1.270, 1.245, 1.231, 1.233 },
241 { 38.19, 30.85, 21.76, 15.35, 12.07, 7.521, 4.812, 3.498,
242 2.926, 2.188, 1.763, 1.563, 1.484, 1.405, 1.382, 1.371,
243 1.361, 1.330, 1.294, 1.267, 1.251, 1.239 },
244 { 49.71, 39.80, 27.96, 19.63, 15.36, 9.407, 5.863, 4.155,
245 3.417, 2.478, 1.944, 1.692, 1.589, 1.480, 1.441, 1.423,
246 1.409, 1.372, 1.330, 1.298, 1.280, 1.258 },
247 { 59.25, 45.08, 30.36, 20.83, 16.15, 9.834, 6.166, 4.407,
248 3.641, 2.648, 2.064, 1.779, 1.661, 1.531, 1.482, 1.459,
249 1.442, 1.400, 1.354, 1.319, 1.299, 1.272 },
250 { 56.38, 44.29, 30.50, 21.18, 16.51, 10.11, 6.354, 4.542,
251 3.752, 2.724, 2.116, 1.817, 1.692, 1.554, 1.499, 1.474,
252 1.456, 1.412, 1.364, 1.328, 1.307, 1.282 }
253 };
254
255
256 static constexpr G4double hecorr[15] = { 120.70, 117.50, 105.00, 92.92,
257 79.23, 74.510, 68.29, 57.39,
258 41.97, 36.14, 24.53, 10.21,
259 -7.855, -16.84, -22.30 };
260
262 SetParticle(part);
263
265
266
267
268
269
271
272 if(mass > electron_mass_c2)
273 {
275 G4double c = mass * tau1 * (tau1 + 2.) / (electron_mass_c2 * (tau1 + 1.));
277 G4double tau = 0.5 * (w + sqrt(w * w + 4. * c));
278 eKineticEnergy = electron_mass_c2 * tau;
279 }
280
281 G4double eTotalEnergy = eKineticEnergy + electron_mass_c2;
282 G4double beta2 = eKineticEnergy * (eTotalEnergy + electron_mass_c2) /
283 (eTotalEnergy * eTotalEnergy);
284 G4double bg2 = eKineticEnergy * (eTotalEnergy + electron_mass_c2) /
285 (electron_mass_c2 * electron_mass_c2);
286
287 static constexpr G4double epsfactor =
288 2. * CLHEP::electron_mass_c2 * CLHEP::electron_mass_c2 *
289 CLHEP::Bohr_radius * CLHEP::Bohr_radius / (CLHEP::hbarc * CLHEP::hbarc);
290 G4double eps = epsfactor * bg2 / Z23;
291
292 if(eps < epsmin)
293 sigma = 2. * eps * eps;
294 else if(eps < epsmax)
295 sigma =
G4Log(1. + 2. * eps) - 2. * eps / (1. + 2. * eps);
296 else
297 sigma =
G4Log(2. * eps) - 1. + 1. / eps;
298
299 sigma *= ChargeSquare * AtomicNumber * AtomicNumber / (beta2 * bg2);
300
301
303
304
306 while((iZ >= 0) && (Zdat[iZ] >= AtomicNumber))
307 iZ -= 1;
308 if(iZ == 14)
309 iZ = 13;
310 if(iZ == -1)
311 iZ = 0;
312
316 (AtomicNumber - ZZ1) * (AtomicNumber + ZZ1) / ((ZZ2 - ZZ1) * (ZZ2 + ZZ1));
317
318 static constexpr G4double Tlim = 10. * CLHEP::MeV;
319 static constexpr G4double sigmafactor =
320 CLHEP::twopi * CLHEP::classic_electr_radius * CLHEP::classic_electr_radius;
322 Tlim * (Tlim + 2. * CLHEP::electron_mass_c2) /
323 ((Tlim + CLHEP::electron_mass_c2) * (Tlim + CLHEP::electron_mass_c2));
325 Tlim * (Tlim + 2. * CLHEP::electron_mass_c2) /
326 (CLHEP::electron_mass_c2 * CLHEP::electron_mass_c2);
327
328 static constexpr G4double sig0[15] = {
329 0.2672 * CLHEP::barn, 0.5922 * CLHEP::barn, 2.653 * CLHEP::barn,
330 6.235 * CLHEP::barn, 11.69 * CLHEP::barn, 13.24 * CLHEP::barn,
331 16.12 * CLHEP::barn, 23.00 * CLHEP::barn, 35.13 * CLHEP::barn,
332 39.95 * CLHEP::barn, 50.85 * CLHEP::barn, 67.19 * CLHEP::barn,
333 91.15 * CLHEP::barn, 104.4 * CLHEP::barn, 113.1 * CLHEP::barn
334 };
335
336 static constexpr G4double Tdat[22] = {
337 100 * CLHEP::eV, 200 * CLHEP::eV, 400 * CLHEP::eV, 700 * CLHEP::eV,
338 1 * CLHEP::keV, 2 * CLHEP::keV, 4 * CLHEP::keV, 7 * CLHEP::keV,
339 10 * CLHEP::keV, 20 * CLHEP::keV, 40 * CLHEP::keV, 70 * CLHEP::keV,
340 100 * CLHEP::keV, 200 * CLHEP::keV, 400 * CLHEP::keV, 700 * CLHEP::keV,
341 1 * CLHEP::MeV, 2 * CLHEP::MeV, 4 * CLHEP::MeV, 7 * CLHEP::MeV,
342 10 * CLHEP::MeV, 20 * CLHEP::MeV
343 };
344
345 if(eKineticEnergy <= Tlim)
346 {
347
349 while((iT >= 0) && (Tdat[iT] >= eKineticEnergy))
350 iT -= 1;
351 if(iT == 21)
352 iT = 20;
353 if(iT == -1)
354 iT = 0;
355
356
357 G4double T = Tdat[iT], E = T + electron_mass_c2;
358 G4double b2small = T * (E + electron_mass_c2) / (E * E);
359
360 T = Tdat[iT + 1];
361 E = T + electron_mass_c2;
362 G4double b2big = T * (E + electron_mass_c2) / (E * E);
363 G4double ratb2 = (beta2 - b2small) / (b2big - b2small);
364
365 if(charge < 0.)
366 {
367 c1 = celectron[iZ][iT];
368 c2 = celectron[iZ + 1][iT];
369 cc1 = c1 + ratZ * (c2 - c1);
370
371 c1 = celectron[iZ][iT + 1];
372 c2 = celectron[iZ + 1][iT + 1];
373 cc2 = c1 + ratZ * (c2 - c1);
374
375 corr = cc1 + ratb2 * (cc2 - cc1);
376
377 sigma *= sigmafactor / corr;
378 }
379 else
380 {
381 c1 = cpositron[iZ][iT];
382 c2 = cpositron[iZ + 1][iT];
383 cc1 = c1 + ratZ * (c2 - c1);
384
385 c1 = cpositron[iZ][iT + 1];
386 c2 = cpositron[iZ + 1][iT + 1];
387 cc2 = c1 + ratZ * (c2 - c1);
388
389 corr = cc1 + ratb2 * (cc2 - cc1);
390
391 sigma *= sigmafactor / corr;
392 }
393 }
394 else
395 {
396 c1 = bg2lim * sig0[iZ] * (1. + hecorr[iZ] * (beta2 - beta2lim)) / bg2;
397 c2 =
398 bg2lim * sig0[iZ + 1] * (1. + hecorr[iZ + 1] * (beta2 - beta2lim)) / bg2;
399 if((AtomicNumber >= ZZ1) && (AtomicNumber <= ZZ2))
400 sigma = c1 + ratZ * (c2 - c1);
401 else if(AtomicNumber < ZZ1)
402 sigma = AtomicNumber * AtomicNumber * c1 / (ZZ1 * ZZ1);
403 else if(AtomicNumber > ZZ2)
404 sigma = AtomicNumber * AtomicNumber * c2 / (ZZ2 * ZZ2);
405 }
406 return sigma;
407}
G4double G4Log(G4double x)
static G4Pow * GetInstance()
G4double Z23(G4int Z) const