1 #ifndef __JPHYSICS__JRADIATION__
2 #define __JPHYSICS__JRADIATION__
31 static const double LAMBDA = 0.65;
61 const int integrsteps,
62 const double eminBrems,
63 const double eminEErad,
64 const double eminGNrad) :
67 Dn (1.54*pow(
A,0.27)),
84 const double eps)
const
88 if(eps>E-0.75*exp(1.0)*pow(
Z,1./3.))
return 0.;
127 for(
int i=0;i<
steps+1;i++)
130 if(i==0 || i==
steps)factor=0.5;
168 virtual double SigmaGNrad(
const double E,
const double eps)
const
172 if (eps<0.2)
return 0.;
178 {Aeff = (0.22*
A + 0.78 * pow(
A,0.89));}
179 double sigmaGammaPofeps = (49.2 + 11.1 * log(eps) + 151.8/sqrt(eps))*pow(10,-34.);
181 double Denom = 1+eps/LAMBDA*(1+LAMBDA/(2*
MASS_PROTON)+eps/LAMBDA);
182 double epsoverE = eps/E;
184 double Factor = 1 - epsoverE + epsoverE * epsoverE / 2 * (1 + 2 *
MASS_MUON *
MASS_MUON / (LAMBDA * LAMBDA));
185 double PhiofEofeps = epsoverE - 1 + Factor * log (Numerator / Denom);
187 return Psiofeps*PhiofEofeps;
202 double dle = log(epsmax/epsmin)/
steps;
203 for(
int i=0;i<
steps+1;i++)
206 if(i==0 || i==
steps)factor=0.5;
208 double eps = epsmin*exp(i*dle);sum += factor*eps*
SigmaGNrad( E, eps);
227 for (
int i = 1000; i != 0; --i) {
230 if(gRandom->Rndm()<(1.-Er/E+0.75*pow(Er/E,2)))
break;
246 const double eps =0.2;
250 for (
int i = 1000; i != 0; --i)
254 double factor = (1.-Er/E)*
IntegralofG(E,Er)/IntGmax;
255 if(gRandom->Rndm()<factor)
break;
277 for (
int i = 1000; i != 0; --i) {
280 if (gRandom->Rndm() < factor)
return Er;
290 const double r)
const
293 const double b =
v*
v/(2*(1-
v));
294 const double Be = ((2+
r*
r)*(1+b)+ksi*(3+
r*
r))*log(1+1/ksi)+(1-
r*
r-b)/(1+ksi)-(3+
r*
r);
295 const double Bm = ((1+
r*
r)*(1+3*b/2)-(1+2*b)*(1-
r*
r)/ksi)*log(1+ksi)+ksi*(1-
r*
r-b)/(1+ksi)+(1+2*b)*(1-
r*
r);
296 const double Ye = (5-
r*
r+4*b*(1+
r*
r))/(2*(1+3*b)*log(3+1/ksi)-
r*
r-2*b*(2-
r*
r));
297 const double Ym = (4+
r*
r+3*b*(1+
r*
r))/((1+
r*
r)*(1.5+2*b)*log(3+ksi)+1-1.5*
r*
r);
298 const double Le = log((
Astar()*pow(
Z,-1./3.)*sqrt((1+ksi)*(1+Ye)))/
302 double Phie = Be*Le;
if(Phie<0.)Phie=0.;
303 double Phim = Bm*Lm;
if(Phim<0.)Phim=0.;
308 const double eps)
const
310 const double EP = E-eps;
311 const double v = eps/E;
316 const double dt = -tmin/
steps;
318 for (
int i = 0;i<
steps+1;i++)
320 double fac = 1.0;
if(i==0 || i==
steps)fac=0.5;
321 double t = tmin+i*dt;
322 double r = 1.-exp(t);
332 return (49.2 + 11.1 * log(eps) + 151.8/sqrt(eps));
337 const double Denom = 1+eps/LAMBDA*(1+LAMBDA/(2*
MASS_PROTON)+eps/LAMBDA);
338 const double epsoverE = eps/E;
340 (LAMBDA * LAMBDA * (1 - epsoverE)));
341 const double Factor = 1 - epsoverE + epsoverE * epsoverE / 2 * (1 + 2 *
MASS_MUON *
MASS_MUON / (LAMBDA * LAMBDA));
342 return (epsoverE - 1 + Factor * log (Numerator / Denom));
346 static double r0 () {
return 2.817940e-15; }
347 static double Astar() {
return 183.0; }
348 static double B () {
return 183.0; }
349 static double BP () {
return 1429.0; }