ATLAS Offline Software
|
Base class for elements of a container that can have aux data. More...
#include <AuxElement.h>
Inherits SG::ConstAuxElement.
Inherited by D3PDTest::Obj5, DMTest::AllocTest_v1, DMTest::C_v1, DMTest::CLinks_v1, DMTest::G_v1, DMTest::H_v1, DMTest::H_v2, DMTest::JVec_v1, DMTest::P_v1, DMTest::PLinks_v1, TrigNavTest::TestB, xAOD::AFPData_v1, xAOD::AFPSiHit_v1, xAOD::AFPSiHit_v2, xAOD::AFPSiHitsCluster_v1, xAOD::AFPToFHit_v1, xAOD::AFPToFTrack_v1, xAOD::AFPTrack_v1, xAOD::AFPTrack_v2, xAOD::AFPVertex_v1, xAOD::ALFAData_v1, xAOD::BCMRawData_v1, xAOD::BTagging_v1, xAOD::BTagVertex_v1, xAOD::BunchConf_v1, xAOD::CaloRings_v1, xAOD::CMMCPHits_v1, xAOD::CMMEtSums_v1, xAOD::CMMJetHits_v1, xAOD::CMMRoI_v1, xAOD::CMXCPHits_v1, xAOD::CMXCPTob_v1, xAOD::CMXEtSums_v1, xAOD::CMXJetHits_v1, xAOD::CMXJetTob_v1, xAOD::CMXRoI_v1, xAOD::CPMHits_v1, xAOD::CPMRoI_v1, xAOD::CPMTobRoI_v1, xAOD::CPMTower_v1, xAOD::CPMTower_v2, xAOD::CutBookkeeper_v1, xAOD::eFexEMRoI_v1, xAOD::eFexTauRoI_v1, xAOD::eFexTower_v1, xAOD::EmTauRoI_v1, xAOD::EmTauRoI_v2, xAOD::EnergySumRoI_v1, xAOD::EnergySumRoI_v2, xAOD::EventInfo_v1, xAOD::EventShape_v1, xAOD::ExampleElectron_v1, xAOD::FileMetaData_v1, xAOD::ForwardEventInfo_v1, xAOD::gFexGlobalRoI_v1, xAOD::gFexJetRoI_v1, xAOD::gFexTower_v1, xAOD::HIEventShape_v1, xAOD::HIEventShape_v2, xAOD::IParticle, xAOD::JEMEtSums_v1, xAOD::JEMEtSums_v2, xAOD::JEMHits_v1, xAOD::JEMRoI_v1, xAOD::JEMTobRoI_v1, xAOD::JetElement_v1, xAOD::JetElement_v2, xAOD::JetEtRoI_v1, xAOD::JetRoI_v1, xAOD::JetRoI_v2, xAOD::jFexFwdElRoI_v1, xAOD::jFexLRJetRoI_v1, xAOD::jFexMETRoI_v1, xAOD::jFexSRJetRoI_v1, xAOD::jFexSumETRoI_v1, xAOD::jFexTauRoI_v1, xAOD::jFexTower_v1, xAOD::L1TopoRawData_v1, xAOD::L1TopoSimResults_v1, xAOD::LumiBlockRange_v1, xAOD::MBTSModule_v1, xAOD::MissingET_v1, xAOD::MissingETAssociation_v1, xAOD::MissingETComponent_v1, xAOD::MuonRoI_v1, xAOD::MuonSegment_v1, xAOD::MuonSimHit_v1, xAOD::NRPCRDO_v1, xAOD::NSWMMTPRDO_v1, xAOD::NSWTPRDO_v1, xAOD::RingSet_v1, xAOD::RingSetConf_v1, xAOD::RODHeader_v1, xAOD::RODHeader_v2, xAOD::RoiDescriptorStore_v1, xAOD::SCTRawHitValidation_v1, xAOD::SlowMuon_v1, xAOD::SpacePoint_v1, xAOD::TrackJacobian_v1, xAOD::TrackMeasurement_v1, xAOD::TrackMeasurementValidation_v1, xAOD::TrackParameters_v1, xAOD::TrackParticleClusterAssociation_v1, xAOD::TrackState_v1, xAOD::TrackStateValidation_v1, xAOD::TrackSummary_v1, xAOD::TrackSurface_v1, xAOD::TrigBphys_v1, xAOD::TrigCaloCluster_v1, xAOD::TrigComposite_v1, xAOD::TrigDecision_v1, xAOD::TriggerMenu_v1, xAOD::TriggerMenuJson_v1, xAOD::TriggerTower_v1, xAOD::TrigHisto2D_v1, xAOD::TrigMissingET_v1, xAOD::TrigNavigation_v1, xAOD::TrigPassBits_v1, xAOD::TrigRingerRings_v1, xAOD::TrigRingerRings_v2, xAOD::TrigRNNOutput_v1, xAOD::TrigRNNOutput_v2, xAOD::TrigSpacePointCounts_v1, xAOD::TrigT2MbtsBits_v1, xAOD::TrigT2ZdcSignals_v1, xAOD::TrigTrackCounts_v1, xAOD::TrigVertexCounts_v1, xAOD::TruthEventBase_v1, xAOD::TruthMetaData_v1, xAOD::TruthVertex_v1, xAOD::UncalibratedMeasurement_v1, xAOD::Vertex_v1, and xAOD::ZdcModule_v1.
Public Types | |
using | TypelessConstAccessor = ConstAuxElement::TypelessConstAccessor |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
using | ConstAccessor = SG::ConstAccessor< T, ALLOC > |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
using | Accessor = SG::Accessor< T, ALLOC > |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
using | Decorator = SG::Decorator< T, ALLOC > |
Public Member Functions | |
AuxElement () | |
Default constructor. More... | |
AuxElement (SG::AuxVectorData *container, size_t index) | |
Constructor with explicit container / index. More... | |
AuxElement (const AuxElement &other) | |
Copy Constructor. More... | |
AuxElement & | operator= (const AuxElement &other) |
Assignment. More... | |
~AuxElement () | |
Destructor. More... | |
const SG::AuxVectorData * | container () const |
Return the container holding this element. More... | |
SG::AuxVectorData * | container () |
Return the container holding this element. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Accessor< T, ALLOC >::reference_type | auxdata (const std::string &name) |
Fetch an aux data variable, as a non-const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Accessor< T, ALLOC >::reference_type | auxdata (const std::string &name, const std::string &clsname) |
Fetch an aux data variable, as a non-const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Accessor< T, ALLOC >::const_reference_type | auxdata (const std::string &name) const |
Fetch an aux data variable, as a const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Accessor< T, ALLOC >::const_reference_type | auxdata (const std::string &name, const std::string &clsname) const |
Fetch an aux data variable, as a const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Accessor< T, ALLOC >::const_reference_type | auxdataConst (const std::string &name) const |
Fetch an aux data variable, as a const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Accessor< T, ALLOC >::const_reference_type | auxdataConst (const std::string &name, const std::string &clsname) const |
Fetch an aux data variable, as a const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED bool | isAvailable (const std::string &name, const std::string &clsname="") const |
Check if an aux variable is available for reading. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED bool | isAvailableWritable (const std::string &name, const std::string &clsname="") |
Check if an aux variable is available for writing. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED bool | isAvailableWritableAsDecoration (const std::string &name, const std::string &clsname="") const |
Check if an aux variable is available for writing as a decoration. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Decorator< T, ALLOC >::reference_type | auxdecor (const std::string &name) const |
Fetch an aux decoration, as a non-const reference. More... | |
template<class T , class ALLOC = AuxAllocator_t<T>> | |
XAOD_AUXDATA_DEPRECATED Decorator< T, ALLOC >::reference_type | auxdecor (const std::string &name, const std::string &clsname) const |
Fetch an aux decoration, as a non-const reference. More... | |
void | makePrivateStore () |
Create a new (empty) private store for this object. More... | |
template<class U1 > | |
void | makePrivateStore (const U1 &other) |
Create a new private store for this object and copy aux data. More... | |
template<class U1 > | |
void | makePrivateStore (const U1 *other) |
Create a new private store for this object and copy aux data. More... | |
void | releasePrivateStore () |
Release and free any private store associated with this object. More... | |
void | setStore (const SG::IConstAuxStore *store) |
Set the store associated with this object. More... | |
void | setStore (SG::IAuxStore *store) |
Set the store associated with this object. More... | |
void | setStore (const DataLink< SG::IConstAuxStore > &store) |
Set the store associated with this object. More... | |
void | setConstStore (const SG::IConstAuxStore *store) |
Synonym for setStore with IConstAuxStore . More... | |
void | setNonConstStore (SG::IAuxStore *store) |
Synonym for setStore with IAuxStore . More... | |
bool | usingPrivateStore () const |
Test to see if this object is currently using a private store. More... | |
bool | usingStandaloneStore () const |
Test to see if this object is currently using a standalone store. More... | |
const SG::IConstAuxStore * | getConstStore () const |
Return the current store, as a const interface. More... | |
SG::IAuxStore * | getStore () const |
Return the current store, as a non-const interface. More... | |
void | clearCache () |
Clear the cached aux data pointers. More... | |
const SG::auxid_set_t & | getAuxIDs () const |
Return a set of identifiers for existing data items for this object. More... | |
bool | hasStore () const |
Return true if this object has an associated store. More... | |
bool | hasNonConstStore () const |
Return true if this object has an associated non-const store. More... | |
bool | clearDecorations () const |
Clear all decorations. More... | |
bool | trackIndices () const |
Return true if index tracking is enabled for this object. More... | |
size_t | index () const |
Return the index of this element within its container. More... | |
size_t | index () const |
Return the index of this element within its container. More... | |
Static Public Attributes | |
static constexpr bool | supportsThinning = true |
Mark that this type supports thinning operations. More... | |
Protected Member Functions | |
bool | noPrivateData () const |
True if this element has no private data. More... | |
bool | havePrivateData () const |
True if this element currently has private data. More... | |
bool | hadPrivateData () const |
True if this element had private data before it was added to its current container. More... | |
Private Types | |
enum | PrivateStoreState : uint8_t { PrivateStoreState::NO_PRIVATE = 0, PrivateStoreState::HAVE_PRIVATE = 1, PrivateStoreState::HAD_PRIVATE = 2 } |
The current private data state. More... | |
Private Member Functions | |
void | releasePrivateStoreForDtor () |
Out-of-line portion of destructor. More... | |
void | setIndex (size_t index, SG::AuxVectorData *container) |
Set the index/container for this element. More... | |
bool | setIndexPrivate (size_t index, SG::AuxVectorData *container) |
Set the index/container for this element. More... | |
void | makePrivateStore1 (const void *) |
Create a new private store for this object and copy aux data. More... | |
void | makePrivateStore1 (const AuxElement *other) |
Create a new private store for this object and copy aux data. More... | |
AuxElementStandaloneData * | setStore1 (const SG::IConstAuxStore *store) |
Set the store associated with this object. More... | |
void | clearAux () |
Clear all aux data associated with this element. More... | |
void | copyAux (const ConstAuxElement &other) |
Copy aux data from another object. More... | |
void | setNoPrivateData () |
Record that this element does not have private data. More... | |
void | setHavePrivateData () |
Record that this element currently has private data. More... | |
void | setHadPrivateData () |
Record that this element used to have private data. More... | |
Private Attributes | |
const SG::AuxVectorData * | m_container |
The container of which this object is an element. More... | |
size_t | m_index |
The index of this element within its container. More... | |
PrivateStoreState | m_privateStoreState |
Friends | |
class | SG::ConstAuxElement |
class | SG::AuxVectorBase |
class | SG::AuxVectorBase_test |
Base class for elements of a container that can have aux data.
Classes that want to have associated auxiliary data should derive from this class. (It is also possible to use this class directly, if you want a container that only stores auxiliary data.)
The first thing that happens when you derive from AuxElement
is that when an object is inserted into a DataVector
, the vector will maintain information in the object telling were it is within the vector. For example:
As long as you don't use DataVector::stdcont
or use unsafe casts, DataVector
will correctly maintain this information.
When an object deriving from AuxElement
is in a DataVector
it may have auxiliary data associated with it; that is, named data objects of arbitrary type. The recommended way of accessing auxiliary data is through the Accessor
and ConstAccessor
classes, which cache the lookup between the aux data item name and its internal representation. The difference between these two is that ConstAccessor
allows only const access to the element, while Accessor
, which derives from it, allows non-const access as well. A given name must always have the same type, no matter where it is used (even across different classes); otherwise, an exception will be thrown. To help prevent conflicts between different classes, aux data item names may be optionally qualified with a class name. Here's an example of using ConstAccessor:
The auxdata
methods can be used as a shortcut for this, but that's not recommended for anything for which performance is an issue.
You can also define getters/setters in your class:
In addition, one sometimes wants to add additional auxiliary data to an existing const container; for example, after a container has been retrieved from StoreGate. This is called ‘decoration’, and is handled by the Decorator
object, which is much like Accessor
and ConstAccessor
. The difference is that Decorator
can take a const container and return a non-const, modifiable reference. If the container has been locked by calling StoreGateSvc::setConst
, then this is allowed only if this is a new auxiliary item, in which case it is marked as a decoration, or if it is already marked as a decoration. This prevents changing existing variables in a locked container. An auxdecor
method is also available, analogous to auxdata
.
In addition to the above, the class TypelessConstAccessor
is a non-templated class that allows access to auxiliary data items directly as a void *
. This is useful for code which operates on auxiliary data generically; it shouldn't really be used in other contexts.
Normally, an object can have auxiliary data only when it is part of a container. But sometimes it is useful to be able to associate aux data with an object before it has been added to a container. You can enable this by creating a ‘private store’ for the object with makePrivateStore
. This can optionally take an argument from which aux data should be copied. (Using a private store adds overhead, which is why it is not enabled by default.) Example:
When an object with a private store is added to a container, the aux data is copied to the container and the private store is released. However, the fact that we had a private store is remembered; if the object is later removed from the container, the private store will be remade, and the aux data will be copied back from the container to the private store. To explicitly release the private store (so that it won't come back automatically), call releasePrivateStore
.
If you add makePrivateStore
calls to the constructors of your class, then you should be able to treat aux data as if it were part of the object itself; the required copying will be handled automatically.
The SG::AuxElementComplete
template class may be helpful in setting this up.
It is also possible to associate one of these objects with an external aux data store. This is the ‘standalone’ mode. To do this, use the setStore
methods, exactly as you would for a container that has aux data. setStore
will throw an exception if the object is a member of a container or has a private store.
This class should not have any virtual methods (to avoid forcing derived classes to have a vtable).
Definition at line 466 of file AuxElement.h.
using SG::AuxElement::Accessor = SG::Accessor<T, ALLOC> |
Definition at line 548 of file AuxElement.h.
using SG::AuxElement::ConstAccessor = SG::ConstAccessor<T, ALLOC> |
Definition at line 545 of file AuxElement.h.
using SG::AuxElement::Decorator = SG::Decorator<T, ALLOC> |
Definition at line 551 of file AuxElement.h.
Definition at line 542 of file AuxElement.h.
|
strongprivateinherited |
The current private data state.
Enumerator | |
---|---|
NO_PRIVATE | |
HAVE_PRIVATE | |
HAD_PRIVATE |
Definition at line 131 of file IAuxElement.h.
SG::AuxElement::AuxElement | ( | ) |
Default constructor.
SG::AuxElement::AuxElement | ( | SG::AuxVectorData * | container, |
size_t | index | ||
) |
Constructor with explicit container / index.
container | Container of which this element will be a part. |
index | Index of this element within the container. |
This does not make any changes to aux data.
SG::AuxElement::AuxElement | ( | const AuxElement & | other | ) |
Copy Constructor.
other | Object being copied. |
We do not copy the container/index — the new object is not yet in a container!
In the case of constructing an object with a private store, makePrivateStore
will take care of copying the aux data.
SG::AuxElement::~AuxElement | ( | ) |
Destructor.
Any private store is deleted.
XAOD_AUXDATA_DEPRECATED Accessor<T, ALLOC>::reference_type SG::AuxElement::auxdata | ( | const std::string & | name | ) |
Fetch an aux data variable, as a non-const reference.
name | Name of the aux variable. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
XAOD_AUXDATA_DEPRECATED Accessor<T, ALLOC>::const_reference_type SG::AuxElement::auxdata | ( | const std::string & | name | ) | const |
Fetch an aux data variable, as a const reference.
name | Name of the aux variable. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
or ConstAccessor
classes.
XAOD_AUXDATA_DEPRECATED Accessor<T, ALLOC>::reference_type SG::AuxElement::auxdata | ( | const std::string & | name, |
const std::string & | clsname | ||
) |
Fetch an aux data variable, as a non-const reference.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
XAOD_AUXDATA_DEPRECATED Accessor<T, ALLOC>::const_reference_type SG::AuxElement::auxdata | ( | const std::string & | name, |
const std::string & | clsname | ||
) | const |
Fetch an aux data variable, as a const reference.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
or ConstAccessor
classes.
XAOD_AUXDATA_DEPRECATED Accessor<T, ALLOC>::const_reference_type SG::AuxElement::auxdataConst | ( | const std::string & | name | ) | const |
Fetch an aux data variable, as a const reference.
name | Name of the aux variable. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the ConstAccessor
class.
XAOD_AUXDATA_DEPRECATED Accessor<T, ALLOC>::const_reference_type SG::AuxElement::auxdataConst | ( | const std::string & | name, |
const std::string & | clsname | ||
) | const |
Fetch an aux data variable, as a const reference.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the ConstAccessor
class.
XAOD_AUXDATA_DEPRECATED Decorator<T, ALLOC>::reference_type SG::AuxElement::auxdecor | ( | const std::string & | name | ) | const |
Fetch an aux decoration, as a non-const reference.
name | Name of the aux variable. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
If the container is locked, this will allow fetching only variables that do not yet exist (in which case they will be marked as decorations) or variables already marked as decorations.
XAOD_AUXDATA_DEPRECATED Decorator<T, ALLOC>::reference_type SG::AuxElement::auxdecor | ( | const std::string & | name, |
const std::string & | clsname | ||
) | const |
Fetch an aux decoration, as a non-const reference.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
If the container is locked, this will allow fetching only variables that do not yet exist (in which case they will be marked as decorations) or variables already marked as decorations.
|
private |
Clear all aux data associated with this element.
If this object has no associated store, this does nothing. If the associated aux data is const, this throws ExcConstAuxData
.
Definition at line 535 of file AuxElement.cxx.
void SG::AuxElement::clearCache | ( | ) |
Clear the cached aux data pointers.
You should call this any time something changes in the aux store that could invalidate the vector pointers.
Definition at line 319 of file AuxElement.cxx.
bool SG::AuxElement::clearDecorations | ( | ) | const |
Clear all decorations.
Erase all decorations from an associated store, restoring the state to when lock
was called.
Returns true if there were any decorations that were cleared, false if the store did not contain any decorations.
Definition at line 385 of file AuxElement.cxx.
SG::AuxVectorData* SG::AuxElement::container | ( | ) |
Return the container holding this element.
const SG::AuxVectorData* SG::AuxElement::container | ( | ) | const |
Return the container holding this element.
|
private |
Copy aux data from another object.
other | The object from which to copy. |
If this object has no associated store, this does nothing. If the associated aux data is const, this throws ExcConstAuxData
.
All aux data items from other
are copied to this object. Any aux data items associated with this object that are not present in other
are cleared. (If other
has no aux data, then all aux data items for this object are cleared.)
Definition at line 561 of file AuxElement.cxx.
const SG::auxid_set_t & SG::AuxElement::getAuxIDs | ( | ) | const |
Return a set of identifiers for existing data items for this object.
If this object has a private or standalone store, then information from that will be returned. Otherwise, if this element is part of a container, then information for the container will be returned. Otherwise, return an empty set.
Definition at line 335 of file AuxElement.cxx.
const SG::IConstAuxStore * SG::AuxElement::getConstStore | ( | ) | const |
Return the current store, as a const interface.
This will be non-zero if either a const or non-const store is associated with this object. This will fetch either a private or standalone store.
Definition at line 284 of file AuxElement.cxx.
SG::IAuxStore * SG::AuxElement::getStore | ( | ) | const |
Return the current store, as a non-const interface.
This will be non-zero if a non-const store is associated with this object. This will fetch either a private or standalone store.
Definition at line 299 of file AuxElement.cxx.
|
protectedinherited |
True if this element had private data before it was added to its current container.
bool SG::AuxElement::hasNonConstStore | ( | ) | const |
Return true if this object has an associated non-const store.
This will be true for either a private or standalone store.
Definition at line 368 of file AuxElement.cxx.
bool SG::AuxElement::hasStore | ( | ) | const |
Return true if this object has an associated store.
This will be true for either a private or standalone store.
Definition at line 355 of file AuxElement.cxx.
|
protectedinherited |
True if this element currently has private data.
|
inherited |
Return the index of this element within its container.
size_t SG::IAuxElement::index |
Return the index of this element within its container.
Inherited from IAuxElement.
XAOD_AUXDATA_DEPRECATED bool SG::AuxElement::isAvailable | ( | const std::string & | name, |
const std::string & | clsname = "" |
||
) | const |
Check if an aux variable is available for reading.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
XAOD_AUXDATA_DEPRECATED bool SG::AuxElement::isAvailableWritable | ( | const std::string & | name, |
const std::string & | clsname = "" |
||
) |
Check if an aux variable is available for writing.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
XAOD_AUXDATA_DEPRECATED bool SG::AuxElement::isAvailableWritableAsDecoration | ( | const std::string & | name, |
const std::string & | clsname = "" |
||
) | const |
Check if an aux variable is available for writing as a decoration.
name | Name of the aux variable. |
clsname | The name of the associated class. May be blank. |
This method has to translate from the aux data name to the internal representation each time it is called. Using this method inside of loops is discouraged; instead use the Accessor
class.
void SG::AuxElement::makePrivateStore | ( | ) |
Create a new (empty) private store for this object.
ExcBadPrivateStore
will be thrown if this object is already associated with a store.
Definition at line 172 of file AuxElement.cxx.
void SG::AuxElement::makePrivateStore | ( | const U1 & | other | ) |
Create a new private store for this object and copy aux data.
other | The object from which aux data should be copied. |
ExcBadPrivateStore
will be thrown if this object is already associated with a store.
If other
is an object that has aux data, then those data will be copied; otherwise, nothing will be done.
void SG::AuxElement::makePrivateStore | ( | const U1 * | other | ) |
Create a new private store for this object and copy aux data.
other | The object from which aux data should be copied. |
ExcBadPrivateStore
will be thrown if this object is already associated with a store.
If other
is an object that has aux data, then those data will be copied; otherwise, nothing will be done.
|
private |
Create a new private store for this object and copy aux data.
other | The object from which aux data should be copied. |
ExcBadPrivateStore
will be thrown if this object is already associated with a store.
This overload handles the case where other
does have aux data.
Definition at line 521 of file AuxElement.cxx.
|
private |
Create a new private store for this object and copy aux data.
other | The object from which aux data should be copied. |
ExcBadPrivateStore
will be thrown if this object is already associated with a store.
This overload handles the case where other
does not have aux data.
|
protectedinherited |
True if this element has no private data.
AuxElement& SG::AuxElement::operator= | ( | const AuxElement & | other | ) |
Assignment.
other | The object from which we're assigning. |
We don't copy container/index, as assignment doesn't change where this object is. However, if we have aux data, then we copy aux data if we're copying from an object that also has it; otherwise, if we're copying from an object with no aux data, then we clear ours.
void SG::AuxElement::releasePrivateStore | ( | ) |
Release and free any private store associated with this object.
ExcBadPrivateStore
will be thrown if this object does not have a private store.
Definition at line 190 of file AuxElement.cxx.
|
private |
Out-of-line portion of destructor.
Delete a private store if we have one.
Definition at line 398 of file AuxElement.cxx.
void SG::AuxElement::setConstStore | ( | const SG::IConstAuxStore * | store | ) |
Synonym for setStore
with IConstAuxStore
.
store | The new store. |
|
privateinherited |
Record that this element used to have private data.
|
privateinherited |
Record that this element currently has private data.
|
private |
Set the index/container for this element.
index | The index of this object within the container. |
container | The container holding this object. May be null if this object is being removed from a container. |
Usually this simply sets the index and container members of this object. However, in the case where this object has an associated private store, then we need to deal with releasing the store if the object is being added to a container, or making a new store if the object is being removed from a container.
|
private |
Set the index/container for this element.
index | The index of this object within the container. |
container | The container holding this object. May be null if this object is being removed from a container. |
This is called from setIndex
when we have a private store to deal with.
Definition at line 462 of file AuxElement.cxx.
void SG::AuxElement::setNonConstStore | ( | SG::IAuxStore * | store | ) |
Synonym for setStore
with IAuxStore
.
store | The new store. |
|
privateinherited |
Record that this element does not have private data.
void SG::AuxElement::setStore | ( | const DataLink< SG::IConstAuxStore > & | store | ) |
Set the store associated with this object.
store | The new store. |
If store is nonzero, this adds a standalone store to the object. The object must not be in a container and must not have a private store. If store is zero, this removes a standalone store.
store | Link to the new store. |
Definition at line 249 of file AuxElement.cxx.
void SG::AuxElement::setStore | ( | const SG::IConstAuxStore * | store | ) |
Set the store associated with this object.
store | The new store. |
If store is nonzero, this adds a standalone store to the object. The object must not be in a container and must not have a private store. If store is zero, this removes a standalone store.
Definition at line 221 of file AuxElement.cxx.
void SG::AuxElement::setStore | ( | SG::IAuxStore * | store | ) |
Set the store associated with this object.
store | The new store. |
If store is nonzero, this adds a standalone store to the object. The object must not be in a container and must not have a private store. If store is zero, this removes a standalone store.
Definition at line 237 of file AuxElement.cxx.
|
private |
Set the store associated with this object.
store | The new store. |
Helper for setStore
. Creates the AuxElementStandaloneData
object if needed and returns it.
store | The new store. |
Helper for setStore
. Creates the @x AuxElementStandaloneData object if needed and returns it.
Definition at line 418 of file AuxElement.cxx.
bool SG::AuxElement::trackIndices | ( | ) | const |
Return true if index tracking is enabled for this object.
Always returns true. Included here to be consistent with AuxVectorBase when standalone objects may be used as template parameters.
bool SG::AuxElement::usingPrivateStore | ( | ) | const |
Test to see if this object is currently using a private store.
Definition at line 260 of file AuxElement.cxx.
bool SG::AuxElement::usingStandaloneStore | ( | ) | const |
Test to see if this object is currently using a standalone store.
Test to see if this object is currently using a private store.
Definition at line 270 of file AuxElement.cxx.
|
friend |
Definition at line 925 of file AuxElement.h.
|
friend |
Definition at line 926 of file AuxElement.h.
|
friend |
Definition at line 924 of file AuxElement.h.
|
privateinherited |
The container of which this object is an element.
Should be null if this object is not within a container, except that it may also point at a private store.
Definition at line 324 of file AuxElement.h.
|
privateinherited |
The index of this element within its container.
Should be 0 if this object is not within a container.
Definition at line 128 of file IAuxElement.h.
|
privateinherited |
Definition at line 137 of file IAuxElement.h.
|
staticconstexpr |
Mark that this type supports thinning operations.
See AthContainers/supportsThinning.h and AthenaPoolCnvSvc/T_AthenaPoolCnv.h. Helps guide which pool converter template will be used. If false, the default pool converter will be used rather than the aux store-specific one. Ordinary xAOD type should not touch this, but may be overridden in a derived class to handle certain special cases.
Definition at line 920 of file AuxElement.h.