ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPad.h
Go to the documentation of this file.
1 /*********************************************************************
2  * AtTPC Pad Class AtPad *
3  * Author: Y. Ayyad *
4  * Log: 05-03-2015 19:24 JST *
5  * Adapted from SPiRITROOT STPad by G. Jhang *
6  * *
7  *********************************************************************/
8 
9 #ifndef AtPAD_H
10 #define AtPAD_H
11 #include "AtPadBase.h"
12 
13 #include <Math/Point2D.h>
14 #include <Math/Point2Dfwd.h>
15 #include <Rtypes.h>
16 
17 #include <array>
18 #include <map>
19 #include <memory>
20 #include <string>
21 #include <type_traits>
22 
23 class TBuffer;
24 class TClass;
25 class TMemberInspector;
26 class TH1D;
27 
38 class AtPad : public AtPadBase {
39 public:
40  using rawTrace = std::array<Int_t, 512>;
41  using trace = std::array<Double_t, 512>;
43 
44 protected:
45  Int_t fPadNum; // Pad reference number in AtMap
46  Int_t fSizeID = -1000;
47  XYPoint fPadCoord{-9999, -9999};
48  Bool_t fIsValid = true;
49  Bool_t fIsPedestalSubtracted = false;
50 
53  std::map<std::string, std::unique_ptr<AtPadBase>> fPadAugments;
54 
55 public:
56  AtPad(Int_t PadNum = -1);
57  AtPad(const AtPad &obj);
58  AtPad &operator=(AtPad obj);
59  AtPad(AtPad &&) = default;
60  virtual ~AtPad() = default;
61  friend void swap(AtPad &a, AtPad &b) noexcept;
62 
63  virtual std::unique_ptr<AtPadBase> Clone() const override;
64  virtual std::unique_ptr<AtPad> ClonePad() const;
65 
66  AtPadBase *AddAugment(std::string name, std::unique_ptr<AtPadBase> augment);
67  AtPadBase *ReplaceAugment(std::string name, std::unique_ptr<AtPadBase> augment);
68  AtPadBase *GetAugment(std::string name);
69  const AtPadBase *GetAugment(std::string name) const;
70  template <typename T, typename std::enable_if_t<std::is_base_of<AtPadBase, T>::value> * = nullptr>
71  T *GetAugment(std::string name)
72  {
73  return dynamic_cast<T *>(GetAugment(name));
74  }
75  template <typename T, typename std::enable_if_t<std::is_base_of<AtPadBase, T>::value> * = nullptr>
76  const T *GetAugment(std::string name) const
77  {
78  return dynamic_cast<const T *>(GetAugment(name));
79  }
80 
81  const std::map<std::string, std::unique_ptr<AtPadBase>> &GetAugments() const { return fPadAugments; }
82  void SetValidPad(Bool_t val = kTRUE) { fIsValid = val; }
83  void SetPadNum(Int_t padNum) { fPadNum = padNum; }
84  void SetSizeID(Int_t sizeID) { fSizeID = sizeID; }
85 
86  void SetPedestalSubtracted(Bool_t val = kTRUE) { fIsPedestalSubtracted = val; }
87  void SetPadCoord(const XYPoint &point) { fPadCoord = point; }
88 
89  void SetRawADC(const rawTrace &val) { fRawAdc = val; }
90  void SetRawADC(Int_t idx, Int_t val) { fRawAdc[idx] = val; }
91  void SetADC(const trace &val) { fAdc = val; }
92  void SetADC(Int_t idx, Double_t val) { fAdc[idx] = val; }
93 
94  Bool_t IsPedestalSubtracted() const { return fIsPedestalSubtracted; }
95 
96  Int_t GetPadNum() const { return fPadNum; }
97  Bool_t GetValidPad() const { return fIsValid; }
98  Int_t GetSizeID() const { return fSizeID; }
99 
100  const trace &GetADC() const;
101  Double_t GetADC(Int_t idx) const;
102  std::unique_ptr<TH1D> GetADCHistrogram() const;
103 
104  const rawTrace &GetRawADC() const { return fRawAdc; }
105  Int_t GetRawADC(Int_t idx) const { return fRawAdc[idx]; }
106 
107  XYPoint GetPadCoord() const { return fPadCoord; }
108 
109  friend class AtGRAWUnpacker;
111 };
112 
113 #endif
AtPad::fPadNum
Int_t fPadNum
Definition: AtPad.h:45
AtPad::fIsPedestalSubtracted
Bool_t fIsPedestalSubtracted
Definition: AtPad.h:49
AtPad::SetADC
void SetADC(Int_t idx, Double_t val)
Definition: AtPad.h:92
AtPad::fAdc
trace fAdc
Definition: AtPad.h:52
AtPad::fRawAdc
rawTrace fRawAdc
Definition: AtPad.h:51
AtPad::SetPadNum
void SetPadNum(Int_t padNum)
Definition: AtPad.h:83
AtPad::SetValidPad
void SetValidPad(Bool_t val=kTRUE)
Definition: AtPad.h:82
AtPad::AtPad
AtPad(Int_t PadNum=-1)
Definition: AtPad.cxx:20
AtPad::fPadAugments
std::map< std::string, std::unique_ptr< AtPadBase > > fPadAugments
Definition: AtPad.h:53
AtPad::GetValidPad
Bool_t GetValidPad() const
Definition: AtPad.h:97
AtPad::SetPadCoord
void SetPadCoord(const XYPoint &point)
Definition: AtPad.h:87
AtPadBase
Base class for AtPad composition pattern.
Definition: AtPadBase.h:37
AtPad::GetAugment
T * GetAugment(std::string name)
Definition: AtPad.h:71
AtPad::SetRawADC
void SetRawADC(const rawTrace &val)
Definition: AtPad.h:89
AtPad::GetRawADC
Int_t GetRawADC(Int_t idx) const
Definition: AtPad.h:105
AtPad::fSizeID
Int_t fSizeID
Definition: AtPad.h:46
AtPad::GetAugments
const std::map< std::string, std::unique_ptr< AtPadBase > > & GetAugments() const
Definition: AtPad.h:81
XYPoint
ROOT::Math::XYPoint XYPoint
Definition: AtPatternCircle2D.cxx:16
AtPad::SetPedestalSubtracted
void SetPedestalSubtracted(Bool_t val=kTRUE)
Definition: AtPad.h:86
AtPad::ClonePad
virtual std::unique_ptr< AtPad > ClonePad() const
Clone this pad (including augments).
Definition: AtPad.cxx:55
AtPad::trace
std::array< Double_t, 512 > trace
Definition: AtPad.h:41
AtPad::Clone
virtual std::unique_ptr< AtPadBase > Clone() const override
Definition: AtPad.cxx:47
AtPad::GetSizeID
Int_t GetSizeID() const
Definition: AtPad.h:98
AtPad::SetADC
void SetADC(const trace &val)
Definition: AtPad.h:91
AtPad::ClassDefOverride
ClassDefOverride(AtPad, 3)
AtPad::GetAugment
const T * GetAugment(std::string name) const
Definition: AtPad.h:76
AtPad::fIsValid
Bool_t fIsValid
Definition: AtPad.h:48
AtPad::GetPadCoord
XYPoint GetPadCoord() const
Definition: AtPad.h:107
AtPad::ReplaceAugment
AtPadBase * ReplaceAugment(std::string name, std::unique_ptr< AtPadBase > augment)
Definition: AtPad.cxx:74
AtPad::~AtPad
virtual ~AtPad()=default
AtPad::GetAugment
AtPadBase * GetAugment(std::string name)
Definition: AtPad.cxx:82
AtGRAWUnpacker
Definition: AtGRAWUnpacker.h:36
AtPad::GetPadNum
Int_t GetPadNum() const
Definition: AtPad.h:96
AtPad::GetADC
const trace & GetADC() const
Definition: AtPad.cxx:97
AtPad::rawTrace
std::array< Int_t, 512 > rawTrace
Definition: AtPad.h:40
AtPad::IsPedestalSubtracted
Bool_t IsPedestalSubtracted() const
Definition: AtPad.h:94
AtPad::AtPad
AtPad(AtPad &&)=default
AtPad::operator=
AtPad & operator=(AtPad obj)
Definition: AtPad.cxx:35
trace
std::array< Double_t, 512 > trace
Definition: AtCalibration.h:9
AtPad::fPadCoord
XYPoint fPadCoord
Definition: AtPad.h:47
AtPad
Container class for AtPadBase objects.
Definition: AtPad.h:38
AtPad::SetSizeID
void SetSizeID(Int_t sizeID)
Definition: AtPad.h:84
AtPad::GetRawADC
const rawTrace & GetRawADC() const
Definition: AtPad.h:104
AtPad::XYPoint
ROOT::Math::XYPoint XYPoint
Definition: AtPad.h:42
AtPad::GetADCHistrogram
std::unique_ptr< TH1D > GetADCHistrogram() const
Definition: AtPad.cxx:110
AtPadBase.h
AtPad::AddAugment
AtPadBase * AddAugment(std::string name, std::unique_ptr< AtPadBase > augment)
Definition: AtPad.cxx:63
AtPad::swap
friend void swap(AtPad &a, AtPad &b) noexcept
Definition: AtPad.cxx:22
AtPad::SetRawADC
void SetRawADC(Int_t idx, Int_t val)
Definition: AtPad.h:90