8 #include "art/Framework/Core/EDAnalyzer.h"
9 #include "art/Framework/Core/ModuleMacros.h"
10 #include "art/Framework/Principal/Event.h"
11 #include "art/Framework/Principal/Handle.h"
12 #include "canvas/Utilities/Exception.h"
14 #include "artdaq-core/Data/ContainerFragment.hh"
15 #include "artdaq-core/Data/Fragment.hh"
16 #include "artdaq-core/Data/RawEvent.hh"
46 explicit EventDump(fhicl::ParameterSet
const& pset);
60 void analyze(art::Event
const& e)
override;
68 std::string raw_data_label_;
74 , raw_data_label_(pset.get<std::string>(
"raw_data_label",
"daq"))
75 , verbosity_(pset.get<int>(
"verbosity", 0)) {}
81 std::cout <<
"***** Start of EventDump for event " << e.event() <<
" *****" << std::endl;
83 art::Handle<detail::RawEventHeader> header_handle;
84 e.getByLabel(raw_data_label_,
"RawEventHeader", header_handle);
86 if (header_handle.isValid())
88 std::ostringstream ostr;
89 header_handle->print(ostr);
90 std::cout <<
"Event Header: " << ostr.str() << std::endl;
94 std::cout <<
"Unable to read RawEventHeader for event " << e.event() << std::endl;
97 std::vector<art::Handle<std::vector<artdaq::Fragment> > > fragmentHandles;
98 e.getManyByType(fragmentHandles);
100 for (
auto const& handle : fragmentHandles)
102 if (!handle->empty())
104 std::string instance_name = handle.provenance()->productInstanceName();
105 std::cout << instance_name <<
" fragments: " << std::endl;
108 for (
auto const& frag : *handle)
110 std::cout <<
" " << jdx <<
") fragment ID " << frag.fragmentID() <<
" has type "
111 <<
static_cast<int>(frag.type()) <<
", timestamp " << frag.timestamp()
112 <<
", has metadata " << std::boolalpha << frag.hasMetadata()
113 <<
", and sizeBytes " << frag.sizeBytes()
114 <<
" (hdr=" << frag.headerSizeBytes()
115 <<
", data=" << frag.dataSizeBytes()
116 <<
", meta (calculated)=" << (frag.sizeBytes() - frag.headerSizeBytes() - frag.dataSizeBytes())
119 if (instance_name.compare(0, 9,
"Container") == 0)
121 artdaq::ContainerFragment cf(frag);
122 std::cout <<
" (contents: type = " <<
static_cast<int>(cf.fragment_type()) <<
", count = "
123 << cf.block_count() <<
", missing data = " << cf.missing_data()
128 for (
size_t idx = 0; idx < cf.block_count(); ++idx)
130 auto thisFrag = cf.at(idx);
131 std::cout <<
" " << (idx + 1) <<
") fragment type " << static_cast<int>(thisFrag->type())
132 <<
", timestamp " << thisFrag->timestamp()
133 <<
", has metadata " << std::boolalpha << thisFrag->hasMetadata()
134 <<
", and sizeBytes " << thisFrag->sizeBytes()
135 <<
" (hdr=" << thisFrag->headerSizeBytes()
136 <<
", data=" << thisFrag->dataSizeBytes()
137 <<
", meta (calculated)=" << (thisFrag->sizeBytes() - thisFrag->headerSizeBytes() - thisFrag->dataSizeBytes())
144 std::cout << std::endl;
151 std::cout <<
"***** End of EventDump for event " << e.event() <<
" *****" << std::endl;
void analyze(art::Event const &e) override
This method is called for each art::Event in a file or run.
~EventDump() override=default
Default virtual Destructor.
EventDump(fhicl::ParameterSet const &pset)
EventDump Constructor.
Write Event information to the console.