1 #ifndef __UnivParamTime_h_
2 #define __UnivParamTime_h_
17 namespace UnivParamTimeNS {
33 static const double TimeModelParTheta[
nParTheta] = { 0., 12.*M_PI / 180., 25.*M_PI / 180., 36.*M_PI / 180., 45.*M_PI / 180., 53.*M_PI / 180., 60.*M_PI / 180.};
38 const double ndev = 1.28156;
44 static const double r_Low = 10.e2;
45 static const double r_High = 2200.e2;
83 double GetD_TO(
double X,
double theta,
double logE,
int icomp);
85 double GetMS(
double DL,
double logE,
double theta,
double r,
double psi ,
int icomp,
int iMS,
double* par_stage1,
double* par_stage2);
86 double GetMS_ir(
double DL,
double logE,
double theta,
int ir,
double psi ,
int icomp,
int iMS);
87 double GetMS_ir_ith(
double DL,
double logE,
int ith,
int ir,
double psi ,
int icomp,
int iMS);
89 double interpol(
double v1,
double v2,
double x1,
double x2,
double x);
90 double GetMS(
double DL,
double logE,
double theta,
double r,
double psi ,
int icomp,
int iMS);
92 bool GetShapeParameters(
double* DL,
double r,
double logE,
double psi,
double theta,
double*
m,
double*
s);
94 double GetFraction(
double* t0,
double*
m,
double*
s,
double* fcomp,
double ti,
bool isCDF);
95 double GetFraction(
double* DL,
double r ,
double logE,
double psi,
double theta,
double* fcomp,
double* t0,
double ti,
bool isCDF);
97 double GetCDF(
double* t0,
double*
m,
double*
s,
double* fcomp,
double ti);
98 double GetCDF(
double* DL,
double r ,
double logE,
double psi,
double theta,
double* fcomp,
double* t0,
double ti);
100 double GetPDF(
double* t0,
double*
m,
double*
s,
double* fcomp,
double ti);
101 double GetPDF(
double* DL,
double r ,
double logE,
double psi,
double theta,
double* fcomp,
double* t0,
double ti);
103 double GetTime(
double* DL,
double r ,
double logE,
double psi,
double theta,
double* fcomp,
double* t0,
double fi);
104 double GetTime(
double* t0,
double*
m,
double*
s,
double* fcomp,
double fi);
107 double tQuantilePDF(
double* t0,
double*
m,
double*
s,
double* fcomp,
double vemTot,
double ti,
double f,
bool UseApprox,
double pf,
double& mean,
double& rms);
108 double tQuantilePDF(
double* t0,
double*
m,
double*
s,
double* fcomp,
double vemTot,
double ti,
double f,
bool UseApprox,
double& mean,
double& rms);
109 double tQuantilePDF(
double* DL,
double r,
double logE,
double psi,
double theta,
double* fcomp,
double* t0,
double vemTot,
double ti,
double f,
110 bool UseApprox,
double& mean,
double& rms);
114 double QuantilePDF(
double N,
double fi,
double f,
double* fq);
116 double tFirstPDF(
double t0_mu,
double m_mu,
double s_mu,
double npart,
double t,
bool UseApprox,
double& mean,
double& rms);
117 double tFirstPDF(
double DL_mu,
double r,
double logE,
double psi,
double theta,
double t0_mu,
double npart,
double t);
118 double tFirstPDF(
double DL_mu,
double r,
double logE,
double psi,
double theta,
double t0_mu,
double npart,
double t,
bool UseApprox,
double& mean,
double& rms);
121 double tStartCorrection(
double r,
double logE,
double theta,
bool Is8nsFADC);
133 #endif // __UnivParamTime_h_
static const double r_High
double QuantilePDF(double N, double fi, double f)
double TimeModelPar_Stage2[4][nParDist][nParTheta][2][nPar_Stage2]
static const double logE_Low
const int nPar_Stage2_Theta
bool GetShapeParameters(double *DL, double r, double logE, double psi, double theta, double *m, double *s)
double GetMS(double DL, double logE, double theta, double r, double psi, int icomp, int iMS, double *par_stage1, double *par_stage2)
static const double TimeModelParDist[nParDist]
double interpol(double v1, double v2, double x1, double x2, double x)
static const int nParTheta
double GetMS_ir_ith(double DL, double logE, int ith, int ir, double psi, int icomp, int iMS)
static const double OffsetM_Mu_60deg[4]
double eTimeModelPar_Stage2[4][nParDist][nParTheta][2][nPar_Stage2]
double GetD_TO(double X, double theta, double logE, int icomp)
double GetOffsetM_r(double r, int icomp)
const bool XmaxShift_time[4]
static const double TimeModelParTheta[nParTheta]
double tQuantilePDF(double *t0, double *m, double *s, double *fcomp, double vemTot, double ti, double f, bool UseApprox, double pf, double &mean, double &rms)
double TimeModelPar_Stage2_Theta[4][nParDist][2][nPar_Stage2][nPar_Stage2_Theta]
static const double ms_minVal
double Binomial_q[200][99][3]
double GetCDF(double *t0, double *m, double *s, double *fcomp, double ti)
static const double theta_Low
double BinomialNorm[200][99]
static const double r_Low
double tStartCorrection(double r, double logE, double theta, bool Is8nsFADC)
static const double logE_High
static const double theta_High
double GetMS_ir(double DL, double logE, double theta, int ir, double psi, int icomp, int iMS)
const bool UseDiffusive_time[4]
double GetPoissonFactor(double fem, double f)
void SetOffsetM_Mu(double Offset)
UnivParamTime(int DetectorType)
double tFirstPDF(double t0_mu, double m_mu, double s_mu, double npart, double t, bool UseApprox, double &mean, double &rms)
static const int nParDist
static const double OffsetM_Mu_0deg[4]
bool fUseThetaInterpolation
double GetPDF(double *t0, double *m, double *s, double *fcomp, double ti)
double GetTime(double *DL, double r, double logE, double psi, double theta, double *fcomp, double *t0, double fi)
double GetFraction(double *t0, double *m, double *s, double *fcomp, double ti, bool isCDF)
double tQuantileCorrection_AoP(double RiseTime, int iq, double AoP)
double TimeModelPar_Stage1[4][nParDist][2][nPar_Stage1]
double tQuantileCorrection(double NanoSecPerVEM, int iq)
double GetBinomialNorm(double N, double f, double *fq)