All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Static Public Member Functions | Static Private Member Functions | List of all members
proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag > Struct Template Reference

Creates a proxy wrapper for merging into another proxy ("main"). More...

#include <ProxyAsAuxProxyMaker.h>

Public Types

using data_tag = AuxTag
 Tag labelling the associated data we are going to produce. More...
 
using main_element_t = Main
 Type of the main datum. More...
 
using aux_proxy_t = AuxProxy
 Tag-type of the auxiliary proxy (not the type of the proxy!). More...
 

Static Public Member Functions

template<typename Event , typename Handle , typename MainArgs , typename... AuxArgs>
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. More...
 

Static Private Member Functions

template<typename Event , typename... AuxArgs>
static auto makeAuxiliaryProxy (Event const &event, art::InputTag const &auxProxyTag, AuxArgs &&...args)
 Creates the proxy to be used as parallel data. More...
 

Detailed Description

template<typename Main, typename AuxProxy, typename AuxTag = AuxProxy>
struct proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag >

Creates a proxy wrapper for merging into another proxy ("main").

Template Parameters
Maintype of main datum (element) of the main proxy
AuxProxytype ("proxy name") of the proxy being wrapped
AuxTagtag of the auxiliary proxy in the context of the main one

By default, AuxTag is the same as the proxy name.

This class works as a base class for ProxyAsAuxProxyMaker so that the specializations of the latter can still inherit from this one if they its facilities.

Definition at line 49 of file ProxyAsAuxProxyMaker.h.

Member Typedef Documentation

template<typename Main, typename AuxProxy, typename AuxTag = AuxProxy>
using proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag >::aux_proxy_t = AuxProxy

Tag-type of the auxiliary proxy (not the type of the proxy!).

Definition at line 58 of file ProxyAsAuxProxyMaker.h.

template<typename Main, typename AuxProxy, typename AuxTag = AuxProxy>
using proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag >::data_tag = AuxTag

Tag labelling the associated data we are going to produce.

Definition at line 52 of file ProxyAsAuxProxyMaker.h.

template<typename Main, typename AuxProxy, typename AuxTag = AuxProxy>
using proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag >::main_element_t = Main

Type of the main datum.

Definition at line 55 of file ProxyAsAuxProxyMaker.h.

Member Function Documentation

template<typename Main, typename AuxProxy, typename AuxTag = AuxProxy>
template<typename Event , typename Handle , typename MainArgs , typename... AuxArgs>
static auto proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag >::make ( Event const &  event,
Handle &&  ,
MainArgs const &  ,
art::InputTag const &  auxProxyTag,
AuxArgs &&...  args 
)
inlinestatic

Create a parallel data proxy collection using the specified tag.

Template Parameters
Eventtype of the event to read data from
Handle(unused) type of handle to the main data product
MainArgs(unused) any type convertible to art::InputTag
AuxArgstype of arguments for the creation of the auxiliary proxy
Parameters
eventevent to create the proxy from
auxProxyTagtag for the creation of the auxiliary collection proxy
argsother arguments for the creation of the auxiliary proxy
Returns
a auxiliary proxy data object

The returned object exposes a random access container interface, with data indexed by the index of the corresponding object in the main collection.

The tag of the main collection proxy is ignored even if present, and the caller must specify it.

Definition at line 80 of file ProxyAsAuxProxyMaker.h.

84  {
85  auto auxProxy = makeAuxiliaryProxy
86  (event, auxProxyTag, std::forward<AuxArgs>(args)...);
89  (std::move(auxProxy));
90  }
AuxTag data_tag
Tag labelling the associated data we are going to produce.
static auto makeAuxiliaryProxy(Event const &event, art::InputTag const &auxProxyTag, AuxArgs &&...args)
Creates the proxy to be used as parallel data.
auto makeProxyAsParallelData(AuxProxyColl &&auxProxy)
typename collection_value_type< Coll >::type collection_value_t
Type contained in the collection Coll.
Definition: ContainerMeta.h:65
template<typename Main, typename AuxProxy, typename AuxTag = AuxProxy>
template<typename Event , typename... AuxArgs>
static auto proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, AuxTag >::makeAuxiliaryProxy ( Event const &  event,
art::InputTag const &  auxProxyTag,
AuxArgs &&...  args 
)
inlinestaticprivate

Creates the proxy to be used as parallel data.

Definition at line 97 of file ProxyAsAuxProxyMaker.h.

102  {
103  return getCollection<aux_proxy_t>
104  (event, auxProxyTag, std::forward<AuxArgs>(args)...);
105  }

The documentation for this struct was generated from the following file: