1 #ifndef ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
2 #define ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
4 #include "TRACE/tracemf.h"
5 #define TRACE_NAME "BuildInfo"
7 #include "art/Framework/Core/EDProducer.h"
8 #include "art/Framework/Core/ModuleMacros.h"
9 #include "art/Framework/Principal/Run.h"
10 #include "artdaq-core/Data/PackageBuildInfo.hh"
11 #include "fhiclcpp/ParameterSet.h"
36 explicit BuildInfo(fhicl::ParameterSet
const& p);
58 void produce(art::Event& e)
final override;
66 std::unique_ptr<std::vector<PackageBuildInfo>> packages_;
67 std::string instanceName_;
69 template<
typename... Args>
72 template<
typename Arg>
73 struct fill_packages<Arg>
75 static void doit(std::vector<PackageBuildInfo>& packages)
77 packages.emplace_back(Arg::getPackageBuildInfo());
81 template<
typename Arg,
typename... Args>
82 struct fill_packages<Arg, Args...>
84 static void doit(std::vector<PackageBuildInfo>& packages)
86 packages.emplace_back(Arg::getPackageBuildInfo());
87 fill_packages<Args...>::doit(packages);
95 , packages_(new std::vector<PackageBuildInfo>())
96 , instanceName_(ps.get<std::string>(
"instance_name", *
instanceName))
98 fill_packages<Pkgs...>::doit(*packages_);
100 produces<std::vector<PackageBuildInfo>, art::InRun>(instanceName_);
117 auto packages_deep_copy_ptr = std::make_unique<std::vector<PackageBuildInfo>>(*packages_);
119 TLOG(TLVL_INFO,
"BuildInfo") <<
"Placing BuildInfo with instance name \"" << instanceName_ <<
"\"";
120 for (
auto& pbi : *packages_)
122 TLOG(TLVL_DEBUG) <<
"Package " << pbi.getPackageName() <<
": version " << pbi.getPackageVersion() <<
" built at " << pbi.getBuildTimestamp();
124 r.put(std::move(packages_deep_copy_ptr), instanceName_, art::fullRun());
134 #endif // ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
void produce(art::Event &e) finaloverride
Perform actions for each event.
virtual ~BuildInfo()=default
Default Destructor.
void beginRun(art::Run &r) override
Perform actions at the beginning of the Run.
BuildInfo(fhicl::ParameterSet const &p)
BuildInfo module Constructor.
BuildInfo is an art::EDProducer which saves information about package builds to the data file...
static std::string instanceName
Name of this BuildInfo instance.