artdaq_core  v1_05_07
 All Classes Namespaces Functions
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 
12 #include "art/Framework/Core/EDAnalyzer.h"
13 #include "art/Framework/Core/ModuleMacros.h"
14 #include "art/Framework/Principal/Event.h"
15 #include "art/Framework/Principal/Handle.h"
16 #include "art/Framework/Principal/Run.h"
17 #include "art/Framework/Principal/SubRun.h"
18 #ifdef HAVE_CANVAS
19 #include "canvas/Utilities/InputTag.h"
20 #else
21 #include "art/Utilities/InputTag.h"
22 #endif
23 #include "fhiclcpp/ParameterSet.h"
24 
25 #include "artdaq-core/Data/PackageBuildInfo.hh"
26 
27 #include <iostream>
28 
29 namespace artdaq {
30  class PrintBuildInfo;
31 }
32 
33 class artdaq::PrintBuildInfo : public art::EDAnalyzer {
34 public:
35  explicit PrintBuildInfo(fhicl::ParameterSet const & p);
36  virtual ~PrintBuildInfo();
37 
38  void analyze(art::Event const & ) override {
39 
40  }
41 
42  virtual void beginRun(art::Run const& r);
43 
44 private:
45 
46  std::string buildinfo_module_label_;
47  std::string buildinfo_instance_label_;
48 
49 };
50 
51 
52 artdaq::PrintBuildInfo::PrintBuildInfo(fhicl::ParameterSet const & pset)
53  :
54  EDAnalyzer(pset),
55  buildinfo_module_label_(pset.get<std::string>("buildinfo_module_label")),
56  buildinfo_instance_label_(pset.get<std::string>("buildinfo_instance_label"))
57 {}
58 
59 artdaq::PrintBuildInfo::~PrintBuildInfo()
60 {
61  // Clean up dynamic memory and other resources here.
62 }
63 
64 
65 void artdaq::PrintBuildInfo::beginRun(art::Run const& run)
66 {
67 
68  art::Handle<std::vector<artdaq::PackageBuildInfo> > raw;
69 
70  run.getByLabel(buildinfo_module_label_, buildinfo_instance_label_, raw);
71 
72  if (raw.isValid()) {
73 
74  std::cout << "--------------------------------------------------------------" << std::endl;
75  std::cout.width(20);
76  std::cout << std::left << "Package" << "|";
77  std::cout.width(20);
78  std::cout << std::left << "Version" << "|";
79  std::cout.width(20);
80  std::cout << std::left << "Timestamp" << std::endl;
81 
82  for (auto pkg : *raw ) {
83  std::cout.width(20);
84  std::cout << std::left << pkg.getPackageName() << "|";
85  std::cout.width(20);
86  std::cout << std::left << pkg.getPackageVersion() << "|";
87  std::cout.width(20);
88  std::cout << std::left << pkg.getBuildTimestamp() << std::endl;
89  }
90 
91  std::cout << "--------------------------------------------------------------" << std::endl;
92 
93  } else {
94 
95  std::cerr << "\n" << std::endl;
96  std::cerr << "Warning in artdaq::PrintBuildInfo module: Run " << run.run() <<
97  " appears not to have found product instance \"" << buildinfo_instance_label_ <<
98  "\" of module \"" << buildinfo_module_label_ << "\"" << std::endl;
99  std::cerr << "\n" << std::endl;
100 
101  }
102 
103 }
104 
105 DEFINE_ART_MODULE(artdaq::PrintBuildInfo)