1 #ifndef ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
2 #define ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
4 #include "art/Framework/Core/EDProducer.h"
5 #include "art/Framework/Core/ModuleMacros.h"
6 #include "art/Framework/Principal/Event.h"
7 #include "art/Framework/Principal/Run.h"
8 #include "artdaq-core/Data/PackageBuildInfo.hh"
9 #include "fhiclcpp/ParameterSet.h"
34 explicit BuildInfo(fhicl::ParameterSet
const& p);
56 void produce(art::Event& e)
override;
64 std::unique_ptr<std::vector<PackageBuildInfo>> packages_;
65 std::string instanceName_;
67 template<
typename... Args>
70 template<
typename Arg>
71 struct fill_packages<Arg>
73 static void doit(std::vector<PackageBuildInfo>& packages)
75 packages.emplace_back(Arg::getPackageBuildInfo());
79 template<
typename Arg,
typename... Args>
80 struct fill_packages<Arg, Args...>
82 static void doit(std::vector<PackageBuildInfo>& packages)
84 packages.emplace_back(Arg::getPackageBuildInfo());
85 fill_packages<Args...>::doit(packages);
93 #if ART_HEX_VERSION >= 0x30200
97 packages_(new std::vector<PackageBuildInfo>())
98 , instanceName_(ps.get<std::string>(
"instance_name", *
instanceName))
100 fill_packages<Pkgs...>::doit(*packages_);
102 produces<std::vector<PackageBuildInfo>, art::InRun>(instanceName_);
119 auto packages_deep_copy_ptr = std::make_unique<std::vector<PackageBuildInfo>>(*packages_);
121 r.put(std::move(packages_deep_copy_ptr), instanceName_);
131 #endif // ARTDAQ_ARTDAQ_ARTMODULES_BUILDINFO_MODULE_HH_
virtual ~BuildInfo()=default
Default Destructor.
void produce(art::Event &e) override
Perform actions for each event.
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.