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