Jpp  18.2.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
JPHYSICS::JRadiation Class Reference

Auxiliary class for the calculation of the muon radiative cross sections. More...

#include <JRadiation.hh>

Inheritance diagram for JPHYSICS::JRadiation:
JPHYSICS::JRadiationFunction

Public Member Functions

virtual ~JRadiation ()
 Virtual desctructor. More...
 
 JRadiation (const double z, const double a, const int integrsteps, const double eminBrems, const double eminEErad, const double eminGNrad)
 Constructor. More...
 
double SigmaEErad (const double E, const double eps) const
 Pair production cross section. More...
 
virtual double TotalCrossSectionEErad (const double E) const
 Pair production cross section. More...
 
double TotalCrossSectionBrems (const double E) const
 Bremsstrahlung cross section. More...
 
virtual double SigmaGNrad (const double E, const double eps) const
 Photo-nuclear cross section. More...
 
virtual double TotalCrossSectionGNrad (const double E) const
 Photo-nuclear cross section. More...
 
double EfromBrems (const double E) const
 Bremsstrahlung shower energy. More...
 
double ThetaRMSfromBrems (const double E, const double v) const
 Get RMS of scattering angle for Bremsstrahlung. More...
 
double EfromEErad (const double E) const
 Pair production shower energy. More...
 
double ThetaRMSfromEErad (const double E, const double v) const
 Get RMS of scattering angle for pair production. More...
 
double EfromGNrad (const double E) const
 Photo-nuclear shower energy. More...
 
double ThetaRMSfromGNrad (const double E, const double v) const
 Get RMS of scattering angle for photo-nuclear shower. More...
 
virtual double CalculateACoeff (double E) const
 Ionization a parameter. More...
 

Protected Member Functions

double GofZEvrho (const double E, const double v, const double r) const
 
virtual double IntegralofG (const double E, const double eps) const
 

Static Protected Member Functions

static double sigmaGammaPparam (const double eps)
 
static double PhiofEofepsparam (const double E, const double eps)
 
static double le ()
 
static double r0 ()
 
static double Astar ()
 
static double B ()
 
static double BP ()
 

Protected Attributes

const double Z
 
const double A
 
const double Dn
 
const double DnP
 
const int steps
 
const double EminBrems
 
const double EminEErad
 
const double EminGNrad
 

Detailed Description

Auxiliary class for the calculation of the muon radiative cross sections.

Author
P. Kooijman

Muon scattering: A. van Ginneken, Nucl. Instr. and Meth. A251 (1986) 21.

Definition at line 34 of file JRadiation.hh.

Constructor & Destructor Documentation

virtual JPHYSICS::JRadiation::~JRadiation ( )
inlinevirtual

Virtual desctructor.

Definition at line 40 of file JRadiation.hh.

41  {}
JPHYSICS::JRadiation::JRadiation ( const double  z,
const double  a,
const int  integrsteps,
const double  eminBrems,
const double  eminEErad,
const double  eminGNrad 
)
inline

Constructor.

Parameters
znumber of protons
anumber of nucleons
integrstepsnumber of integration steps
eminBremsenergy threshold Bremsstrahlung [GeV]
eminEEradenergy threshold pair production [GeV]
eminGNradenergy threshold photo-production [GeV]

Definition at line 54 of file JRadiation.hh.

59  :
60  Z(z),
61  A(a),
62  Dn (1.54*pow(A,0.27)),
63  DnP (pow(Dn,(1-1/Z))),
64  steps(integrsteps),
65  EminBrems(eminBrems),
66  EminEErad(eminEErad),
67  EminGNrad(eminGNrad)
68  {}
const double EminEErad
Definition: JRadiation.hh:495
const double DnP
Definition: JRadiation.hh:492
then JCalibrateToT a
Definition: JTuneHV.sh:113
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
const double EminGNrad
Definition: JRadiation.hh:496
const double EminBrems
Definition: JRadiation.hh:494

Member Function Documentation

double JPHYSICS::JRadiation::SigmaEErad ( const double  E,
const double  eps 
) const
inline

Pair production cross section.

Parameters
Emuon energy [GeV]
epsshower energy [GeV]
Returns
cross section [m^2/g]

