1 #ifndef __JPHYSICS__JRADIATION__
2 #define __JPHYSICS__JRADIATION__
19 namespace JPP {
using namespace JPHYSICS; }
24 static const double LAMBDA = 0.65;
53 const int integrsteps,
54 const double eminBrems,
55 const double eminEErad,
56 const double eminGNrad
78 const double eps)
const
83 if(eps>E-0.75*
exp(1.0)*
pow(
Z,1./3.))
return 0.;
122 for(
int i=0;i<
steps+1;i++)
125 if(i==0 || i==steps)factor=0.5;
169 if (eps<0.2)
return 0.;
175 {Aeff = (0.22*
A + 0.78 *
pow(
A,0.89));}
176 double sigmaGammaPofeps = (49.2 + 11.1 * log(eps) + 151.8/sqrt(eps))*
pow(10,-34.);
178 double Denom = 1+eps/LAMBDA*(1+LAMBDA/(2*
MASS_PROTON)+eps/LAMBDA);
179 double epsoverE = eps/
E;
180 double Numerator = E * E * (1 - epsoverE) / (
MASS_MUON *
MASS_MUON) * (1 + MASS_MUON * MASS_MUON * epsoverE * epsoverE / (LAMBDA * LAMBDA * (1 - epsoverE)));
181 double Factor = 1 - epsoverE + epsoverE * epsoverE / 2 * (1 + 2 * MASS_MUON * MASS_MUON / (LAMBDA * LAMBDA));
182 double PhiofEofeps = epsoverE - 1 + Factor * log (Numerator / Denom);
184 return Psiofeps*PhiofEofeps;
199 double dle = log(epsmax/epsmin)/
steps;
200 for(
int i=0;i<
steps+1;i++)
203 if(i==0 || i==steps)factor=0.5;
205 double eps = epsmin*
exp(i*dle);sum += factor*eps*
SigmaGNrad( E, eps);
224 for (
int i = 1000; i != 0; --i) {
227 if(gRandom->Rndm()<(1.-Er/E+0.75*
pow(Er/E,2)))
break;
243 const double eps =0.2;
247 for (
int i = 1000; i != 0; --i)
252 if(gRandom->Rndm()<factor)
break;
274 for (
int i = 1000; i != 0; --i) {
277 if (gRandom->Rndm() < factor)
return Er;
291 const double Energy2 = Energy*Energy;
293 const double beta2 = beta*beta;
295 const double gamma2 = gamma*gamma;
299 const double EMaxT2 = EMaxT*EMaxT;
301 const double I2 = coeff.
I*coeff.
I;
302 const double X = log10(beta*gamma);
306 if (coeff.
X0 < X && X < coeff.
X1) {
307 delta = 4.6052*X + coeff.
a*
pow(coeff.
X1-X,coeff.
m) + coeff.
C;
311 delta = 4.6052*X + coeff.
C;
322 const double r)
const
325 const double b = v*v/(2*(1-
v));
326 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);
327 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);
328 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));
329 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);
330 const double Le = log((
Astar()*
pow(
Z,-1./3.)*sqrt((1+ksi)*(1+Ye)))/
334 double Phie = Be*Le;
if(Phie<0.)Phie=0.;
335 double Phim = Bm*Lm;
if(Phim<0.)Phim=0.;
340 const double eps)
const
342 const double EP = E-eps;
343 const double v = eps/
E;
348 const double dt = -tmin/
steps;
350 for (
int i = 0;i<
steps+1;i++)
352 double fac = 1.0;
if(i==0 || i==steps)fac=0.5;
353 double t = tmin+i*dt;
354 double r = 1.-
exp(t);
364 return (49.2 + 11.1 * log(eps) + 151.8/sqrt(eps));
369 const double Denom = 1+eps/LAMBDA*(1+LAMBDA/(2*
MASS_PROTON)+eps/LAMBDA);
370 const double epsoverE = eps/
E;
371 const double Numerator = E * E * (1 - epsoverE) / (
MASS_MUON *
MASS_MUON) * (1 + MASS_MUON * MASS_MUON * epsoverE * epsoverE /
372 (LAMBDA * LAMBDA * (1 - epsoverE)));
373 const double Factor = 1 - epsoverE + epsoverE * epsoverE / 2 * (1 + 2 * MASS_MUON * MASS_MUON / (LAMBDA * LAMBDA));
374 return (epsoverE - 1 + Factor * log (Numerator / Denom));
378 static double le () {
return 3.8616E-13;}
379 static double r0 () {
return 2.817940e-15; }
380 static double Astar() {
return 183.0; }
381 static double B () {
return 183.0; }
382 static double BP () {
return 1429.0; }
double I
Ionization potentian [GeV].
Struct for the Sternheimer coefficients.
double a
Correction density parameter.
double m
Correction density parameter.
double EfromBrems(const double E) const
Bremsstrahlung shower energy.
static const double MASS_MUON
muon mass [GeV]
static const double AVOGADRO
Avogadro's number [gr^-1].
double GofZEvrho(const double E, const double v, const double r) const
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))*exp(-0.5 *(y-[1])*(y-[1])/([2]*[2]))" JF2 -o $WORKDIR/f2.root -F "$FORMULA" -@ "p0
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.
T pow(const T &x, const double y)
Power .
static const double PI
Mathematical constants.
virtual double SigmaGNrad(const double E, const double eps) const
Photo-nuclear cross section.
static const double MASS_ELECTRON
electron mass [GeV]
double EfromGNrad(const double E) const
Photo-nuclear shower energy.
double X0
Correction density parameter.
virtual double TotalCrossSectionEErad(const double E) const
Pair production cross section.
static const double MASS_PROTON
proton mass [GeV]
static const double ALPHA_ELECTRO_MAGNETIC
Electro-Magnetic coupling constant.
virtual ~JRadiation()
Virtual desctructor.
static double PhiofEofepsparam(const double E, const double eps)
virtual double CalculateACoeff(double Energy) const
Ionization a parameter.
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.
double C
Correction density parameter.
double X1
Correction density parameter.
then usage $script[input file[working directory[option]]] nWhere option can be E
static JSterCoefficient getSterCoefficient
Function object for Ster coefficients.