11 #ifndef LARDATA_RECOBASEPROXY_PROXYBASE_WITHASSOCIATEDSTRUCTBASE_H 12 #define LARDATA_RECOBASEPROXY_PROXYBASE_WITHASSOCIATEDSTRUCTBASE_H 68 template <
typename CollProxy>
class ProxyMaker,
74 template <
typename CollProxy>
75 using main_t =
typename CollProxy::main_element_t;
87 template <
typename CollProxy>
93 template <
typename CollProxy>
103 <
typename CollProxy,
typename Event,
typename Handle,
typename MainArgs>
105 (Event
const&
event, Handle&& mainHandle, MainArgs
const& mainArgs)
107 return createAssnProxyMaker<CollProxy>(
108 event, std::forward<Handle>(mainHandle), mainArgs,
109 std::make_index_sequence<NArgs>()
119 static constexpr std::size_t
NArgs = std::tuple_size<ArgTuple>();
123 typename CollProxy,
typename Event,
typename Handle,
typename MainArgs,
127 Event
const& event, Handle&& mainHandle, MainArgs
const& mainArgs,
128 std::index_sequence<I...>
132 event, mainHandle, mainArgs,
133 std::get<I>(std::forward<ArgTuple>(args))...
147 #endif // LARDATA_RECOBASEPROXY_PROXYBASE_WITHASSOCIATEDSTRUCTBASE_H ProxyMaker< CollProxy > proxy_maker_t
Class to create the data proxy associated to a CollProxy.
typename proxy_maker_t< CollProxy >::aux_collection_proxy_t aux_collection_proxy_t
Type of association proxy created for the specified CollProxy.
Helper to create associated data proxy.
Aux aux_t
Type of associated data.
ArgTuple args
Argument construction storage as tuple.
static constexpr std::size_t NArgs
Number of arguments stored.
Metadata metadata_t
Type of associated metadata.
typename CollProxy::main_element_t main_t
Type of main data product element from a proxy of type CollProxy.
WithAssociatedStructBase(ArgTuple &&args)
auto createAuxProxyMaker(Event const &event, Handle &&mainHandle, MainArgs const &mainArgs)
Creates the associated data proxy by means of ProxyMaker.
auto createAssnProxyMaker(Event const &event, Handle &&mainHandle, MainArgs const &mainArgs, std::index_sequence< I... >)
Event finding and building.