|
ATLAS Offline Software
|
Go to the documentation of this file.
13 #ifndef ATHCONTAINERS_PACKEDLINKVECTORHELPER_H
14 #define ATHCONTAINERS_PACKEDLINKVECTORHELPER_H
21 #include "AthLinks/ElementLink.h"
22 #include "AthLinks/DataLink.h"
34 template <
class RANGE,
class CONT>
46 #ifdef XAOD_STANDALONE
121 std::pair<AuxVectorData*, SG::auxid_t> >
m_data;
177 static std::pair<size_t, bool>
210 #ifndef XAOD_STANDALONE
253 template <
class CONT>
286 static std::pair<size_t, bool>
312 SG::PackedLink<CONT>*
ptr,
337 SG::PackedLink<CONT>*
ptr,
361 template <
class VALLOC>
363 std::vector<SG::PackedLink<CONT>, VALLOC>*
ptr,
380 template <
class VALLOC, ElementLinkRange<CONT> RANGE>
399 template <
class VALLOC, ElementLinkRange<CONT> RANGE>
407 #ifndef XAOD_STANDALONE
424 PackedLink<CONT>*
ptr,
455 #endif // not ATHCONTAINERS_PACKEDLINKVECTORHELPER_H
LinkedVector(AuxVectorData &container, SG::auxid_t auxid)
Constructor from a container and aux ID.
IAuxTypeVector * get()
Return the IAuxTypeVector.
void InitLinkFunc_t(DataLinkBase &dl, sgkey_t sgkey, IProxyDict *sg)
Function to initialize a DataLink to a given hashed key.
static const_DataLinkBase_span getLinkBaseSpan(const IAuxTypeVector &linkedVec)
Return a span over all the linked DataLinks.
static std::pair< size_t, bool > findCollection(LinkedVector &linkedVec, sgkey_t sgkey, DataLinkBase_span &links, IProxyDict *sg)
Find the collection index in the linked DataLinks for a sgkey.
concept ElementLinkRange
Concept for a range of things that can convert to ElementLink<CONT>.
static bool resizeLinks(LinkedVector &linkedVec, size_t sz)
Resize a linked vector of DataLinks.
Helper to access the IAuxTypeVector for an aux variable.
static std::pair< size_t, bool > findCollectionBase(LinkedVector &linkedVec, sgkey_t sgkey, DataLinkBase_span &links, IProxyDict *sg, InitLinkFunc_t *initLinkFunc)
Find the collection index in the linked DataLinks for a sgkey.
static bool updateLinks(IAuxTypeVector &linkedVec, SG::PackedLink< CONT > *ptr, size_t n, const IAuxTypeVector &srclv, IProxyDict *sg)
Update collection index of a collection of PackedLink.
Auxiliary variable span wrapper.
Simplified version of the C++20 std::span.
Abstract interface for manipulating vectors of arbitrary types.
PackedLink< CONT > PLink_t
The PackedLinks.
LinkedVector(IAuxTypeVector &linkedVector)
Constructor from an IAuxTypeVector directly.
Helper functions for managing PackedLink variables.
std::variant< IAuxTypeVector *, std::pair< AuxVectorData *, SG::auxid_t > > m_data
size_t auxid_t
Identifier for a particular aux data item.
static bool applyThinningBase(IAuxTypeVector &linkedVec, PackedLinkBase_span &links, DataLinkBase_span &dlinks, const SG::ThinningCache *tc, IProxyDict *sg, InitLinkFunc_t *initLinkFunc)
Apply thinning to packed links, to prepare them for output.
static bool assignVElt(std::vector< PLink_t, VALLOC > &velt, IAuxTypeVector &linkedVec, DataLinkBase_span &dlinks, const RANGE &x)
Assign a range of ElementLink to a vector of Packedlink.
Auxiliary variable span wrapper (const).
Simplified version of the C++20 std::span.
Object reference supporting deferred reading from StoreGate.
Definition of PackedLink type.
static void initLink(DataLinkBase &dl, sgkey_t sgkey, IProxyDict *sg)
Initialize a DataLink.
Manage lookup of vectors of auxiliary data.
static bool updateLinks(IAuxTypeVector &linkedVec, std::vector< SG::PackedLink< CONT >, VALLOC > *ptr, size_t n, const IAuxTypeVector &srclv, IProxyDict *sg)
Update collection index of a collection of PackedLink vectors.
static bool updateLinks(IAuxTypeVector &linkedVec, SG::PackedLink< CONT > *ptr, size_t n, const const_DataLinkBase_span &srcDLinks, IProxyDict *sg)
Update collection index of a collection of PackedLink.
IAuxTypeVector * operator->()
Return the IAuxTypeVector.
::DataLinkBase DataLinkBase
static bool updateLinksBase(IAuxTypeVector &linkedVec, PackedLinkBase_span &links, const const_DataLinkBase_span &srcDLinks, IProxyDict *sg, InitLinkFunc_t *initLinkFunc)
Update collection index of a collection of PackedLink.
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
static bool applyThinning(IAuxTypeVector &linkedVec, PackedLink< CONT > *ptr, size_t n, DataLinkBase_span &dlinks, const SG::ThinningCache *tc, IProxyDict *sg)
Apply thinning to packed links, to prepare them for output.
IAuxTypeVector & operator*()
Return the IAuxTypeVector.
static bool insertVElt(std::vector< PLink_t, VALLOC > &velt, size_t pos, IAuxTypeVector &linkedVec, DataLinkBase_span &dlinks, const RANGE &x)
Insert a range of ElementLink into a vector of Packedlink.
Helper functions for managing PackedLink variables.
A packed version of ElementLink.
Abstract interface for manipulating vectors of arbitrary types.
static DataLinkBase_span getLinkBaseSpan(IAuxTypeVector &linkedVec)
Return a span over all the linked DataLinkBase's, from the linked vector.
static IProxyDict * storeFromSpan(DataLinkBase_span &links)
Return the current store from the first valid link in the span.
Manage lookup of vectors of auxiliary data.
Cache thinning decisions for converters.
Type-independent part of DataLink; holds the persistent state.