1 #ifndef _utl_MuonTimeModel_h_
2 #define _utl_MuonTimeModel_h_
8 class TabulatedFunction;
20 const double theta = 0,
21 const double logE = 19,
22 const int primary = 1,
23 const bool flagAngularFactorDa_in =
true);
28 const bool flagAngularFactorDa_in =
true,
29 const bool flagDecayFactor_in =
true);
35 void SetCoordinates(
const double r,
const double zeta,
const double delta);
37 double dNdz(
const double z);
38 double e_logt(
const double logt);
39 double g_logt(
const double logt);
45 double GetTimes(
const int n,
double*
const at);
52 const int stats = 1000);
58 double L_Z(
const double z)
const {
return sqrt(z*z +
fR*
fR); }
68 double dZdt(
double t);
73 double E(
double t,
double x);
74 double dEdt(
double t,
double x);
75 double dNdE(
double E,
double x);
76 double dNdlogE(
double logE,
double x);
101 +0.03266 + cosTheta*(
127 const double logLambda =
128 -0.01111 + cosTheta*(
133 if (logLambda < 0.03)
184 static void gser(
double&,
const double,
const double,
double&);
185 static void gcf(
double&,
const double,
const double,
double&);
186 static double GammaP(
const double,
const double);
187 static double GammaQ(
const double,
const double);
188 static double ErrFC(
const double x);
189 static double ErrF(
const double);
utl::TabulatedFunction * fLogzDist
static const double fgKappa
void GetFirstAndMeanTime(double &t_first, double &t_mean, const int n=1)
double dNdz(const double z)
double e_logt(const double logt)
static double ErrF(const double)
utl::VRandomSampler * fGRDKinematicalLogtDist
double GetParametricLogLambda(const double cosTheta, const double, const int) const
static void gcf(double &, const double, const double, double &)
Class to hold collection (x,y) points and provide interpolation between them.
double GetParametricLogSigma(const double cosTheta, const double, const int) const
static const double fgLambda
double dEdt(double t, double x)
MuonTimeModel(utl::RandomEngine &randomEngine, const double theta=0, const double logE=19, const int primary=1, const bool flagAngularFactorDa_in=true)
double dNdE(double E, double x)
utl::VRandomSampler * fGRDGeometricalLogtDist
utl::RandomEngine & fRandomEngine
double GetMeanTime(const int n=1)
double GetLastTime(const int n=1)
double dNdlogz(double logz)
static const double fgGamma
static double ErrFC(const double x)
double g_logt(const double logt)
double GetParametricLogMean(const double cosTheta, const double, const int) const
Wraps the random number engine used to generate distributions.
static double GammaQ(const double, const double)
double GetFirstTime(const int n=1)
utl::TabulatedFunction * fKinematicalLogtDist
utl::TabulatedFunction * fGeometricalLogtDist
double TotaldNdt(const double t)
double L_Z(const double z) const
double TotaldNdlogt(const double logt)
double dNdlogE(double logE, double x)
double GetTimes(const int n, double *const at)
void GetMeanAndRMSOfFirstTime(double &mean_t1, double &rms_t1, const int n=1, const int stats=1000)
static void gser(double &, const double, const double, double &)
double E(double t, double x)
static double GammaP(const double, const double)
Class to shoot random numbers given by a user-defined distribution function.
double DecayFactor_Z(double Z)
void SetCoordinates(const double r, const double zeta)