1 #define TRACE_NAME "EventReporterOutput"
3 #include "art/Framework/Core/ModuleMacros.h"
4 #include "art/Framework/Core/OutputModule.h"
5 #include "art/Framework/Principal/EventPrincipal.h"
6 #include "art/Framework/Principal/OutputHandle.h"
7 #include "art/Framework/Principal/RunPrincipal.h"
8 #include "art/Framework/Principal/SubRunPrincipal.h"
9 #include "art/Framework/Services/Registry/ServiceHandle.h"
10 #include "art/Persistency/Provenance/ProcessHistoryRegistry.h"
11 #include "canvas/Persistency/Common/Wrapper.h"
12 #include "canvas/Persistency/Provenance/BranchDescription.h"
13 #include "canvas/Persistency/Provenance/BranchKey.h"
14 #include "canvas/Persistency/Provenance/History.h"
15 #include "canvas/Persistency/Provenance/ParentageRegistry.h"
16 #include "canvas/Persistency/Provenance/ProcessConfiguration.h"
17 #include "canvas/Persistency/Provenance/ProcessConfigurationID.h"
18 #include "canvas/Persistency/Provenance/ProcessHistoryID.h"
19 #include "canvas/Persistency/Provenance/ProductList.h"
20 #include "canvas/Persistency/Provenance/ProductProvenance.h"
21 #include "canvas/Persistency/Provenance/RunAuxiliary.h"
22 #include "canvas/Persistency/Provenance/SubRunAuxiliary.h"
23 #include "canvas/Utilities/DebugMacros.h"
24 #include "canvas/Utilities/Exception.h"
25 #if ART_HEX_VERSION < 0x30901
26 #include "canvas/Utilities/WrappedTypeID.h"
28 #include "cetlib/column_width.h"
29 #include "cetlib/lpad.h"
30 #include "cetlib/rpad.h"
31 #include "fhiclcpp/ParameterSet.h"
32 #include "fhiclcpp/ParameterSetID.h"
33 #include "fhiclcpp/ParameterSetRegistry.h"
35 #include "artdaq-core/Data/detail/ParentageMap.hh"
36 #include "artdaq/DAQdata/Globals.hh"
37 #include "artdaq/DAQdata/NetMonHeader.hh"
38 #include "artdaq/TransferPlugins/MakeTransferPlugin.hh"
39 #include "artdaq/TransferPlugins/TransferInterface.hh"
54 class EventReporterOutput;
85 void openFile(FileBlock
const& )
override;
87 virtual void closeFile();
89 void respondToCloseInputFile(FileBlock
const& )
override;
91 void respondToCloseOutputFiles(FileBlock
const& )
override;
93 void endJob()
override;
95 void write(EventPrincipal& )
override;
97 void writeRun(RunPrincipal& )
override;
99 void writeSubRun(SubRunPrincipal& )
override;
105 TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::EventReporterOutput(ParameterSet const& ps)";
110 TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::~EventReporterOutput()";
113 void art::EventReporterOutput::openFile(FileBlock
const& )
115 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::openFile(const FileBlock&)";
118 void art::EventReporterOutput::closeFile() { TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::closeFile()"; }
120 void art::EventReporterOutput::respondToCloseInputFile(FileBlock
const& )
122 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
125 void art::EventReporterOutput::respondToCloseOutputFiles(FileBlock
const& )
127 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
130 void art::EventReporterOutput::endJob() { TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::endJob()"; }
132 void art::EventReporterOutput::write(EventPrincipal& ep)
134 TLOG(TLVL_DEBUG) <<
" Begin: EventReporterOutput::write(const EventPrincipal& ep)";
136 using RawEvent = artdaq::Fragments;
138 using RawEvents = std::vector<RawEvent>;
139 using RawEventHandle = art::Handle<RawEvent>;
140 using RawEventHandles = std::vector<RawEventHandle>;
142 auto result_handles = std::vector<art::GroupQueryResult>();
144 auto const& wrapped = art::WrappedTypeID::make<RawEvent>();
145 ModuleContext
const mc{moduleDescription()};
146 ProcessTag
const processTag{
"", mc.moduleDescription().processName()};
148 result_handles = ep.getMany(mc, wrapped, art::MatchAllSelector{}, processTag);
150 for (
auto const& result_handle : result_handles)
152 auto const raw_event_handle = RawEventHandle(result_handle);
154 if (!raw_event_handle.isValid())
159 for (
auto const& fragment : *raw_event_handle)
161 TLOG(TLVL_DEBUG) <<
"EventReporterOutput::write: Event sequenceID=" << fragment.sequenceID()
162 <<
", fragmentID=" << fragment.fragmentID();
167 void art::EventReporterOutput::writeRun(RunPrincipal& )
169 TLOG(TLVL_DEBUG) <<
" EventReporterOutput::writeRun(const RunPrincipal& rp)";
172 void art::EventReporterOutput::writeSubRun(SubRunPrincipal& )
174 TLOG(TLVL_DEBUG) <<
" EventReporterOutput:: writeSubRun(const SubRunPrincipal& srp)";
An art::OutputModule which does nothing, but reports seen events and their fragments. This module is designed for debugging purposes, where writing events into ROOT files or sending events down stream is not necessary.
EventReporterOutput(fhicl::ParameterSet const &ps)
EventReporterOutput Constructor.
~EventReporterOutput() override
EventReporterOutput Destructor.