Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
ElementLinkBase Class Referenceabstract

Base class for ElementLinks to vectors of pointers. More...

#include <ElementLinkBase.h>

Collaboration diagram for ElementLinkBase:

Public Types

typedef size_t index_type
 The index type presented to and returned from the link. More...
 
typedef uint32_t stored_index_type
 The type of the index as it is stored internally. More...
 
typedef SG::DataProxyHolder::sgkey_t sgkey_t
 Type of hashed keys. More...
 
typedef SG::DataProxyHolder::ID_type ID_type
 Type of string keys. More...
 
typedef void * castfn_t(SG::DataProxy *)
 Function casting from a SG::DataProxy to a pointer. More...
 

Public Member Functions

 ElementLinkBase (const ElementLinkBase &)=default
 
ElementLinkBaseoperator= (const ElementLinkBase &)=default
 
bool isDefaultIndex () const
 Test the index validity. More...
 
bool hasCachedElement () const
 Test to see if this link has a cached element pointer. More...
 
bool isDefault () const
 Test to see if this link is in the default state. More...
 
index_type index () const
 Return the index of the link. More...
 
stored_index_type persIndex () const
 Return the index of the link. More...
 
const ID_typedataID () const
 Return the SG key that we reference, as a string. More...
 
sgkey_t key () const
 Return the SG key that we reference, as a hash. More...
 
sgkey_t persKey () const
 Return the SG key that we reference, as a hash. More...
 
IProxyDictsource () const
 Return the data source for this reference. More...
 
const SG::DataProxyproxy () const
 Return the SG proxy for the container holding this element. More...
 
void reset ()
 Reset the link to a null state. More...
 
bool toTransient (IProxyDict *sg=0)
 Finish initialization after link has been read. More...
 
bool toPersistent ()
 Prepare this link for writing. More...
 
bool thin ()
 Adjust for thinning. More...
 
bool thin (const SG::ThinningCache *thinningCache)
 Adjust for thinning. More...
 
 ElementLinkBase ()
 Default constructor. More...
 
 ElementLinkBase (uint32_t key=0, uint32_t index=INVALID)
 Default constructor. More...
 
virtual ~ElementLinkBase ()
 Destructor. More...
 
uint32_t persKey () const
 Get the key/identifier of the referenced container. More...
 
void setPersKey (uint32_t key)
 Set the key/identifier of the referenced container. More...
 
uint32_t persIndex () const
 Get the index of the referenced object in the container. More...
 
void setPersIndex (uint32_t index)
 Set the index of the referenced object in the container. More...
 
virtual bool toTransient ()=0
 Reset the object's internal cache. More...
 
bool isDefault () const
 Is the link in the default state. More...
 

Protected Member Functions

 ElementLinkBase (const ID_type &dataID, CLID link_clid, index_type elemID, IProxyDict *sg)
 Construct a link from a string key and an index. More...
 
 ElementLinkBase (sgkey_t key, CLID link_clid, index_type elemID, IProxyDict *sg)
 Construct a link from a hashed key and an index. More...
 
 ElementLinkBase (const ID_type &dataID, CLID link_clid, index_type elemID, const void *elt, IProxyDict *sg)
 Construct a link from a string key, index, AND pointer to element. More...
 
 ElementLinkBase (sgkey_t key, CLID link_clid, index_type elemID, const void *elt, IProxyDict *sg)
 Construct a link from a hashed key, index, AND pointer to element. More...
 
 ElementLinkBase (const_pointer_t obj, CLID link_clid, index_type elemID, IProxyDict *sg)
 Construct a link from an index and pointer to the container. More...
 
 ElementLinkBase (const ElementLinkBase &other, index_type elemID)
 Construct a link from another link, changing the index. More...
 
 ElementLinkBase (const DataLinkBase &dlink, index_type index)
 Construct a link from a DataLink and an index. More...
 
template<class FROM_TRAITS , class TO_TRAITS >
 ElementLinkBase (const ElementLinkBase &other, FROM_TRAITS *, TO_TRAITS *)
 Constructor from a link referencing a different type. More...
 
void * storableBase (castfn_t *castfn, CLID clid, bool isConst) const
 Return a pointer to the currently-referenced container object. More...
 
