artdaq  v3_01_00
FragmentSniffer_module.cc
1 #define TRACE_NAME "FragmentSniffer"
2 
3 #include "art/Framework/Core/EDAnalyzer.h"
4 #include "art/Framework/Core/ModuleMacros.h"
5 #include "art/Framework/Principal/Event.h"
6 #include "art/Framework/Principal/Handle.h"
7 #include "art/Framework/Principal/Run.h"
8 #include "art/Framework/Principal/SubRun.h"
9 #include "canvas/Persistency/Provenance/BranchType.h"
10 
11 #include "artdaq/DAQdata/Globals.hh"
12 #include "artdaq-core/Data/Fragment.hh"
13 #include <memory>
14 #include "fhiclcpp/ParameterSet.h"
15 
16 #include <string>
17 
18 namespace artdaq
19 {
23  class FragmentSniffer : public art::EDAnalyzer
24  {
25  public:
38  explicit FragmentSniffer(fhicl::ParameterSet const& p);
39 
43  virtual ~FragmentSniffer() = default;
44 
49  void analyze(art::Event const& e) override;
50 
54  void endJob() override;
55 
56  private:
57  std::string raw_label_;
58  std::string product_instance_name_;
59  std::size_t num_frags_per_event_;
60  std::size_t num_events_expected_;
61  std::size_t num_events_processed_;
62  };
63 
64  FragmentSniffer::FragmentSniffer(fhicl::ParameterSet const& p) :
65  art::EDAnalyzer(p)
66  , raw_label_(p.get<std::string>("raw_label", "daq"))
67  , product_instance_name_(p.get<std::string>("product_instance_name"))
68  , num_frags_per_event_(p.get<size_t>("num_frags_per_event"))
69  , num_events_expected_(p.get<size_t>("num_events_expected", 0))
70  , num_events_processed_() { }
71 
72  void FragmentSniffer::analyze(art::Event const& e)
73  {
74  art::Handle<Fragments> handle;
75  e.getByLabel(raw_label_, product_instance_name_, handle);
76  assert(!handle->empty() && "getByLabel returned empty handle");
77  assert(handle->size() == num_frags_per_event_);
78  ++num_events_processed_;
79  }
80 
82  {
83  TLOG(TLVL_INFO) << "events processed: "
84  << num_events_processed_
85  << "\nevents expected: "
86  << num_events_expected_ ;
87  if(num_events_expected_ > 0) assert(num_events_processed_ == num_events_expected_);
88  }
89 
90  DEFINE_ART_MODULE(FragmentSniffer)
91 }
virtual ~FragmentSniffer()=default
Default destructor.
FragmentSniffer(fhicl::ParameterSet const &p)
FragmentSniffer Constructor.
This art::EDAnalyzer plugin tries to get Fragments from each event, asserting that the correct number...
void endJob() override
Called at the end of the job. Asserts that the number of events processed was equal to the expected n...
void analyze(art::Event const &e) override
Called for each event. Asserts that Fragment objects are present in the event and that the correct nu...