artdaq  v3_11_01
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 "art/Framework/Core/EDAnalyzer.h"
11 #include "art/Framework/Core/ModuleMacros.h"
12 #include "art/Framework/Principal/Event.h"
13 #include "art/Framework/Principal/Handle.h"
14 #include "art/Framework/Principal/Run.h"
15 #include "art/Framework/Principal/SubRun.h"
16 #include "canvas/Utilities/InputTag.h"
17 #include "fhiclcpp/ParameterSet.h"
18 #include "tracemf.h"
19 
20 #include "artdaq-core/Data/PackageBuildInfo.hh"
21 
22 #include <iostream>
23 
24 #define TRACE_NAME "PrintBuildInfo"
25 
26 namespace artdaq {
27 class PrintBuildInfo;
28 }
29 
33 class artdaq::PrintBuildInfo : public art::EDAnalyzer
34 {
35 public:
48  explicit PrintBuildInfo(fhicl::ParameterSet const& p);
49 
53  ~PrintBuildInfo() override = default;
54 
58  void analyze(art::Event const& /*unused*/) override {}
59 
67  void beginRun(art::Run const& run) override;
68 
69 private:
70  PrintBuildInfo(PrintBuildInfo const&) = delete;
71  PrintBuildInfo(PrintBuildInfo&&) = delete;
72  PrintBuildInfo& operator=(PrintBuildInfo const&) = delete;
73  PrintBuildInfo& operator=(PrintBuildInfo&&) = delete;
74 
75  std::string buildinfo_module_label_;
76  std::string buildinfo_instance_label_;
77 };
78 
79 artdaq::PrintBuildInfo::PrintBuildInfo(fhicl::ParameterSet const& pset)
80  : EDAnalyzer(pset)
81  , buildinfo_module_label_(pset.get<std::string>("buildinfo_module_label"))
82  , buildinfo_instance_label_(pset.get<std::string>("buildinfo_instance_label")) {}
83 
84 void artdaq::PrintBuildInfo::beginRun(art::Run const& run)
85 {
86  art::Handle<std::vector<artdaq::PackageBuildInfo>> raw;
87 
88  TLOG(TLVL_INFO) << "Calling getByLabel: module label: " << buildinfo_module_label_ << ", instance label: " << buildinfo_instance_label_;
89  run.getByLabel(buildinfo_module_label_, buildinfo_instance_label_, raw);
90 
91  if (raw.isValid())
92  {
93  std::cout << "--------------------------------------------------------------" << std::endl;
94  std::cout.width(20);
95  std::cout << std::left << "Package"
96  << "|";
97  std::cout.width(20);
98  std::cout << std::left << "Version"
99  << "|";
100  std::cout.width(20);
101  std::cout << std::left << "Timestamp" << std::endl;
102 
103  for (const auto& pkg : *raw)
104  {
105  std::cout.width(20);
106  std::cout << std::left << pkg.getPackageName() << "|";
107  std::cout.width(20);
108  std::cout << std::left << pkg.getPackageVersion() << "|";
109  std::cout.width(20);
110  std::cout << std::left << pkg.getBuildTimestamp() << std::endl;
111  }
112 
113  std::cout << "--------------------------------------------------------------" << std::endl;
114  }
115  else
116  {
117  std::cerr << "\n"
118  << std::endl;
119  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;
120  std::cerr << "\n"
121  << std::endl;
122  }
123 }
124 
125 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.