DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TriggerCandidateData.hxx
Go to the documentation of this file.
1
3
4 // tcinfo_t is a constexpr-declarable container of pairs, each pair
5 // connecting a TriggerCandidateData::Type with its name
6 using tcinfo_t = std::array<std::pair<TriggerCandidateData::Type, std::string_view>,
7 static_cast<size_t>(TriggerCandidateData::Type::kFinalEnum)>;
8
9 inline const tcinfo_t&
11 {
12 // This container needs to be updated for each new TC type, as this is used
13 // when configuring Trigger Bitwords, affecting trigger logic in
14 // trigger::MLT
15
16 static constexpr tcinfo_t names { {
26 { TriggerCandidateData::Type::kPlaneCoincidence, "kPlaneCoincidence" },
40 { TriggerCandidateData::Type::kNeutronSourceCalib, "kNeutronSourceCalib" },
41 { TriggerCandidateData::Type::kChannelAdjacency, "kChannelAdjacency" },
43 { TriggerCandidateData::Type::kCIBLaserTriggerP1, "kCIBLaserTriggerP1" },
44 { TriggerCandidateData::Type::kCIBLaserTriggerP2, "kCIBLaserTriggerP2" },
45 { TriggerCandidateData::Type::kCIBLaserTriggerP3, "kCIBLaserTriggerP3" },
46 { TriggerCandidateData::Type::kCTBOffSpillSnapshot, "kCTBOffSpillSnapshot" },
47 { TriggerCandidateData::Type::kCTBOffSpillCosmicJura, "kCTBOffSpillCosmicJura" },
48 { TriggerCandidateData::Type::kCTBOffSpillCRTCosmic, "kCTBOffSpillCRTCosmic" },
49 { TriggerCandidateData::Type::kCTBBeamSpillStart, "kCTBBeamSpillStart" },
50 { TriggerCandidateData::Type::kCTBBeamSpillSnapshot, "kCTBBeamSpillSnapshot" },
52 { TriggerCandidateData::Type::kCTBCustomPulseTrain, "kCTBCustomPulseTrain" },
55 { TriggerCandidateData::Type::kSSPLEDCalibration, "kSSPLEDCalibration" },
57 }
58 };
59
60
61 // Check to ensure that if a new TriggerCandidateData::Type is
62 // created, this function is updated accordingly
63
64 // The string in a default-initialized {type, string} pair will
65 // boolean-equal ""
66 static_assert(names[names.size() - 1].second != "", "The container providing names for TriggerCandidateData::Type values appears to be incomplete");
67
68 return names;
69 }
70
72 string_to_trigger_candidate_type(const std::string& name) {
73 for (const auto& [type, type_name] : get_trigger_candidate_type_names()) {
74 if (type_name == name)
75 return type;
76 }
78 }
79
80 inline std::string
82 try {
83 const auto& [dummy, type_name] { get_trigger_candidate_type_names().at(static_cast<size_t>(type)) };
84 return std::string(type_name);
85
86 } catch (std::exception &e) {
87 return "kUnknown";
88 }
89 }
90
91} // namespace dunedaq::trgdataformats
TriggerCandidateData::Type string_to_trigger_candidate_type(const std::string &name)
std::array< std::pair< TriggerCandidateData::Type, std::string_view >, static_cast< size_t >(TriggerCandidateData::Type::kFinalEnum)> tcinfo_t
const tcinfo_t & get_trigger_candidate_type_names()
std::string trigger_candidate_type_to_string(const TriggerCandidateData::Type type)