artdaq  v3_00_03
FragmentSniffer_module.cc
1 #include "art/Framework/Core/EDAnalyzer.h"
2 #include "art/Framework/Core/ModuleMacros.h"
3 #include "art/Framework/Principal/Event.h"
4 #include "art/Framework/Principal/Handle.h"
5 #include "art/Framework/Principal/Run.h"
6 #include "art/Framework/Principal/SubRun.h"
7 #include "canvas/Persistency/Provenance/BranchType.h"
8 
9 #include "artdaq/DAQdata/Globals.hh"
10 #include "artdaq-core/Data/Fragment.hh"
11 #include <memory>
12 #include "fhiclcpp/ParameterSet.h"
13 
14 #include <string>
15 
16 namespace artdaq
17 {
21  class FragmentSniffer : public art::EDAnalyzer
22  {
23  public:
36  explicit FragmentSniffer(fhicl::ParameterSet const& p);
37 
41  virtual ~FragmentSniffer() = default;
42 
47  void analyze(art::Event const& e) override;
48 
52  void endJob() override;
53 
54  private:
55  std::string raw_label_;
56  std::string product_instance_name_;
57  std::size_t num_frags_per_event_;
58  std::size_t num_events_expected_;
59  std::size_t num_events_processed_;
60  };
61 
62  FragmentSniffer::FragmentSniffer(fhicl::ParameterSet const& p) :
63  art::EDAnalyzer(p)
64  , raw_label_(p.get<std::string>("raw_label", "daq"))
65  , product_instance_name_(p.get<std::string>("product_instance_name"))
66  , num_frags_per_event_(p.get<size_t>("num_frags_per_event"))
67  , num_events_expected_(p.get<size_t>("num_events_expected", 0))
68  , num_events_processed_() { }
69 
70  void FragmentSniffer::analyze(art::Event const& e)
71  {
72  art::Handle<Fragments> handle;
73  e.getByLabel(raw_label_, product_instance_name_, handle);
74  assert(!handle->empty() && "getByLabel returned empty handle");
75  assert(handle->size() == num_frags_per_event_);
76  ++num_events_processed_;
77  }
78 
80  {
81  TLOG_INFO("Progress") << "events processed: "
82  << num_events_processed_
83  << "\nevents expected: "
84  << num_events_expected_ << TLOG_ENDL;
85  if(num_events_expected_ > 0) assert(num_events_processed_ == num_events_expected_);
86  }
87 
88  DEFINE_ART_MODULE(FragmentSniffer)
89 }
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...