All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
icarus::trigger::SlidingWindowPatternAlg Class Reference

Applies sliding window patterns to discriminated waveforms. More...

#include <SlidingWindowPatternAlg.h>

Inheritance diagram for icarus::trigger::SlidingWindowPatternAlg:
icarus::ns::util::mfLoggingClass

Classes

struct  AllTriggerInfo_t
 Complete information from this algorithm, standard + non-standard (extra). More...
 
struct  MoreInfo_t
 Additional information on the trigger. More...
 
struct  WindowTriggerInfo_t
 Data structure to communicate internally a trigger response. More...
 

Public Types

using TriggerInfo_t = icarus::trigger::details::TriggerInfo_t
 Record of the trigger response. More...
 
using InputTriggerGate_t = icarus::trigger::TrackedOpticalTriggerGate< sbn::OpDetWaveformMeta >
 Type of trigger gate provided as input. More...
 
using TriggerGates_t = std::vector< InputTriggerGate_t >
 A list of trigger gates from input. More...
 
using TriggerGateData_t = icarus::trigger::OpticalTriggerGateData_t
 Type of gate data without channel information (gate levels only). More...
 
using WindowTopology_t = icarus::trigger::WindowChannelMap
 Type holding information about composition and topology of all windows. More...
 
using WindowPattern_t = icarus::trigger::WindowPattern
 Type representing the requirement pattern for a window. More...
 

Public Member Functions

 SlidingWindowPatternAlg (WindowTopology_t windowTopology, WindowPattern_t windowPattern, icarus::trigger::ApplyBeamGateClass beamGate, std::string const &logCategory="SlidingWindowPatternAlg")
 Constructor: configures window topology and times. More...
 
 SlidingWindowPatternAlg (WindowTopology_t windowTopology, WindowPattern_t windowPattern, std::string const &logCategory="SlidingWindowPatternAlg")
 Constructor: configures window topology and times. More...
 
AllTriggerInfo_t simulateResponse (TriggerGates_t const &gates) const
 Returns the trigger response from the specified gates. More...
 
TriggerGates_t applyBeamGate (TriggerGates_t const &gates) const
 Returns a new collection of gates, set each in coincidence with beam gate. More...
 
bool hasBeamGate () const
 Returns whether a beam gate is being applied. More...
 
void setBeamGate (icarus::trigger::ApplyBeamGateClass beamGate)
 Changes the beam gate to the specified value. More...
 
void clearBeamGate ()
 Do not apply any beam gate. More...
 
TriggerInfo_t applyWindowPattern (WindowTopology_t::WindowInfo_t const &windowInfo, WindowPattern_t const &pattern, TriggerGates_t const &gates) const
 Returns the trigger response for the specified window pattern. More...
 
- Public Member Functions inherited from icarus::ns::util::mfLoggingClass
 mfLoggingClass (std::string const &logCategory)
 Constructor: initializes with the specified log category. More...
 
std::string logCategory () const
 Returns the logging category string for this object. More...
 
mfLoggingClass const & loggingClass () const
 Returns this object (as a logging class object). More...
 