Definition at line 78 of file JRadiation.hh.

80  {
81  //routine to calculate dsigma/de in cm^2/GeV for radiating a photon of energy eps
82 
83  if(eps<4.*MASS_ELECTRON)return 0.;
84  if(eps>E-0.75*exp(1.0)*pow(Z,1./3.)) return 0.;
85  double zeta;
86  if(E<35.*MASS_MUON)
87  {
88  zeta = 0.;
89  }
90  else
91  {
92  zeta = (0.073*log((E/MASS_MUON)/(1.+1.95e-5*pow(Z,2./3.)*E/MASS_MUON))-0.26);
93  if(zeta<0.)
94  {
95  zeta=0.;
96  }
97  else
98  {
99  zeta = zeta/(0.058*log((E/MASS_MUON)/(1.+5.3e-5*pow(Z,1./3.)*E/MASS_MUON))-0.14);
100  }
101  }
102  double integ = IntegralofG(E,eps);
103  //cout<< eps<<" integ "<< integ<<endl;
104  return integ*(4/(3.*M_PI))*(Z*(Z+zeta)/A)*AVOGADRO*pow((ALPHA_ELECTRO_MAGNETIC*r0()),2.)*(1-eps/E)/eps;
105  }
static double r0()
Definition: JRadiation.hh:484
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static const double MASS_MUON
muon mass [GeV]
static const double AVOGADRO
Avogadro&#39;s number [gr^-1].
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double MASS_ELECTRON
electron mass [GeV]
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static const double ALPHA_ELECTRO_MAGNETIC
Electro-Magnetic coupling constant.
virtual double IntegralofG(const double E, const double eps) const
Definition: JRadiation.hh:444
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
virtual double JPHYSICS::JRadiation::TotalCrossSectionEErad ( const double  E) const
inlinevirtual

Pair production cross section.

Parameters
Emuon energy [GeV]
Returns
cross section [m^2/g]

Reimplemented in JPHYSICS::JRadiationFunction.

Definition at line 114 of file JRadiation.hh.

