1 #ifndef __JPHYSICS__JRADIATION__
2 #define __JPHYSICS__JRADIATION__
18 namespace JPP {
using namespace JPHYSICS; }
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;
183 double Numerator = E * E * (1 - epsoverE) / (
MASS_MUON *
MASS_MUON) * (1 + MASS_MUON * MASS_MUON * epsoverE * epsoverE / (LAMBDA * LAMBDA * (1 - epsoverE)));
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;
339 const double Numerator = E * E * (1 - epsoverE) / (
MASS_MUON *
MASS_MUON) * (1 + MASS_MUON * MASS_MUON * epsoverE * epsoverE /
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; }
double EfromBrems(const double E) const
Bremsstrahlung shower energy.
double GofZEvrho(const double E, const double v, const double r) const
double TotalCrossSectionBrems(const double E) const
Bremsstrahlung cross section.
Compiler version dependent expressions, macros, etc.
Auxiliary class for the calculation of the muon radiative cross sections.
double SigmaEErad(const double E, const double eps) const
Pair production cross section.
static double sigmaGammaPparam(const double eps)
JRadiation(const double z, const double a, const int integrsteps, const double eminBrems, const double eminEErad, const double eminGNrad)
Constructor.
virtual double SigmaGNrad(const double E, const double eps) const
Photo-nuclear cross section.
double EfromGNrad(const double E) const
Photo-nuclear shower energy.
virtual double TotalCrossSectionEErad(const double E) const
Pair production cross section.
virtual ~JRadiation()
Virtual desctructor.
static double PhiofEofepsparam(const double E, const double eps)
virtual double IntegralofG(const double E, const double eps) const
double EfromEErad(const double E) const
Pair production shower energy.
virtual double TotalCrossSectionGNrad(const double E) const
Photo-nuclear cross section.