mf::LogError mfLogError (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogError() stream for logging. More...
 
mf::LogWarning mfLogWarning (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogWarning() stream for logging. More...
 
mf::LogProblem mfLogProblem (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogProblem() stream for logging. More...
 
mf::LogInfo mfLogInfo (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogInfo() stream for logging. More...
 
mf::LogVerbatim mfLogVerbatim (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogVerbatim() stream for logging. More...
 
mf::LogDebug mfLogDebug (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogDebug() stream for logging. More...
 
mf::LogTrace mfLogTrace (std::string const &file={}, int const lineNumber=0) const
 Returns a mf::LogTrace() stream for logging. More...
 

Private Member Functions

TriggerInfo_t applyWindowPattern (WindowPattern_t const &pattern, std::size_t iWindow, TriggerGates_t const &gates) const
 Returns the trigger response for the specified window pattern. More...
 
void verifyInputTopology (TriggerGates_t const &gates) const
 Checks gates are compatible with the current window configuration. More...
 

Private Attributes

WindowTopology_t const fWindowTopology
 Definition of the neighborhood of each window in terms of window indices. More...
 
WindowPattern_t const fWindowPattern
 Requirement pattern to be applied to each window. More...
 
std::optional
< icarus::trigger::ApplyBeamGateClass
const > 
fBeamGate
 Time interval when to evaluate the trigger. More...
 

Detailed Description

Applies sliding window patterns to discriminated waveforms.

This algorithm takes as input one trigger gate for each window. Each window is identified by an index, and the input gates are assigned one per window, in order.

The window mapping that defines the topology of the windows is passed to the algorithm.

If a beam gate is present, it is applied to all input before simulating the pattern. Otherwise, the full input is used.

For the definition of the windows, see icarus::trigger::WindowChannelMap.

Definition at line 51 of file SlidingWindowPatternAlg.h.

Member Typedef Documentation

Type of trigger gate provided as input.

Definition at line 62 of file SlidingWindowPatternAlg.h.

Type of gate data without channel information (gate levels only).

Definition at line 68 of file SlidingWindowPatternAlg.h.

A list of trigger gates from input.

Definition at line 65 of file SlidingWindowPatternAlg.h.

Record of the trigger response.

Definition at line 58 of file SlidingWindowPatternAlg.h.

Type representing the requirement pattern for a window.

Definition at line 74 of file SlidingWindowPatternAlg.h.

Type holding information about composition and topology of all windows.

Definition at line 71 of file SlidingWindowPatternAlg.h.

Constructor & Destructor Documentation

icarus::trigger::SlidingWindowPatternAlg::SlidingWindowPatternAlg ( WindowTopology_t  windowTopology,
WindowPattern_t  windowPattern,
icarus::trigger::ApplyBeamGateClass  beamGate,
std::string const &  logCategory = "SlidingWindowPatternAlg" 
)

Constructor: configures window topology and times.

Parameters
windowTopologyfull composition and topology description of windows
windowPatternthe pattern that this algorithm applies
beamGateobject applying the beam gate to trigger gates
logCategorycategory tag for algorithm messages on screen

Window topology can be computed with icarus::trigger::WindowTopologyAlg starting from a (complete) set of trigger gates.

A beam gate application class can be constructed via icarus::trigger::makeApplyBeamGate() helper function.

Definition at line 34 of file SlidingWindowPatternAlg.cxx.

41  , fWindowTopology(std::move(windowTopology))
42  , fWindowPattern(std::move(windowPattern))
43  , fBeamGate(std::move(beamGate))
44  {}
Helper for logging classes.
WindowTopology_t const fWindowTopology
Definition of the neighborhood of each window in terms of window indices.
WindowPattern_t const fWindowPattern
Requirement pattern to be applied to each window.
std::optional< icarus::trigger::ApplyBeamGateClass const > fBeamGate
Time interval when to evaluate the trigger.
std::string logCategory() const
Returns the logging category string for this object.
icarus::trigger::SlidingWindowPatternAlg::SlidingWindowPatternAlg ( WindowTopology_t  windowTopology,
WindowPattern_t  windowPattern,
std::string const &  logCategory = "SlidingWindowPatternAlg" 
)

Constructor: configures window topology and times.

Parameters
windowTopologyfull composition and topology description of windows
windowPatternthe pattern that this algorithm applies
logCategorycategory tag for algorithm messages on screen

Window topology can be computed with icarus::trigger::WindowTopologyAlg starting from a (complete) set of trigger gates.

The beam gate is set to be empty; it must be set before simulating the response (simulateResponse()) via setBeamGate().

Definition at line 48 of file SlidingWindowPatternAlg.cxx.

54  , fWindowTopology(std::move(windowTopology))
55  , fWindowPattern(std::move(windowPattern))
56  {}
Helper for logging classes.
WindowTopology_t const fWindowTopology
Definition of the neighborhood of each window in terms of window indices.
WindowPattern_t const fWindowPattern
Requirement pattern to be applied to each window.
std::string logCategory() const
Returns the logging category string for this object.

Member Function Documentation

TriggerGates_t icarus::trigger::SlidingWindowPatternAlg::applyBeamGate ( TriggerGates_t const &  gates) const

Returns a new collection of gates, set each in coincidence with beam gate.

auto icarus::trigger::SlidingWindowPatternAlg::applyWindowPattern ( WindowTopology_t::WindowInfo_t const &  windowInfo,
WindowPattern_t const &  pattern,
TriggerGates_t const &  gates 
) const

Returns the trigger response for the specified window pattern.

Parameters
windowInfothe topology of the windows
patternthe trigger requirement pattern
gatestrigger gates, one per window
Returns
a TriggerInfo_t record with the response of the pattern

The input gates represent all the trigger gates relevant to the trigger determination, in a list by window index: the first gate belongs to the window 0, the second one to the window 1 and so on. The topology windowInfo identifies a window and its topology, i.e. its neighbours, by window index. It is required and assumed that the values of the window indices match the ones in the gates list. This function applies the requirements in the specified pattern to the window identified by windowInfo, using the actual trigger gates from the gates list as needed.

The return value includes the first tick at which the requirements have been all met. Note that if a beam gate needs to be applied, it should be applies to all gates before calling this function (see e.g. applyBeamGate()).

Definition at line 205 of file SlidingWindowPatternAlg.cxx.

210 {
211 
212  /*
213  * 1. check that the pattern can be applied; if not, return no trigger
214  * 2. discriminate all the relevant gates against their required minimum count
215  * 3. combine them in AND
216  * 4. find the trigger time, fill the trigger information accordingly
217  */
218  TriggerInfo_t res; // no trigger by default
219  assert(!res);
220 
221  // undress the gate to get its data
222  auto const gateAt = [&gates](std::size_t index) -> TriggerGateData_t const&
223  { return gateIn(gates[index]); };
224 
225  //
226  // 1. check that the pattern can be applied; if not, return no trigger
227  //
228 
229  // check that the pattern centered into iWindow has all it needs:
230  if (pattern.requireUpstreamWindow && !windowInfo.hasUpstreamWindow())
231  return res;
232  if (pattern.requireDownstreamWindow && !windowInfo.hasDownstreamWindow())
233  return res;
234 
235 
236  //
237  // 2. discriminate all the relevant gates against their required minimum count
238  // 3. combine them in AND
239  //
240 
241  mfLogTrace()
242  << "Window info #" << windowInfo.index << " pattern " << pattern.tag();
243 
244  // we have two different "modes" depending on whether we are constraining
245  // the sum of main and opposite window, or not;
246  std::optional<TriggerGateData_t> const mainPlusOpposite
247  = (pattern.minSumInOppositeWindows > 0U)
248  ? std::optional{
249  windowInfo.hasOppositeWindow()
250  ? sumGates(gateAt(windowInfo.index), gateAt(windowInfo.opposite))
251  : gateAt(windowInfo.index)
252  }
253  : std::nullopt
254  ;
255 
256  // the basic trigger primitive gate has the levels of the main or
257  // main+opposite window depending on the requirements
258  TriggerGateData_t trigPrimitive
259  = mainPlusOpposite? *mainPlusOpposite: gateAt(windowInfo.index);
260 
261  mfLogTrace() << " base: " << compactdump(trigPrimitive);
262 
263  // main window
264  if (pattern.minInMainWindow > 0U) {
265  trigPrimitive.Mul
266  (discriminate(gateAt(windowInfo.index), pattern.minInMainWindow));
267  mfLogTrace()
268  << " main >= " << pattern.minInMainWindow << ": "
269  << compactdump(trigPrimitive);
270  } // if
271 
272  // add opposite window requirement (if any)
273  if ((pattern.minInOppositeWindow > 0U) && windowInfo.hasOppositeWindow()) {
274  trigPrimitive.Mul
275  (discriminate(gateAt(windowInfo.opposite), pattern.minInOppositeWindow));
276  mfLogTrace() << " opposite [#" << windowInfo.opposite << "]: "
277  << compactdump(gateAt(windowInfo.opposite))
278  << "\n => " << compactdump(trigPrimitive);
279  } // if
280 
281  // add main plus opposite window requirement (if any)
282  if (pattern.minSumInOppositeWindows > 0U) {
283  assert(mainPlusOpposite.has_value());
284  trigPrimitive.Mul
285  (discriminate(*mainPlusOpposite, pattern.minSumInOppositeWindows));
286  mfLogTrace() << " sum [+ #" << windowInfo.opposite << "]: "
287  << compactdump(*mainPlusOpposite)
288  << "\n => " << compactdump(trigPrimitive);
289 
290  } // if
291 
292  // add upstream window requirement (if any)
293  if ((pattern.minInUpstreamWindow > 0U) && windowInfo.hasUpstreamWindow()) {
294  trigPrimitive.Mul
295  (discriminate(gateAt(windowInfo.upstream), pattern.minInUpstreamWindow));
296  } // if
297 
298  // add downstream window requirement (if any)
299  if ((pattern.minInDownstreamWindow > 0U) && windowInfo.hasDownstreamWindow())
300  {
301  trigPrimitive.Mul(
302  discriminate(gateAt(windowInfo.downstream), pattern.minInDownstreamWindow)
303  );
304  } // if
305 
306  mfLogTrace() << " final: " << compactdump(trigPrimitive);
307 
308  //
309  // 4. find the trigger time, fill the trigger information accordingly
310  //
312  { trigPrimitive };
313 
314  extractOpeningInfo.setLocation
315  (TriggerInfo_t::LocationID_t{ windowInfo.index });
316 
317  while (extractOpeningInfo) {
318  auto info = extractOpeningInfo();
319  if (info) res.add(info.value());
320  } // while
321 
322  return res;
323 
324 } // icarus::trigger::SlidingWindowTriggerEfficiencyPlots::applyWindowPattern()
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
Definition: UtilFunc.cxx:42
icarus::trigger::details::TriggerInfo_t TriggerInfo_t
Record of the trigger response.
std::size_t LocationID_t
Type for ID of trigger location.
Definition: TriggerInfo_t.h:58
icarus::trigger::OpticalTriggerGateData_t TriggerGateData_t
Type of gate data without channel information (gate levels only).
mf::LogTrace mfLogTrace(std::string const &file={}, int const lineNumber=0) const
Returns a mf::LogTrace() stream for logging.
auto sumGates(GateColl const &gates)
Sums all the gates in a collection.
GateObj discriminate(GateObj const &gate, typename GateObj::OpeningCount_t threshold=1U, typename GateObj::OpeningCount_t pass=1U, typename GateObj::OpeningCount_t fail=0U)
Returns a discriminated version of gate.
Helper to extract OpeningInfo_t from a trigger gate.
Definition: TriggerInfo_t.h:30
auto compactdump(ReadoutTriggerGate< Tick, TickInterval, ChannelIDType > const &gate) -> details::CompactFormatter< ReadoutTriggerGate< Tick, TickInterval, ChannelIDType >>
Manipulator-like function for compact format of trigger gates.
decltype(auto) gateIn(Gate &&gate)
Returns the trigger gate (a ReadoutTriggerGate) from the specified gate.
auto icarus::trigger::SlidingWindowPatternAlg::applyWindowPattern ( WindowPattern_t const &  pattern,
std::size_t  iWindow,
TriggerGates_t const &  gates 
) const
private

Returns the trigger response for the specified window pattern.

Parameters
patternthe trigger requirement pattern
iWindowindex of the window to be tested
gatestrigger gates, one per window
Returns
a TriggerInfo_t record with the response of the pattern
See Also
applyWindowPattern(WindowChannelMap::WindowInfo const&, WindowPattern_t const&, TriggerGates_t const&)

Applies the specified pattern to the window with index iWindow of the configured window topology.

See the static version of applyWindowPattern() for details.

Definition at line 328 of file SlidingWindowPatternAlg.cxx.

333 {
334  WindowTopology_t::WindowInfo_t const& windowInfo
335  = fWindowTopology.info(iWindow);
336  assert(windowInfo.index == iWindow);
337 
338  return applyWindowPattern(windowInfo, pattern, gates);
339 } // icarus::trigger::SlidingWindowTriggerEfficiencyPlots::applyWindowPattern()
TriggerInfo_t applyWindowPattern(WindowTopology_t::WindowInfo_t const &windowInfo, WindowPattern_t const &pattern, TriggerGates_t const &gates) const
Returns the trigger response for the specified window pattern.
WindowTopology_t const fWindowTopology
Definition of the neighborhood of each window in terms of window indices.
WindowInfo_t const & info(WindowIndex_t index) const
Returns the information for the window with specified index (unchecked).
void icarus::trigger::SlidingWindowPatternAlg::clearBeamGate ( )

Do not apply any beam gate.

Definition at line 133 of file SlidingWindowPatternAlg.cxx.

134  { fBeamGate.reset(); }
std::optional< icarus::trigger::ApplyBeamGateClass const > fBeamGate
Time interval when to evaluate the trigger.
bool icarus::trigger::SlidingWindowPatternAlg::hasBeamGate ( ) const

Returns whether a beam gate is being applied.

Definition at line 122 of file SlidingWindowPatternAlg.cxx.

123  { return fBeamGate.has_value(); }
std::optional< icarus::trigger::ApplyBeamGateClass const > fBeamGate
Time interval when to evaluate the trigger.
void icarus::trigger::SlidingWindowPatternAlg::setBeamGate ( icarus::trigger::ApplyBeamGateClass  beamGate)

Changes the beam gate to the specified value.

Definition at line 128 of file SlidingWindowPatternAlg.cxx.

129  { fBeamGate.emplace(std::move(beamGate)); }
std::optional< icarus::trigger::ApplyBeamGateClass const > fBeamGate
Time interval when to evaluate the trigger.
auto icarus::trigger::SlidingWindowPatternAlg::simulateResponse ( TriggerGates_t const &  gates) const

Returns the trigger response from the specified gates.

Parameters
gatesthe trigger gates to be used as input, one per window
Returns
the response to the configured pattern
See Also
applyWindowPattern(WindowChannelMap::WindowInfo const&, WindowPattern_t const&, TriggerGates_t const&)

The return value comprises a "standard" TriggerInfo_t object, which stores whether the pattern fired and when, and some extra information, including which window made the trigger fire first (in case of ties, the window with the smallest index is reported).

The list gates must contain a single trigger gate for each window, with the gate index in the list matching the window index in the configured window topology.

See the static version of applyWindowPattern() for more details.

Definition at line 61 of file SlidingWindowPatternAlg.cxx.

62 {
63 
64  // ensures input gates are in the same order as the configured windows
65  verifyInputTopology(gates);
66 
67  auto const& inBeamGates = fBeamGate? fBeamGate->applyToAll(gates): gates;
68 
69  //
70  // 2. apply pattern:
71  //
72  std::size_t const nWindows = fWindowTopology.nWindows();
73 
74  //
75  // 2.1. for each main window, apply the pattern
76  //
77  WindowTriggerInfo_t triggerInfo; // start empty
78  for (std::size_t const iWindow: util::counter(nWindows)) {
79 
80  TriggerInfo_t const windowResponse
81  = applyWindowPattern(fWindowPattern, iWindow, inBeamGates);
82 
83  if (!windowResponse) continue;
84 
85  assert(windowResponse.hasLocation());
86  assert(windowResponse.location() == iWindow);
87  if (windowResponse.nTriggers() == 1U) {
88  mfLogTrace() << "Pattern fired on window #" << iWindow
89  << " at tick " << windowResponse.atTick();
90  }
91  else {
92  std::vector<TriggerInfo_t::OpeningInfo_t> const& triggers
93  = windowResponse.all();
94  TriggerInfo_t::OpeningInfo_t const* pMain = &(windowResponse.main());
95  auto log = mfLogTrace();
96  log << "Pattern fired " << triggers.size()
97  << " times on window #" << iWindow << ":";
98  for (auto const& [ iTrigger, trigger ]: util::enumerate(triggers)) {
99  log << " [#" << iTrigger << "] " << " on " << trigger.tick
100  << " (";
101  if (&trigger == pMain) log << "main; ";
102  log << "lvl=" << trigger.level << ")";
103  } // for
104  }
105 
106  //
107  // 2.2. pick the main window with the earliest successful response, if any;
108  // that defines location and time of the trigger
109  //
110  if (!triggerInfo || triggerInfo.info.atTick() > windowResponse.atTick()) {
111  if (!triggerInfo) mfLogTrace() << " (new global trigger)";
112  triggerInfo.emplace(iWindow, windowResponse);
113  }
114 
115  } // main window choice
116 
117  return { std::move(triggerInfo.info), MoreInfo_t{ triggerInfo.windowIndex } };
118 } // icarus::trigger::SlidingWindowPatternAlg::simulateResponse()
TriggerInfo_t applyWindowPattern(WindowTopology_t::WindowInfo_t const &windowInfo, WindowPattern_t const &pattern, TriggerGates_t const &gates) const
Returns the trigger response for the specified window pattern.
void verifyInputTopology(TriggerGates_t const &gates) const
Checks gates are compatible with the current window configuration.
std::size_t nWindows() const
Number of sliding windows.
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
auto counter(T begin, T end)
Returns an object to iterate values from begin to end in a range-for loop.
Definition: counter.h:285
icarus::trigger::details::TriggerInfo_t TriggerInfo_t
Record of the trigger response.
WindowTopology_t const fWindowTopology
Definition of the neighborhood of each window in terms of window indices.
WindowPattern_t const fWindowPattern
Requirement pattern to be applied to each window.
mf::LogTrace mfLogTrace(std::string const &file={}, int const lineNumber=0) const
Returns a mf::LogTrace() stream for logging.
std::optional< icarus::trigger::ApplyBeamGateClass const > fBeamGate
Time interval when to evaluate the trigger.
void icarus::trigger::SlidingWindowPatternAlg::verifyInputTopology ( TriggerGates_t const &  gates) const
private

Checks gates are compatible with the current window configuration.

Parameters
gatesthe combined sliding window trigger gates, per cryostat
Exceptions
cet::exception(category: SlidingWindowTriggerEfficiencyPlots) or derived, if an incompatibility is found

The method verifies that the current channel mapping is compatible with the gates.

This currently means that the gates are in the expected order and have the expected channel content.

Definition at line 139 of file SlidingWindowPatternAlg.cxx.

140 {
141  /*
142  * Verifies that the `gates` are in the expected order and have
143  * the expected channel content.
144  */
145 
146  std::string errorMsg; // if this stays `empty()` there is no error
147  for (auto const& [ iWindow, gate ]: util::enumerate(gates)) {
148 
149  std::string windowError; // if this stays `empty()` there is no error
150 
151  // more input gates than windows?
152  if (iWindow >= fWindowTopology.nWindows()) {
153  windowError = "unexpected input gate #" + std::to_string(iWindow) + " (";
154  for (raw::Channel_t const channel: gate.channels())
155  windowError += " " + std::to_string(channel);
156  windowError += " )";
157  errorMsg += windowError + '\n';
158  continue; // we collect info of all spurious gates
159  }
160 
161  WindowTopology_t::WindowInfo_t const& windowInfo
162  = fWindowTopology.info(iWindow);
163 
164  auto const channelInWindow
165  = [begin=windowInfo.channels.cbegin(),end=windowInfo.channels.cend()]
166  (raw::Channel_t channel)
167  { return std::binary_search(begin, end, channel); }
168  ;
169 
170  for (raw::Channel_t const channel: gate.channels()) {
171  if (channelInWindow(channel)) continue;
172  if (windowError.empty()) {
173  windowError =
174  "channels not in window #" + std::to_string(windowInfo.index)
175  + ":";
176  } // if first error
177  windowError += " " + std::to_string(channel);
178  } // for all channels in gate
179 
180  if (!windowError.empty()) errorMsg += windowError + '\n';
181  } // for gates
182 
183  // more input gates than windows?
184  if (fWindowTopology.nWindows() > size(gates)) {
185  errorMsg +=
186  "Not enough input gates: " + std::to_string(size(gates)) + " gates for "
187  + std::to_string(fWindowTopology.nWindows()) + " windows\n";
188  }
189 
190  if (errorMsg.empty()) return;
191 
192  // put together the exception message and throw it.
193  throw cet::exception("SlidingWindowPatternAlg")
194  << "Some channels from trigger gates do not match"
195  " the configured window allocation:\n"
196  << errorMsg
197  << "\n" // empty line
198  << "Window configuration: "
199  << fWindowTopology << "\n";
200 
201 } // icarus::trigger::SlidingWindowPatternAlg::verifyInputTopology()
std::size_t size(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:561
std::size_t nWindows() const
Number of sliding windows.
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
auto end(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:585
WindowTopology_t const fWindowTopology
Definition of the neighborhood of each window in terms of window indices.
auto begin(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:573
std::string to_string(WindowPattern const &pattern)
WindowInfo_t const & info(WindowIndex_t index) const
Returns the information for the window with specified index (unchecked).

Member Data Documentation

std::optional<icarus::trigger::ApplyBeamGateClass const> icarus::trigger::SlidingWindowPatternAlg::fBeamGate
private

Time interval when to evaluate the trigger.

Definition at line 224 of file SlidingWindowPatternAlg.h.

WindowPattern_t const icarus::trigger::SlidingWindowPatternAlg::fWindowPattern
private

Requirement pattern to be applied to each window.

Definition at line 221 of file SlidingWindowPatternAlg.h.

WindowTopology_t const icarus::trigger::SlidingWindowPatternAlg::fWindowTopology
private

Definition of the neighborhood of each window in terms of window indices.

Definition at line 218 of file SlidingWindowPatternAlg.h.


The documentation for this class was generated from the following files: