LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
Prescaler_module.cc
Go to the documentation of this file.
1 // ======================================================================
2 //
3 // Prescaler_plugin
4 //
5 // ======================================================================
6 
10 #include "fhiclcpp/types/Atom.h"
11 
12 namespace art {
13  class Prescaler;
14 }
15 using namespace fhicl;
16 using art::Prescaler;
17 
18 // ======================================================================
19 
20 class art::Prescaler : public EDFilter {
21 public:
22  struct Config {
23  Atom<int> prescaleFactor{Name("prescaleFactor")};
24  Atom<int> prescaleOffset{Name("prescaleOffset")};
25  };
26 
28  explicit Prescaler(Parameters const&);
29 
30  bool filter(Event&) override;
31 
32 private:
33  int count_{};
34  int const n_; // accept one in n
35  int const
36  offset_; // with offset,
37  // i.e. sequence of events does not have to start at first event
38 
39 }; // Prescaler
40 
41 // ======================================================================
42 
44  : n_{config().prescaleFactor()}, offset_{config().prescaleOffset()}
45 {}
46 
47 bool
49 {
50  return ++count_ % n_ == offset_;
51 }
52 
bool filter(Event &) override
Framework includes.
#define DEFINE_ART_MODULE(klass)
Definition: ModuleMacros.h:42
Prescaler(Parameters const &)
parameter set interface
HLT enums.