11 #ifndef LARDATA_RECOBASEPROXY_PROXYBASE_WITHPROXYASAUXSTRUCTBASE_H 12 #define LARDATA_RECOBASEPROXY_PROXYBASE_WITHPROXYASAUXSTRUCTBASE_H 23 #include <type_traits> 52 template <
typename AuxProxy,
typename ArgTuple,
typename AuxTag = AuxProxy>
56 std::is_convertible<std::decay_t<std::tuple_element_t<0U, ArgTuple>>,
art::InputTag>(),
57 "The first argument of WithProxyAsAuxStructBase must be art::InputTag.");
60 template <
typename CollProxy>
61 using main_t =
typename CollProxy::main_element_t;
70 template <
typename CollProxy>
79 template <
typename CollProxy,
typename Event,
typename Handle,
typename MainArgs>
82 return createAuxProxyImpl<CollProxy>(
83 event, std::forward<Handle>(mainHandle), mainArgs, std::make_index_sequence<NArgs>());
90 static constexpr std::size_t
NArgs = std::tuple_size<ArgTuple>();
93 template <
typename CollProxy,
100 MainArgs
const& mainArgs,
101 std::index_sequence<I...>)
104 event, mainHandle, mainArgs, std::get<I>(std::forward<ArgTuple>(args))...);
116 #endif // LARDATA_RECOBASEPROXY_PROXYBASE_WITHPROXYASAUXSTRUCTBASE_H 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.
auto createAuxProxyImpl(Event const &event, Handle &&mainHandle, MainArgs const &mainArgs, std::index_sequence< I... >)
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.
Encloses LArSoft data product proxy objects and utilities.See this doxygen module for an introduction...
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.
Helper to create a proxy as auxiliary data for another proxy.
AuxTag tag
Tag for the associated data (same as the data type itself).
Event finding and building.