1 #include <ecl/digitization/algorithms.h>
4 using namespace Belle2::ECL;
6 double Belle2::ECL::ShaperDSP(
double Ti)
8 return ShaperDSP(Ti, (
const double*)0);
11 double Belle2::ECL::ShaperDSP(
double Ti,
const float* sf)
15 for (
int i = 0; i < 10; i++) sd[i] = sf[i];
16 return ShaperDSP(Ti, sd);
18 return ShaperDSP(Ti, (
const double*)0);
21 double Belle2::ECL::ShaperDSP(
double Ti,
const double* s)
23 const double scale = 27.7221;
24 static const double defs[10] = {0.5, 0.6483, 0.4017, 0.3741, 0.8494, 0.00144547, 4.7071, 0.8156, 0.5556, 0.2752};
26 double t = Ti * (127. / 144.) - s[0];
27 const double dt = 0.2;
29 double fm = Sv123(t - dt, s[2], s[3], s[7], s[8], s[1], s[4]);
30 double f0 = Sv123(t , s[2], s[3], s[7], s[8], s[1], s[4]);
31 double fp = Sv123(t + dt, s[2], s[3], s[7], s[8], s[1], s[4]);
34 double svp = (1 - w) * f0 + (0.5 * w) * (fp + fm);
37 double y = t / s[6], z = t / s[2];
38 svp -= s[5] * exp(-y) * (1 - exp(-z) * (1 + z * (1 + z * (1 / 2. + z * (1 / 6. + z * (1 / 24. + z * (1 / 120.)))))));
43 double Belle2::ECL::ShaperDSPofflineFit(
double Ti,
const double* s,
double scale)
49 const double dt = 0.2;
51 double fm = Sv123(t - dt, s[2], s[3], s[7], s[8], s[1], s[4]);
52 double f0 = Sv123(t , s[2], s[3], s[7], s[8], s[1], s[4]);
53 double fp = Sv123(t + dt, s[2], s[3], s[7], s[8], s[1], s[4]);
55 double svp = (1 - w) * f0 + (0.5 * w) * (fp + fm);
58 double y = t / s[6], z = t / s[2];
59 svp -= s[5] * exp(-y) * (1 - exp(-z) * (1 + z * (1 + z * (1 / 2. + z * (1 / 6. + z * (1 / 24. + z * (1 / 120.)))))));