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 const std::vector<Int_t> GetAllPMTIDs() {
56 std::vector<Int_t> result;
57 for (
auto const &kv : pmt) {
58 result.push_back(kv.first);
62 virtual Int_t GetPMTCount()
const {
return pmt.size(); }
63 virtual void PrunePMT() { pmt.clear(); }
67 digitpmt[id].SetID(
id);
70 const std::vector<Int_t> GetAllDigitPMTIDs() {
71 std::vector<Int_t> result;
72 for (
auto const &kv : digitpmt) {
73 result.push_back(kv.first);
77 virtual size_t EraseDigitPMT(Int_t
id) {
78 size_t n_erased = digitpmt.erase(
id);
81 virtual Int_t GetDigitPMTCount()
const {
return digitpmt.size(); }
82 virtual void PruneDigitPMT() { digitpmt.clear(); }
84 const std::vector<Int_t> GetAllCleanedDigitPMTIDs()
const {
85 std::vector<Int_t> result;
86 for (std::pair<Int_t, DigitPMT> kv : digitpmt) {
87 DigitPMT::HCMask hit_cleaning_mask = kv.second.GetHitCleaningMask();
88 if (hit_cleaning_mask == 0) {
89 result.push_back(kv.first);
96 const std::vector<Int_t> GetAllCleanedPMTIDs()
const {
97 throw std::logic_error(
"EV::GetAllCleanedPMTIDs is not yet implemented.");
101 virtual Int_t
Nhits()
const {
return GetPMTCount(); }
102 virtual Int_t NhitsCleaned()
const {
return GetAllCleanedPMTIDs().size(); }
107 for (std::pair<Int_t, DigitPMT> kv : digitpmt) {
108 if (kv.second.GetNCrossings() > 0) {
114 virtual Int_t DigitNhitsCleaned()
const {
116 for (std::pair<Int_t, DigitPMT> kv : digitpmt) {
117 DigitPMT::HCMask hit_cleaning_mask = kv.second.GetHitCleaningMask();
118 if (kv.second.GetNCrossings() > 0 && hit_cleaning_mask == 0) {
127 virtual Int_t GetLAPPDCount()
const {
return lappd.size(); }
128 virtual LAPPD *AddNewLAPPD() {
129 lappd.resize(lappd.size() + 1);
130 return &lappd.back();
132 virtual void PruneLAPPD() { lappd.resize(0); }
136 void SetDeltaT(Double_t _deltat) { deltat = _deltat; }
138 void SetCalibratedTriggerTime(Double_t _calibratedTriggerTime) { calibratedTriggerTime = _calibratedTriggerTime; }
139 Double_t GetCalibratedTriggerTime()
const {
return calibratedTriggerTime; }
143 void SetTotalCharge(Double_t _qTotal) { qTotal = _qTotal; }
147 virtual void AddFitResult(
FitResult *fit) { fitResults.push_back(fit); }
148 virtual void PruneFitResults() { fitResults.resize(0); }
152 virtual void AddClassifierResult(
Classifier *clf) { classifierResults.push_back(clf); }
153 virtual void PruneClassifierResults() { classifierResults.resize(0); }
165 virtual void PruneDigitizer() {
digitizer.resize(0); }
169 virtual void SetEventCleaningWord(uint64_t _eventCleaningWord) { eventCleaningWord = _eventCleaningWord; }
170 virtual void SetEventCleaningBit(uint8_t bit_position,
bool value =
true) {
171 if (bit_position >= std::numeric_limits<uint64_t>::digits) {
172 warn <<
"Tried to set bit out of event cleaning bit mask range, ignoring." << newline;
175 eventCleaningWord = (eventCleaningWord & ~(1ULL << bit_position)) | (value << bit_position);
177 virtual bool GetEventCleaningBit(uint8_t bit_position)
const {
178 if (bit_position >= std::numeric_limits<uint64_t>::digits) {
179 warn <<
"Tried to get bit out of event cleaning bit mask range, ignoring." << newline;
182 return (eventCleaningWord >> bit_position) & 0x1;
190 Double_t calibratedTriggerTime;
193 uint64_t trigger_word;
194 std::map<Int_t, PMT> pmt;
195 std::map<Int_t, DigitPMT> digitpmt;
196 std::vector<LAPPD> lappd;
197 std::vector<FitResult *> fitResults;
198 std::vector<Classifier *> classifierResults;
200 uint64_t eventCleaningWord = 0;
Definition: Classifier.hh:13
Definition: DigitPMT.hh:23
virtual Digit & GetDigitizer()
Get CAEN digitizer information for this event.
Definition: EV.hh:159
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:126
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:105
std::vector< Digit > digitizer
The digitizer information.
Definition: EV.hh:199
virtual uint64_t GetEventCleaningWord() const
Definition: EV.hh:168
virtual Int_t Nhits() const
Definition: EV.hh:101
virtual std::vector< FitResult * > GetFitResults()
Definition: EV.hh:146
Double_t GetTotalCharge() const
Definition: EV.hh:142
virtual void SetDigitizer(const Digit &dig)
Set CAEN digitizer information for this event.
Definition: EV.hh:156
virtual DigitPMT * GetOrCreateDigitPMT(Int_t id)
Definition: EV.hh:66
virtual bool DigitizerExists() const
Check if the digitizer exists.
Definition: EV.hh:162
Double_t GetDeltaT() const
Definition: EV.hh:135
virtual std::vector< Classifier * > GetClassifierResults()
Definition: EV.hh:151
Definition: FitResult.hh:15
Definition: CCCrossSecMessenger.hh:29