artdaq  3.13.00
OffsetPrescale_module.cc
1 // Class: OffsetPrescale
3 // Plugin Type: filter (Unknown Unknown)
4 // File: OffsetPrescale_module.cc
5 //
6 // Generated at Mon Sep 11 12:28:36 2023 by Eric Flumerfelt using cetskelgen
7 // from version .
9 
10 #include "artdaq/ArtModules/ArtdaqSharedMemoryServiceInterface.h"
11 
12 #include "art/Framework/Core/EDFilter.h"
13 #include "art/Framework/Core/ModuleMacros.h"
14 #include "art/Framework/Principal/Event.h"
15 #include "art/Framework/Principal/Handle.h"
16 #include "art/Framework/Principal/Run.h"
17 #include "art/Framework/Principal/SubRun.h"
18 #include "canvas/Utilities/InputTag.h"
19 #include "fhiclcpp/ParameterSet.h"
20 #include "messagefacility/MessageLogger/MessageLogger.h"
21 
22 #include <memory>
23 
24 namespace artdaq {
25  class OffsetPrescale;
26 }
27 
28 
29 class artdaq::OffsetPrescale : public art::EDFilter {
30 public:
31  explicit OffsetPrescale(fhicl::ParameterSet const& p);
32  // The compiler-generated destructor is fine for non-base
33  // classes without bare pointers or other resource use.
34 
35  // Plugins should not be copied or assigned.
36  OffsetPrescale(OffsetPrescale const&) = delete;
37  OffsetPrescale(OffsetPrescale&&) = delete;
38  OffsetPrescale& operator=(OffsetPrescale const&) = delete;
39  OffsetPrescale& operator=(OffsetPrescale&&) = delete;
40 
41  // Required functions.
42  bool filter(art::Event& e) override;
43 
44 private:
45 
46  // Declare member data here.
47  size_t events_skip_;
48  size_t offset_{0};
49 
50 };
51 
52 
53 artdaq::OffsetPrescale::OffsetPrescale(fhicl::ParameterSet const& p)
54  : EDFilter{p}
55  , events_skip_(p.get<size_t>("prescale", 1))
56 {
57  art::ServiceHandle<ArtdaqSharedMemoryServiceInterface> shm;
58  offset_ = shm->GetMyId();
59 }
60 
61 bool artdaq::OffsetPrescale::filter(art::Event& e)
62 {
63  auto eid = e.event();
64  return eid >= offset_
65  && (eid - offset_) % events_skip_ == 0;
66 }
67 
68 DEFINE_ART_MODULE(artdaq::OffsetPrescale)