DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TriggerCandidateData.hpp
Go to the documentation of this file.
1
9#ifndef TRGDATAFORMATS_INCLUDE_TRGDATAFORMATS_TRIGGERCANDIDATEDATA_HPP_
10#define TRGDATAFORMATS_INCLUDE_TRGDATAFORMATS_TRIGGERCANDIDATEDATA_HPP_
11
13
14#include <cstdint>
15#include <map>
16#include <string>
17
19
21{
22 enum class Type
23 {
24 kUnknown = 0,
25 kTiming = 1,
26 kTPCLowE = 2,
27 kSupernova = 3,
28 kRandom = 4,
29 kPrescale = 5,
34 kDBSCAN = 10,
36 kBundle = 12,
37 kCTBFakeTrigger = 13,
38 kCTBBeam = 14,
39 kCTBBeamChkvHL = 15,
40 kCTBCustomD = 16,
41 kCTBCustomE = 17,
42 kCTBCustomF = 18,
43 kCTBCustomG = 19,
44 kCTBBeamChkvHLx = 20,
45 kCTBBeamChkvHxL = 21,
49 kCIBFakeTrigger = 25,
56 kCTBCustomA = 32,
57 kCTBCustomB = 33,
58 kCTBCustomC = 34,
60 kDTSPulser = 36,
61 kDTSCosmic = 37,
63 };
64
65 enum class Algorithm
66 {
67 kUnknown = 0,
68 kSupernova = 1,
70 kPrescale = 3,
75 kCustom = 8,
76 kDBSCAN = 9,
78 kBundle = 11,
80 };
81
82 // Update this version number if there are any changes to the in-memory representation of this class!
83 static constexpr version_t s_trigger_candidate_version = 3; // NOLINT(build/unsigned)
84
85 version_t version = s_trigger_candidate_version; // NOLINT(build/unsigned)
89 // TODO P. Rodrigues 2021-01-06: This was originally a
90 // std::vector<detid_t> but that messes up the overlay scheme, so
91 // I've changed it for now to be just a detid_t. Need to work out
92 // what to do longer term
93 detid_t detid; // NOLINT(build/unsigned)
95 Algorithm algorithm = Algorithm::kUnknown; // NOLINT(build/unsigned)
96};
97
98// This map needs to be updated for each new TC type, as this is used when configuring Trigger Bitwords, affecting
99// trigger logic in trigger::MLT
100inline std::map<TriggerCandidateData::Type, std::string>
102{
103 return {
110 { TriggerCandidateData::Type::kADCSimpleWindow, "kADCSimpleWindow" },
111 { TriggerCandidateData::Type::kHorizontalMuon, "kHorizontalMuon" },
112 { TriggerCandidateData::Type::kMichelElectron, "kMichelElectron" },
113 { TriggerCandidateData::Type::kPlaneCoincidence, "kPlaneCoincidence" },
115 { TriggerCandidateData::Type::kChannelDistance, "kChannelDistance" },
117 { TriggerCandidateData::Type::kCTBFakeTrigger, "kCTBFakeTrigger" },
119 { TriggerCandidateData::Type::kCTBBeamChkvHL, "kCTBBeamChkvHL" },
124 { TriggerCandidateData::Type::kCTBBeamChkvHLx, "kCTBBeamChkvHLx" },
125 { TriggerCandidateData::Type::kCTBBeamChkvHxL, "kCTBBeamChkvHxL" },
126 { TriggerCandidateData::Type::kCTBBeamChkvHxLx, "kCTBBeamChkvHxLx" },
127 { TriggerCandidateData::Type::kNeutronSourceCalib, "kNeutronSourceCalib" },
128 { TriggerCandidateData::Type::kChannelAdjacency, "kChannelAdjacency" },
129 { TriggerCandidateData::Type::kCIBFakeTrigger, "kCIBFakeTrigger" },
130 { TriggerCandidateData::Type::kCIBLaserTriggerP1, "kCIBLaserTriggerP1" },
131 { TriggerCandidateData::Type::kCIBLaserTriggerP2, "kCIBLaserTriggerP2" },
132 { TriggerCandidateData::Type::kCIBLaserTriggerP3, "kCIBLaserTriggerP3" },
133 { TriggerCandidateData::Type::kCTBOffSpillSnapshot, "kCTBOffSpillSnapshot" },
134 { TriggerCandidateData::Type::kCTBOffSpillCosmicJura, "kCTBOffSpillCosmicJura" },
135 { TriggerCandidateData::Type::kCTBOffSpillCRTCosmic, "kCTBOffSpillCRTCosmic" },
139 { TriggerCandidateData::Type::kCTBCustomPulseTrain, "kCTBCustomPulseTrain" },
142 { TriggerCandidateData::Type::kSSPLEDCalibration, "kSSPLEDCalibration" },
143 };
144}
145
146inline int
147string_to_trigger_candidate_type(const std::string& name)
148{
149 for (auto& it : get_trigger_candidate_type_names()) {
150 if (it.second == name)
151 return static_cast<int>(it.first);
152 }
153 return static_cast<int>(TriggerCandidateData::Type::kUnknown);
154}
155
156inline std::string
158{
159 try {
160 return get_trigger_candidate_type_names().at(type);
161 }
162 catch(std::exception &e) {
163 }
164 return "kUnknown";
165}
166
167} // namespace dunedaq::trgdataformats
168
169#endif // TRGDATAFORMATS_INCLUDE_TRGDATAFORMATS_TRIGGERCANDIDATEDATA_HPP_
std::map< TriggerCandidateData::Type, std::string > get_trigger_candidate_type_names()
std::string trigger_candidate_type_to_string(const TriggerCandidateData::Type &type)
constexpr timestamp_t INVALID_TIMESTAMP
Definition Types.hpp:22
int string_to_trigger_candidate_type(const std::string &name)