bool setStorableObject (const_pointer_t data, CLID link_clid, bool replace, IProxyDict *sg)
 Set the container referenced by the link to data. More...
 
bool toIndexedElement (const_pointer_t obj, CLID link_clid, index_type elemID, IProxyDict *sg)
 Set the link to an element given by index and pointer to container. More...
 
void resetWithKeyAndIndex (const ID_type &dataID, CLID link_clid, index_type elemID, IProxyDict *sg)
 Set the link to an element given by string key and index. More...
 
void resetWithKeyAndIndex (sgkey_t key, CLID link_clid, index_type elemID, IProxyDict *sg)
 Set the link to an element given by string key and index. More...
 
void setIndex (index_type index)
 Set the index part of the link. More...
 
const stored_index_typestoredIndex () const
 Return the stored representation of the link index. More...
 
void setCachedElement (ElementType elt) const
 Set the cached element stored in the link, assuming the cached element is null. More...
 
void storeCachedElement (ElementType elt)
 Set the cached element stored in the link. More...
 
template<class T >
bool getCachedElement (const T *&elt) const
 Retrieve the cached element from the link. More...
 
const SG::DataProxyHolderproxyHolder () const
 Return the internal proxy holder object. More...
 

Protected Attributes

uint32_t m_persKey
 Key/identifier of the referenced container. More...
 
uint32_t m_persIndex
 Index of the referenced object in the container. More...
 
bool m_isDirectIO
 A transient variable signalling when direct I/O is happening. More...
 

Private Types

typedef const void * ElementType
 Generic pointer to an element. More...
 
typedef SG::DataProxyHolder::const_pointer_t const_pointer_t
 Generic pointer to the container (storable). More...
 

Private Member Functions

void clearCachedElement ()
 Clear the currently-cached element. More...
 

Private Attributes

SG::sgkey_t m_persKey
 The hashed key for this link. More...
 
stored_index_type m_persIndex
 The index of the element within the container for this link. More...
 
SG::DataProxyHolder m_proxy
 SG proxy for this link. More...
 
CxxUtils::CachedPointer< void > m_element
 Transient. More...
 

Static Private Attributes

static const uint32_t INVALID = static_cast<uint32_t> (-1)
 Value to mark an invalid index. More...
 
static constexpr uint32_t INVALID = static_cast<uint32_t> (-1)
 Value to mark a default index. More...
 

Friends

class ElementLinkBase_test
 For regression testing. More...
 

Detailed Description

Base class for ElementLinks to vectors of pointers.

A base class holding the container independent part of ElementLink.

This holds the type-independent portion of an ElementLink for the case where the target container holds pointers and has vector-like indexing. This is the most common case, and for this case, we can have a non-templated class; this simplifies persistency.

Other types of ElementLink will use instead GenericElementLinkBase.

See ElementLinkTraits.h for a summary of the requirements for these base classes.

