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/Wrapper.h"
13 #include "canvas/Persistency/Provenance/BranchDescription.h"
14 #include "canvas/Persistency/Provenance/BranchKey.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 "canvas/Persistency/Common/WrappedTypeID.h"
30 #include "cetlib/column_width.h"
31 #include "cetlib/lpad.h"
32 #include "cetlib/rpad.h"
33 #include "fhiclcpp/ParameterSet.h"
34 #include "fhiclcpp/ParameterSetID.h"
35 #include "fhiclcpp/ParameterSetRegistry.h"
37 #include "artdaq-core/Data/detail/ParentageMap.hh"
38 #include "artdaq/DAQdata/Globals.hh"
39 #include "artdaq/DAQdata/NetMonHeader.hh"
40 #include "artdaq/TransferPlugins/MakeTransferPlugin.hh"
41 #include "artdaq/TransferPlugins/TransferInterface.hh"
56 class EventReporterOutput;
87 void openFile(FileBlock
const& )
override;
89 virtual void closeFile();
91 void respondToCloseInputFile(FileBlock
const& )
override;
93 void respondToCloseOutputFiles(FileBlock
const& )
override;
95 void endJob()
override;
97 void write(EventPrincipal& )
override;
99 void writeRun(RunPrincipal& )
override;
101 void writeSubRun(SubRunPrincipal& )
override;
107 TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::EventReporterOutput(ParameterSet const& ps)";
112 TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::~EventReporterOutput()";
115 void art::EventReporterOutput::openFile(FileBlock
const& )
117 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::openFile(const FileBlock&)";
120 void art::EventReporterOutput::closeFile() { TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::closeFile()"; }
122 void art::EventReporterOutput::respondToCloseInputFile(FileBlock
const& )
124 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
127 void art::EventReporterOutput::respondToCloseOutputFiles(FileBlock
const& )
129 TLOG(TLVL_DEBUG) <<
"Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
132 void art::EventReporterOutput::endJob() { TLOG(TLVL_DEBUG) <<
"Begin: EventReporterOutput::endJob()"; }
134 void art::EventReporterOutput::write(EventPrincipal& ep)
136 TLOG(TLVL_DEBUG) <<
" Begin: EventReporterOutput::write(const EventPrincipal& ep)";
138 using RawEvent = artdaq::Fragments;
140 using RawEvents = std::vector<RawEvent>;
141 using RawEventHandle = art::Handle<RawEvent>;
142 using RawEventHandles = std::vector<RawEventHandle>;
144 auto result_handles = std::vector<art::GroupQueryResult>();
146 auto const& wrapped = art::WrappedTypeID::make<RawEvent>();
147 ModuleContext
const mc{moduleDescription()};
148 ProcessTag
const processTag{
"", mc.moduleDescription().processName()};
150 result_handles = ep.getMany(mc, wrapped, art::MatchAllSelector{}, processTag);
152 for (
auto const& result_handle : result_handles)
154 auto const raw_event_handle = RawEventHandle(result_handle);
156 if (!raw_event_handle.isValid())
161 for (
auto const& fragment : *raw_event_handle)
163 TLOG(TLVL_DEBUG) <<
"EventReporterOutput::write: Event sequenceID=" << fragment.sequenceID()
164 <<
", fragmentID=" << fragment.fragmentID();
169 void art::EventReporterOutput::writeRun(RunPrincipal& )
171 TLOG(TLVL_DEBUG) <<
" EventReporterOutput::writeRun(const RunPrincipal& rp)";
174 void art::EventReporterOutput::writeSubRun(SubRunPrincipal& )
176 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.