00001
00002
00003
00004
00005
00006
00007
00009
00010
00011
00012 #include "art/Framework/Core/EDAnalyzer.h"
00013 #include "art/Framework/Core/ModuleMacros.h"
00014 #include "art/Framework/Principal/Event.h"
00015 #include "art/Framework/Principal/Handle.h"
00016 #include "art/Framework/Principal/Run.h"
00017 #include "art/Framework/Principal/SubRun.h"
00018 #ifdef HAVE_CANVAS
00019 #include "canvas/Utilities/InputTag.h"
00020 #else
00021 #include "art/Utilities/InputTag.h"
00022 #endif
00023 #include "fhiclcpp/ParameterSet.h"
00024
00025 #include "artdaq-core/Data/PackageBuildInfo.hh"
00026
00027 #include <iostream>
00028
00029 namespace artdaq {
00030 class PrintBuildInfo;
00031 }
00032
00033 class artdaq::PrintBuildInfo : public art::EDAnalyzer {
00034 public:
00035 explicit PrintBuildInfo(fhicl::ParameterSet const & p);
00036 virtual ~PrintBuildInfo();
00037
00038 void analyze(art::Event const & ) override {
00039
00040 }
00041
00042 virtual void beginRun(art::Run const& r);
00043
00044 private:
00045
00046 std::string buildinfo_module_label_;
00047 std::string buildinfo_instance_label_;
00048
00049 };
00050
00051
00052 artdaq::PrintBuildInfo::PrintBuildInfo(fhicl::ParameterSet const & pset)
00053 :
00054 EDAnalyzer(pset),
00055 buildinfo_module_label_(pset.get<std::string>("buildinfo_module_label")),
00056 buildinfo_instance_label_(pset.get<std::string>("buildinfo_instance_label"))
00057 {}
00058
00059 artdaq::PrintBuildInfo::~PrintBuildInfo()
00060 {
00061
00062 }
00063
00064
00065 void artdaq::PrintBuildInfo::beginRun(art::Run const& run)
00066 {
00067
00068 art::Handle<std::vector<artdaq::PackageBuildInfo> > raw;
00069
00070 run.getByLabel(buildinfo_module_label_, buildinfo_instance_label_, raw);
00071
00072 if (raw.isValid()) {
00073
00074 std::cout << "--------------------------------------------------------------" << std::endl;
00075 std::cout.width(20);
00076 std::cout << std::left << "Package" << "|";
00077 std::cout.width(20);
00078 std::cout << std::left << "Version" << "|";
00079 std::cout.width(20);
00080 std::cout << std::left << "Timestamp" << std::endl;
00081
00082 for (auto pkg : *raw ) {
00083 std::cout.width(20);
00084 std::cout << std::left << pkg.getPackageName() << "|";
00085 std::cout.width(20);
00086 std::cout << std::left << pkg.getPackageVersion() << "|";
00087 std::cout.width(20);
00088 std::cout << std::left << pkg.getBuildTimestamp() << std::endl;
00089 }
00090
00091 std::cout << "--------------------------------------------------------------" << std::endl;
00092
00093 } else {
00094
00095 std::cerr << "\n" << std::endl;
00096 std::cerr << "Warning in artdaq::PrintBuildInfo module: Run " << run.run() <<
00097 " appears not to have found product instance \"" << buildinfo_instance_label_ <<
00098 "\" of module \"" << buildinfo_module_label_ << "\"" << std::endl;
00099 std::cerr << "\n" << std::endl;
00100
00101 }
00102
00103 }
00104
00105 DEFINE_ART_MODULE(artdaq::PrintBuildInfo)