LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
Analyzer.cc
Go to the documentation of this file.
2 // vim: set sw=2 expandtab :
3 
13 
14 #include <ostream>
15 
16 using namespace std;
17 
18 namespace art::detail {
19 
20  Analyzer::~Analyzer() noexcept = default;
21 
22  Analyzer::Analyzer(fhicl::ParameterSet const& pset) : Observer{pset} {}
23 
24  void
25  Analyzer::doBeginJob(SharedResources const& resources)
26  {
27  setupQueues(resources);
28  ProcessingFrame const frame{ScheduleID{}};
29  beginJobWithFrame(frame);
30  }
31 
32  void
33  Analyzer::doEndJob()
34  {
35  ProcessingFrame const frame{ScheduleID{}};
36  endJobWithFrame(frame);
37  }
38 
39  void
40  Analyzer::doRespondToOpenInputFile(FileBlock const& fb)
41  {
42  ProcessingFrame const frame{ScheduleID{}};
43  respondToOpenInputFileWithFrame(fb, frame);
44  }
45 
46  void
47  Analyzer::doRespondToCloseInputFile(FileBlock const& fb)
48  {
49  ProcessingFrame const frame{ScheduleID{}};
50  respondToCloseInputFileWithFrame(fb, frame);
51  }
52 
53  void
54  Analyzer::doRespondToOpenOutputFiles(FileBlock const& fb)
55  {
56  ProcessingFrame const frame{ScheduleID{}};
57  respondToOpenOutputFilesWithFrame(fb, frame);
58  }
59 
60  void
61  Analyzer::doRespondToCloseOutputFiles(FileBlock const& fb)
62  {
63  ProcessingFrame const frame{ScheduleID{}};
64  respondToCloseOutputFilesWithFrame(fb, frame);
65  }
66 
67  bool
68  Analyzer::doBeginRun(RunPrincipal& rp, ModuleContext const& mc)
69  {
70  ProcessingFrame const frame{mc.scheduleID()};
71  beginRunWithFrame(std::as_const(rp).makeRun(mc), frame);
72  return true;
73  }
74 
75  bool
76  Analyzer::doEndRun(RunPrincipal& rp, ModuleContext const& mc)
77  {
78  ProcessingFrame const frame{mc.scheduleID()};
79  endRunWithFrame(std::as_const(rp).makeRun(mc), frame);
80  return true;
81  }
82 
83  bool
84  Analyzer::doBeginSubRun(SubRunPrincipal& srp, ModuleContext const& mc)
85  {
86  ProcessingFrame const frame{mc.scheduleID()};
87  beginSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
88  return true;
89  }
90 
91  bool
92  Analyzer::doEndSubRun(SubRunPrincipal& srp, ModuleContext const& mc)
93  {
94  ProcessingFrame const frame{mc.scheduleID()};
95  endSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
96  return true;
97  }
98 
99  bool
100  Analyzer::doEvent(EventPrincipal& ep,
101  ModuleContext const& mc,
102  std::atomic<std::size_t>& counts_run,
103  std::atomic<std::size_t>& counts_passed,
104  std::atomic<std::size_t>& /*counts_failed*/)
105  {
106  auto const e = std::as_const(ep).makeEvent(mc);
107  if (wantEvent(mc.scheduleID(), e)) {
108  ++counts_run;
109  ProcessingFrame const frame{mc.scheduleID()};
110  analyzeWithFrame(e, frame);
111  ++counts_passed;
112  }
113  return true;
114  }
115 
116 } // namespace art::detail
auto scheduleID() const
Definition: ModuleContext.h:28
STL namespace.
parameter set interface
TFile fb("Li6.root")
Float_t e
Definition: plot.C:35