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