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_)
39 inline double gexp(
double t,
double A,
double c,
double t0,
double s) {
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 return (t<theta) ? 0 : A*TMath::LogNormal(t,sigma,theta,m);
51 double A1(0.08757),
c1(-0.5257), t01(2.4013), s1(0.6721);
52 double A2(0.007598), c2(-0.1501), t02(6.9412),
s2(0.8710);
53 return gexp(t,A1,
c1,t01,s1) +
gexp(t,A2,c2,t02,s2);
57 double A1(5.204/6.94419), sigma1_shape(0.5387), theta1_loc(-0.3976), m1_scale(4.428);
58 double A2(1.855/6.94419), sigma2_shape(0.8132), theta2_loc(7.025), m2_scale(12.29);
60 onePulse(t,A1,sigma1_shape,theta1_loc,m1_scale) +
61 onePulse(t,A2,sigma2_shape,theta2_loc,m2_scale);
HcalSiPMShape(unsigned int signalShape=203)
virtual double operator()(double time) const
virtual double analyticPulseShape(double t, unsigned int signalShape) const
Geom::Theta< T > theta() const
Electronic response of the preamp.
std::vector< double > nt_
double gexp(double t, double A, double c, double t0, double s)
void computeShape(unsigned int signalShape)
double onePulse(double t, double A, double sigma, double theta, double m)