11 #ifndef LARDATA_RECOBASEPROXY_PROXYBASE_WITHPROXYASAUXSTRUCTBASE_H
12 #define LARDATA_RECOBASEPROXY_PROXYBASE_WITHPROXYASAUXSTRUCTBASE_H
18 #include "canvas/Utilities/InputTag.h"
23 #include <type_traits>
56 typename AuxTag = AuxProxy
62 <std::decay_t<std::tuple_element_t<0U, ArgTuple>>, art::InputTag>(),
63 "The first argument of WithProxyAsAuxStructBase must be art::InputTag."
67 template <
typename CollProxy>
68 using main_t =
typename CollProxy::main_element_t;
77 template <
typename CollProxy>
89 <
typename CollProxy,
typename Event,
typename Handle,
typename MainArgs>
91 (Event
const& event, Handle&& mainHandle, MainArgs
const& mainArgs)
93 return createAuxProxyImpl<CollProxy>(
94 event, std::forward<Handle>(mainHandle), mainArgs,
95 std::make_index_sequence<NArgs>()
105 static constexpr std::size_t
NArgs = std::tuple_size<ArgTuple>();
109 typename CollProxy,
typename Event,
typename Handle,
typename MainArgs,
113 Event
const& event, Handle&& mainHandle, MainArgs
const& mainArgs,
114 std::index_sequence<I...>
118 event, mainHandle, mainArgs,
119 std::get<I>(std::forward<ArgTuple>(
args))...
134 #endif // LARDATA_RECOBASEPROXY_PROXYBASE_WITHPROXYASAUXSTRUCTBASE_H
see a below echo or echo I(indirect symbol).'echo" If the symbol is local (non-external)
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
AuxProxy aux_proxy_t
Type of auxiliary proxy.
static constexpr std::size_t NArgs
Number of arguments stored.
WithProxyAsAuxStructBase(ArgTuple &&args)
auto createAuxProxyMaker(Event const &event, Handle &&mainHandle, MainArgs const &mainArgs)
Creates the associated data proxy by means of ProxyAsAuxProxyMaker.
ArgTuple args
Argument construction storage as tuple.
typename CollProxy::main_element_t main_t
Type of main data product element from a proxy of type CollProxy.
Creates an auxiliary proxy wrapper for the specified proxy.
Infrastructure for a collection proxy as auxiliary data for a proxy.
static auto make(Event const &event, Handle &&, MainArgs const &, art::InputTag const &auxProxyTag, AuxArgs &&...args)
Create a parallel data proxy collection using the specified tag.
auto createAuxProxyImpl(Event const &event, Handle &&mainHandle, MainArgs const &mainArgs, std::index_sequence< I...>)
Helper to create a proxy as auxiliary data for another proxy.
AuxTag tag
Tag for the associated data (same as the data type itself).