artdaq  v3_12_02
PrintBuildInfo_module.cc
1 // Class: PrintBuildInfo
3 // Module Type: analyzer
4 // File: PrintBuildInfo_module.cc
5 //
6 // Generated at Fri Aug 15 21:05:07 2014 by lbnedaq using artmod
7 // from cetpkgsupport v1_05_02.
9 
10 #include "TRACE/tracemf.h"
11 
12 #include "artdaq-core/Data/PackageBuildInfo.hh"
13 
14 #include "art/Framework/Core/EDAnalyzer.h"
15 #include "art/Framework/Core/ModuleMacros.h"
16 #include "art/Framework/Principal/Event.h"
17 #include "art/Framework/Principal/Handle.h"
18 #include "art/Framework/Principal/Run.h"
19 #include "art/Framework/Principal/SubRun.h"
20 #include "canvas/Utilities/InputTag.h"
21 #include "fhiclcpp/ParameterSet.h"
22 
23 #include <iostream>
24 
25 #define TRACE_NAME "PrintBuildInfo"
26 
27 namespace artdaq {
28 class PrintBuildInfo;
29 }
30 
34 class artdaq::PrintBuildInfo : public art::EDAnalyzer
35 {
36 public:
49  explicit PrintBuildInfo(fhicl::ParameterSet const& p);
50 
54  ~PrintBuildInfo() override = default;
55 
59  void analyze(art::Event const& /*unused*/) override {}
60 
68  void beginRun(art::Run const& run) override;
69 
70 private:
71  PrintBuildInfo(PrintBuildInfo const&) = delete;
72  PrintBuildInfo(PrintBuildInfo&&) = delete;
73  PrintBuildInfo& operator=(PrintBuildInfo const&) = delete;
74  PrintBuildInfo& operator=(PrintBuildInfo&&) = delete;
75 
76  std::string buildinfo_module_label_;
77  std::string buildinfo_instance_label_;
78 };
79 
80 artdaq::PrintBuildInfo::PrintBuildInfo(fhicl::ParameterSet const& pset)
81  : EDAnalyzer(pset)
82  , buildinfo_module_label_(pset.get<std::string>("buildinfo_module_label"))
83  , buildinfo_instance_label_(pset.get<std::string>("buildinfo_instance_label")) {}
84 
85 void artdaq::PrintBuildInfo::beginRun(art::Run const& run)
86 {
87  art::Handle<std::vector<artdaq::PackageBuildInfo>> raw;
88 
89  TLOG(TLVL_INFO) << "Calling getByLabel: module label: " << buildinfo_module_label_ << ", instance label: " << buildinfo_instance_label_;
90  run.getByLabel(buildinfo_module_label_, buildinfo_instance_label_, raw);
91 
92  if (raw.isValid())
93  {
94  std::cout << "--------------------------------------------------------------" << std::endl;
95  std::cout.width(20);
96  std::cout << std::left << "Package"
97  << "|";
98  std::cout.width(20);
99  std::cout << std::left << "Version"
100  << "|";
101  std::cout.width(20);
102  std::cout << std::left << "Timestamp" << std::endl;
103 
104  for (const auto& pkg : *raw)
105  {
106  std::cout.width(20);
107  std::cout << std::left << pkg.getPackageName() << "|";
108  std::cout.width(20);
109  std::cout << std::left << pkg.getPackageVersion() << "|";
110  std::cout.width(20);
111  std::cout << std::left << pkg.getBuildTimestamp() << std::endl;
112  }
113 
114  std::cout << "--------------------------------------------------------------" << std::endl;
115  }
116  else
117  {
118  std::cerr << "\n"
119  << std::endl;
120  std::cerr << "Warning in artdaq::PrintBuildInfo module: Run " << run.run() << " appears not to have found product instance \"" << buildinfo_instance_label_ << "\" of module \"" << buildinfo_module_label_ << "\"" << std::endl;
121  std::cerr << "\n"
122  << std::endl;
123  }
124 }
125 
126 DEFINE_ART_MODULE(artdaq::PrintBuildInfo) // NOLINT(performance-unnecessary-value-param)
void beginRun(art::Run const &run) override
Perform actions at the beginning of the run.
An art::EDAnalyzer which prints any artdaq::BuildInfo objects stored in the run.
void analyze(art::Event const &) override
Called for each event. Required overload for art::EDAnalyzer, No-Op here.
PrintBuildInfo(fhicl::ParameterSet const &p)
PrintBuildInfo Constructor.
~PrintBuildInfo() override=default
Default virtual Destructor.