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