ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtROOTUnpacker.h
Go to the documentation of this file.
1 /* Unpacker for SpecMAT style ROOT files using common
2  * interface AtUnpack
3  *
4  *
5  */
6 
7 #ifndef _ATROOTUNPACKER_H_
8 #define _ATROOTUNPACKER_H_
9 
10 #include "AtUnpacker.h"
11 
12 #include <Rtypes.h>
13 
14 #include <memory>
15 #include <stdexcept> // for runtime_error
16 #include <vector>
17 
18 class AtPedestal;
19 class AtRawEvent;
20 class TBuffer;
21 class TClass;
22 class TMemberInspector;
23 
24 using vecBool = std::vector<bool>;
25 using vecFPN = std::vector<Int_t[4][4][4][512]>;
26 using pedestalPtr = std::unique_ptr<AtPedestal>;
27 
28 class AtROOTUnpacker : public AtUnpacker {
29 protected:
31  Double_t fFPNSigmaThreshold = 5;
32  Long64_t fNumEvents = 0;
33  // Int_t fCurrentEventID[16];
34  // Int_t fTargetFrameID;
35 
36  Int_t fNumCobo;
40 
41 public:
42  AtROOTUnpacker() : AtUnpacker(nullptr) {}
43  AtROOTUnpacker(mapPtr map, Int_t numCobo = 4);
44  ~AtROOTUnpacker() = default;
45 
46  void Init() override;
47  void FillRawEvent(AtRawEvent &event) override;
48  bool IsLastEvent() override;
49  Long64_t GetNumEvents() override { return fNumEvents; }
50 
51  // Functions called by decoder init
52  void SetIsPadPlaneCobo(vecBool vec);
54  void SetFPNPedestalRMS(double sigma) { fFPNSigmaThreshold = sigma; }
55  void SetSaveFPN(bool val = true) override
56  {
57  throw std::runtime_error("SaveFPN is not implemented in AtROOTUnpacker");
58  }
59 
61 
62 private:
63  void GetFPNChannelsFromROOTFILE();
64  void ProcessROOTFILE(AtRawEvent &eventToFill);
65  Int_t GetFPNChannel(Int_t chIdx);
66  void SetNumEvents();
67 };
68 #endif //#ifndef _ATROOTUNPACKER_H_
AtROOTUnpacker::IsLastEvent
bool IsLastEvent() override
Definition: AtROOTUnpacker.cxx:258
AtROOTUnpacker::fPedestal
pedestalPtr fPedestal
Definition: AtROOTUnpacker.h:30
AtROOTUnpacker::fIsNegativePolarity
vecBool fIsNegativePolarity
Definition: AtROOTUnpacker.h:38
AtROOTUnpacker::GetNumEvents
Long64_t GetNumEvents() override
Definition: AtROOTUnpacker.h:49
AtROOTUnpacker::Init
void Init() override
Definition: AtROOTUnpacker.cxx:252
AtROOTUnpacker::~AtROOTUnpacker
~AtROOTUnpacker()=default
AtROOTUnpacker::fFPNChannels
vecFPN fFPNChannels
Definition: AtROOTUnpacker.h:39
AtROOTUnpacker::SetIsPadPlaneCobo
void SetIsPadPlaneCobo(vecBool vec)
Definition: AtROOTUnpacker.cxx:34
AtROOTUnpacker::SetIsNegativePolarity
void SetIsNegativePolarity(vecBool vec)
Definition: AtROOTUnpacker.cxx:42
AtRawEvent
Definition: AtRawEvent.h:34
pedestalPtr
std::unique_ptr< AtPedestal > pedestalPtr
Definition: AtROOTUnpacker.h:26
AtROOTUnpacker::SetSaveFPN
void SetSaveFPN(bool val=true) override
Definition: AtROOTUnpacker.h:55
AtROOTUnpacker::AtROOTUnpacker
AtROOTUnpacker()
Don't write to disk (root can't handle it) [cobo][asad][aget][fpn][sample].
Definition: AtROOTUnpacker.h:42
AtROOTUnpacker
Definition: AtROOTUnpacker.h:28
AtPedestal
Definition: AtPedestal.h:27
AtROOTUnpacker::fNumEvents
Long64_t fNumEvents
Definition: AtROOTUnpacker.h:32
AtUnpacker.h
mapPtr
std::shared_ptr< AtMap > mapPtr
Definition: AtUnpacker.h:17
AtROOTUnpacker::fIsPadPlaneCobo
vecBool fIsPadPlaneCobo
Definition: AtROOTUnpacker.h:37
AtROOTUnpacker::fNumCobo
Int_t fNumCobo
Definition: AtROOTUnpacker.h:36
AtROOTUnpacker::ClassDefOverride
ClassDefOverride(AtROOTUnpacker, 1)
AtROOTUnpacker::fFPNSigmaThreshold
Double_t fFPNSigmaThreshold
Definition: AtROOTUnpacker.h:31
AtUnpacker
Definition: AtUnpacker.h:19
AtROOTUnpacker::SetFPNPedestalRMS
void SetFPNPedestalRMS(double sigma)
Definition: AtROOTUnpacker.h:54
vecBool
std::vector< bool > vecBool
Definition: AtROOTUnpacker.h:24
AtROOTUnpacker::FillRawEvent
void FillRawEvent(AtRawEvent &event) override
Definition: AtROOTUnpacker.cxx:51
vecFPN
std::vector< Int_t[4][4][4][512]> vecFPN
Definition: AtROOTUnpacker.h:25