00001 #define TRACE_NAME "FragmentSniffer" 00002 00003 #include "art/Framework/Core/EDAnalyzer.h" 00004 #include "art/Framework/Core/ModuleMacros.h" 00005 #include "art/Framework/Principal/Event.h" 00006 #include "art/Framework/Principal/Handle.h" 00007 #include "art/Framework/Principal/Run.h" 00008 #include "art/Framework/Principal/SubRun.h" 00009 #include "canvas/Persistency/Provenance/BranchType.h" 00010 00011 #include "artdaq/DAQdata/Globals.hh" 00012 #include "artdaq-core/Data/Fragment.hh" 00013 #include <memory> 00014 #include "fhiclcpp/ParameterSet.h" 00015 00016 #include <string> 00017 00018 namespace artdaq 00019 { 00023 class FragmentSniffer : public art::EDAnalyzer 00024 { 00025 public: 00038 explicit FragmentSniffer(fhicl::ParameterSet const& p); 00039 00043 virtual ~FragmentSniffer() = default; 00044 00049 void analyze(art::Event const& e) override; 00050 00054 void endJob() override; 00055 00056 private: 00057 std::string raw_label_; 00058 std::string product_instance_name_; 00059 std::size_t num_frags_per_event_; 00060 std::size_t num_events_expected_; 00061 std::size_t num_events_processed_; 00062 }; 00063 00064 FragmentSniffer::FragmentSniffer(fhicl::ParameterSet const& p) : 00065 art::EDAnalyzer(p) 00066 , raw_label_(p.get<std::string>("raw_label", "daq")) 00067 , product_instance_name_(p.get<std::string>("product_instance_name")) 00068 , num_frags_per_event_(p.get<size_t>("num_frags_per_event")) 00069 , num_events_expected_(p.get<size_t>("num_events_expected", 0)) 00070 , num_events_processed_() { } 00071 00072 void FragmentSniffer::analyze(art::Event const& e) 00073 { 00074 art::Handle<Fragments> handle; 00075 e.getByLabel(raw_label_, product_instance_name_, handle); 00076 assert(!handle->empty() && "getByLabel returned empty handle"); 00077 assert(handle->size() == num_frags_per_event_); 00078 ++num_events_processed_; 00079 } 00080 00081 void FragmentSniffer::endJob() 00082 { 00083 TLOG(TLVL_INFO) << "events processed: " 00084 << num_events_processed_ 00085 << "\nevents expected: " 00086 << num_events_expected_ ; 00087 if(num_events_expected_ > 0) assert(num_events_processed_ == num_events_expected_); 00088 } 00089 00090 DEFINE_ART_MODULE(FragmentSniffer) 00091 }