115  {
116  //cout<<" entering TotcrsecEErad"<<endl;
117  // radiation goes approx as 1/E so sample in log E
118  // calculate the total cross section as S(dsigma/de)*de
119  // start at E and go backwards for precision
120  double sum(0.);
121  double dle = log(E/EminEErad)/steps;
122  //cout << "dle "<< dle<<endl;
123  for(int i=0;i<steps+1;i++)
124  {
125  double factor = 1.0;
126  if(i==0 || i==steps)factor=0.5;
127  //cout<<"i"<<i<<endl;
128  double eps = EminEErad*exp(i*dle);sum += factor*eps*SigmaEErad( E, eps);
129  //cout<<"eps "<<eps<<" sum "<<sum<<endl;
130  }
131  return sum*dle;
132  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
const double EminEErad
Definition: JRadiation.hh:495
double SigmaEErad(const double E, const double eps) const
Pair production cross section.
Definition: JRadiation.hh:78
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
double JPHYSICS::JRadiation::TotalCrossSectionBrems ( const double  E) const
inline

Bremsstrahlung cross section.

Parameters
Emuon energy [GeV]
Returns
cross section [m^2/g]

Definition at line 142 of file JRadiation.hh.

143  {
144  // double delta = (MASS_MUON*MASS_MUON*eps)/(2*E*(E-eps));
145  double delta = (MASS_MUON*MASS_MUON)/(2*E);
146  //double v = eps/E;
147  double Phin = log((B()*pow(Z,-1./3.)*(MASS_MUON+delta*(DnP*sqrt(exp(1.0))-2.)))/(DnP*(MASS_ELECTRON+delta*sqrt(exp(1.0))*B()*pow(Z,-1./3.))));
148  if(Phin<0.)Phin=0.;
149  double Phie = log((BP()*pow(Z,-2./3.)*MASS_MUON)/((1+delta*MASS_MUON/(MASS_ELECTRON*MASS_ELECTRON*sqrt(exp(1.0))))*(MASS_ELECTRON+delta*sqrt(exp(1.0))*BP()*pow(Z,-2./3.))));
150  if(Phie<0.)Phie=0.;
151  //if(eps>E/(1+MASS_MUON*MASS_MUON/(2.*MASS_ELECTRON*E)))Phie=0.;
152  double sig = (16./3.)*ALPHA_ELECTRO_MAGNETIC*AVOGADRO*pow((MASS_ELECTRON/MASS_MUON*r0()),2.0)*Z*(Z*Phin+Phie)/(A);
153  double epsint = log((E-MASS_MUON)/EminBrems)-(E-MASS_MUON-EminBrems)/E+0.375*(pow(E-MASS_MUON,2.)-pow(EminBrems,2.0))/pow(E,2.0);
154  return epsint*sig;//"cross section" in m^2/g multiplied by density and inverted gives mean free path
155  }
static double r0()
Definition: JRadiation.hh:484
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static double B()
Definition: JRadiation.hh:486
static const double MASS_MUON
muon mass [GeV]
const double DnP
Definition: JRadiation.hh:492
static const double AVOGADRO
Avogadro&#39;s number [gr^-1].
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double MASS_ELECTRON
electron mass [GeV]
const double EminBrems
Definition: JRadiation.hh:494
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static double BP()
Definition: JRadiation.hh:487
static const double ALPHA_ELECTRO_MAGNETIC
Electro-Magnetic coupling constant.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
virtual double JPHYSICS::JRadiation::SigmaGNrad ( const double  E,
const double  eps 
) const
inlinevirtual

Photo-nuclear cross section.

Parameters
Emuon energy [GeV]
epsshower energy [GeV]
Returns
cross section [m^2/g]

Definition at line 165 of file JRadiation.hh.

166  {
167 
168  //minimum radiated energy is 0.2 GeV, not very critical formulae become invalid for very much lower
169  //result is given in m^2/g GeV
170  if (eps<0.2) return 0.;
171  if (eps>E-MASS_PROTON) return 0.;
172  double Aeff;
173  if (A==1)
174  {Aeff = 1.;}
175  else
176  {Aeff = (0.22*A + 0.78 * pow(A,0.89));}
177  double sigmaGammaPofeps = (49.2 + 11.1 * log(eps) + 151.8/sqrt(eps))*pow(10,-34.);
178  double Psiofeps = ALPHA_ELECTRO_MAGNETIC/PI*Aeff*AVOGADRO/A*sigmaGammaPofeps/eps;
179  double Denom = 1+eps/LAMBDA*(1+LAMBDA/(2*MASS_PROTON)+eps/LAMBDA);
180  double epsoverE = eps/E;
181  double Numerator = E * E * (1 - epsoverE) / (MASS_MUON * MASS_MUON) * (1 + MASS_MUON * MASS_MUON * epsoverE * epsoverE / (LAMBDA * LAMBDA * (1 - epsoverE)));
182  double Factor = 1 - epsoverE + epsoverE * epsoverE / 2 * (1 + 2 * MASS_MUON * MASS_MUON / (LAMBDA * LAMBDA));
183  double PhiofEofeps = epsoverE - 1 + Factor * log (Numerator / Denom);
184  //cout<<"PhiofEofeps "<<PhiofEofeps<<" Psiofeps "<<Psiofeps<<endl;
185  return Psiofeps*PhiofEofeps;
186  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static const double MASS_MUON
muon mass [GeV]
static const double AVOGADRO
Avogadro&#39;s number [gr^-1].
Auxiliary data structure to convert (lambda) function to printable object.
Definition: JManip.hh:724
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double PI
Mathematical constants.
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static const double MASS_PROTON
proton mass [GeV]
static const double ALPHA_ELECTRO_MAGNETIC
Electro-Magnetic coupling constant.
virtual double JPHYSICS::JRadiation::TotalCrossSectionGNrad ( const double  E) const
inlinevirtual

Photo-nuclear cross section.

Parameters
Emuon energy [GeV]
Returns
cross section [m^2/g]

Reimplemented in JPHYSICS::JRadiationFunction.

Definition at line 195 of file JRadiation.hh.

196  {
197  double epsmin = 0.2;
198  double epsmax = E-MASS_PROTON/2;
199  double sum(0.);
200  double dle = log(epsmax/epsmin)/steps;
201  for(int i=0;i<steps+1;i++)
202  {
203  float factor = 1.0;
204  if(i==0 || i==steps)factor=0.5;
205  //cout<<"i"<<i<<endl;
206  double eps = epsmin*exp(i*dle);sum += factor*eps*SigmaGNrad( E, eps);
207  //cout<<"eps "<<eps<<" sum "<<sum<<endl;
208  }
209 
210  return sum*dle;
211  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
virtual double SigmaGNrad(const double E, const double eps) const
Photo-nuclear cross section.
Definition: JRadiation.hh:165
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static const double MASS_PROTON
proton mass [GeV]
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
double JPHYSICS::JRadiation::EfromBrems ( const double  E) const
inline

Bremsstrahlung shower energy.

Parameters
Emuon energy [GeV]
Returns
shower energy [GeV]

Definition at line 220 of file JRadiation.hh.

221  {
222  //double EminBrems(0.01);
223  //generate according to 1/k from minimum energy to E
224  double Er = 0.0;
225  for (int i = 1000; i != 0; --i) {
226  Er = EminBrems*exp(gRandom->Rndm()*log(E/EminBrems));
227  //check on the extra factor (1-v+3/4v^2)
228  if(gRandom->Rndm()<(1.-Er/E+0.75*pow(Er/E,2))) break;
229  }
230  return Er;
231  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
const double EminBrems
Definition: JRadiation.hh:494
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
double JPHYSICS::JRadiation::ThetaRMSfromBrems ( const double  E,
const double  v 
) const
inline

Get RMS of scattering angle for Bremsstrahlung.

Parameters
Emuon energy [GeV]
venergy loss fraction
Returns
angle [rad]

Definition at line 241 of file JRadiation.hh.

242  {
243  using namespace std;
244 
245  const double precision = 1.0e-3;
246 
247  const double k1 = 0.092 * pow(E, -1.0/3.0);
248  const double k2 = 0.052 * pow(E, -1.0) * pow(Z, -1.0/4.0);
249  const double k3 = 0.220 * pow(E, -0.92);
250  const double k4 = 0.260 * pow(E, -0.91);
251 
252  double rms = 0.0;
253 
254  if (v <= 0.5) {
255 
256  rms = max(min(k1*sqrt(v), k2), k3*v);
257 
258  } else {
259 
260  const double n = 0.81 * sqrt(E) / (sqrt(E) + 1.8);
261 
262  double k5 = 0.0;
263 
264  for (double vmin = 0.5, vmax = 1.0; ; ) {
265 
266  const double v = 0.5 * (vmin + vmax);
267 
268  const double y = k4 * pow(v, 1.0 + n) * pow(1.0 - v, -n);
269 
270  if (abs(y - 0.2) <= precision) {
271 
272  k5 = y * pow(1.0 - v, 1.0/2.0);
273 
274  break;
275  }
276 
277  if (y < 0.2)
278  vmin = v;
279  else
280  vmax = v;
281  }
282 
283  rms = k4 * pow(v, 1.0 + n) * pow(1.0 - v, -n);
284 
285  if (rms >= 0.2) {
286  rms = k5 * pow(1.0 - v, -1.0/2.0);
287  }
288  }
289 
290  return rms;
291  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
const int n
Definition: JPolint.hh:742
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
data_type v[N+1][M+1]
Definition: JPolint.hh:822
double JPHYSICS::JRadiation::EfromEErad ( const double  E) const
inline

Pair production shower energy.

Parameters
Emuon energy [GeV]
Returns
shower energy [GeV]

Definition at line 300 of file JRadiation.hh.

301  {
302  //generate according to 1/k from minimum energy to E
303 
304  const double eps =0.2;
305  const double IntGmax = IntegralofG(E,eps)*2.0;
306 
307  double Er = 0.0;
308  for (int i = 1000; i != 0; --i)
309  {
310  Er = EminEErad*exp(gRandom->Rndm()*log(E/EminEErad));
311  //check on the extra factor, (1-v) and IntofG
312  double factor = (1.-Er/E)*IntegralofG(E,Er)/IntGmax;
313  if(gRandom->Rndm()<factor) break;
314  }
315  return Er;
316  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
const double EminEErad
Definition: JRadiation.hh:495
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
virtual double IntegralofG(const double E, const double eps) const
Definition: JRadiation.hh:444
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
double JPHYSICS::JRadiation::ThetaRMSfromEErad ( const double  E,
const double  v 
) const
inline

Get RMS of scattering angle for pair production.

Parameters
Emuon energy [GeV]
venergy loss fraction
Returns
angle [rad]

Definition at line 326 of file JRadiation.hh.

327  {
328  using namespace std;
329 
330  const double a = 8.9e-4;
331  const double b = 1.5e-5;
332  const double c = 0.032;
333  const double d = 1.0;
334  const double e = 0.1;
335 
336  const double n = -1.0;
337 
338  const double u = v - 2.0*MASS_ELECTRON/E;
339 
340  if (u > 0.0)
341  return (2.3 + log(E)) * (1.0/E) * pow(1.0 - v, n) * (u*u) * (1.0/(v*v)) *
342  min(a * pow(v, 1.0/4.0) * (1.0 + b*E) + c*v/(v+d), e);
343  else
344  return 0.0;
345  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
const int n
Definition: JPolint.hh:742
then JCalibrateToT a
Definition: JTuneHV.sh:113
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double MASS_ELECTRON
electron mass [GeV]
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
data_type v[N+1][M+1]
Definition: JPolint.hh:822
double u[N+1]
Definition: JPolint.hh:821
double JPHYSICS::JRadiation::EfromGNrad ( const double  E) const
inline

Photo-nuclear shower energy.

Parameters
Emuon energy [GeV]
Returns
shower energy [GeV]

Definition at line 354 of file JRadiation.hh.

355  {
356  //generate according to 1/k from minimum energy to E
357 
358  double cmax = sigmaGammaPparam(EminGNrad);
359  if (cmax < sigmaGammaPparam(E))
360  cmax=sigmaGammaPparam(E);
361 
362  double Pmax = PhiofEofepsparam(E,EminGNrad);
363 
364  double Er = 0.0;
365  for (int i = 1000; i != 0; --i) {
366  Er = EminGNrad*exp(gRandom->Rndm()*log(E/EminGNrad));
367  const double factor = PhiofEofepsparam(E,Er)*sigmaGammaPparam(Er)/(cmax*Pmax);
368  if (gRandom->Rndm() < factor) return Er;
369  }
370 
371  return Er;
372  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static double sigmaGammaPparam(const double eps)
Definition: JRadiation.hh:467
const double EminGNrad
Definition: JRadiation.hh:496
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static double PhiofEofepsparam(const double E, const double eps)
Definition: JRadiation.hh:472
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
double JPHYSICS::JRadiation::ThetaRMSfromGNrad ( const double  E,
const double  v 
) const
inline

Get RMS of scattering angle for photo-nuclear shower.

Parameters
Emuon energy [GeV]
venergy loss fraction
Returns
angle [rad]

Definition at line 382 of file JRadiation.hh.

383  {
384  return 0.0;
385  }
virtual double JPHYSICS::JRadiation::CalculateACoeff ( double  E) const
inlinevirtual

Ionization a parameter.

Parameters
Emuon energy [GeV]
Returns
ionization coefficient [GeV*m^2/g]

Reimplemented in JPHYSICS::JRadiationFunction.

Definition at line 394 of file JRadiation.hh.

395  {
396  const double E2 = E*E;
397  const double beta = sqrt(E2 - MASS_MUON*MASS_MUON) / E;
398  const double beta2 = beta*beta;
399  const double gamma = E/MASS_MUON;
400  const double gamma2 = gamma*gamma;
401 
402  const double p2 = E2 - MASS_MUON*MASS_MUON;
403  const double EMaxT = 2.*MASS_ELECTRON*p2 / (MASS_ELECTRON*MASS_ELECTRON + MASS_MUON*MASS_MUON + 2.*MASS_ELECTRON*E);
404  const double EMaxT2 = EMaxT*EMaxT;
405  const JSter& coeff = getSterCoefficient(Z);
406  const double I2 = coeff.I*coeff.I; // in GeV^2
407  const double X = log10(beta*gamma);
408 
409  double delta = 0.0;
410 
411  if (coeff.X0 < X && X < coeff.X1) {
412  delta = 4.6052*X + coeff.a*pow(coeff.X1-X,coeff.m) + coeff.C;
413  }
414 
415  if (X > coeff.X1) {
416  delta = 4.6052*X + coeff.C;
417  }
418 
419  double acoeff = (2*PI*AVOGADRO*ALPHA_ELECTRO_MAGNETIC*ALPHA_ELECTRO_MAGNETIC*le()*le())*Z/A*(MASS_ELECTRON/beta2)*(log(2.*MASS_ELECTRON*beta2*gamma2*EMaxT/I2)-2.*beta2+0.25*(EMaxT2/E2)-delta);
420 
421  return acoeff;
422  }
double I
Ionization potentian [GeV].
Definition: JIonization.hh:22
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static double le()
Definition: JRadiation.hh:483
Struct for the Sternheimer coefficients.
Definition: JIonization.hh:21
double a
Correction density parameter.
Definition: JIonization.hh:25
double m
Correction density parameter.
Definition: JIonization.hh:26
static const double MASS_MUON
muon mass [GeV]
static const double AVOGADRO
Avogadro&#39;s number [gr^-1].
set_variable E_E log10(E_{fit}/E_{#mu})"
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double PI
Mathematical constants.
static const double MASS_ELECTRON
electron mass [GeV]
p2
Definition: module-Z:fit.sh:74
double X0
Correction density parameter.
Definition: JIonization.hh:23
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static const double ALPHA_ELECTRO_MAGNETIC
Electro-Magnetic coupling constant.
no fit printf nominal n $STRING awk v X
double C
Correction density parameter.
Definition: JIonization.hh:27
double X1
Correction density parameter.
Definition: JIonization.hh:24
static JSterCoefficient getSterCoefficient
Function object for Ster coefficients.
Definition: JIonization.hh:80
double JPHYSICS::JRadiation::GofZEvrho ( const double  E,
const double  v,
const double  r 
) const
inlineprotected

Definition at line 425 of file JRadiation.hh.

428  {
429  const double ksi = MASS_MUON*MASS_MUON*v*v*(1-r*r)/(4*MASS_ELECTRON*MASS_ELECTRON*(1-v));//
430  const double b = v*v/(2*(1-v));//
431  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);
432  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);
433  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));
434  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);
435  const double Le = log((Astar()*pow(Z,-1./3.)*sqrt((1+ksi)*(1+Ye)))/
436  (1.+(2.*MASS_ELECTRON*sqrt(exp(1.))*Astar()*pow(Z,-1./3.)*(1+ksi)*(1+Ye))/(E*v*(1-r*r))));
437  const double Lm = log(((MASS_MUON/MASS_ELECTRON)*Astar()*pow(Z,-1./3.)*sqrt((1.+1./ksi)*(1.+Ym)))/
438  (1.+(2.*MASS_ELECTRON*sqrt(exp(1.))*Astar()*pow(Z,-1./3.)*(1+ksi)*(1+Ym))/(E*v*(1-r*r))));
439  double Phie = Be*Le; if(Phie<0.)Phie=0.;
440  double Phim = Bm*Lm; if(Phim<0.)Phim=0.;
441  return Phie+(MASS_ELECTRON*MASS_ELECTRON/(MASS_MUON*MASS_MUON))*Phim;
442  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static const double MASS_MUON
muon mass [GeV]
data_type r[M+1]
Definition: JPolint.hh:824
static double Astar()
Definition: JRadiation.hh:485
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double MASS_ELECTRON
electron mass [GeV]
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
data_type v[N+1][M+1]
Definition: JPolint.hh:822
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
virtual double JPHYSICS::JRadiation::IntegralofG ( const double  E,
const double  eps 
) const
inlineprotectedvirtual

Reimplemented in JPHYSICS::JRadiationFunction.

Definition at line 444 of file JRadiation.hh.

446  {
447  const double EP = E-eps;
448  const double v = eps/E;
449  const double tmin = log((4*MASS_ELECTRON/eps+12*pow(MASS_MUON,2)/(E*EP)*(1-4*MASS_ELECTRON/eps))
450  /(1+(1-6*pow(MASS_MUON,2)/(E*EP))*sqrt(1-4*MASS_ELECTRON/eps)));
451 
452  if (tmin < 0.0) {
453  const double dt = -tmin/steps;
454  double sum(0.);
455  for (int i = 0;i<steps+1;i++)
456  {
457  double fac = 1.0;if(i==0 || i==steps)fac=0.5;
458  double t = tmin+i*dt;
459  double r = 1.-exp(t);
460  sum+=fac*GofZEvrho(E,v,r)*exp(t);
461  }
462  return sum*dt;
463  } else
464  return 0.0;
465  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static const double MASS_MUON
muon mass [GeV]
double GofZEvrho(const double E, const double v, const double r) const
Definition: JRadiation.hh:425
data_type r[M+1]
Definition: JPolint.hh:824
T pow(const T &x, const double y)
Power .
Definition: JMath.hh:97
static const double MASS_ELECTRON
electron mass [GeV]
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
data_type v[N+1][M+1]
Definition: JPolint.hh:822
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
static double JPHYSICS::JRadiation::sigmaGammaPparam ( const double  eps)
inlinestaticprotected

Definition at line 467 of file JRadiation.hh.

468  {
469  return (49.2 + 11.1 * log(eps) + 151.8/sqrt(eps));
470  }
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static double JPHYSICS::JRadiation::PhiofEofepsparam ( const double  E,
const double  eps 
)
inlinestaticprotected

Definition at line 472 of file JRadiation.hh.

473  {
474  const double Denom = 1+eps/LAMBDA*(1+LAMBDA/(2*MASS_PROTON)+eps/LAMBDA);
475  const double epsoverE = eps/E;
476  const double Numerator = E * E * (1 - epsoverE) / (MASS_MUON * MASS_MUON) * (1 + MASS_MUON * MASS_MUON * epsoverE * epsoverE /
477  (LAMBDA * LAMBDA * (1 - epsoverE)));
478  const double Factor = 1 - epsoverE + epsoverE * epsoverE / 2 * (1 + 2 * MASS_MUON * MASS_MUON / (LAMBDA * LAMBDA));
479  return (epsoverE - 1 + Factor * log (Numerator / Denom));
480  }
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
Definition: JMuonPostfit.sh:40
static const double MASS_MUON
muon mass [GeV]
Auxiliary data structure to convert (lambda) function to printable object.
Definition: JManip.hh:724
then set_variable DIR else fatal Wrong number of arguments fi for INPUT_FILE in ls rt $DIR stage * log
static const double MASS_PROTON
proton mass [GeV]
static double JPHYSICS::JRadiation::le ( )
inlinestaticprotected

Definition at line 483 of file JRadiation.hh.

483 { return 3.8616E-13;}
static double JPHYSICS::JRadiation::r0 ( )
inlinestaticprotected

Definition at line 484 of file JRadiation.hh.

484 { return 2.817940e-15; }
static double JPHYSICS::JRadiation::Astar ( )
inlinestaticprotected

Definition at line 485 of file JRadiation.hh.

485 { return 183.0; }
static double JPHYSICS::JRadiation::B ( )
inlinestaticprotected

Definition at line 486 of file JRadiation.hh.

486 { return 183.0; }
static double JPHYSICS::JRadiation::BP ( )
inlinestaticprotected

Definition at line 487 of file JRadiation.hh.

487 { return 1429.0; }

Member Data Documentation

const double JPHYSICS::JRadiation::Z
protected

Definition at line 489 of file JRadiation.hh.

const double JPHYSICS::JRadiation::A
protected

Definition at line 490 of file JRadiation.hh.

const double JPHYSICS::JRadiation::Dn
protected

Definition at line 491 of file JRadiation.hh.

const double JPHYSICS::JRadiation::DnP
protected

Definition at line 492 of file JRadiation.hh.

const int JPHYSICS::JRadiation::steps
protected

Definition at line 493 of file JRadiation.hh.

const double JPHYSICS::JRadiation::EminBrems
protected

Definition at line 494 of file JRadiation.hh.

const double JPHYSICS::JRadiation::EminEErad
protected

Definition at line 495 of file JRadiation.hh.

const double JPHYSICS::JRadiation::EminGNrad
protected

Definition at line 496 of file JRadiation.hh.


The documentation for this class was generated from the following file: