1 #ifndef art_Framework_Modules_detail_ProvenanceDumperImpl_h 2 #define art_Framework_Modules_detail_ProvenanceDumperImpl_h 26 template <
typename DETAIL>
30 bool const wantPresentOnly,
31 bool const resolveProducts,
32 bool const wantResolvedOnly)
49 template <
typename DETAIL>
55 for (
auto const& pr : p) {
56 Group const&
g = *pr.second;
59 if (!resolved_product) {
63 bool wantCallFunc =
true;
90 template <
typename R,
typename... ARGS>
103 template <
typename DETAIL,
typename Enable =
void>
106 template <
typename DETAIL>
118 template <
typename DETAIL,
typename Enable =
void>
121 template <
typename DETAIL>
125 &DETAIL::preProcessEvent>> {
129 detail.preProcessEvent();
134 template <
typename DETAIL,
typename Enable =
void>
137 template <
typename DETAIL>
141 &DETAIL::postProcessEvent>> {
145 detail.postProcessEvent();
150 template <
typename DETAIL,
typename Enable =
void>
153 template <
typename DETAIL>
157 &DETAIL::preProcessSubRun>> {
161 detail.preProcessSubRun();
166 template <
typename DETAIL,
typename Enable =
void>
169 template <
typename DETAIL>
173 &DETAIL::postProcessSubRun>> {
177 detail.postProcessSubRun();
182 template <
typename DETAIL,
typename Enable =
void>
185 template <
typename DETAIL>
192 detail.preProcessRun();
197 template <
typename DETAIL,
typename Enable =
void>
200 template <
typename DETAIL>
204 &DETAIL::postProcessRun>> {
208 detail.postProcessRun();
213 template <
typename DETAIL,
typename Enable =
void>
216 template <
typename DETAIL>
232 template <
typename DETAIL,
typename Enable =
void>
235 EventPrincipal const&)> {};
237 template <
typename DETAIL>
241 &DETAIL::processEventProvenance>> {
245 pp(p, &DETAIL::processEventProvenance);
250 template <
typename DETAIL,
typename Enable =
void>
253 SubRunPrincipal const&)> {};
255 template <
typename DETAIL>
259 &DETAIL::processSubRunProvenance>> {
263 pp(p, &DETAIL::processSubRunProvenance);
268 template <
typename DETAIL,
typename Enable =
void>
271 RunPrincipal const&)> {};
273 template <
typename DETAIL>
277 &DETAIL::processRunProvenance>> {
281 pp(p, &DETAIL::processRunProvenance);
287 template <
typename DETAIL>
295 : detail_{detail}, pp_{pp}
void operator()(art::Principal const &p, void(DETAIL::*func)(art::Provenance const &)) const
static constexpr double g
void writeRun(RunPrincipal &r)
static void invoke(PrincipalProcessor< DETAIL > const &pp, RunPrincipal const &p)
enable_if_same_t< FT, decltype(f), R > enable_if_function_exists_t
bool const wantPresentOnly_
bool const wantResolvedOnly_
static void invoke(PrincipalProcessor< DETAIL > const &pp, EventPrincipal const &p)
cet::exempt_ptr< ProductProvenance const > productProvenance() const
static void invoke(DETAIL &detail)
static void invoke(DETAIL &detail)
void writeSubRun(SubRunPrincipal &sr)
static void invoke(DETAIL &detail)
static void invoke(DETAIL &detail)
constexpr exempt_ptr< E > make_exempt_ptr(E *) noexcept
static void invoke(DETAIL &detail)
EDProduct const * anyProduct() const
static void invoke(PrincipalProcessor< DETAIL > const &pp, SubRunPrincipal const &p)
static void invoke(DETAIL &detail)
static void invoke(DETAIL &detail)
void write(EventPrincipal &e)
bool resolveProductIfAvailable(TypeID wanted_wrapper=TypeID{}) const
static void invoke(DETAIL &detail)
PrincipalProcessor(DETAIL &detail, bool const wantPresentOnly, bool const resolveProducts, bool const wantResolvedOnly)
bool const resolveProducts_
static constexpr double sr
ProvenanceDumperImpl(DETAIL &detail, PrincipalProcessor< DETAIL > &pp)
PrincipalProcessor< DETAIL > & pp_