LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Classes | |
class | assns_node_iterator |
struct | AssnsIterTraits |
Traits for a association iterator. More... | |
class | AssnsNode |
This type extends the interface of the art pointer to Assns right side. More... | |
class | AssociatedData |
Object to draft associated data interface. More... | |
struct | AssociatedDataProxyMakerWrapper |
class | BoundaryList |
Builds and keeps track of internal boundaries in a sequence. More... | |
class | BoundaryListRange |
A BoundaryListRangeBase with a full container interface. More... | |
class | BoundaryListRangeBase |
class | BoundaryListRangeIterator |
Iterator exposing elements of a boundary list as ranges. More... | |
struct | CollectionProxyImplFromTraitsImpl |
struct | CollectionProxyImplFromTraitsImpl< Traits, std::enable_if_t< util::always_true_v< typename Traits::template collection_proxy_impl_t< Args... > > >, Args... > |
class | IndexBasedIterator |
Iterator to random access collection storing a current index. More... | |
struct | isTrackProxy |
struct | isTrackProxy< Track< TrackCollProxy > > |
class | IteratorWrapperBase |
Simple iterator wrapper for manipulation of dereferenced result. More... | |
struct | MainCollectionProxy |
Wrapper for the main collection of a proxy. More... | |
class | OneTo01Data |
Object for one-to-zero/or/one associated data interface. More... | |
struct | OneTo01DataProxyMakerWrapper |
class | ParallelData |
Object to draft parallel data interface. More... | |
struct | ParallelDataProxyMakerWrapper |
struct | ParallelDataProxyMakerWrapper< Aux, AuxTag, void > |
struct | ProxyAsParallelData |
Object presenting a proxy as parallel data for another one. More... | |
struct | StaticAsserts |
struct | StaticAsserts< TrackPointWrapper< Data > > |
struct | SubstituteWithAuxList |
struct | SubstituteWithAuxList< std::tuple< T... > > |
struct | TemplateAdaptorOnePlus |
struct | TemplateAdaptorOnePlus< F, First, Others... > |
struct | TrackPointIteratorBox |
Structure for range-for iteration. More... | |
class | WithAssociatedStructBase |
Helper to create associated data proxy. More... | |
class | WithProxyAsAuxStructBase |
Helper to create a proxy as auxiliary data for another proxy. More... | |
Typedefs | |
template<typename Traits , typename... Args> | |
using | CollectionProxyImplFromTraits_t = typename CollectionProxyImplFromTraitsImpl< Traits, void, Args... >::type |
template<typename Aux , typename Metadata , typename ArgTuple , typename AuxTag = Aux> | |
using | WithAssociatedStruct = WithAssociatedStructBase< Aux, Metadata, ArgTuple, AssociatedDataProxyMakerWrapper< Aux, Metadata, AuxTag >::template maker_t, AuxTag > |
template<typename Aux , typename ArgTuple , typename AuxTag = Aux> | |
using | WithParallelCollectionStruct = WithAssociatedStructBase< Aux, void, ArgTuple, ParallelDataProxyMakerWrapper< Aux, AuxTag >::template maker_t, AuxTag > |
template<typename Aux , typename ArgTuple , typename AuxColl , typename AuxTag = Aux> | |
using | WithWrappedParallelCollectionStruct = WithAssociatedStructBase< Aux, void, ArgTuple, ParallelDataProxyMakerWrapper< Aux, AuxTag, AuxColl >::template maker_t, AuxTag > |
template<typename Aux , typename Metadata , typename ArgTuple , typename AuxTag = Aux> | |
using | WithOneTo01AssociatedStruct = WithAssociatedStructBase< Aux, Metadata, ArgTuple, OneTo01DataProxyMakerWrapper< Aux, Metadata, AuxTag >::template maker_t, AuxTag > |
Functions | |
template<typename ArtAssnsIterValue > | |
bool | operator== (AssnsNode< ArtAssnsIterValue > const &A, typename AssnsNode< ArtAssnsIterValue >::valueptr_t const &B) |
template<typename ArtAssnsIterValue > | |
bool | operator== (typename AssnsNode< ArtAssnsIterValue >::valueptr_t const &A, AssnsNode< ArtAssnsIterValue > const &B) |
template<typename ArtAssnsIterValue > | |
bool | operator!= (AssnsNode< ArtAssnsIterValue > const &A, typename AssnsNode< ArtAssnsIterValue >::valueptr_t const &B) |
template<typename ArtAssnsIterValue > | |
bool | operator!= (typename AssnsNode< ArtAssnsIterValue >::valueptr_t const &A, AssnsNode< ArtAssnsIterValue > const &B) |
template<typename ArtAssnsIterValue > | |
AssnsNode< ArtAssnsIterValue > const & | makeAssnsNode (ArtAssnsIterValue const &from) |
Reinterprets the specified association node as a AssnsNode . More... | |
template<typename BoundaryIter > | |
BoundaryListRange< BoundaryIter > | makeBoundaryListRange (BoundaryIter const &iBegin) |
Reinterprets a iterator to boundaries list as a range collection. More... | |
template<std::size_t GroupKey, typename Iter > | |
BoundaryList< Iter >::boundaries_t | associationRangesImpl (Iter begin, Iter end, std::size_t expectedSize) |
template<std::size_t GroupKey, typename Iter > | |
auto | associationRangeBoundaries (Iter begin, Iter end) |
template<std::size_t GroupKey, typename Iter > | |
auto | associationRangeBoundaries (Iter begin, Iter end, std::size_t n) |
template<std::size_t GroupKey, typename Iter > | |
BoundaryList< Iter > | associationRanges (Iter begin, Iter end) |
Groups associations by the first key. More... | |
template<std::size_t GroupKey, typename Iter > | |
BoundaryList< Iter > | associationRanges (Iter begin, Iter end, std::size_t n) |
Groups associations by the first key. More... | |
template<template< typename... > class CollProxy, typename MainColl , typename... AuxColl> | |
auto | createCollectionProxy (MainColl const &main, AuxColl &&...aux) |
Creates a collection proxy of a specified type with the given arguments. More... | |
template<typename MainColl , typename... AuxColl> | |
auto | makeCollectionProxy (MainColl const &main, AuxColl &&...aux) |
Creates a CollectionProxy object with the given arguments. More... | |
template<typename ProxyElement , typename... AuxData> | |
auto | makeCollectionProxyElement (std::size_t index, typename ProxyElement::main_element_t const &main, AuxData &&...auxData) |
Creates a collection proxy element object from data structures. More... | |
template<typename Traits , typename... Args> | |
auto | createCollectionProxyFromTraits (Args &&...args) |
template<typename T > | |
void | extendAndAssign (std::vector< T > &v, typename std::vector< T >::size_type index, typename std::vector< T >::value_type const &value) |
template<typename T > | |
void | extendAndAssign (std::vector< T > &v, typename std::vector< T >::size_type index, typename std::vector< T >::value_type &&value) |
template<std::size_t Key, std::size_t Data, typename Iter > | |
auto | associationOneToOneFullSequence (Iter begin, Iter end, std::size_t n) |
— END Infrastructure for proxies as auxiliary data ------------------—
using proxy::details::CollectionProxyImplFromTraits_t = typedef typename CollectionProxyImplFromTraitsImpl<Traits, void, Args...>::type |
Traits::collection_proxy_impl_t
if that (template) type exists, proxy::CollectionProxy
otherwise.
Definition at line 242 of file CollectionProxyMaker.h.
using proxy::details::WithAssociatedStruct = typedef WithAssociatedStructBase< Aux, Metadata, ArgTuple, AssociatedDataProxyMakerWrapper<Aux, Metadata, AuxTag>::template maker_t, AuxTag> |
Definition at line 58 of file withAssociated.h.
using proxy::details::WithOneTo01AssociatedStruct = typedef WithAssociatedStructBase< Aux, Metadata, ArgTuple, OneTo01DataProxyMakerWrapper<Aux, Metadata, AuxTag>::template maker_t, AuxTag> |
Definition at line 32 of file withZeroOrOne.h.
using proxy::details::WithParallelCollectionStruct = typedef WithAssociatedStructBase<Aux, void, ArgTuple, ParallelDataProxyMakerWrapper<Aux, AuxTag>::template maker_t, AuxTag> |
Definition at line 34 of file withParallelData.h.
using proxy::details::WithWrappedParallelCollectionStruct = typedef WithAssociatedStructBase< Aux, void, ArgTuple, ParallelDataProxyMakerWrapper<Aux, AuxTag, AuxColl>::template maker_t, AuxTag> |
Definition at line 42 of file withParallelData.h.
auto proxy::details::associationOneToOneFullSequence | ( | Iter | begin, |
Iter | end, | ||
std::size_t | n | ||
) |
Definition at line 240 of file OneTo01Data.h.
References util::end(), and extendAndAssign().
auto proxy::details::associationRangeBoundaries | ( | Iter | begin, |
Iter | end | ||
) |
Definition at line 924 of file AssociatedData.h.
References util::begin(), and util::end().
auto proxy::details::associationRangeBoundaries | ( | Iter | begin, |
Iter | end, | ||
std::size_t | n | ||
) |
Definition at line 931 of file AssociatedData.h.
References util::begin(), util::end(), and n.
BoundaryList<Iter> proxy::details::associationRanges | ( | Iter | begin, |
Iter | end | ||
) |
Groups associations by the first key.
GroupKey | index of the key in the tuple pointed by the iterator |
Iter | type of iterators delimiting the data (same type required) |
begin | iterator to the first association in the list |
end | iterator past the last association in the list |
std::runtime_error | if input key is not monotonic |
The input iterators are expected to point to a tuple-like structure whose key element can be accessed as std::get<GroupKey>()
and is an art pointer of some sort.
The index of the grouping key is expected to be monotonically increasing. Gaps are supported except that at the end: if e.g. an association of 5 keys associates objects to only elements #0, #1 and #3, the resulting list will cover 4 ranges for elements #0 to #3 included, but excluding the end elements, the existence of which can't be inferred from the association list in input. In this example, the range #2 will exist and be empty. To enforce a minimum number of elements, use associationRanges(Iter, Iter, std::size_t)
.
Definition at line 965 of file AssociatedData.h.
References util::begin(), and util::end().
BoundaryList<Iter> proxy::details::associationRanges | ( | Iter | begin, |
Iter | end, | ||
std::size_t | n | ||
) |
Groups associations by the first key.
GroupKey | index of the key in the tuple pointed by the iterator |
Iter | type of iterators delimiting the data (same type required) |
begin | iterator to the first association in the list |
end | iterator past the last association in the list |
n | minimum number of ranges to be produced. |
std::runtime_error | if input key is not monotonic |
associationRanges(Iter, Iter)
This function operates almost like associationRanges(Iter, Iter)
. The only difference is that at least n
ranges are guaranteed to be produced: if the input defines less than n
, the missing ones will be added at the end, empty. This allows to work around the possibility of empty ranges at the end, which the associationRanges(Iter, Iter)
algorithm does not support.
Definition at line 989 of file AssociatedData.h.
References util::begin(), util::end(), and n.
BoundaryList<Iter>::boundaries_t proxy::details::associationRangesImpl | ( | Iter | begin, |
Iter | end, | ||
std::size_t | expectedSize | ||
) |
Definition at line 896 of file AssociatedData.h.
References util::end(), proxy::details::BoundaryList< Iter >::end(), and util::to_string().
auto proxy::details::createCollectionProxy | ( | MainColl const & | main, |
AuxColl &&... | aux | ||
) |
Creates a collection proxy of a specified type with the given arguments.
Definition at line 311 of file CollectionProxy.h.
References main().
auto proxy::details::createCollectionProxyFromTraits | ( | Args &&... | args | ) |
Definition at line 246 of file CollectionProxyMaker.h.
void proxy::details::extendAndAssign | ( | std::vector< T > & | v, |
typename std::vector< T >::size_type | index, | ||
typename std::vector< T >::value_type const & | value | ||
) |
Definition at line 209 of file OneTo01Data.h.
References value.
Referenced by associationOneToOneFullSequence().
void proxy::details::extendAndAssign | ( | std::vector< T > & | v, |
typename std::vector< T >::size_type | index, | ||
typename std::vector< T >::value_type && | value | ||
) |
AssnsNode<ArtAssnsIterValue> const& proxy::details::makeAssnsNode | ( | ArtAssnsIterValue const & | from | ) |
Reinterprets the specified association node as a AssnsNode
.
Definition at line 356 of file AssociatedData.h.
References proxy::details::AssnsNode< ArtAssnsIterValue >::makeFrom().
Referenced by proxy::details::assns_node_iterator< ArtAssnsIter >::transform().
BoundaryListRange<BoundaryIter> proxy::details::makeBoundaryListRange | ( | BoundaryIter const & | iBegin | ) |
Reinterprets a iterator to boundaries list as a range collection.
BoundaryIter | type of iterator to boundary collection |
iBegin | iterator to the begin iterator of a range |
lar::CollectionView
) of the rangeA range is conceptually defined as a sequence of data between a begin and and end iterator. The argument of this function is an iterator to the begin iterator of the range. The begin iterator itself is obtained by dereferencing the argument: *iBegin
. The end iterator of the range is required to be immediately after the begin iterator (
). This pair of iterators is exposed via the lar::CollectionView
view, that presents a vector-like interface. For this to fully work, the data iterators (e.g., *iBegin
) must comply with the random-access iterator requirements.
An example of BoundaryIter
is the iterator to the list of boundaries in BoundaryList
: BoundaryList::boundaries_t::const_iterator
.
Definition at line 555 of file AssociatedData.h.
Referenced by proxy::details::BoundaryListRangeIterator< BoundaryIter >::transform().
auto proxy::details::makeCollectionProxy | ( | MainColl const & | main, |
AuxColl &&... | aux | ||
) |
Creates a CollectionProxy
object with the given arguments.
Definition at line 319 of file CollectionProxy.h.
References main().
auto proxy::details::makeCollectionProxyElement | ( | std::size_t | index, |
typename ProxyElement::main_element_t const & | main, | ||
AuxData &&... | auxData | ||
) |
Creates a collection proxy element object from data structures.
ProxyElement | type of proxy element to be created |
AuxData | types of auxiliary data structures being included |
index | index in main collection of the element being represented |
main | main collection proxy data |
auxData | auxiliary data collections |
ProxyElement
object bound to the specified data element Definition at line 306 of file CollectionProxyElement.h.
bool proxy::details::operator!= | ( | AssnsNode< ArtAssnsIterValue > const & | A, |
typename AssnsNode< ArtAssnsIterValue >::valueptr_t const & | B | ||
) |
Definition at line 342 of file AssociatedData.h.
References proxy::details::AssnsNode< ArtAssnsIterValue >::valuePtr().
bool proxy::details::operator!= | ( | typename AssnsNode< ArtAssnsIterValue >::valueptr_t const & | A, |
AssnsNode< ArtAssnsIterValue > const & | B | ||
) |
Definition at line 348 of file AssociatedData.h.
References proxy::details::AssnsNode< ArtAssnsIterValue >::valuePtr().
bool proxy::details::operator== | ( | AssnsNode< ArtAssnsIterValue > const & | A, |
typename AssnsNode< ArtAssnsIterValue >::valueptr_t const & | B | ||
) |
Definition at line 330 of file AssociatedData.h.
References proxy::details::AssnsNode< ArtAssnsIterValue >::valuePtr().
bool proxy::details::operator== | ( | typename AssnsNode< ArtAssnsIterValue >::valueptr_t const & | A, |
AssnsNode< ArtAssnsIterValue > const & | B | ||
) |
Definition at line 336 of file AssociatedData.h.
References proxy::details::AssnsNode< ArtAssnsIterValue >::valuePtr().