ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtFilterSubtraction.h
Go to the documentation of this file.
1 #ifndef ATFILTERSUBTRACTION_H
2 #define ATFILTERSUBTRACTION_H
3 
4 #include "AtFilter.h"
5 
6 #include <Rtypes.h>
7 
8 #include <array>
9 #include <memory>
10 #include <vector>
11 
12 // Class forward declerations
13 class AtMap;
14 class AtPad;
15 class AtRawEvent;
16 class AtPadReference;
17 
18 using vecDoubleCoBo = std::vector<std::vector<std::array<Double_t, 512>>>;
19 using vecIntCoBo = std::vector<std::vector<std::array<Int_t, 512>>>;
20 using vecAgetCount = std::vector<std::vector<Int_t>>;
21 using AtMapPtr = std::shared_ptr<AtMap>;
22 
29 class AtFilterSubtraction : public AtFilter {
30 protected:
31  const Int_t fNumberCoBo;
32  Int_t fEventNumber{-1};
33  Double_t fThreshold = 0;
36  Bool_t fSetIsGood{false}; // if true will set the IsGood flag on the filtered AtRawEvent
37 
38  // Avg with baseline subtraction baseline[cobo][asad][tb]
40  // Avg without baseline subtraction
42  // Number of AGET ch0s that were used to calculate the baseline
44 
45  void Clear();
46  void AddChToBaseline(const AtPadReference &ref, const AtPad &pad);
47  void AverageBaseline();
48  void processPad(const AtPadReference &ref, const AtPad &pad);
49 
50  virtual bool isValidPad(const AtPad &pad);
51  virtual int getAsad(const AtPadReference &ref);
52 
53 public:
54  AtFilterSubtraction(AtMapPtr map, Int_t numCoBos = 10, Int_t numAget = 4);
55 
56  void SetThreshold(Double_t thresh) { fThreshold = thresh; }
58  void SetIsGood(Bool_t val) { fSetIsGood = val; }
59  Double_t GetThreshold() const { return fThreshold; }
60 
61  // Called at the init stage of the AtFilterTask
62  virtual void Init() override;
63 
64  // Called once for each event at the start of the Exec phase
65  virtual void InitEvent(AtRawEvent *event) override;
66 
67  // Called on each pad
68  virtual void Filter(AtPad *pad, AtPadReference *padReference) override;
69 
70  virtual bool IsGoodEvent() override;
71 };
72 
73 #endif //#ifndef ATFILTERSUBTRACTION_H
AtMap
Definition: AtMap.h:33
AtFilterSubtraction::fAgetCount
vecAgetCount fAgetCount
Definition: AtFilterSubtraction.h:43
AtFilterSubtraction::getAsad
virtual int getAsad(const AtPadReference &ref)
Definition: AtFilterSubtraction.cxx:65
AtFilterSubtraction::Clear
void Clear()
Definition: AtFilterSubtraction.cxx:26
AtFilterSubtraction::fMapping
AtMapPtr fMapping
Definition: AtFilterSubtraction.h:34
AtFilterSubtraction::InitEvent
virtual void InitEvent(AtRawEvent *event) override
Called once for each event at the start of the Exec phase.
Definition: AtFilterSubtraction.cxx:41
AtFilterSubtraction::fBaseline
vecDoubleCoBo fBaseline
Definition: AtFilterSubtraction.h:39
AtFilterSubtraction::fRawBaseline
vecIntCoBo fRawBaseline
Definition: AtFilterSubtraction.h:41
AtRawEvent
Definition: AtRawEvent.h:34
AtFilter
Definition: AtFilter.h:13
AtFilterSubtraction::SetThreshold
void SetThreshold(Double_t thresh)
Definition: AtFilterSubtraction.h:56
AtFilterSubtraction::IsGoodEvent
virtual bool IsGoodEvent() override
Called at the end of an event. Returns if filtering was successful.
Definition: AtFilterSubtraction.cxx:119
AtFilterSubtraction::AverageBaseline
void AverageBaseline()
Definition: AtFilterSubtraction.cxx:85
AtFilterSubtraction::GetThreshold
Double_t GetThreshold() const
Definition: AtFilterSubtraction.h:59
AtFilterSubtraction::AddChToBaseline
void AddChToBaseline(const AtPadReference &ref, const AtPad &pad)
Definition: AtFilterSubtraction.cxx:75
AtMapPtr
std::shared_ptr< AtMap > AtMapPtr
Definition: AtSpaceChargeTask.h:18
vecDoubleCoBo
std::vector< std::vector< std::array< Double_t, 512 > >> vecDoubleCoBo
Definition: AtFilterSubtraction.h:18
vecAgetCount
std::vector< std::vector< Int_t > > vecAgetCount
Definition: AtFilterSubtraction.h:20
AtFilterSubtraction::processPad
void processPad(const AtPadReference &ref, const AtPad &pad)
Definition: AtFilterSubtraction.cxx:69
AtFilter.h
AtFilterSubtraction
Definition: AtFilterSubtraction.h:29
AtFilterSubtraction::fEventNumber
Int_t fEventNumber
Definition: AtFilterSubtraction.h:32
vecIntCoBo
std::vector< std::vector< std::array< Int_t, 512 > >> vecIntCoBo
Definition: AtFilterSubtraction.h:19
AtFilterSubtraction::fNumberCoBo
const Int_t fNumberCoBo
Definition: AtFilterSubtraction.h:31
AtFilterSubtraction::Init
virtual void Init() override
Called at the init stage of the AtFilterTask.
Definition: AtFilterSubtraction.cxx:117
AtFilterSubtraction::fSetIsGood
Bool_t fSetIsGood
Definition: AtFilterSubtraction.h:36
AtPad
Container class for AtPadBase objects.
Definition: AtPad.h:38
AtFilterSubtraction::fThreshold
Double_t fThreshold
Definition: AtFilterSubtraction.h:33
AtPadReference
Definition: AtPadReference.h:20
AtFilterSubtraction::Filter
virtual void Filter(AtPad *pad, AtPadReference *padReference) override
Called to filter each pad.
Definition: AtFilterSubtraction.cxx:100
AtFilterSubtraction::isValidPad
virtual bool isValidPad(const AtPad &pad)
Definition: AtFilterSubtraction.cxx:53
AtFilterSubtraction::SetIsGood
void SetIsGood(Bool_t val)
Set if we should mark the event bad if we cannot find every AGET to do subtraction.
Definition: AtFilterSubtraction.h:58
AtFilterSubtraction::AtFilterSubtraction
AtFilterSubtraction(AtMapPtr map, Int_t numCoBos=10, Int_t numAget=4)
Definition: AtFilterSubtraction.cxx:12
AtFilterSubtraction::fNumberMissedAsads
Int_t fNumberMissedAsads
Definition: AtFilterSubtraction.h:35