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.