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