16 #define __signed signed
20 #include <TTimeStamp.h>
22 #include <RAT/DS/Digit.hh>
23 #include <RAT/DS/DigitPMT.hh>
24 #include <RAT/DS/FitResult.hh>
25 #include <RAT/DS/LAPPD.hh>
26 #include <RAT/DS/PMT.hh>
33 class EV :
public TObject {
39 virtual Int_t
GetID()
const {
return id; }
40 virtual void SetID(Int_t _id) {
id = _id; }
43 virtual TTimeStamp
GetUTC()
const {
return utc; }
44 virtual void SetUTC(
const TTimeStamp &_utc) { utc = _utc; }
48 virtual void SetTriggerWord(
const uint64_t &_trigger_word) { trigger_word = _trigger_word; }
55 virtual const PMT *GetPMT(Int_t
id)
const {
56 auto it = pmt.find(
id);
57 if (it != pmt.end()) {
63 const std::vector<Int_t> GetAllPMTIDs()
const {
64 std::vector<Int_t> result;
65 for (
auto const &kv : pmt) {
66 result.push_back(kv.first);
70 virtual Int_t GetPMTCount()
const {
return pmt.size(); }
71 virtual void PrunePMT() { pmt.clear(); }
75 digitpmt[id].SetID(
id);
78 virtual const DigitPMT *GetDigitPMT(Int_t
id)
const {
79 auto it = digitpmt.find(
id);
80 if (it != digitpmt.end()) {
85 const std::vector<Int_t> GetAllDigitPMTIDs()
const {
86 std::vector<Int_t> result;
87 for (
auto const &kv : digitpmt) {
88 result.push_back(kv.first);
92 virtual size_t EraseDigitPMT(Int_t
id) {
93 size_t n_erased = digitpmt.erase(
id);
96 virtual Int_t GetDigitPMTCount()
const {
return digitpmt.size(); }
97 virtual void PruneDigitPMT() { digitpmt.clear(); }
99 const std::vector<Int_t> GetAllCleanedDigitPMTIDs()
const {
100 std::vector<Int_t> result;
101 for (std::pair<Int_t, DigitPMT> kv : digitpmt) {
102 DigitPMT::HCMask hit_cleaning_mask = kv.second.GetHitCleaningMask();
103 if (hit_cleaning_mask == 0) {
104 result.push_back(kv.first);
111 const std::vector<Int_t> GetAllCleanedPMTIDs()
const {
112 throw std::logic_error(
"EV::GetAllCleanedPMTIDs is not yet implemented.");
116 virtual Int_t
Nhits()
const {
return GetPMTCount(); }
117 virtual Int_t NhitsCleaned()
const {
return GetAllCleanedPMTIDs().size(); }
122 for (std::pair<Int_t, DigitPMT> kv : digitpmt) {
123 if (kv.second.GetNCrossings() > 0) {
129 virtual Int_t DigitNhitsCleaned()
const {
131 for (std::pair<Int_t, DigitPMT> kv : digitpmt) {
132 DigitPMT::HCMask hit_cleaning_mask = kv.second.GetHitCleaningMask();
133 if (kv.second.GetNCrossings() > 0 && hit_cleaning_mask == 0) {
142 virtual Int_t GetLAPPDCount()
const {
return lappd.size(); }
143 virtual LAPPD *AddNewLAPPD() {
144 lappd.resize(lappd.size() + 1);
145 return &lappd.back();
147 virtual void PruneLAPPD() { lappd.resize(0); }
151 void SetDeltaT(Double_t _deltat) { deltat = _deltat; }
153 void SetCalibratedTriggerTime(Double_t _calibratedTriggerTime) { calibratedTriggerTime = _calibratedTriggerTime; }
154 Double_t GetCalibratedTriggerTime()
const {
return calibratedTriggerTime; }
158 void SetTotalCharge(Double_t _qTotal) { qTotal = _qTotal; }
162 virtual void AddFitResult(
FitResult *fit) { fitResults.push_back(fit); }
163 virtual void PruneFitResults() { fitResults.resize(0); }
167 virtual void AddClassifierResult(
Classifier *clf) { classifierResults.push_back(clf); }
168 virtual void PruneClassifierResults() { classifierResults.resize(0); }
180 virtual void PruneDigitizer() {
digitizer.resize(0); }
184 virtual void SetEventCleaningWord(uint64_t _eventCleaningWord) { eventCleaningWord = _eventCleaningWord; }
185 virtual void SetEventCleaningBit(uint8_t bit_position,
bool value =
true) {
186 if (bit_position >= std::numeric_limits<uint64_t>::digits) {
187 warn <<
"Tried to set bit out of event cleaning bit mask range, ignoring." << newline;
190 eventCleaningWord = (eventCleaningWord & ~(1ULL << bit_position)) | (value << bit_position);
192 virtual bool GetEventCleaningBit(uint8_t bit_position)
const {
193 if (bit_position >= std::numeric_limits<uint64_t>::digits) {
194 warn <<
"Tried to get bit out of event cleaning bit mask range, ignoring." << newline;
197 return (eventCleaningWord >> bit_position) & 0x1;
205 Double_t calibratedTriggerTime;
208 uint64_t trigger_word;
209 std::map<Int_t, PMT> pmt;
210 std::map<Int_t, DigitPMT> digitpmt;
211 std::vector<LAPPD> lappd;
212 std::vector<FitResult *> fitResults;
213 std::vector<Classifier *> classifierResults;
215 uint64_t eventCleaningWord = 0;
Definition: Classifier.hh:14
Definition: DigitPMT.hh:23
virtual Digit & GetDigitizer()
Get CAEN digitizer information for this event.
Definition: EV.hh:174
virtual uint64_t GetTriggerWord() const
Definition: EV.hh:47
virtual TTimeStamp GetUTC() const
Definition: EV.hh:43
virtual LAPPD * GetLAPPD(Int_t i)
Definition: EV.hh:141
virtual Int_t GetID() const
Definition: EV.hh:39
virtual PMT * GetOrCreatePMT(Int_t id)
Definition: EV.hh:51
virtual Int_t DigitNhits() const
Definition: EV.hh:120
std::vector< Digit > digitizer
The digitizer information.
Definition: EV.hh:214
virtual uint64_t GetEventCleaningWord() const
Definition: EV.hh:183
virtual Int_t Nhits() const
Definition: EV.hh:116
virtual std::vector< FitResult * > GetFitResults()
Definition: EV.hh:161
Double_t GetTotalCharge() const
Definition: EV.hh:157
virtual void SetDigitizer(const Digit &dig)
Set CAEN digitizer information for this event.
Definition: EV.hh:171
virtual DigitPMT * GetOrCreateDigitPMT(Int_t id)
Definition: EV.hh:74
virtual bool DigitizerExists() const
Check if the digitizer exists.
Definition: EV.hh:177
Double_t GetDeltaT() const
Definition: EV.hh:150
virtual std::vector< Classifier * > GetClassifierResults()
Definition: EV.hh:166
Definition: FitResult.hh:15
Definition: CCCrossSecMessenger.hh:29