Line data Source code
1 : ////////////////////////////////////////////////////////////////////////
2 : // 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 .
8 : ////////////////////////////////////////////////////////////////////////
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 : class artdaq::OffsetPrescale : public art::EDFilter
29 : {
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 : // Declare member data here.
46 : size_t events_skip_;
47 : size_t offset_{0};
48 : };
49 :
50 0 : artdaq::OffsetPrescale::OffsetPrescale(fhicl::ParameterSet const& p)
51 : : EDFilter{p}
52 0 : , events_skip_(p.get<size_t>("prescale", 1))
53 : {
54 0 : art::ServiceHandle<ArtdaqSharedMemoryServiceInterface> shm;
55 0 : offset_ = shm->GetMyId();
56 0 : }
57 :
58 0 : bool artdaq::OffsetPrescale::filter(art::Event& e)
59 : {
60 0 : auto eid = e.event();
61 0 : return eid >= offset_ && (eid - offset_) % events_skip_ == 0;
62 : }
63 :
64 0 : DEFINE_ART_MODULE(artdaq::OffsetPrescale)
|