1 #ifndef __JPHYSICS__JRADIATION__
2 #define __JPHYSICS__JRADIATION__
19 namespace JPP {
using namespace JPHYSICS; }
24 static const double LAMBDA = 0.65;
56 const int integrsteps,
57 const double eminBrems,
58 const double eminEErad,
59 const double eminGNrad) :
79 const double eps)
const
84 if(eps>E-0.75*
exp(1.0)*
pow(
Z,1./3.))
return 0.;
123 for(
int i=0;i<
steps+1;i++)
126 if(i==0 || i==steps)factor=0.5;
170 if (eps<0.2)
return 0.;
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.);
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);
185 return Psiofeps*PhiofEofeps;
200 double dle =
log(epsmax/epsmin)/
steps;
201 for(
int i=0;i<
steps+1;i++)
204 if(i==0 || i==steps)factor=0.5;
206 double eps = epsmin*
exp(i*dle);sum += factor*eps*
SigmaGNrad( E, eps);
225 for (
int i = 1000; i != 0; --i) {
228 if(gRandom->Rndm()<(1.-Er/E+0.75*
pow(Er/E,2)))
break;
245 const double precision = 1.0e-3;
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);
256 rms = max(min(k1*sqrt(v), k2), k3*v);
260 const double n = 0.81 * sqrt(E) / (sqrt(E) + 1.8);
264 for (
double vmin = 0.5, vmax = 1.0; ; ) {
266 const double v = 0.5 * (vmin + vmax);
268 const double y = k4 *
pow(v, 1.0 + n) *
pow(1.0 - v, -n);
270 if (abs(y - 0.2) <= precision) {
272 k5 = y *
pow(1.0 - v, 1.0/2.0);
283 rms = k4 *
pow(v, 1.0 + n) *
pow(1.0 - v, -n);
286 rms = k5 *
pow(1.0 - v, -1.0/2.0);
304 const double eps =0.2;
308 for (
int i = 1000; i != 0; --i)
313 if(gRandom->Rndm()<factor)
break;
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;
336 const double n = -1.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);
365 for (
int i = 1000; i != 0; --i) {
368 if (gRandom->Rndm() < factor)
return Er;
396 const double E2 = E*
E;
398 const double beta2 = beta*beta;
400 const double gamma2 = gamma*gamma;
404 const double EMaxT2 = EMaxT*EMaxT;
406 const double I2 = coeff.
I*coeff.
I;
407 const double X =
log10(beta*gamma);
411 if (coeff.
X0 < X && X < coeff.
X1) {
412 delta = 4.6052*X + coeff.
a*
pow(coeff.
X1-X,coeff.
m) + coeff.
C;
416 delta = 4.6052*X + coeff.
C;
427 const double r)
const
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)))/
439 double Phie = Be*Le;
if(Phie<0.)Phie=0.;
440 double Phim = Bm*Lm;
if(Phim<0.)Phim=0.;
445 const double eps)
const
447 const double EP = E-eps;
448 const double v = eps/
E;
453 const double dt = -tmin/
steps;
455 for (
int i = 0;i<
steps+1;i++)
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);
469 return (49.2 + 11.1 *
log(eps) + 151.8/sqrt(eps));
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 /
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));
483 static double le () {
return 3.8616E-13;}
484 static double r0 () {
return 2.817940e-15; }
485 static double Astar() {
return 183.0; }
486 static double B () {
return 183.0; }
487 static double BP () {
return 1429.0; }
506 double (
JRadiation::*theta)(
const double,
const double)
const;
virtual double CalculateACoeff(double E) const
Ionization a parameter.
double I
Ionization potentian [GeV].
static const JRadiationSource_t EErad_t
then usage $script< input file >[option[primary[working directory]]] nWhere option can be E
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
double ThetaRMSfromGNrad(const double E, const double v) const
Get RMS of scattering angle for photo-nuclear shower.
double TotalCrossSectionBrems(const double E) const
Bremsstrahlung cross section.
double ThetaRMSfromBrems(const double E, const double v) const
Get RMS of scattering angle for Bremsstrahlung.
Compiler version dependent expressions, macros, etc.
Auxiliary class for the calculation of the muon radiative cross sections.
Auxiliary data structure to convert (lambda) function to printable object.
double SigmaEErad(const double E, const double eps) const
Pair production cross section.
static double sigmaGammaPparam(const double eps)
set_variable E_E log10(E_{fit}/E_{#mu})"
JRadiation(const double z, const double a, const int integrsteps, const double eminBrems, const double eminEErad, const double eminGNrad)
Constructor.
double ThetaRMSfromEErad(const double E, const double v) const
Get RMS of scattering angle for pair production.
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]
static const JRadiationSource_t Brems_t
double EfromGNrad(const double E) const
Photo-nuclear shower energy.
$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 &))'
double X0
Correction density parameter.
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
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.
no fit printf nominal n $STRING awk v X
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.
Auxiliary data structure for handling member methods of class JRadiation.
virtual double TotalCrossSectionGNrad(const double E) const
Photo-nuclear cross section.
static const JRadiationSource_t GNrad_t
then cat $TRIPOD_INITIAL<< EOF1 256877.5 4743716.7-2438.42 256815.5 4743395.0-2435.53 257096.2 4743636.0-2439.5EOFfiif[[!-f $DETECTOR]];then JEditDetector-a $DETECTOR_INITIAL-s"-1 addz -6.9"-o $DETECTOR--!eval`JPrintDetector-a $DETECTOR-O SUMMARY`for STRING in ${STRINGS[*]};do set_variable MODULE`getModule-a $DETECTOR-L"$STRING 0"`JEditDetector-a $DETECTOR-M"$MODULE setz -2.9"-o $DETECTOR--!donefiif[[!-f $TRIPOD]];then cp-p $TRIPOD_INITIAL $TRIPODfiJAcoustics.sh $DETECTOR_IDcat > acoustics_trigger_parameters txt<< EOFQ=0.0;TMax_s=0.020;numberOfHits=90;EOFJAcousticsEventBuilder.sh $DETECTOR $RUNS[*]INPUT_FILES=(`ls KM3NeT_ ${(l:8::0::0:) DETECTOR_ID}_0 *${^RUNS}_event.root`) cd $WORKDIRif[!$HOMEDIR-ef $WORKDIR];then cp-p $HOMEDIR/$DETECTOR $WORKDIR cp-p $HOMEDIR/${^ACOUSTICS_KEYS}.txt $WORKDIR cp-p $HOMEDIR/${^INPUT_FILES}$WORKDIRfisource $JPP_DIR/examples/JAcoustics/acoustics-fit-toolkit.shtimer_startinitialise stage_b 1 0 100.0e-6 10.0 0.002 0.1 0 > &stage log
double C
Correction density parameter.
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 X1
Correction density parameter.
static JSterCoefficient getSterCoefficient
Function object for Ster coefficients.