13 CaloVShape(other), nBins_(other.nBins_), nt_(other.nt_) {
17 int jtime =
static_cast<int>(time*2 + 0.5);
18 if (jtime>=0 && jtime<
nBins_)
40 static double const root2(
sqrt(2));
41 return -A*0.5*
exp(c*t+0.5*c*c*s*s-c*s)*(erf(-0.5*root2/s*(t-t0+c*s*s))-1);
45 double t0,
double s) {
46 static double const root2(
sqrt(2));
48 return (
exp(-c*t0)*(
exp(c*t0)*erf((root2*t0-root2*t)/(2*s))-
exp(c*t+(c*c*s*2)/2)*erf((t0-t-c*s*s)/(root2*s))+
exp(c*t+(c*c*s*s)/2))*A)/(2*
c);
53 static double const root2(
sqrt(2));
54 return (
exp(-c*t0)*(
exp((c*c*s*s)/2)*erf((root2*t0-root2*c*s*s)/(2*s))-
exp(c*t0)*erf(t0/(root2*s))-
exp(c*t0)-
exp((c*c*s*s)/2))*A)/(2*
c);
58 double A1(0.08757),
c1(-0.5257), t01(2.4013), s1(0.6721);
59 double A2(0.007598), c2(-0.1501), t02(6.9412),
s2(0.8710);
60 return gexp(t,A1,
c1,t01,s1) +
gexp(t,A2,c2,t02,s2);
virtual double operator()(double time) const
virtual double analyticPulseShape(double t) const
Electronic response of the preamp.
static double gexp(double t, double A, double c, double t0, double s)
std::vector< double > nt_
static double gexpIndefIntegral(double t, double A, double c, double t0, double s)
static double gexpIntegral0Inf(double A, double c, double t0, double s)