46 Int_t i_size = in.size();
54 Int_t i_ntab =
fCoeff.size();
55 std::vector<Double_t> temp(i_size + i_nlpad + i_nrpad);
58 for (Int_t
i = 0;
i < i_nlpad;
i++) *p_data++ = in[0];
59 for (Int_t
i = 0;
i < i_size;
i++) *p_data++ = in[
i];
60 for (Int_t
i = 0;
i < i_nrpad;
i++) *p_data++ = in[i_size-1];
65 for (Int_t
i = 0;
i < i_size;
i++) {
70 for (Int_t j = 0; j < i_ntab; j++)
71 d_sum += *p_c++ * *p_d++;
96 Int_t i_nlhs = lhs.
Size();
97 Int_t i_nrhs = rhs.
Size();
98 Int_t i_size = i_nlhs + i_nrhs - 1;
103 for (Int_t
i = 0;
i < i_size;
i++) {
105 for (Int_t j = 0; j < i_nlhs; j++) {
106 Int_t k = j -
i + i_nrhs - 1;
107 Double_t f_rhs = (k >= 0 && k < i_nrhs) ? p_rhs[k] : 0.;
108 f_sum += p_lhs[j] * f_rhs;
132 for (Int_t
i = 0;
i < i_size;
i++)
fCoeff[
i] = data[
i];
139 Int_t i_size2 = i_size/2;
140 for (Int_t
i = 0;
i < i_size2;
i++) {
143 if (f_left == f_right) i_nsym += 1;
144 if (f_left == -f_right) i_nasym += 1;
162 Int_t i_size = i_width;
167 for (Int_t
i = 0;
i < i_size;
i++) {
177 Int_t i_size = i_width;
183 fCoeff[i_size-1]=-(1-1./tau);
185 for (Int_t
i = 1;
i < i_size-1;
i++) {
195 Int_t i_size = i_width;
204 for (
int i=0;
i<i_size;
i++)
207 val=pulseshape->
value(t,amplitude,0.);
219 Int_t i_size = 2*i_rise + 2*i_flat+i_width+1;
225 for (Int_t
i = 0;
i < i_rise;
i++) {
230 for (Int_t
i = i_rise;
i < (i_rise+i_flat);
i++)
233 fCoeff[i_flat+i_width+
i+1] = -i_rise;
236 for (Int_t
i = (i_rise+i_flat);
i <= (i_rise+i_flat+i_width);
i++) {
237 fCoeff[
i] = i_rise-2*i_rise/i_width*(
i-i_rise-i_width);
246 Int_t i_size = 2*i_rise + i_flat;
253 for (Int_t
i = 0;
i < i_size;
i++)
fCoeff[
i] = i_rise+1;
254 for (Int_t
i = 0;
i < i_rise;
i++) {
266 Int_t i_size = 4*i_rise + 1;
273 for (Int_t
i = 0;
i <= i_rise;
i++) {
286 Int_t i_size = i_lag + 2*i_width;
293 for (Int_t
i = 0;
i < i_size;
i++)
fCoeff[
i] = 0;
294 for (Int_t
i = 0;
i < i_width;
i++) {
306 Int_t i_size = i_npos + 2*(i_nzero + i_nneg);
313 Int_t i_apos = 2*i_nneg;
314 Int_t i_aneg = i_npos;
316 for (Int_t
i = 2;
i <
max(i_apos,i_aneg);
i++) {
317 if (i_apos%
i == 0 && i_aneg%
i == 0) i_div =
i;
322 for (Int_t
i = 0;
i < i_size;
i++)
fCoeff[
i] = i_apos;
323 for (Int_t
i = 0;
i < i_nneg;
i++) {
327 for (Int_t
i = i_nneg;
i < i_nneg+i_nzero;
i++) {
338 Int_t i_size = i_lag + 2;
345 for (Int_t
i = 0;
i < i_size;
i++)
fCoeff[
i] = 0.;
void SetupPZDifferentiator(Int_t i_lag=0, Double_t d_fac=1.)
void SetupMA(Int_t i_width)
virtual void Filter(const std::vector< Double_t > &in, std::vector< Double_t > &out) const
void SetNormalizeFloating(Double_t d_norm=1.)
void SetupBipolarTriangle(Int_t i_rise)
Double_t val[nBoxes][nFEBox]
void SetupBipolarTrapez(Int_t i_rise, Int_t i_flat, Int_t i_width)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
FADC FIR (finite impulse response) filter.
void SetupMWD(Int_t i_width, Double_t tau)
void Convolute(const PndEmcFadcFilter &filt)
virtual double value(const double t, const double amp, const double toffset) const
void SetupMatchedFilter(Int_t i_width, PndEmcAbsPulseshape *pulseshape, Double_t sampleRate)
void SetupDifferentiator(Int_t i_lag=0, Int_t i_width=1)
virtual ~PndEmcFadcFilter()
void SetData(Double_t data[], Int_t i_size, Int_t i_offset)
void SetupDoubleDifferentiator(Int_t i_npos=1, Int_t i_nneg=1, Int_t i_nzero=0)
std::vector< Double_t > fCoeff
void SetupTrapez(Int_t i_rise, Int_t i_flat)
ClassImp(PndEmcFadcFilter)
void SetNormalizeInteger(Int_t i_shift=0)