ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTrapezoidFilter.cxx
Go to the documentation of this file.
1 #include "AtTrapezoidFilter.h"
2 
3 #include "AtPad.h"
4 
5 struct AtPadReference;
6 
8 {
9  setSignalStart(pad);
10  zeroSignalBeforeStart(pad);
11  setDVector(pad);
12 
13  for (int i = fStartIndex; i < 512; ++i)
14  pad->SetADC(i, s(i));
15 }
16 
17 void AtTrapezoidFilter::setSignalStart(AtPad *pad)
18 {
19  fStartIndex = 72;
20 }
21 
22 void AtTrapezoidFilter::zeroSignalBeforeStart(AtPad *pad)
23 {
24  for (int i = 0; i < fStartIndex; ++i) {
25  pad->SetADC(i, 0);
26  pad->SetRawADC(i, 0);
27  }
28 }
29 
30 void AtTrapezoidFilter::setDVector(AtPad *pad)
31 {
32  d.clear();
33  for (int i = 0; i < 512; ++i) {
34  d.push_back(pad->GetADC(i));
35  if (i - fRiseTime >= 0)
36  d.back() -= pad->GetADC(i - fRiseTime);
37  if (i - fTopTime >= 0)
38  d.back() -= pad->GetADC(i - fTopTime);
39  if (i - fRiseTime - fTopTime >= 0)
40  d.back() += pad->GetADC(i - fTopTime - fRiseTime);
41  }
42 }
43 
44 Float_t AtTrapezoidFilter::r(int index)
45 {
46  return p(index) + fM * d.at(index);
47 }
48 Float_t AtTrapezoidFilter::p(int index)
49 {
50  if (index < 0)
51  return 0;
52  return p(index - 1) + d.at(index);
53 }
54 Float_t AtTrapezoidFilter::s(int index)
55 {
56  if (index < 0)
57  return 0;
58  return s(index - 1) + r(index);
59 }
AtPad.h
AtTrapezoidFilter::Filter
virtual void Filter(AtPad *pad, AtPadReference *padReference) override
Called to filter each pad.
Definition: AtTrapezoidFilter.cxx:7
AtTrapezoidFilter.h
AtPad::SetRawADC
void SetRawADC(const rawTrace &val)
Definition: AtPad.h:89
AtPad::SetADC
void SetADC(const trace &val)
Definition: AtPad.h:91
AtPad::GetADC
const trace & GetADC() const
Definition: AtPad.cxx:97
AtPad
Container class for AtPadBase objects.
Definition: AtPad.h:38
AtPadReference
Definition: AtPadReference.h:20