8 #include <ecl/digitization/EclConfiguration.h>
9 #include <ecl/digitization/shaperdsp.h>
14 using namespace Belle2::ECL;
25 void EclConfiguration::signalsample_t::InitSample(
const double* MPd,
double u)
27 const int N = m_ns * m_nl;
28 vector<double> MP(MPd, MPd + 10);
30 dsp.settimestride(m_step / m_ns);
31 dsp.fillarray(0.0, N, m_ft);
34 for (
int i = 0; i < N; i++) sum += m_ft[i];
35 m_sumscale = m_ns / sum;
39 void EclConfiguration::signalsample_t::InitSample(
const float* MP,
double u)
42 for (
int i = 0; i < 10; i++) MPd[i] = MP[i];
48 total += s.Accumulate(a, t0, c);
51 double EclConfiguration::signalsample_t::Accumulate(
const double a,
const double t0,
double* s)
const
58 const double itick = m_rf / s_clock;
59 const double tlen = m_nl - 1.0 / m_ns;
60 const double tmax = m_tmin + m_nsmp - 1;
62 double t = t0 * itick;
63 double x0 = t, x1 = t + tlen;
65 if (x0 > tmax)
return 0;
67 if (x1 < m_tmin)
return 0;
82 double imind = ceil(x0 - m_tmin);
85 double w = ((m_tmin - t) + imind) * double(m_ns);
92 const double w1 = a * w, w0 = a - w1;
94 for (
int i = imin, j = jmin; i < imax; i++, j += m_ns) {
95 double amp = w0 * m_ft[j] + w1 * m_ft[j + 1];
99 return sum * m_sumscale;
static constexpr double m_step
time between points in internal units t_{asrto}*m_rf/2.
static constexpr double s_clock
digitization clock in RF units
static constexpr double m_rf
accelerating RF, http://ptep.oxfordjournals.org/content/2013/3/03A006.full.pdf
Class include function that calculate electronic response from energy deposit
Abstract base class for different kinds of events.
void AddHit(const double a, const double t0, const signalsample_t &q)
add hit method
a struct for a signal sample