This class stores the hashed SG key of the target container and the index of the element within the container. (The type of the index should be the same as in ForwardIndexingPolicy; however, we don't depend on the indexing policy since that class is templated.) Those two members make up the persistent state. We also store a transient DataProxyHolder, which encapsulates the pointer to the DataProxy and factors out code that's common with DataLink. Further, we store a copy of the element to which the link refers; this is also transient (and mutable). In the case of ElementLinkBase, the element will always be a pointer, so we can store it as a generic void*.

   For technical reasons it's a good idea to define a common base
   class for the ElementLink classes, it helps with ROOT I/O immensely.
Author
Attila Krasznahorkay Attil.nosp@m.a.Kr.nosp@m.aszna.nosp@m.hork.nosp@m.ay@ce.nosp@m.rn.c.nosp@m.h
Revision
567807
Date
2013-10-30 10:30:16 +0100 (Wed, 30 Oct 2013)

Definition at line 58 of file AthLinks/ElementLinkBase.h.

Member Typedef Documentation

◆ castfn_t

typedef void* ElementLinkBase::castfn_t(SG::DataProxy *)

Function casting from a SG::DataProxy to a pointer.

Definition at line 85 of file AthLinks/ElementLinkBase.h.

◆ const_pointer_t

Generic pointer to the container (storable).

Definition at line 68 of file AthLinks/ElementLinkBase.h.

◆ ElementType

typedef const void* ElementLinkBase::ElementType
private

Generic pointer to an element.

Definition at line 65 of file AthLinks/ElementLinkBase.h.

◆ ID_type

Type of string keys.

Definition at line 82 of file AthLinks/ElementLinkBase.h.

◆ index_type

The index type presented to and returned from the link.

Definition at line 73 of file AthLinks/ElementLinkBase.h.

◆ sgkey_t

Type of hashed keys.

Definition at line 79 of file AthLinks/ElementLinkBase.h.

◆ stored_index_type

The type of the index as it is stored internally.

Definition at line 76 of file AthLinks/ElementLinkBase.h.

Constructor & Destructor Documentation

◆ ElementLinkBase() [1/11]

ElementLinkBase::ElementLinkBase ( const ElementLinkBase )
default

◆ ElementLinkBase() [2/11]

ElementLinkBase::ElementLinkBase ( )

Default constructor.

Makes a null link.

(Must be public for root i/o.)

◆ ElementLinkBase() [3/11]

ElementLinkBase::ElementLinkBase ( const ID_type dataID,
CLID  link_clid,
index_type  elemID,
IProxyDict sg 
)
protected

Construct a link from a string key and an index.

Parameters
dataIDKey of the object.
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
sgAssociated store.

If sg is 0, we take the global default.

◆ ElementLinkBase() [4/11]

ElementLinkBase::ElementLinkBase ( sgkey_t  key,
CLID  link_clid,
index_type  elemID,
IProxyDict sg 
)
protected

Construct a link from a hashed key and an index.

Parameters
keyHashed key of the object.
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
sgAssociated store.

If sg is 0, we take the global default.

◆ ElementLinkBase() [5/11]

ElementLinkBase::ElementLinkBase ( const ID_type dataID,
CLID  link_clid,
index_type  elemID,
const void *  elt,
IProxyDict sg 
)
protected

Construct a link from a string key, index, AND pointer to element.

Parameters
dataIDKey of the object.
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
eltPointer to the element.
sgAssociated store.

USE CAREFULLY: no coherency checks, we just trust you!

If sg is 0, we take the global default.

◆ ElementLinkBase() [6/11]

ElementLinkBase::ElementLinkBase ( sgkey_t  key,
CLID  link_clid,
index_type  elemID,
const void *  elt,
IProxyDict sg 
)
protected

Construct a link from a hashed key, index, AND pointer to element.

Parameters
keyHashed key of the object.
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
eltPointer to the element.
sgAssociated store.

USE CAREFULLY: no coherency checks, we just trust you!

If sg is 0, we take the global default.

◆ ElementLinkBase() [7/11]

ElementLinkBase::ElementLinkBase ( const_pointer_t  obj,
CLID  link_clid,
index_type  elemID,
IProxyDict sg 
)
protected

Construct a link from an index and pointer to the container.

Parameters
objPointer to the container (storable).
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
sgAssociated store.

If sg is 0, we take the global default.

◆ ElementLinkBase() [8/11]

ElementLinkBase::ElementLinkBase ( const ElementLinkBase other,
index_type  elemID 
)
protected

Construct a link from another link, changing the index.

Parameters
otherThe source link.
elemIDThe index for the new link.

The index being constructed will reference the same container as other, but it will refer to element elemID.

◆ ElementLinkBase() [9/11]

ElementLinkBase::ElementLinkBase ( const DataLinkBase dlink,
index_type  index 
)
protected

Construct a link from a DataLink and an index.

Parameters
dlinkLink to the container.
indexThe index of the element within the container.

◆ ElementLinkBase() [10/11]

template<class FROM_TRAITS , class TO_TRAITS >
ElementLinkBase::ElementLinkBase ( const ElementLinkBase other,
FROM_TRAITS *  ,
TO_TRAITS *   
)
protected

Constructor from a link referencing a different type.

Parameters
otherThe object from which to copy.

FROM_TRAITS is the ElementLinkTraits class for other; TO_TRAITS is the traits class for this object. The actual pointer values are not used, just the types are used. Default conversions for the storable pointer (i.e., derived->base) are allowed.

◆ ElementLinkBase() [11/11]

ElementLinkBase::ElementLinkBase ( uint32_t  key = 0,
uint32_t  index = INVALID 
)

Default constructor.

Definition at line 8 of file ElementLinkBase.cxx.

9  : m_persKey( key ), m_persIndex( index ), m_isDirectIO( false ) {
10 
11 }

◆ ~ElementLinkBase()

virtual ElementLinkBase::~ElementLinkBase ( )
inlinevirtual

Destructor.

Definition at line 32 of file A/AthLinks/ElementLinkBase.h.

32 {}

Member Function Documentation

◆ clearCachedElement()

void ElementLinkBase::clearCachedElement ( )
private

Clear the currently-cached element.

◆ dataID()

const ID_type& ElementLinkBase::dataID ( ) const

Return the SG key that we reference, as a string.

Returns a null string on failure.

◆ getCachedElement()

template<class T >
bool ElementLinkBase::getCachedElement ( const T *&  elt) const
protected

Retrieve the cached element from the link.

Parameters
elt[out]The cached element.
Returns
True if an element was cached; false otherwise.

elt is left unmodified if there is no cached element.

◆ hasCachedElement()

bool ElementLinkBase::hasCachedElement ( ) const

Test to see if this link has a cached element pointer.

◆ index()

index_type ElementLinkBase::index ( ) const

Return the index of the link.

◆ isDefault() [1/2]

bool ElementLinkBase::isDefault ( ) const

Is the link in the default state.

A link in the default state was purposefully constructed as a null link

◆ isDefault() [2/2]

bool ElementLinkBase::isDefault ( ) const

Test to see if this link is in the default state.

Definition at line 49 of file ElementLinkBase.cxx.

49  {
51 }

◆ isDefaultIndex()

bool ElementLinkBase::isDefaultIndex ( ) const

Test the index validity.

Returns
True if the index is not valid (in default state).

◆ key()

sgkey_t ElementLinkBase::key ( ) const

Return the SG key that we reference, as a hash.

Returns 0 on failure.

◆ operator=()

ElementLinkBase& ElementLinkBase::operator= ( const ElementLinkBase )
default

◆ persIndex() [1/2]

uint32_t ElementLinkBase::persIndex ( ) const

Get the index of the referenced object in the container.

◆ persIndex() [2/2]

uint32_t ElementLinkBase::persIndex ( ) const

Return the index of the link.

(Deprecated; use index() instead.)

Definition at line 31 of file ElementLinkBase.cxx.

31  {
32 
33  return m_persIndex;
34 }

◆ persKey() [1/2]

uint32_t ElementLinkBase::persKey ( ) const

Get the key/identifier of the referenced container.

◆ persKey() [2/2]

uint32_t ElementLinkBase::persKey ( ) const

Return the SG key that we reference, as a hash.

(Deprecated; use key instead.)

Returns 0 on failure.

Definition at line 13 of file ElementLinkBase.cxx.

13  {
14 
15  return m_persKey;
16 }

◆ proxy()

const SG::DataProxy* ElementLinkBase::proxy ( ) const

Return the SG proxy for the container holding this element.

If this is a null link, we return 0. If we're directly referencing an object that's not in StoreGate, either return 0 or throw ExcPointerNotInSG, depending on nothrow. Otherwise, return the proxy for the object we're referencing.

◆ proxyHolder()

const SG::DataProxyHolder& ElementLinkBase::proxyHolder ( ) const
protected

Return the internal proxy holder object.

◆ reset()

void ElementLinkBase::reset ( )

Reset the link to a null state.

◆ resetWithKeyAndIndex() [1/2]

void ElementLinkBase::resetWithKeyAndIndex ( const ID_type dataID,
CLID  link_clid,
index_type  elemID,
IProxyDict sg 
)
protected

Set the link to an element given by string key and index.

Parameters
dataIDKey of the object.
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
sgAssociated store.

If sg is 0, then we take the store from whatever the link's currently set to. If the link has no current store, then we take the global default.

◆ resetWithKeyAndIndex() [2/2]

void ElementLinkBase::resetWithKeyAndIndex ( sgkey_t  key,
CLID  link_clid,
index_type  elemID,
IProxyDict sg 
)
protected

Set the link to an element given by string key and index.

Parameters
keyHashed key of the object.
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
sgAssociated store.

If sg is 0, then we take the store from whatever the link's currently set to. If the link has no current store, then we take the global default.

◆ setCachedElement()

void ElementLinkBase::setCachedElement ( ElementType  elt) const
protected

Set the cached element stored in the link, assuming the cached element is null.

Parameters
eltNew value for the cached element.

This method will set the current cached element if it is currently unset. If it has previously been assigned, then this method will do nothing.

◆ setIndex()

void ElementLinkBase::setIndex ( index_type  index)
protected

Set the index part of the link.

Parameters
indexNew index value.

◆ setPersIndex()

void ElementLinkBase::setPersIndex ( uint32_t  index)

Set the index of the referenced object in the container.

Definition at line 36 of file ElementLinkBase.cxx.

36  {
37 
38  // Check if we're actually changing anything:
39  if( m_persIndex == index ) return;
40  // Store the new index:
42 
43  // Reset the internal cache:
44  toTransient();
45 
46  return;
47 }

◆ setPersKey()

void ElementLinkBase::setPersKey ( uint32_t  key)

Set the key/identifier of the referenced container.

Definition at line 18 of file ElementLinkBase.cxx.

18  {
19 
20  // Check if we're actually changing anything:
21  if( m_persKey == key ) return;
22  // Store the new key:
23  m_persKey = key;
24 
25  // Reset the internal cache:
26  toTransient();
27 
28  return;
29 }

◆ setStorableObject()

bool ElementLinkBase::setStorableObject ( const_pointer_t  data,
CLID  link_clid,
bool  replace,
IProxyDict sg 
)
protected

Set the container referenced by the link to data.

Parameters
dataPointer to the new container.
link_clidCLID of the link being set.
replaceTrue if we can change an existing link.
sgAssociated store.
Returns
True if the link was changed.

If the link is already set, this will return false and leave the link unchanged unless replace is set. The replace argument should be set if the element is now in a new storable container; e.g. element ptr has been put in a new view container.

If sg is 0, then we take the store from whatever the link's currently set to. If the link has no current store, then we take the global default.

◆ source()

IProxyDict* ElementLinkBase::source ( ) const

Return the data source for this reference.

◆ storableBase()

void* ElementLinkBase::storableBase ( castfn_t castfn,
CLID  clid,
bool  isConst 
) const
protected

Return a pointer to the currently-referenced container object.

Parameters
castfnFunction to do the cast from data proxy to object. If 0, use a dynamic cast.
clidThe CLID of the desired object. This is used to determine how the returned pointer is to be converted.
isConstTrue if the returned object will be treated as const.
Returns
A pointer to an object of the type given by clid, or null on a failure (or if the reference is null).

◆ storeCachedElement()

void ElementLinkBase::storeCachedElement ( ElementType  elt)
protected

Set the cached element stored in the link.

Parameters
eltNew value for the cached element.

◆ storedIndex()

const stored_index_type& ElementLinkBase::storedIndex ( ) const
protected

Return the stored representation of the link index.

◆ thin() [1/2]

bool ElementLinkBase::thin ( )

Adjust for thinning.

If this link points to a container that has been thinned, it will be adjusted accordingly.

Returns true if the link was changed; false otherwise.

◆ thin() [2/2]

bool ElementLinkBase::thin ( const SG::ThinningCache thinningCache)

Adjust for thinning.

If this link points to a container that has been thinned, it will be adjusted accordingly.

Parameters
thinningCacheThinning cache for the current stream (may be null).

Returns true if the link was changed; false otherwise.

◆ toIndexedElement()

bool ElementLinkBase::toIndexedElement ( const_pointer_t  obj,
CLID  link_clid,
index_type  elemID,
IProxyDict sg 
)
protected

Set the link to an element given by index and pointer to container.

Parameters
objPointer to the container (storable).
link_clidCLID of the link being set.
elemIDThe index of the element within the container.
sgAssociated store.
Returns
True if the link was changed.

If the link is already set, this will return false and leave the link unchanged.

If sg is 0, then we take the store from whatever the link's currently set to. If the link has no current store, then we take the global default.

◆ toPersistent()

bool ElementLinkBase::toPersistent ( )

Prepare this link for writing.

This method should be called before trying to write the link with root. It will make sure the persistent fields of the link are valid. It will also perform remapping if needed.

Will return true on success. Will return false if either the container or the element index has not been specified. Will throw ExcPointerNotInSG if the link is referencing a container that is not in SG.

◆ toTransient() [1/2]

virtual bool ElementLinkBase::toTransient ( )
pure virtual

Reset the object's internal cache.

◆ toTransient() [2/2]

bool ElementLinkBase::toTransient ( IProxyDict sg = 0)

Finish initialization after link has been read.

Parameters
sgAssociated store.

This should be called after a link has been read by root in order to set the proxy pointer. Returns true.

If sg is 0, then we use the global default store.

Friends And Related Function Documentation

◆ ElementLinkBase_test

friend class ElementLinkBase_test
friend

For regression testing.

Definition at line 495 of file AthLinks/ElementLinkBase.h.

Member Data Documentation

◆ INVALID [1/2]

constexpr uint32_t ElementLinkBase::INVALID = static_cast<uint32_t> (-1)
staticconstexprprivate

Value to mark a default index.

Definition at line 27 of file A/AthLinks/ElementLinkBase.h.

◆ INVALID [2/2]

const uint32_t ElementLinkBase::INVALID = static_cast<uint32_t> (-1)
staticprivate

Value to mark an invalid index.

Definition at line 62 of file AthLinks/ElementLinkBase.h.

◆ m_element

CxxUtils::CachedPointer<void> ElementLinkBase::m_element
private

Transient.

Definition at line 509 of file AthLinks/ElementLinkBase.h.

◆ m_isDirectIO

bool ElementLinkBase::m_isDirectIO
protected

A transient variable signalling when direct I/O is happening.

This flag is used exclusively by the ElementLink<>::toTransient() function to know when it should take the persistent data stored in this object into account. That function may be called in normal P->T conversions as well, in which case using the data from this class would just reset the object to its default state.

Definition at line 68 of file A/AthLinks/ElementLinkBase.h.

◆ m_persIndex [1/2]

uint32_t ElementLinkBase::m_persIndex
protected

Index of the referenced object in the container.

Definition at line 58 of file A/AthLinks/ElementLinkBase.h.

◆ m_persIndex [2/2]

stored_index_type ElementLinkBase::m_persIndex
private

The index of the element within the container for this link.

Definition at line 504 of file AthLinks/ElementLinkBase.h.

◆ m_persKey [1/2]

uint32_t ElementLinkBase::m_persKey
protected

Key/identifier of the referenced container.

Definition at line 56 of file A/AthLinks/ElementLinkBase.h.

◆ m_persKey [2/2]

SG::sgkey_t ElementLinkBase::m_persKey
private

The hashed key for this link.

Definition at line 501 of file AthLinks/ElementLinkBase.h.

◆ m_proxy

SG::DataProxyHolder ElementLinkBase::m_proxy
private

SG proxy for this link.

Definition at line 507 of file AthLinks/ElementLinkBase.h.


The documentation for this class was generated from the following files:
index
Definition: index.py:1
ElementLinkBase::toTransient
virtual bool toTransient()=0
Reset the object's internal cache.
ElementLinkBase::m_isDirectIO
bool m_isDirectIO
A transient variable signalling when direct I/O is happening.
Definition: A/AthLinks/ElementLinkBase.h:68
ElementLinkBase::INVALID
static const uint32_t INVALID
Value to mark an invalid index.
Definition: AthLinks/ElementLinkBase.h:62
ElementLinkBase::key
sgkey_t key() const
Return the SG key that we reference, as a hash.
ElementLinkBase::m_persIndex
stored_index_type m_persIndex
The index of the element within the container for this link.
Definition: AthLinks/ElementLinkBase.h:504
ElementLinkBase::m_persKey
SG::sgkey_t m_persKey
The hashed key for this link.
Definition: AthLinks/ElementLinkBase.h:501
ElementLinkBase::index
index_type index() const
Return the index of the link.