9 #ifndef ICARUSCODE_PMT_TRIGGER_ALGORITHMS_WINDOWPATTERNCONFIG_H
10 #define ICARUSCODE_PMT_TRIGGER_ALGORITHMS_WINDOWPATTERNCONFIG_H
14 #include "fhiclcpp/types/TableAs.h"
15 #include "fhiclcpp/types/Sequence.h"
16 #include "fhiclcpp/types/Atom.h"
20 namespace icarus::trigger::ns::fhicl {
22 struct WindowPatternConfig;
34 ::fhicl::TableAs<icarus::trigger::WindowPattern, WindowPatternConfig>;
38 ::fhicl::TableAs<icarus::trigger::WindowPattern, WindowPatternConfig>
138 struct icarus::trigger::ns::fhicl::WindowPatternConfig {
141 using Comment = ::fhicl::Comment;
142 template <
typename T>
using Atom = ::fhicl::Atom<T>;
144 Atom<unsigned int> inMainWindow {
145 Name(
"inMainWindow"),
146 Comment(
"minimum fired primitives in the main sliding window")
148 Atom<unsigned int> inUpstreamWindow {
149 Name(
"inUpstreamWindow"),
151 "minimum fired primitives in the sliding window upstream of main one"
155 Atom<unsigned int> inDownstreamWindow {
156 Name(
"inDownstreamWindow"),
158 "minimum fired primitives in the sliding window downstream of main one"
162 Atom<unsigned int> inOppositeWindow {
163 Name(
"inOppositeWindow"),
165 "minimum fired primitives in the sliding window opposite of main one"
169 Atom<unsigned int> sumOfOppositeWindows {
170 Name(
"sumOfOppositeWindows"),
172 "minimum fired primitives in the main plus opposite window"
177 Atom<bool> requireUpstreamWindow {
178 Name(
"requireUpstreamWindow"),
179 Comment(
"an upstream window must be present (no border main window)"),
182 Atom<bool> requireDownstreamWindow {
183 Name(
"requireDownstreamWindow"),
184 Comment(
"a downstream window must be present (no border main window)"),
194 namespace icarus::trigger::ns::fhicl {
198 config.inMainWindow(),
199 config.inUpstreamWindow(),
200 config.inDownstreamWindow(),
201 config.inOppositeWindow(),
202 config.sumOfOppositeWindows(),
204 config.requireDownstreamWindow()
213 #endif // ICARUSCODE_PMT_TRIGGER_ALGORITHMS_WINDOWPATTERNCONFIG_H
::fhicl::Sequence< ::fhicl::TableAs< icarus::trigger::WindowPattern, WindowPatternConfig > > WindowPatternSequence
Configuration element for any number of trigger windows.
icarus::trigger::WindowPattern convert(WindowPatternConfig const &config)
Function for conversion WindowPatternConfig -> WindowPattern.
Specification of the requirement of sliding window firing pattern.
BEGIN_PROLOG vertical distance to the surface Name
::fhicl::TableAs< icarus::trigger::WindowPattern, WindowPatternConfig > WindowPatternTable
Configuration element for a trigger window.
bool requireUpstreamWindow
Whether a window location with no upstream window should be discarded.