@@ -124,6 +124,17 @@ namespace sbn {
124124 // / Type of mask with `triggerLocation` bits.
125125 using triggerLocationMask = mask_t <triggerLocation>;
126126
127+ // / Type(s) of trigger logic being satisfied.
128+ enum class triggerLogic : unsigned int {
129+ PMTAnalogSum, // /< Discriminated PMT signal sum above threshold.
130+ PMTPairMajority, // /< Minimum number of discriminated PMT above threshold.
131+ // ==> add here if more are needed <==
132+ NBits // /< Number of bits currently supported.
133+ }; // triggerLocation
134+
135+ // / Type of mask with `triggerLogic` bits.
136+ using triggerLogicMask = mask_t <triggerLogic>;
137+
127138 // / Type representing the type(s) of this trigger.
128139 enum class triggerType : unsigned int {
129140 Majority, // /< A minimum number of close-by PMT pairs above threshold was reached.
@@ -137,8 +148,11 @@ namespace sbn {
137148
138149 // / Trigger window mode
139150 enum class triggerWindowMode : unsigned int {
140- Separated, // /< Separated, non-overlapping contigous window
141- Overlapping, // /< Overlaping windows
151+ Separated, // /< Separated, non-overlapping contiguous window.
152+ Overlapping, // /< Overlapping windows.
153+ SeparatedPlusAdders, // /< OR of `Separated` and `Adders`.
154+ OverlappingPlusAdders, // /< OR of `Overlapping` and `Adders`.
155+ Adders, // /< Trigger from adders.
142156 // ==> add here if more are needed <==
143157 NBits // /< Number of Bits currently supported
144158 };
@@ -177,11 +191,13 @@ namespace sbn {
177191 std::string bitName (triggerSource bit);
178192 // / Returns a mnemonic short name of the trigger location.
179193 std::string bitName (triggerLocation bit);
194+ // / Returns a mnemonic short name of the trigger logic.
195+ std::string bitName (triggerLogic bit);
180196 // / Returns a mnemonic short name of the trigger type.
181197 std::string bitName (triggerType bit);
182198 // / Returns a mnemonic short name for the trigger window mode.
183199 std::string bitName (triggerWindowMode bit);
184- // / Returns a mnemonic short name for the trigger window mode .
200+ // / Returns a mnemonic short name for the gate type .
185201 std::string bitName (gateSelection bit);
186202
187203 // / @}
@@ -193,6 +209,8 @@ namespace sbn {
193209 using bits::triggerSourceMask;
194210 using bits::triggerType;
195211 using bits::triggerTypeMask;
212+ using bits::triggerLogic;
213+ using bits::triggerLogicMask;
196214 using bits::triggerLocation;
197215 using bits::triggerLocationMask;
198216 using bits::triggerWindowMode;
@@ -280,8 +298,8 @@ inline std::string sbn::bits::bitName(triggerSource bit) {
280298 + std::to_string (value (bit)) + " }): unknown bit" s);
281299} // sbn::bitName()
282300
283- // -----------------------------------------------------------------------------
284301
302+ // -----------------------------------------------------------------------------
285303inline std::string sbn::bits::bitName (triggerLocation bit) {
286304
287305 using namespace std ::string_literals;
@@ -298,6 +316,21 @@ inline std::string sbn::bits::bitName(triggerLocation bit) {
298316 + std::to_string (value (bit)) + " }): unknown bit" s);
299317} // sbn::bitName(triggerLocation)
300318
319+
320+ // -----------------------------------------------------------------------------
321+ inline std::string sbn::bits::bitName (triggerLogic bit) {
322+
323+ using namespace std ::string_literals;
324+ switch (bit) {
325+ case triggerLogic::PMTPairMajority: return " PMT pair majority" s;
326+ case triggerLogic::PMTAnalogSum: return " PMT analog sum" s;
327+ case triggerLogic::NBits: return " <invalid>" s;
328+ } // switch
329+ throw std::runtime_error (" sbn::bits::bitName(triggerLogic{ " s
330+ + std::to_string (value (bit)) + " }): unknown bit" s);
331+ } // sbn::bitName(triggerLogic)
332+
333+
301334// -----------------------------------------------------------------------------
302335inline std::string sbn::bits::bitName (triggerType bit) {
303336
@@ -311,19 +344,25 @@ inline std::string sbn::bits::bitName(triggerType bit) {
311344 + std::to_string (value (bit)) + " }): unknown bit" s);
312345} // sbn::bitName(triggerType)
313346
347+
348+ // -----------------------------------------------------------------------------
314349inline std::string sbn::bits::bitName (triggerWindowMode bit) {
315350
316351 using namespace std ::string_literals;
317352 switch (bit) {
318- case sbn::bits::triggerWindowMode::Separated: return " Separated Window" s;
319- case sbn::bits::triggerWindowMode::Overlapping: return " Overlapping Window" s;
353+ case sbn::bits::triggerWindowMode::Separated: return " Separated Window" s;
354+ case sbn::bits::triggerWindowMode::Overlapping: return " Overlapping Window" s;
355+ case sbn::bits::triggerWindowMode::SeparatedPlusAdders: return " Separated Both" s;
356+ case sbn::bits::triggerWindowMode::OverlappingPlusAdders: return " Overlapping Both" s;
357+ case sbn::bits::triggerWindowMode::Adders: return " Adders" s;
320358 case sbn::bits::triggerWindowMode::NBits: return " <invalid>" s;
321359 } // switch
322360 throw std::runtime_error (" sbn::bits::bitName(triggerWindowMode{ " s
323361 + std::to_string (value (bit)) + " }): unknown bit" s);
324362} // triggerWindowMode
325363
326364
365+ // -----------------------------------------------------------------------------
327366inline std::string sbn::bits::bitName (gateSelection bit) {
328367
329368 using namespace std ::string_literals;
@@ -355,6 +394,7 @@ inline std::string sbn::bits::bitName(gateSelection bit) {
355394} // sbn::bitName()
356395
357396
397+ // -----------------------------------------------------------------------------
358398namespace icarus ::trigger {
359399
360400 using triggerLocation = sbn::triggerLocation;
0 commit comments