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; }