LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag > Struct Template Reference

Creates an parallel data wrapper for the specified types. More...

#include "ParallelDataProxyMaker.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_collection_t = AuxColl
 Type of the auxiliary data product. More...
 
using aux_element_t = Aux
 Type of the auxiliary datum. More...
 
using aux_collection_proxy_t = details::ParallelData< aux_collection_t, aux_element_t, data_tag >
 Type of associated data proxy being created. More...
 

Static Public Member Functions

template<typename Event , typename Handle , typename MainArgs >
static auto make (Event const &event, Handle &&mainHandle, MainArgs const &mainArgs)
 Create a parallel data proxy collection using main collection tag. More...
 
template<typename Event , typename Handle , typename MainArgs >
static auto make (Event const &event, Handle &&mainHandle, MainArgs const &, art::InputTag const &auxInputTag)
 Create a parallel data proxy collection using the specified tag. More...
 
template<typename Event , typename Handle , typename MainArgs >
static auto make (Event const &, Handle &&, MainArgs const &, aux_collection_t const &auxColl)
 Create a parallel data proxy collection using the specified tag. More...
 

Static Private Member Functions

template<typename Event , typename Handle >
static auto createFromTag (Event const &event, Handle &&, art::InputTag const &auxInputTag)
 

Detailed Description

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
struct proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >

Creates an parallel data wrapper for the specified types.

Template Parameters
Maintype of main datum (element)
AuxColltype of the parallel data collection
Auxtype of the parallel data element
AuxTagtag labelling the parallel data collection

Usually, AuxTag is also the type of datum (element) in the parallel collection.

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

Definition at line 64 of file ParallelDataProxyMaker.h.

Member Typedef Documentation

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
using proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::aux_collection_proxy_t = details::ParallelData<aux_collection_t, aux_element_t, data_tag>

Type of associated data proxy being created.

Definition at line 79 of file ParallelDataProxyMaker.h.

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
using proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::aux_collection_t = AuxColl

Type of the auxiliary data product.

Definition at line 73 of file ParallelDataProxyMaker.h.

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
using proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::aux_element_t = Aux

Type of the auxiliary datum.

Definition at line 76 of file ParallelDataProxyMaker.h.

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
using proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::data_tag = AuxTag

Tag labelling the associated data we are going to produce.

Definition at line 67 of file ParallelDataProxyMaker.h.

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
using proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::main_element_t = Main

Type of the main datum.

Definition at line 70 of file ParallelDataProxyMaker.h.

Member Function Documentation

template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
template<typename Event , typename Handle >
static auto proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::createFromTag ( Event const &  event,
Handle &&  ,
art::InputTag const &  auxInputTag 
)
inlinestaticprivate

Definition at line 148 of file ParallelDataProxyMaker.h.

Referenced by proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, Tag >::make().

149  {
150  return makeParallelDataFrom<aux_collection_t, aux_element_t, data_tag>(event, auxInputTag);
151  }
Event finding and building.
template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
template<typename Event , typename Handle , typename MainArgs >
static auto proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::make ( Event const &  event,
Handle &&  mainHandle,
MainArgs const &  mainArgs 
)
inlinestatic

Create a parallel data proxy collection using main collection tag.

Template Parameters
Eventtype of the event to read data from
Handletype of handle to the main data product
MainArgs_(unused)_ any type convertible to art::InputTag
Parameters
eventthe event to read data from
mainHandle_(unused)_ handle to the main collection data product
mainArgsan object describing the main data product
Returns
a parallel data proxy 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 mainArgs object is of an arbitrary type that must be convertible by explicit type cast into a art::InputTag; that input tag will be used to fetch the parallel data collection.

Definition at line 100 of file ParallelDataProxyMaker.h.

101  {
102  return createFromTag(event, std::forward<Handle>(mainHandle), art::InputTag(mainArgs));
103  }
static auto createFromTag(Event const &event, Handle &&, art::InputTag const &auxInputTag)
Event finding and building.
template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
template<typename Event , typename Handle , typename MainArgs >
static auto proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::make ( Event const &  event,
Handle &&  mainHandle,
MainArgs const &  ,
art::InputTag const &  auxInputTag 
)
inlinestatic

Create a parallel data proxy collection using the specified tag.

Template Parameters
Eventtype of the event to read data from
Handletype of handle to the main data product
MainArgs(unused) any type convertible to art::InputTag
Parameters
eventthe event to read associations from
mainHandle(unused) handle to the main collection data product
auxInputTagthe tag of the data to be read
Returns
a parallel data proxy object

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

Definition at line 120 of file ParallelDataProxyMaker.h.

124  {
125  return createFromTag(event, std::forward<Handle>(mainHandle), auxInputTag);
126  }
static auto createFromTag(Event const &event, Handle &&, art::InputTag const &auxInputTag)
Event finding and building.
template<typename Main, typename AuxColl, typename Aux, typename AuxTag = util::collection_value_t<AuxColl>>
template<typename Event , typename Handle , typename MainArgs >
static auto proxy::ParallelDataProxyMakerBase< Main, AuxColl, Aux, AuxTag >::make ( Event const &  ,
Handle &&  ,
MainArgs const &  ,
aux_collection_t const &  auxColl 
)
inlinestatic

Create a parallel data proxy collection using the specified tag.

Template Parameters
Event(unused) type 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
Parameters
auxCollthe collection to be wrapped
Returns
a parallel data proxy object

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

Definition at line 141 of file ParallelDataProxyMaker.h.

142  {
143  return makeParallelDataFrom<aux_collection_t, aux_element_t, data_tag>(auxColl);
144  }

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