artdaq_demo  v3_06_01
EventReporterOutput_module.cc
1 #define TRACE_NAME "EventReporterOutput"
2 
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 #if ART_HEX_VERSION < 0x20900
11 #include "art/Persistency/Provenance/BranchIDListRegistry.h"
12 #include "canvas/Persistency/Provenance/BranchIDList.h"
13 #endif
14 #include "art/Persistency/Provenance/ProcessHistoryRegistry.h"
15 #if ART_HEX_VERSION < 0x30000
16 #include "art/Persistency/Provenance/ProductMetaData.h"
17 #endif
18 
19 #include <algorithm>
20 #include <iterator>
21 #include "canvas/Persistency/Provenance/BranchDescription.h"
22 #include "canvas/Persistency/Provenance/BranchKey.h"
23 #include "canvas/Persistency/Provenance/History.h"
24 #include "canvas/Persistency/Provenance/ParentageRegistry.h"
25 #include "canvas/Persistency/Provenance/ProcessConfiguration.h"
26 #include "canvas/Persistency/Provenance/ProcessConfigurationID.h"
27 #include "canvas/Persistency/Provenance/ProcessHistoryID.h"
28 #include "canvas/Persistency/Provenance/ProductList.h"
29 #include "canvas/Persistency/Provenance/ProductProvenance.h"
30 #include "canvas/Persistency/Provenance/RunAuxiliary.h"
31 #include "canvas/Persistency/Provenance/SubRunAuxiliary.h"
32 #include "canvas/Utilities/DebugMacros.h"
33 #include "canvas/Utilities/Exception.h"
34 #include "cetlib/column_width.h"
35 #include "cetlib/lpad.h"
36 #include "cetlib/rpad.h"
37 #include "fhiclcpp/ParameterSet.h"
38 #include "fhiclcpp/ParameterSetID.h"
39 #include "fhiclcpp/ParameterSetRegistry.h"
40 
41 #include "artdaq-core/Data/detail/ParentageMap.hh"
42 #include "artdaq/DAQdata/Globals.hh"
43 #include "artdaq/DAQdata/NetMonHeader.hh"
44 #include "artdaq/TransferPlugins/MakeTransferPlugin.hh"
45 #include "artdaq/TransferPlugins/TransferInterface.hh"
46 
47 #include <iomanip>
48 #include <iostream>
49 #include <sstream>
50 #include <string>
51 #include <vector>
52 
53 #include <unistd.h>
54 
55 #include <TClass.h>
56 #include <TMessage.h>
57 
58 namespace art {
59 class EventReporterOutput;
60 }
61 
67 class art::EventReporterOutput : public OutputModule
68 {
69 public:
77  explicit EventReporterOutput( fhicl::ParameterSet const& ps );
78 
83 
84 private:
85  virtual void openFile( FileBlock const& );
86 
87  virtual void closeFile();
88 
89  virtual void respondToCloseInputFile( FileBlock const& );
90 
91  virtual void respondToCloseOutputFiles( FileBlock const& );
92 
93  virtual void endJob();
94 
95  virtual void write( EventPrincipal& );
96 
97  virtual void writeRun( RunPrincipal& );
98 
99  virtual void writeSubRun( SubRunPrincipal& );
100 
101 private:
102 };
103 
104 art::EventReporterOutput::EventReporterOutput( fhicl::ParameterSet const& ps ) : OutputModule( ps )
105 {
106  TLOG( TLVL_DEBUG ) << "Begin: EventReporterOutput::EventReporterOutput(ParameterSet const& ps)";
107 }
108 
110 {
111  TLOG( TLVL_DEBUG ) << "Begin: EventReporterOutput::~EventReporterOutput()";
112 }
113 
114 void art::EventReporterOutput::openFile( FileBlock const& )
115 {
116  TLOG( TLVL_DEBUG ) << "Begin/End: EventReporterOutput::openFile(const FileBlock&)";
117 }
118 
119 void art::EventReporterOutput::closeFile() { TLOG( TLVL_DEBUG ) << "Begin/End: EventReporterOutput::closeFile()"; }
120 
121 void art::EventReporterOutput::respondToCloseInputFile( FileBlock const& )
122 {
123  TLOG( TLVL_DEBUG ) << "Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
124 }
125 
126 void art::EventReporterOutput::respondToCloseOutputFiles( FileBlock const& )
127 {
128  TLOG( TLVL_DEBUG ) << "Begin/End: EventReporterOutput::respondToCloseOutputFiles(FileBlock const&)";
129 }
130 
131 void art::EventReporterOutput::endJob() { TLOG( TLVL_DEBUG ) << "Begin: EventReporterOutput::endJob()"; }
132 
133 void art::EventReporterOutput::write( EventPrincipal& ep )
134 {
135  TLOG( TLVL_DEBUG ) << " Begin: EventReporterOutput::write(const EventPrincipal& ep)";
136 
137  using RawEvent = artdaq::Fragments;
138  ;
139  using RawEvents = std::vector<RawEvent>;
140  using RawEventHandle = art::Handle<RawEvent>;
141  using RawEventHandles = std::vector<RawEventHandle>;
142 
143  auto result_handles = std::vector<art::GroupQueryResult>();
144 
145 #if ART_HEX_VERSION < 0x30000
146  auto const& wrapped = art::WrappedTypeID::make<RawEvent>();
147  result_handles = ep.getMany( wrapped, art::MatchAllSelector{} );
148 #else
149  auto const& wrapped = art::WrappedTypeID::make<RawEvent>();
150  ModuleContext const mc{moduleDescription()};
151  ProcessTag const processTag{"", mc.moduleDescription().processName()};
152 
153  result_handles = ep.getMany( mc, wrapped, art::MatchAllSelector{}, processTag );
154 #endif
155 
156  for ( auto const& result_handle : result_handles )
157  {
158  auto const raw_event_handle = RawEventHandle( result_handle );
159 
160  if ( !raw_event_handle.isValid() ) continue;
161 
162  for ( auto const& fragment : *raw_event_handle )
163  {
164  TLOG( TLVL_DEBUG ) << "EventReporterOutput::write: Event sequenceID=" << fragment.sequenceID()
165  << ", fragmentID=" << fragment.fragmentID();
166  }
167  }
168 
169  return;
170 }
171 
172 void art::EventReporterOutput::writeRun( RunPrincipal& )
173 {
174  TLOG( TLVL_DEBUG ) << " EventReporterOutput::writeRun(const RunPrincipal& rp)";
175 }
176 
177 void art::EventReporterOutput::writeSubRun( SubRunPrincipal& )
178 {
179  TLOG( TLVL_DEBUG ) << " EventReporterOutput:: writeSubRun(const SubRunPrincipal& srp)";
180 }
181 
182 DEFINE_ART_MODULE( art::EventReporterOutput )
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()
EventReporterOutput Destructor.