/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/ds/include/RAT/DS/DigitPMT.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/ds/include/RAT/DS/DigitPMT.hh Source File
Ratpac-two
DigitPMT.hh
1 
8 #ifndef __RAT_DS_DigitPMT__
9 #define __RAT_DS_DigitPMT__
10 
11 #include <Rtypes.h>
12 #include <TObject.h>
13 
14 #include <RAT/DS/WaveformAnalysisResult.hh>
15 #include <RAT/Log.hh>
16 #include <RAT/WaveformUtil.hh>
17 #include <limits>
18 
19 namespace RAT {
20 namespace DS {
21 
23 class DigitPMT : public TObject {
24  public:
25  typedef uint64_t HCMask;
26 
27  DigitPMT() : TObject() {}
28  virtual ~DigitPMT() {}
29 
31  virtual void SetID(Int_t _id) { this->id = _id; }
32  virtual Int_t GetID() { return id; }
33 
35  virtual void SetDigitizedTime(Double_t _dTime) { this->dTime = _dTime; }
36  virtual Double_t GetDigitizedTime() { return (dTime == WaveformUtil::INVALID) ? dTime : dTime - time_offset; }
37  virtual Double_t GetDigitizedTimeNoOffset() { return dTime; }
38 
40  virtual void SetDigitizedCharge(Double_t _dCharge) { this->dCharge = _dCharge; }
41  virtual Double_t GetDigitizedCharge() { return dCharge; }
42 
44  virtual void SetDigitizedTotalCharge(Double_t _dTCharge) { this->dTCharge = _dTCharge; }
45  virtual Double_t GetDigitizedTotalCharge() { return dTCharge; }
46 
48  virtual void SetNCrossings(Int_t _nCrossings) { this->nCrossings = _nCrossings; }
49  virtual Int_t GetNCrossings() { return nCrossings; }
50 
52  virtual void SetTimeOverThreshold(Double_t _timeOverThresh) { this->timeOverThresh = _timeOverThresh; }
53  virtual Double_t GetTimeOverThreshold() { return timeOverThresh; }
54 
56  virtual void SetVoltageOverThreshold(Double_t _voltageOverThresh) { this->voltageOverThresh = _voltageOverThresh; }
57  virtual Double_t GetVoltageOverThreshold() { return voltageOverThresh; }
58 
60  virtual void SetPedestal(Double_t _pedestal) { this->pedestal = _pedestal; }
61  virtual Double_t GetPedestal() { return pedestal; }
62 
64  virtual void SetPeakVoltage(Double_t _peak) { this->peak = _peak; }
65  virtual Double_t GetPeakVoltage() { return peak; }
66 
68  virtual void SetLocalTriggerTime(Double_t _trigger_time) { this->local_trigger_time = _trigger_time; }
69  virtual Double_t GetLocalTriggerTime() { return local_trigger_time; }
70 
72  virtual void SetTimeOffset(Double_t _time_offset) { this->time_offset = _time_offset; }
73  virtual Double_t GetTimeOffset() { return time_offset; }
74 
76  virtual void SetReconNPEs(Int_t _fNPE) { this->fNPE = _fNPE; }
77  virtual Int_t GetReconNPEs() { return fNPE; }
78 
80  virtual WaveformAnalysisResult* const GetOrCreateWaveformAnalysisResult(std::string analyzer_name) {
81  if (!fit_results.count(analyzer_name)) { // creating new fitresult
82  if (fit_results[analyzer_name].getTimeOffset() != 0) {
83  warn << "WavefornAnalysisResult for " << analyzer_name << " already has non-zero timing offset. "
84  << "This should not happen.. Current value will override old value!" << newline;
85  warn << "old value is " << fit_results[analyzer_name].getTimeOffset() << newline;
86  }
87  fit_results[analyzer_name].setTimeOffset(time_offset);
88  }
89  return &fit_results[analyzer_name];
90  }
91 
92  virtual std::vector<std::string> const GetFitterNames() {
93  std::vector<std::string> fitter_names;
94  for (auto const& kv : fit_results) {
95  fitter_names.push_back(kv.first);
96  }
97  return fitter_names;
98  }
99 
105  virtual void SetHitCleaningBit(uint bit_position, bool val = true) {
106  if (bit_position > std::numeric_limits<HCMask>::digits - 1) { // 0-indexing
107  warn << "Tried to set bit out of hit cleaning bitmask range, ignoring." << newline;
108  return;
109  }
110  hit_cleaning_mask = (hit_cleaning_mask & ~(1 << bit_position)) | (val << bit_position);
111  }
112 
117  virtual bool GetHitCleaningBit(uint bit_position) const {
118  if (bit_position > std::numeric_limits<HCMask>::digits - 1) { // 0-indexing
119  warn << "Tried to read bit out of hit cleaning bitmask range, ignoring." << newline;
120  return false;
121  }
122  HCMask mask = 1 << bit_position;
123  return (hit_cleaning_mask & mask);
124  }
125 
127  virtual HCMask GetHitCleaningMask() const { return hit_cleaning_mask; }
128  virtual void SetHitCleaningMask(HCMask _hit_cleaning_mask) { hit_cleaning_mask = _hit_cleaning_mask; }
129 
130  ClassDef(DigitPMT, 7);
131 
132  protected:
133  Int_t id = -9999;
134  Double_t dTime = -9999;
135  Double_t dCharge = -9999;
136  Double_t dTCharge = -9999;
137  Int_t nCrossings = -9999;
138  Double_t timeOverThresh = -9999;
139  Double_t voltageOverThresh = -9999;
140  Double_t pedestal = -9999;
141  Double_t peak = -9999;
142  Double_t fTime = -9999;
143  Double_t fMag = -9999;
144  Double_t fBas = -9999;
145  Int_t fNPE = 0;
146  Double_t local_trigger_time = -9999;
147  Double_t time_offset = 0;
148  std::map<std::string, WaveformAnalysisResult> fit_results;
149  HCMask hit_cleaning_mask = 0x0;
150 };
151 
152 } // namespace DS
153 } // namespace RAT
154 
155 #endif
Definition: DigitPMT.hh:23
virtual void SetNCrossings(Int_t _nCrossings)
Definition: DigitPMT.hh:48
virtual HCMask GetHitCleaningMask() const
Definition: DigitPMT.hh:127
virtual void SetTimeOverThreshold(Double_t _timeOverThresh)
Definition: DigitPMT.hh:52
virtual void SetPedestal(Double_t _pedestal)
Definition: DigitPMT.hh:60
virtual void SetID(Int_t _id)
Definition: DigitPMT.hh:31
virtual void SetPeakVoltage(Double_t _peak)
Definition: DigitPMT.hh:64
virtual void SetDigitizedTotalCharge(Double_t _dTCharge)
Definition: DigitPMT.hh:44
virtual void SetVoltageOverThreshold(Double_t _voltageOverThresh)
Definition: DigitPMT.hh:56
virtual void SetDigitizedCharge(Double_t _dCharge)
Definition: DigitPMT.hh:40
virtual void SetLocalTriggerTime(Double_t _trigger_time)
Definition: DigitPMT.hh:68
virtual void SetTimeOffset(Double_t _time_offset)
Definition: DigitPMT.hh:72
virtual WaveformAnalysisResult *const GetOrCreateWaveformAnalysisResult(std::string analyzer_name)
Definition: DigitPMT.hh:80
virtual void SetDigitizedTime(Double_t _dTime)
Definition: DigitPMT.hh:35
virtual bool GetHitCleaningBit(uint bit_position) const
Definition: DigitPMT.hh:117
virtual void SetReconNPEs(Int_t _fNPE)
Definition: DigitPMT.hh:76
virtual void SetHitCleaningBit(uint bit_position, bool val=true)
Definition: DigitPMT.hh:105
Definition: WaveformAnalysisResult.hh:21
Definition: CCCrossSecMessenger.hh:29