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/ModuleContext.h"
11 #include "art/Persistency/Provenance/ProcessHistoryRegistry.h"
12 #include "canvas/Persistency/Common/WrappedTypeID.h"
13 #include "canvas/Persistency/Common/Wrapper.h"
14 #include "canvas/Persistency/Provenance/BranchDescription.h"
15 #include "canvas/Persistency/Provenance/BranchKey.h"
16 #include "canvas/Persistency/Provenance/ParentageRegistry.h"
17 #include "canvas/Persistency/Provenance/ProcessConfiguration.h"
18 #include "canvas/Persistency/Provenance/ProcessConfigurationID.h"
19 #include "canvas/Persistency/Provenance/ProcessHistoryID.h"
20 #include "canvas/Persistency/Provenance/ProductList.h"
21 #include "canvas/Persistency/Provenance/ProductProvenance.h"
22 #include "canvas/Persistency/Provenance/RunAuxiliary.h"
23 #include "canvas/Persistency/Provenance/SubRunAuxiliary.h"
24 #include "canvas/Utilities/DebugMacros.h"
25 #include "canvas/Utilities/Exception.h"
26 #include "cetlib/column_width.h"
27 #include "cetlib/lpad.h"
28 #include "cetlib/rpad.h"
29 #include "fhiclcpp/ParameterSet.h"
30 #include "fhiclcpp/ParameterSetID.h"
31 #include "fhiclcpp/ParameterSetRegistry.h"
33 #include "artdaq-core/Data/detail/ParentageMap.hh"
34 #include "artdaq/DAQdata/Globals.hh"
35 #include "artdaq/DAQdata/NetMonHeader.hh"
36 #include "artdaq/TransferPlugins/MakeTransferPlugin.hh"
37 #include "artdaq/TransferPlugins/TransferInterface.hh"
52 class EventReporterOutput;
83 void openFile(FileBlock
const& )
override;
85 virtual void closeFile();
87 void respondToCloseInputFile(FileBlock
const& )
override;
89 void respondToCloseOutputFiles(FileBlock
const& )
override;
91 void endJob()
override;
93 void write(EventPrincipal& )
override;
95 void writeRun(RunPrincipal& )
override;
97 void writeSubRun(SubRunPrincipal& )
override;
103 TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::EventReporterOutput(ParameterSet const& ps)";
108 TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::~EventReporterOutput()";
111 void art::EventReporterOutput::openFile(FileBlock
const& )
113 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::openFile(const FileBlock&)";
116 void art::EventReporterOutput::closeFile() { TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::closeFile()"; }
118 void art::EventReporterOutput::respondToCloseInputFile(FileBlock
const& )
120 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
123 void art::EventReporterOutput::respondToCloseOutputFiles(FileBlock
const& )
125 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
128 void art::EventReporterOutput::endJob() { TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::endJob()"; }
130 void art::EventReporterOutput::write(EventPrincipal& ep)
132 TLOG(TLVL_DEBUG) <<
" Begin: EventReporterOutput::write(const EventPrincipal& ep)";
134 using RawEvent = artdaq::Fragments;
136 using RawEvents = std::vector<RawEvent>;
137 using RawEventHandle = art::Handle<RawEvent>;
138 using RawEventHandles = std::vector<RawEventHandle>;
140 auto result_handles = std::vector<art::GroupQueryResult>();
142 auto const& wrapped = art::WrappedTypeID::make<RawEvent>();
143 ModuleContext
const mc{moduleDescription()};
144 ProcessTag
const processTag{
"", mc.moduleDescription().processName()};
146 result_handles = ep.getMany(mc, wrapped, art::MatchAllSelector{}, processTag);
148 for (
auto const& result_handle : result_handles)
150 auto const raw_event_handle = RawEventHandle(result_handle);
152 if (!raw_event_handle.isValid())
157 for (
auto const& fragment : *raw_event_handle)
159 TLOG(TLVL_DEBUG) <<
"EventReporterOutput::write: Event sequenceID=" << fragment.sequenceID()
160 <<
", fragmentID=" << fragment.fragmentID();
165 void art::EventReporterOutput::writeRun(RunPrincipal& )
167 TLOG(TLVL_DEBUG) <<
" EventReporterOutput::writeRun(const RunPrincipal& rp)";
170 void art::EventReporterOutput::writeSubRun(SubRunPrincipal& )
172 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.