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;
 
  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)
 
  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 
 
fi JEventTimesliceWriter a
 
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. 
 
then usage $script[input file[working directory[option]]] nWhere option can be E
 
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -