ATLAS Offline Software
Public Types | Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
xAOD::AuxContainerBase Class Referenceabstract

Common base class for the auxiliary containers. More...

#include <AuxContainerBase.h>

Inherits SG::IAuxStore, SG::IAuxStoreIO, SG::IAuxStoreHolder, and ILockable.

Inherited by DMTest::AllocTestAuxContainer_v1, DMTest::CAuxContainer_v1, DMTest::CLinksAuxContainer_v1, DMTest::GAuxContainer_v1, DMTest::HAuxContainer_v1, DMTest::HAuxContainer_v2, DMTest::JVecAuxContainer_v1, DMTest::PAuxContainer_v1, DMTest::PLinksAuxContainer_v1, TrigNavTest::TestAuxB, xAOD::AFPDataAuxContainer_v1, xAOD::AFPProtonAuxContainer_v1, xAOD::AFPSiHitAuxContainer_v1, xAOD::AFPSiHitAuxContainer_v2, xAOD::AFPSiHitsClusterAuxContainer_v1, xAOD::AFPToFHitAuxContainer_v1, xAOD::AFPToFTrackAuxContainer_v1, xAOD::AFPTrackAuxContainer_v1, xAOD::AFPTrackAuxContainer_v2, xAOD::AFPVertexAuxContainer_v1, xAOD::ALFADataAuxContainer_v1, xAOD::BCMRawDataAuxContainer_v1, xAOD::BTaggingAuxContainer_v1, xAOD::BTaggingAuxContainer_v2, xAOD::BTaggingTrigAuxContainer_v1, xAOD::BTagVertexAuxContainer_v1, xAOD::BunchConfAuxContainer_v1, xAOD::CaloClusterAuxContainer_v1, xAOD::CaloClusterAuxContainer_v2, xAOD::CaloClusterTrigAuxContainer_v1, xAOD::CaloRingsAuxContainer_v1, xAOD::CaloTowerAuxContainer_v1, xAOD::CMMCPHitsAuxContainer_v1, xAOD::CMMEtSumsAuxContainer_v1, xAOD::CMMJetHitsAuxContainer_v1, xAOD::CMXCPHitsAuxContainer_v1, xAOD::CMXCPTobAuxContainer_v1, xAOD::CMXEtSumsAuxContainer_v1, xAOD::CMXJetHitsAuxContainer_v1, xAOD::CMXJetTobAuxContainer_v1, xAOD::CMXRoIAuxContainer_v1, xAOD::CompositeParticleAuxContainer_v1, xAOD::CPMHitsAuxContainer_v1, xAOD::CPMRoIAuxContainer_v1, xAOD::CPMTobRoIAuxContainer_v1, xAOD::CPMTowerAuxContainer_v1, xAOD::CPMTowerAuxContainer_v2, xAOD::CutBookkeeperAuxContainer_v1, xAOD::DiTauJetAuxContainer_v1, xAOD::eFexEMRoIAuxContainer_v1, xAOD::eFexTauRoIAuxContainer_v1, xAOD::eFexTowerAuxContainer_v1, xAOD::EgammaAuxContainer_v1, xAOD::ElectronAuxContainer_v2, xAOD::ElectronAuxContainer_v3, xAOD::ElectronTrigAuxContainer_v1, xAOD::EmTauRoIAuxContainer_v1, xAOD::EmTauRoIAuxContainer_v2, xAOD::EventInfoAuxContainer_v1, xAOD::ExampleElectronAuxContainer_v1, xAOD::FlowElementAuxContainer_v1, xAOD::ForwardEventInfoAuxContainer_v1, xAOD::GBlockAuxContainer_v1, xAOD::gFexGlobalRoIAuxContainer_v1, xAOD::gFexJetRoIAuxContainer_v1, xAOD::gFexTowerAuxContainer_v1, xAOD::HGTDClusterAuxContainer_v1, xAOD::HIEventShapeAuxContainer_v1, xAOD::HIEventShapeAuxContainer_v2, xAOD::JEMEtSumsAuxContainer_v1, xAOD::JEMEtSumsAuxContainer_v2, xAOD::JEMHitsAuxContainer_v1, xAOD::JEMRoIAuxContainer_v1, xAOD::JEMTobRoIAuxContainer_v1, xAOD::JetAuxContainer_v1, xAOD::JetElementAuxContainer_v1, xAOD::JetElementAuxContainer_v2, xAOD::JetRoIAuxContainer_v1, xAOD::JetRoIAuxContainer_v2, xAOD::jFexFwdElRoIAuxContainer_v1, xAOD::jFexLRJetRoIAuxContainer_v1, xAOD::jFexMETRoIAuxContainer_v1, xAOD::jFexSRJetRoIAuxContainer_v1, xAOD::jFexSumETRoIAuxContainer_v1, xAOD::jFexTauRoIAuxContainer_v1, xAOD::jFexTowerAuxContainer_v1, xAOD::JGTowerAuxContainer_v1, xAOD::L1TopoRawDataAuxContainer_v1, xAOD::L1TopoSimResultsAuxContainer_v1, xAOD::L2CombinedMuonAuxContainer_v1, xAOD::L2IsoMuonAuxContainer_v1, xAOD::L2StandAloneMuonAuxContainer_v1, xAOD::L2StandAloneMuonAuxContainer_v2, xAOD::LumiBlockRangeAuxContainer_v1, xAOD::MBTSModuleAuxContainer_v1, xAOD::MdtDriftCircleAuxContainer_v1, xAOD::MdtTwinDriftCircleAuxContainer_v1, xAOD::MissingETAuxAssociationMap_v1, xAOD::MissingETAuxAssociationMap_v2, xAOD::MissingETAuxComponentMap_v1, xAOD::MissingETAuxContainer_v1, xAOD::MMClusterAuxContainer_v1, xAOD::MuonAuxContainer_v1, xAOD::MuonAuxContainer_v2, xAOD::MuonAuxContainer_v3, xAOD::MuonAuxContainer_v4, xAOD::MuonAuxContainer_v5, xAOD::MuonRoIAuxContainer_v1, xAOD::MuonSegmentAuxContainer_v1, xAOD::MuonSimHitAuxContainer_v1, xAOD::NeutralParticleAuxContainer_v1, xAOD::NRPCRDOAuxContainer_v1, xAOD::NSWMMTPRDOAuxContainer_v1, xAOD::NSWTPRDOAuxContainer_v1, xAOD::ParticleAuxContainer_v1, xAOD::PFOAuxContainer_v1, xAOD::PhotonAuxContainer_v2, xAOD::PhotonAuxContainer_v3, xAOD::PhotonTrigAuxContainer_v1, xAOD::PixelClusterAuxContainer_v1, xAOD::RingSetAuxContainer_v1, xAOD::RingSetConfAuxContainer_v1, xAOD::RODHeaderAuxContainer_v1, xAOD::RODHeaderAuxContainer_v2, xAOD::RpcStrip2DAuxContainer_v1, xAOD::RpcStripAuxContainer_v1, xAOD::SCTRawHitValidationAuxContainer_v1, xAOD::SlowMuonAuxContainer_v1, xAOD::SpacePointAuxContainer_v1, xAOD::sTgcPadAuxContainer_v1, xAOD::sTgcStripAuxContainer_v1, xAOD::sTgcWireAuxContainer_v1, xAOD::StripClusterAuxContainer_v1, xAOD::TauJetAuxContainer_v1, xAOD::TauJetAuxContainer_v2, xAOD::TauJetAuxContainer_v3, xAOD::TauTrackAuxContainer_v1, xAOD::TgcStripAuxContainer_v1, xAOD::TrackCaloClusterAuxContainer_v1, xAOD::TrackJacobianAuxContainer_v1, xAOD::TrackMeasurementAuxContainer_v1, xAOD::TrackMeasurementValidationAuxContainer_v1, xAOD::TrackParametersAuxContainer_v1, xAOD::TrackParticleAuxContainer_v1, xAOD::TrackParticleAuxContainer_v2, xAOD::TrackParticleAuxContainer_v3, xAOD::TrackParticleAuxContainer_v4, xAOD::TrackParticleAuxContainer_v5, xAOD::TrackParticleClusterAssociationAuxContainer_v1, xAOD::TrackStateAuxContainer_v1, xAOD::TrackStateValidationAuxContainer_v1, xAOD::TrackSummaryAuxContainer_v1, xAOD::TrackSurfaceAuxContainer_v1, xAOD::TrigBphysAuxContainer_v1, xAOD::TrigCaloClusterAuxContainer_v1, xAOD::TrigCompositeAuxContainer_v2, xAOD::TrigElectronAuxContainer_v1, xAOD::TrigEMClusterAuxContainer_v2, xAOD::TriggerMenuAuxContainer_v1, xAOD::TriggerMenuJsonAuxContainer_v1, xAOD::TriggerTowerAuxContainer_v1, xAOD::TriggerTowerAuxContainer_v2, xAOD::TrigHisto2DAuxContainer_v1, xAOD::TrigMissingETAuxContainer_v1, xAOD::TrigPassBitsAuxContainer_v1, xAOD::TrigPhotonAuxContainer_v1, xAOD::TrigRingerRingsAuxContainer_v1, xAOD::TrigRingerRingsAuxContainer_v2, xAOD::TrigRNNOutputAuxContainer_v1, xAOD::TrigRNNOutputAuxContainer_v2, xAOD::TrigSpacePointCountsAuxContainer_v1, xAOD::TrigT2MbtsBitsAuxContainer_v1, xAOD::TrigT2ZdcSignalsAuxContainer_v1, xAOD::TrigTrackCountsAuxContainer_v1, xAOD::TrigVertexCountsAuxContainer_v1, xAOD::TruthEventAuxContainer_v1, xAOD::TruthMetaDataAuxContainer_v1, xAOD::TruthParticleAuxContainer_v1, xAOD::TruthPileupEventAuxContainer_v1, xAOD::TruthVertexAuxContainer_v1, xAOD::VertexAuxContainer_v1, xAOD::ZdcModuleAuxContainer_v1, and xAOD::ZdcModuleAuxContainer_v2.

Collaboration diagram for xAOD::AuxContainerBase:

Public Types

typedef SG::auxid_t auxid_t
 The aux ID type definition. More...
 
typedef SG::auxid_set_t auxid_set_t
 The aux ID set type definition. More...
 
template<class T , class ALLOC = std::allocator<T>>
using AuxVariable_t = std::vector< T, ALLOC >
 Declare how to wrap variables for this sort of base. More...
 
template<class T , class ALLOC = std::allocator<T>>
using LinkedVariable_t = AuxVariable_t< T, ALLOC >
 
enum  AuxStoreType { AST_ObjectStore = 0, AST_ContainerStore = 1 }
 Type of the auxiliary store. More...
 

Public Member Functions

 AuxContainerBase (bool allowDynamicVars=true)
 Default constructor. More...
 
 AuxContainerBase (std::pmr::memory_resource *memResource, bool allowDynamicVars=true)
 Passing in a memory resource. More...
 
 AuxContainerBase (const AuxContainerBase &parent)
 Copy constructor. More...
 
 AuxContainerBase (SG::IAuxStore *store, std::pmr::memory_resource *memResource=nullptr)
 Constructor receiving a "dynamic auxiliary store". More...
 
 ~AuxContainerBase ()
 Destructor. More...
 
AuxContainerBaseoperator= (const AuxContainerBase &rhs)
 Assignment operator. More...
 
template<typename T , typename ALLOC >
auxid_t getAuxID (const std::string &name, std::vector< T, ALLOC > &, SG::AuxVarFlags flags=SG::AuxVarFlags::None, const SG::auxid_t linkedVariable=SG::null_auxid)
 Get the auxiliary ID for one of the persistent variables. More...
 
template<typename T >
auxid_t getAuxID (const std::string &name, SG::PackedContainer< T > &, SG::AuxVarFlags flags=SG::AuxVarFlags::None, const SG::auxid_t linkedVariable=SG::null_auxid)
 Get the auxiliary ID for one of the persistent variables. More...
 
template<typename T , typename ALLOC >
void regAuxVar (auxid_t auxid, const std::string &name, std::vector< T, ALLOC > &vec)
 Register one of the persistent variables internally. More...
 
template<typename T >
void regAuxVar (auxid_t auxid, const std::string &name, SG::PackedContainer< T > &vec)
 Register one of the persistent variables internally. More...
 
virtual const void * getData (SG::auxid_t auxid) const=0
 Pick up the const version from the base class. More...
 
virtual bool insertMove (size_t pos, IAuxStore &other, const SG::auxid_set_t &ignore=SG::auxid_set_t())=0
 Move all elements from other to this store. More...
 
virtual const IAuxTypeVector * linkedVector (SG::auxid_t) const
 Return interface for a linked variable. More...
 

Static Public Attributes

static constexpr bool supportsThinning = true
 Mark that this type supports thinning operations. More...
 

Private Types

typedef AthContainers_detail::mutex mutex_t
 Mutex for multithread synchronization. More...
 
typedef AthContainers_detail::lock_guard< mutex_tguard_t
 

Private Member Functions

template<typename ELT , typename CONT >
void regAuxVar1 (auxid_t auxid, const std::string &name, CONT &vec)
 Common code between regAuxVar cases. More...
 

Private Attributes

auxid_set_t m_auxids
 Internal list of all available variables. More...
 
std::vector< SG::IAuxTypeVector * > m_vecs
 Internal list of all managed variables. More...
 
SG::IAuxStorem_store
 Internal dynamic auxiliary store object. More...
 
SG::IAuxStoreIOm_storeIO
 The IO interface to the internal auxiliary store. More...
 
bool m_ownsStore
 Flag deciding if the object owns the dynamic store or not. More...
 
bool m_locked
 Has the container been locked? More...
 
mutex_t m_mutex
 
std::string m_name
 Name of the container in memory. Set externally. More...
 
CxxUtils::CachedPointer< std::pmr::memory_resource > m_memResource ATLAS_THREAD_SAFE
 Memory resource to use for this container. More...
 

Friends

class ::xAODAuxContainerBaseCnv
 

Detailed Description

Common base class for the auxiliary containers.

To make the development of auxiliary containers simpler, they can all inherit from this one class. Then all they need to do is just to declare their data members, everything else is taken care of by this transient base class.

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
793737
Date
2017-01-24 21:11:10 +0100 (Tue, 24 Jan 2017)

Definition at line 53 of file AuxContainerBase.h.

Member Typedef Documentation

◆ auxid_set_t

The aux ID set type definition.

Definition at line 65 of file AuxContainerBase.h.

◆ auxid_t

The aux ID type definition.

Definition at line 63 of file AuxContainerBase.h.

◆ AuxVariable_t

template<class T , class ALLOC = std::allocator<T>>
using xAOD::AuxContainerBase::AuxVariable_t = std::vector<T, ALLOC>

Declare how to wrap variables for this sort of base.

Definition at line 195 of file AuxContainerBase.h.

◆ guard_t

typedef AthContainers_detail::lock_guard< mutex_t > xAOD::AuxContainerBase::guard_t
private

Definition at line 247 of file AuxContainerBase.h.

◆ LinkedVariable_t

template<class T , class ALLOC = std::allocator<T>>
using xAOD::AuxContainerBase::LinkedVariable_t = AuxVariable_t<T, ALLOC>

Definition at line 197 of file AuxContainerBase.h.

◆ mutex_t

typedef AthContainers_detail::mutex xAOD::AuxContainerBase::mutex_t
private

Mutex for multithread synchronization.

Definition at line 246 of file AuxContainerBase.h.

Member Enumeration Documentation

◆ AuxStoreType

Type of the auxiliary store.

In the xAOD EDM we use auxiliary store objects in some cases to describe a single object, and in most cases to describe a container of objects. This enumeration declares which type the object implementing this interface is.

Enumerator
AST_ObjectStore 

The store describes a single object.

AST_ContainerStore 

The store describes a container.

Definition at line 66 of file IAuxStoreHolder.h.

66  {
67  AST_ObjectStore = 0,
69  };

Constructor & Destructor Documentation

◆ AuxContainerBase() [1/4]

xAOD::AuxContainerBase::AuxContainerBase ( bool  allowDynamicVars = true)

Default constructor.

Definition at line 31 of file AuxContainerBase.cxx.

32  : AuxContainerBase( nullptr, allowDynamicVars ) {
33  }

◆ AuxContainerBase() [2/4]

xAOD::AuxContainerBase::AuxContainerBase ( std::pmr::memory_resource *  memResource,
bool  allowDynamicVars = true 
)

Passing in a memory resource.

Definition at line 35 of file AuxContainerBase.cxx.

37  : SG::IAuxStore(),
38  m_auxids(), m_vecs(), m_store( nullptr ), m_storeIO( nullptr ),
39  m_ownsStore( true ),
40  m_locked( false ),
41  m_name( "UNKNOWN" ),
42  m_memResource( memResource ){
43 
44  if( allowDynamicVars ) {
46  m_storeIO = dynamic_cast< SG::IAuxStoreIO* >( m_store );
47  }
48  }

◆ AuxContainerBase() [3/4]

xAOD::AuxContainerBase::AuxContainerBase ( const AuxContainerBase parent)

Copy constructor.

This is an interesting one.

The internal variables of AuxContainerBase are set up by the derived class(es) at construction. So, this internal state is not to be copied!

However, since the derived classes (the contents of their regular members) are allowed to be copied, let's not make this constructor private.

Definition at line 58 of file AuxContainerBase.cxx.

59  : SG::IAuxStore(),
60  m_auxids(), m_vecs(), m_store( nullptr ), m_storeIO( nullptr ),
61  m_ownsStore( true ),
62  m_locked( false ),
63  m_memResource( parent.m_memResource )
64  {
65  // Keep the source unmutable during copy
66  guard_t guard( parent.m_mutex );
67  m_name = parent.m_name;
68 
69  // Unfortunately the dynamic variables can not be copied this easily...
70  if( parent.m_store ) {
71  m_ownsStore = false;
72  // cppcheck-suppress copyCtorPointerCopying
73  m_store = parent.m_store;
74  m_storeIO = dynamic_cast< SG::IAuxStoreIO* >( m_store );
76  }
77  }

◆ AuxContainerBase() [4/4]

xAOD::AuxContainerBase::AuxContainerBase ( SG::IAuxStore store,
std::pmr::memory_resource *  memResource = nullptr 
)

Constructor receiving a "dynamic auxiliary store".

This constructor is used to wrap another object that is stored in StoreGate, and hence we should not take ownership of.

Parameters
storeAnother store that should be wrapped, but not owned

Definition at line 84 of file AuxContainerBase.cxx.

86  : SG::IAuxStore(),
87  m_auxids(), m_vecs(),
88  m_store( store ),
89  m_storeIO( nullptr ), m_ownsStore( false ),
90  m_locked( false),
91  m_name( "UNKNOWN" ),
92  m_memResource( memResource ){
93 
94  m_storeIO = dynamic_cast< SG::IAuxStoreIO* >( m_store );
95  if( m_store ) {
97  }
98  }

◆ ~AuxContainerBase()

xAOD::AuxContainerBase::~AuxContainerBase ( )

Destructor.

Definition at line 100 of file AuxContainerBase.cxx.

100  {
101 
104  for( ; itr != end; ++itr ) {
105  if( ! *itr ) continue;
106  delete *itr;
107  }
108 
109  if( m_store && m_ownsStore ) delete m_store;
110  }

Member Function Documentation

◆ clearDecorations()

bool xAOD::AuxContainerBase::clearDecorations ( )
overridevirtual

Clear all decorations.

Implements SG::IConstAuxStore.

Definition at line 357 of file AuxContainerBase.cxx.

357  {
358 
359  // Guard against multi-threaded execution:
360  guard_t guard( m_mutex );
361 
362  // Clear the decorations from the dynamic store:
363  bool anycleared = false;
364  if( m_store ) {
365  anycleared = m_store->clearDecorations();
366  }
367  // Early exit if there were no decorations.
368  if (!anycleared) return false;
369 
370  // Construct the list of managed auxiliary variables from scratch after
371  // the cleanup:
373  for( auxid_t auxid = 0; auxid < m_vecs.size(); ++auxid ) {
374  if( m_vecs[ auxid ] ) {
375  ids.insert( auxid );
376  }
377  }
378  if( m_store ) {
379  ids.insert (m_store->getAuxIDs());
380  }
381  m_auxids = ids;
382 
383  return true;
384  }

◆ getAuxID() [1/2]

template<typename T >
auxid_t xAOD::AuxContainerBase::getAuxID ( const std::string &  name,
SG::PackedContainer< T > &  ,
SG::AuxVarFlags  flags = SG::AuxVarFlags::None,
const SG::auxid_t  linkedVariable = SG::null_auxid 
)

Get the auxiliary ID for one of the persistent variables.

◆ getAuxID() [2/2]

template<typename T , typename ALLOC >
auxid_t xAOD::AuxContainerBase::getAuxID ( const std::string &  name,
std::vector< T, ALLOC > &  ,
SG::AuxVarFlags  flags = SG::AuxVarFlags::None,
const SG::auxid_t  linkedVariable = SG::null_auxid 
)

Get the auxiliary ID for one of the persistent variables.

◆ getAuxIDs()

const AuxContainerBase::auxid_set_t & xAOD::AuxContainerBase::getAuxIDs ( ) const
overridevirtual

Get the types(names) of variables handled by this container.

Implements SG::IConstAuxStore.

Definition at line 275 of file AuxContainerBase.cxx.

275  {
276 
277  // Return the full list of IDs:
278  return getWritableAuxIDs();
279  }

◆ getData() [1/3]

const void * xAOD::AuxContainerBase::getData ( auxid_t  auxid) const
overridevirtual

Get a pointer to a given array.

Implements SG::IConstAuxStore.

Definition at line 230 of file AuxContainerBase.cxx.

230  {
231 
232  const SG::IAuxTypeVector* v = getVector( auxid );
233  if( v ) {
234  return v->toPtr();
235  }
236  return nullptr;
237  }

◆ getData() [2/3]

void * xAOD::AuxContainerBase::getData ( auxid_t  auxid,
size_t  size,
size_t  capacity 
)
overridevirtual

Get a pointer to a given array, creating the array if necessary.

Implements SG::IAuxStore.

Definition at line 462 of file AuxContainerBase.cxx.

463  {
464 
465  // Guard against multi-threaded execution:
466  guard_t guard( m_mutex );
467 
468  if( ( auxid >= m_vecs.size() ) || ( ! m_vecs[ auxid ] ) ) {
469 
470  if( m_store ) {
471  void* result = m_store->getData( auxid, size, capacity );
472  if( result ) {
473  m_auxids.insert( auxid );
475  auxid_t linked_id = r.linkedVariable( auxid );
476  if (linked_id != SG::null_auxid) {
477  m_auxids.insert( linked_id );
478  }
479  }
480  return result;
481  } else {
482  std::cout << "ERROR xAOD::AuxContainerBase::getData "
483  << "Unknown variable ("
485  << ") requested" << std::endl;
486  return nullptr;
487  }
488  }
489  m_vecs[ auxid ]->reserve( capacity );
490  if (m_vecs[ auxid ]->size() < size) {
491  m_vecs[ auxid ]->resize( size );
492  }
493 
494  return m_vecs[ auxid ]->toPtr();
495  }

◆ getData() [3/3]

virtual const void* SG::IConstAuxStore::getData
inherited

Pick up the const version from the base class.

◆ getDecoration()

void * xAOD::AuxContainerBase::getDecoration ( auxid_t  auxid,
size_t  size,
size_t  capacity 
)
overridevirtual

Get a pointer to a given array, as a decoration.

Implements SG::IConstAuxStore.

Reimplemented in xAOD::EventInfoAuxContainer_v1.

Definition at line 300 of file AuxContainerBase.cxx.

301  {
302  {
303  // Guard against multi-threaded execution:
304  guard_t guard( m_mutex );
305 
306  // Check if we have it as a static variable:
307  if( ( auxid >= m_vecs.size() ) || ( ! m_vecs[ auxid ] ) ) {
308  // If not, but we have a dynamic store, push it in there:
309  if( m_store ) {
310  void* result = m_store->getDecoration( auxid, size, capacity );
311  if( result ) {
312  m_auxids.insert( auxid );
314  auxid_t linked_id = r.linkedVariable( auxid );
315  if (linked_id != SG::null_auxid) {
316  m_auxids.insert( linked_id );
317  }
318  }
319  return result;
320  }
321  // If we don't have a dynamic store, complain:
322  else {
323  std::cout << "ERROR xAOD::AuxContainerBase::getDecoration "
324  << "Can't provide variable "
326  << std::endl;
327  return nullptr;
328  }
329  }
330 
331  // If the container is locked, static variables can't be accessed this
332  // way:
333  if( m_locked ) {
334  throw SG::ExcStoreLocked( auxid );
335  }
336  }
337 
338  // If the container is not locked, then fall back on the normal accessor
339  // function:
340  return getData( auxid, size, capacity );
341  }

◆ getDecorIDs()

const AuxContainerBase::auxid_set_t & xAOD::AuxContainerBase::getDecorIDs ( ) const
overridevirtual

Get the types(names) of decorations handled by this container.

Implements SG::IConstAuxStore.

Definition at line 282 of file AuxContainerBase.cxx.

282  {
283 
284  if( m_store ) {
285  return m_store->getDecorIDs();
286  }
287  static const auxid_set_t empty;
288  return empty;
289  }

◆ getDynamicAuxIDs()

const AuxContainerBase::auxid_set_t & xAOD::AuxContainerBase::getDynamicAuxIDs ( ) const
overridevirtual

Get the types(names) of variables created dynamically.

Implements SG::IAuxStoreIO.

Definition at line 701 of file AuxContainerBase.cxx.

701  {
702 
703  // Guard against multi-threaded execution:
704  guard_t guard( m_mutex );
705 
706  // All the variables handled by the internal store are dynamic
707  // if such a store exists:
708  if( m_storeIO ) {
709  // I mean, all the variables. Not just the ones reported as dynamic
710  // by the internal object. Because the internal object may be something
711  // that was put into this one in order to achieve data slimming.
712  return m_store->getAuxIDs();
713  }
714  // In case we don't use an internal store, there are no dynamic
715  // variables:
716  static const auxid_set_t dummy (0);
717  return dummy;
718  }

◆ getIOData()

const void * xAOD::AuxContainerBase::getIOData ( auxid_t  auxid) const
overridevirtual

Get a pointer to the data being stored for one aux data item.

Implements SG::IAuxStoreIO.

Definition at line 659 of file AuxContainerBase.cxx.

659  {
660 
661  // Guard against multi-threaded execution:
662  guard_t guard( m_mutex );
663 
664  // If the variable is not static, look for it in the dynamic store:
665  if( ( auxid >= m_vecs.size() ) || ( ! m_vecs[ auxid ] ) ) {
666  if( m_storeIO ) {
667  return m_storeIO->getIOData( auxid );
668  } else {
669  std::cout << "ERROR xAOD::AuxContainerBase::getIOData "
670  << "Unknown variable ("
672  << ") requested" << std::endl;
673  return nullptr;
674  }
675  }
676 
677  // Update the statistics for this variable. The dynamic store registers
678  // its own variable accesses.
680 
681  return m_vecs[ auxid ]->toVector();
682  }

◆ getIOType()

const std::type_info * xAOD::AuxContainerBase::getIOType ( auxid_t  auxid) const
overridevirtual

Return the type of the data to be stored for one aux data item.

Implements SG::IAuxStoreIO.

Definition at line 684 of file AuxContainerBase.cxx.

684  {
685 
686  // Guard against multi-threaded execution:
687  guard_t guard( m_mutex );
688 
689  // If the variable is not static, ask the dynamic store:
690  if( ( auxid >= m_vecs.size() ) || ( ! m_vecs[ auxid ] ) ) {
691  if( m_storeIO ) {
692  return m_storeIO->getIOType( auxid );
693  }
694  }
695 
696  // Fall back on getting the information from the registry:
697  return SG::AuxTypeRegistry::instance().getVecType( auxid );
698  }

◆ getSelectedAuxIDs()

AuxContainerBase::auxid_set_t xAOD::AuxContainerBase::getSelectedAuxIDs ( ) const
overridevirtual

Get the IDs of the selected dynamic Aux variables (for writing)

Reimplemented from SG::IAuxStoreIO.

Definition at line 721 of file AuxContainerBase.cxx.

721  {
722 
723  // Guard against multi-threaded execution:
724  guard_t guard( m_mutex );
725 
726  // All the variables handled by the internal store are dynamic
727  // if such a store exists:
728  if( m_storeIO ) {
729  // I mean, all the variables. Not just the ones reported as dynamic
730  // by the internal object. Because the internal object may be something
731  // that was put into this one in order to achieve data slimming.
732  return m_store->getAuxIDs();
733  }
734 
735  // In case we don't use an internal store, there are no dynamic
736  // variables:
737  return auxid_set_t();
738  }

◆ getStore() [1/2]

const SG::IAuxStore * xAOD::AuxContainerBase::getStore ( ) const
overridevirtual

Implements SG::IAuxStoreHolder.

Definition at line 181 of file AuxContainerBase.cxx.

182  {
183  return m_store;
184  }

◆ getStore() [2/2]

SG::IAuxStore * xAOD::AuxContainerBase::getStore ( )
overridevirtual

Get the currently used internal store object.

Implements SG::IAuxStoreHolder.

Definition at line 154 of file AuxContainerBase.cxx.

155  {
156  return m_store;
157  }

◆ getStoreType()

virtual AuxStoreType xAOD::AuxContainerBase::getStoreType ( ) const
inlineoverridevirtual

Return the type of the store object.

Implements SG::IAuxStoreHolder.

Definition at line 92 of file AuxContainerBase.h.

92 { return AST_ContainerStore; }

◆ getVector()

const SG::IAuxTypeVector * xAOD::AuxContainerBase::getVector ( SG::auxid_t  auxid) const
finaloverridevirtual

Return vector interface for one aux data item.

Implements SG::IConstAuxStore.

Definition at line 239 of file AuxContainerBase.cxx.

239  {
240 
241  // Guard against multi-threaded execution:
242  guard_t guard( m_mutex );
243 
244  if( ( auxid >= m_vecs.size() ) || ( ! m_vecs[ auxid ] ) ) {
245  if( m_store ) {
246  const SG::IAuxTypeVector* result = m_store->getVector( auxid );
247  if( result ) {
248  auxid_set_t& auxids_nc ATLAS_THREAD_SAFE =
249  const_cast<auxid_set_t&> (m_auxids);
250  auxids_nc.insert( auxid );
252  auxid_t linked_id = r.linkedVariable( auxid );
253  if (linked_id != SG::null_auxid) {
254  auxids_nc.insert( linked_id );
255  }
256  }
257  return result;
258  } else {
259  std::cout << "ERROR xAOD::AuxContainerBase::getData "
260  << "Unknown variable ("
262  << ") requested" << std::endl;
263  return nullptr;
264  }
265  }
266 
267  // Update the statistics for this variable. The dynamic store registers
268  // its own variable accesses.
270 
271  return m_vecs[ auxid ];
272  }

◆ getWritableAuxIDs()

const AuxContainerBase::auxid_set_t & xAOD::AuxContainerBase::getWritableAuxIDs ( ) const
overridevirtual

Return a set of writable data identifiers.

Implements SG::IAuxStore.

Definition at line 498 of file AuxContainerBase.cxx.

498  {
499 
500  // Return the full list of known IDs. The constness of this object's
501  // members comes from the object being const or not.
502  return m_auxids;
503  }

◆ insertMove() [1/2]

bool xAOD::AuxContainerBase::insertMove ( size_t  pos,
IAuxStore &  other,
const SG::auxid_set_t ignore 
)
overridevirtual

Insert contents of another store via move.

Definition at line 584 of file AuxContainerBase.cxx.

586  {
587  // Guard against multi-threaded execution:
588  guard_t guard( m_mutex );
589 
590  // This operation is not allowed on a locked container:
591  if( m_locked ) {
592  throw SG::ExcStoreLocked( "insertMove" );
593  }
594 
595  bool nomove = true;
596  size_t other_size = other.size();
597 
598  SG::auxid_set_t ignore = ignore_in;
599 
600  // Do the operation on the static variables:
601  for (SG::auxid_t id : m_auxids) {
602  SG::IAuxTypeVector* v_dst = nullptr;
603  if (id < m_vecs.size())
604  v_dst = m_vecs[id];
605  // Skip linked vars --- they should be taken care of by the parent var.
606  if (v_dst && !v_dst->isLinked()) {
607  ignore.insert (id);
608  if (other.getData (id)) {
609  void* src_ptr = other.getData (id, other_size, other_size);
610  if (src_ptr) {
611  if (!v_dst->insertMove (pos, src_ptr, 0, other_size,
612  other))
613  nomove = false;
614  }
615  }
616  else {
617  const void* orig = v_dst->toPtr();
618  v_dst->shift (pos, other_size);
619  if (orig != v_dst->toPtr())
620  nomove = false;
621  }
622  }
623  }
624 
625  // Do the operation on the dynamic variables:
626  if( m_store ) {
627  if (!m_store->insertMove( pos, other, ignore ))
628  nomove = false;
629 
630  // Notice any new variables added as a result of this.
632  }
633 
634  return nomove;
635  }

◆ insertMove() [2/2]

virtual bool SG::IAuxStore::insertMove ( size_t  pos,
IAuxStore other,
const SG::auxid_set_t ignore = SG::auxid_set_t() 
)
pure virtualinherited

Move all elements from other to this store.

Parameters
posThe starting index of the insertion.
otherStore from which to do the move.
ignoreSet of variables that should not be added to the store.

Let len be the size of other. The store will be increased in size by len elements, with the elements at pos being copied to pos+len. Then, for each auxiliary variable, the entire contents of that variable for other will be moved to this store at index pos. This will be done via move semantics if possible; otherwise, it will be done with a copy. Variables present in this store but not in other will have the corresponding elements default-initialized. Variables in other but not in this store will be added unless they are in ignore.

Returns true if it is known that none of the vectors' memory moved, false otherwise.

Implemented in SG::AuxStoreInternal.

◆ isDecoration()

bool xAOD::AuxContainerBase::isDecoration ( auxid_t  auxid) const
overridevirtual

Test if a variable is a decoration.

Implements SG::IConstAuxStore.

Reimplemented in xAOD::EventInfoAuxContainer_v1.

Definition at line 291 of file AuxContainerBase.cxx.

292  {
293  guard_t guard( m_mutex );
294  if (m_store) {
295  return m_store->isDecoration (auxid);
296  }
297  return false;
298  }

◆ linkedVector() [1/3]

const SG::IAuxTypeVector * xAOD::AuxContainerBase::linkedVector ( SG::auxid_t  auxid) const
overridevirtual

Return interface for a linked variable.

Reimplemented from SG::IConstAuxStore.

Definition at line 396 of file AuxContainerBase.cxx.

397  {
399  auxid_t linked_id = r.linkedVariable( auxid );
400  if (linked_id != SG::null_auxid) {
401  guard_t guard( m_mutex );
402  if (linked_id < m_vecs.size() && m_vecs[ linked_id ]) {
403  return m_vecs[ linked_id ];
404  }
405  if (m_store) {
406  return CxxUtils::as_const_ptr(m_store)->linkedVector( auxid );
407  }
408  }
409  return nullptr;
410  }

◆ linkedVector() [2/3]

SG::IAuxTypeVector * xAOD::AuxContainerBase::linkedVector ( SG::auxid_t  auxid)
overridevirtual

Return interface for a linked variable.

Reimplemented from SG::IAuxStore.

Definition at line 413 of file AuxContainerBase.cxx.

414  {
416  auxid_t linked_id = r.linkedVariable( auxid );
417  if (linked_id != SG::null_auxid) {
418  guard_t guard( m_mutex );
419  if (linked_id < m_vecs.size() && m_vecs[ linked_id ]) {
420  return m_vecs[ linked_id ];
421  }
422  if (m_store) {
423  return m_store->linkedVector( auxid );
424  }
425  }
426  return nullptr;
427  }

◆ linkedVector() [3/3]

virtual const IAuxTypeVector* SG::IConstAuxStore::linkedVector
inlineinherited

Return interface for a linked variable.

Parameters
auxidThe ID of the parent variable.

If auxid has a linked variable, then return the IAuxTypeVector describing it. Otherwise, return nullptr. May return nullptr unconditionally if this store does not support linked variables.

Definition at line 189 of file IConstAuxStore.h.

190  { return nullptr; }

◆ lock()

void xAOD::AuxContainerBase::lock ( )
overridevirtual

Lock the container.

Implements ILockable.

Definition at line 343 of file AuxContainerBase.cxx.

343  {
344 
345  // Guard against multi-threaded execution:
346  guard_t guard( m_mutex );
347 
348  // Lock the object and its dynamic store:
349  m_locked = true;
350  if( m_store ) {
351  m_store->lock();
352  }
353 
354  return;
355  }

◆ lockDecoration()

void xAOD::AuxContainerBase::lockDecoration ( SG::auxid_t  auxid)
overridevirtual

Lock a decoration.

Implements SG::IConstAuxStore.

Reimplemented in xAOD::EventInfoAuxContainer_v1.

Definition at line 387 of file AuxContainerBase.cxx.

388  {
389  guard_t guard (m_mutex);
390  if (m_store) {
391  m_store->lockDecoration (auxid);
392  }
393  }

◆ memResource()

std::pmr::memory_resource * xAOD::AuxContainerBase::memResource ( )

Return the memory resource to use.

Definition at line 159 of file AuxContainerBase.cxx.

160  {
161  const std::pmr::memory_resource* cptr = m_memResource.get();
162  std::pmr::memory_resource* ptr ATLAS_THREAD_SAFE = const_cast<std::pmr::memory_resource*>( cptr );
163  if( !ptr ) {
164 #ifndef XAOD_STANDALONE
165  const EventContext& ctx = Gaudi::Hive::currentContext();
166  if( Atlas::hasExtendedEventContext( ctx ) ) {
167  ptr = Atlas::getExtendedEventContext( ctx ).memResource();
168  }
169  if( !ptr )
170 #endif
171  {
172  ptr = std::pmr::get_default_resource();
173  }
174  if( ptr ) {
175  m_memResource.set( ptr );
176  }
177  }
178  return ptr;
179  }

◆ name()

const char * xAOD::AuxContainerBase::name ( ) const

Get the name of the container instance.

Definition at line 743 of file AuxContainerBase.cxx.

743  {
744 
745  return m_name.c_str();
746  }

◆ operator=()

AuxContainerBase & xAOD::AuxContainerBase::operator= ( const AuxContainerBase rhs)

Assignment operator.

Just like the copy constructor, this operator doesn't actually copy anything either.

It's just here to make it clear to C++ that the internal state of these objects is not to be messed with.

Returns
A reference to this same object

Definition at line 119 of file AuxContainerBase.cxx.

119  {
120 
121  // Protect against self-assignment:
122  if( this == &rhs ) return *this;
123 
124  // Keep the objects locked during copy
125  std::scoped_lock lck{m_mutex, rhs.m_mutex};
126 
127  // Clean up after the old dynamic store:
128  if( m_store && m_ownsStore ) {
129  m_auxids -= m_store->getAuxIDs();
130  delete m_store;
131  }
132  m_store = nullptr;
133  m_storeIO = nullptr;
134  m_ownsStore = true;
135 
136  // Take posession of the new dynamic store:
137  if( rhs.m_store ) {
138  m_store = rhs.m_store;
139  m_ownsStore = false;
140  m_storeIO = dynamic_cast< SG::IAuxStoreIO* >( m_store );
142  }
143 
144  m_name = rhs.m_name;
145 
146  return *this;
147  }

◆ regAuxVar() [1/2]

template<typename T >
void xAOD::AuxContainerBase::regAuxVar ( auxid_t  auxid,
const std::string &  name,
SG::PackedContainer< T > &  vec 
)

Register one of the persistent variables internally.

◆ regAuxVar() [2/2]

template<typename T , typename ALLOC >
void xAOD::AuxContainerBase::regAuxVar ( auxid_t  auxid,
const std::string &  name,
std::vector< T, ALLOC > &  vec 
)

Register one of the persistent variables internally.

◆ regAuxVar1()

template<typename ELT , typename CONT >
void xAOD::AuxContainerBase::regAuxVar1 ( auxid_t  auxid,
const std::string &  name,
CONT &  vec 
)
private

Common code between regAuxVar cases.

◆ reserve()

void xAOD::AuxContainerBase::reserve ( size_t  size)
overridevirtual

Reserve a given size for the arrays.

Implements SG::IAuxStore.

Definition at line 533 of file AuxContainerBase.cxx.

533  {
534 
535  // Guard against multi-threaded execution:
536  guard_t guard( m_mutex );
537 
538  // This operation is not allowed on a locked container:
539  if( m_locked ) {
540  throw SG::ExcStoreLocked( "reserve" );
541  }
542 
543  // Do the operation on the static variables:
544  for (SG::IAuxTypeVector* v : m_vecs) {
545  if(v && !v->isLinked()) {
546  v->reserve( size );
547  }
548  }
549 
550  // Do the operation on the dynamic variables:
551  if( m_store ) {
552  m_store->reserve( size );
553  }
554 
555  return;
556  }

◆ resize()

bool xAOD::AuxContainerBase::resize ( size_t  size)
overridevirtual

Resize the arrays to a given size.

Implements SG::IAuxStore.

Definition at line 505 of file AuxContainerBase.cxx.

505  {
506 
507  // Guard against multi-threaded execution:
508  guard_t guard( m_mutex );
509 
510  // This operation is not allowed on a locked container:
511  if( m_locked ) {
512  throw SG::ExcStoreLocked( "resize" );
513  }
514 
515  // Do the operation on the static variables:
516  bool nomoves = true;
517  for (SG::IAuxTypeVector* v : m_vecs) {
518  if(v && !v->isLinked()) {
519  if (!v->resize( size ))
520  nomoves = false;
521  }
522  }
523 
524  // Do the operation on the dynamic variables:
525  if( m_store ) {
526  if (!m_store->resize( size ))
527  nomoves = false;
528  }
529 
530  return nomoves;
531  }

◆ setName()

void xAOD::AuxContainerBase::setName ( const char name)

Set the name of the container instance.

Definition at line 748 of file AuxContainerBase.cxx.

748  {
749 
750  m_name = name;
751  return;
752  }

◆ setOption()

bool xAOD::AuxContainerBase::setOption ( auxid_t  id,
const SG::AuxDataOption option 
)
overridevirtual

Make an option setting on an aux variable.

Reimplemented from SG::IAuxStore.

Definition at line 638 of file AuxContainerBase.cxx.

639  {
640 
641  guard_t guard (m_mutex);
642  if (id < m_vecs.size() && m_vecs[id] != nullptr)
643  return m_vecs[id]->setOption (option);
644 
645  if (m_store)
646  return m_store->setOption (id, option);
647  return false;
648  }

◆ setStore()

void xAOD::AuxContainerBase::setStore ( SG::IAuxStore store)
overridevirtual

Set a different internal store object.

This function is used by the I/O infrastructure to possibly put a store object into this one, which can interact with dynamic variables directly.

Note that the object takes ownership of the received store.

Parameters
storeThe store that should be used for dynamic variable handling inside the object from now on

Implements SG::IAuxStoreHolder.

Definition at line 195 of file AuxContainerBase.cxx.

195  {
196 
197  // Guard against multi-threaded execution:
198  guard_t guard( m_mutex );
199 
200  // Check that no funny business is going on:
201  if( m_store == store ) return;
202 
203  // Clean up the current store object:
204  if( m_store && m_ownsStore ) {
205  m_auxids -= m_store->getAuxIDs();
206  delete m_store;
207  }
208  m_store = nullptr;
209  m_storeIO = nullptr;
210 
211  // Take posession of the new object:
212  m_store = store;
213  m_storeIO = dynamic_cast< SG::IAuxStoreIO* >( m_store );
214  m_ownsStore = true;
215  if( m_store ) {
217  }
218 
219  return;
220  }

◆ shift()

void xAOD::AuxContainerBase::shift ( size_t  pos,
ptrdiff_t  offs 
)
overridevirtual

Shift the contents of the stored arrays.

Implements SG::IAuxStore.

Definition at line 558 of file AuxContainerBase.cxx.

558  {
559 
560  // Guard against multi-threaded execution:
561  guard_t guard( m_mutex );
562 
563  // This operation is not allowed on a locked container:
564  if( m_locked ) {
565  throw SG::ExcStoreLocked( "shift" );
566  }
567 
568  // Do the operation on the static variables:
569  for (SG::IAuxTypeVector* v : m_vecs) {
570  if(v && !v->isLinked()) {
571  v->shift( pos, offs );
572  }
573  }
574 
575  // Do the operation on the dynamic variables:
576  if( m_store ) {
577  m_store->shift( pos, offs );
578  }
579 
580  return;
581  }

◆ size()

size_t xAOD::AuxContainerBase::size ( ) const
overridevirtual

Get the size of the container.

Implements SG::IConstAuxStore.

Definition at line 430 of file AuxContainerBase.cxx.

430  {
431 
432  // Guard against multi-threaded execution:
433  guard_t guard (m_mutex);
434 
435  // Try to find a variable:
436  for (SG::auxid_t i : m_auxids) {
437  if( ( i < m_vecs.size() ) && m_vecs[ i ] && !m_vecs[ i ]->isLinked()) {
438  size_t sz = m_vecs[ i ]->size();
439  if( sz > 0 ) {
440  return sz;
441  }
442  }
443  }
444 
445  // If we didn't find any, let's ask the dynamic store:
446  if( m_store ) {
447  return m_store->size();
448  }
449 
450  // If we don't have any variables, then the size must be null:
451  return 0;
452  }

Friends And Related Function Documentation

◆ ::xAODAuxContainerBaseCnv

friend class ::xAODAuxContainerBaseCnv
friend

Definition at line 224 of file AuxContainerBase.h.

Member Data Documentation

◆ ATLAS_THREAD_SAFE

CxxUtils::CachedPointer<std::pmr::memory_resource> m_memResource xAOD::AuxContainerBase::ATLAS_THREAD_SAFE
mutableprivate

Memory resource to use for this container.

Definition at line 254 of file AuxContainerBase.h.

◆ m_auxids

auxid_set_t xAOD::AuxContainerBase::m_auxids
private

Internal list of all available variables.

Definition at line 232 of file AuxContainerBase.h.

◆ m_locked

bool xAOD::AuxContainerBase::m_locked
private

Has the container been locked?

Definition at line 243 of file AuxContainerBase.h.

◆ m_mutex

mutex_t xAOD::AuxContainerBase::m_mutex
mutableprivate

Definition at line 248 of file AuxContainerBase.h.

◆ m_name

std::string xAOD::AuxContainerBase::m_name
private

Name of the container in memory. Set externally.

Definition at line 251 of file AuxContainerBase.h.

◆ m_ownsStore

bool xAOD::AuxContainerBase::m_ownsStore
private

Flag deciding if the object owns the dynamic store or not.

Definition at line 241 of file AuxContainerBase.h.

◆ m_store

SG::IAuxStore* xAOD::AuxContainerBase::m_store
private

Internal dynamic auxiliary store object.

Definition at line 237 of file AuxContainerBase.h.

◆ m_storeIO

SG::IAuxStoreIO* xAOD::AuxContainerBase::m_storeIO
private

The IO interface to the internal auxiliary store.

Definition at line 239 of file AuxContainerBase.h.

◆ m_vecs

std::vector< SG::IAuxTypeVector* > xAOD::AuxContainerBase::m_vecs
private

Internal list of all managed variables.

Definition at line 234 of file AuxContainerBase.h.

◆ supportsThinning

constexpr bool SG::IAuxStore::supportsThinning = true
staticconstexprinherited

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 199 of file IAuxStore.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
xAOD::AuxContainerBase::m_name
std::string m_name
Name of the container in memory. Set externally.
Definition: AuxContainerBase.h:251
SG::IAuxTypeVector::shift
virtual bool shift(size_t pos, ptrdiff_t offs)=0
Shift the elements of the vector.
SG::IAuxTypeVector::isLinked
bool isLinked() const
Return true if this variable is linked from another one.
Definition: IAuxTypeVector.h:226
SGTest::store
TestStore store
Definition: TestStore.cxx:23
beamspotman.r
def r
Definition: beamspotman.py:676
xAOD::AuxContainerBase::name
const char * name() const
Get the name of the container instance.
Definition: AuxContainerBase.cxx:743
SG::IAuxStore::insertMove
virtual bool insertMove(size_t pos, IAuxStore &other, const SG::auxid_set_t &ignore=SG::auxid_set_t())=0
Move all elements from other to this store.
SG::IConstAuxStore::lockDecoration
virtual void lockDecoration(SG::auxid_t auxid)=0
Lock a decoration.
fitman.sz
sz
Definition: fitman.py:527
get_generator_info.result
result
Definition: get_generator_info.py:21
SG::IConstAuxStore::getVector
virtual const IAuxTypeVector * getVector(SG::auxid_t auxid) const =0
Return vector interface for one aux data item.
xAOD::IOStats::stats
ReadStats & stats()
Access the object belonging to the current thread.
Definition: IOStats.cxx:17
SG::AuxTypeRegistry::instance
static AuxTypeRegistry & instance()
Return the singleton registry instance.
Definition: AuxTypeRegistry.cxx:639
xAOD::AuxContainerBase::m_store
SG::IAuxStore * m_store
Internal dynamic auxiliary store object.
Definition: AuxContainerBase.h:237
xAOD::AuxContainerBase::memResource
std::pmr::memory_resource * memResource()
Return the memory resource to use.
Definition: AuxContainerBase.cxx:159
SG::AuxTypeRegistry::getName
std::string getName(SG::auxid_t auxid) const
Return the name of an aux data item.
Definition: AuxTypeRegistry.cxx:881
xAOD::AuxContainerBase::guard_t
AthContainers_detail::lock_guard< mutex_t > guard_t
Definition: AuxContainerBase.h:247
SG::ExcStoreLocked
Exception — Attempted to modify auxiliary data in a locked store.
Definition: Control/AthContainers/AthContainers/exceptions.h:183
Atlas::hasExtendedEventContext
bool hasExtendedEventContext(const EventContext &ctx)
Test whether a context object has an extended context installed.
Definition: ExtendedEventContext.cxx:23
xAOD::other
@ other
Definition: TrackingPrimitives.h:509
SG::IAuxTypeVector::insertMove
virtual bool insertMove(size_t pos, void *src, size_t src_pos, size_t src_n, IAuxStore &srcStore)=0
Insert elements into the vector via move semantics.
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
SG::IAuxStoreIO::getIOType
virtual const std::type_info * getIOType(SG::auxid_t auxid) const =0
Return the type of the data to be stored for one aux data item.
xAOD::AuxContainerBase::m_mutex
mutex_t m_mutex
Definition: AuxContainerBase.h:248
empty
bool empty(TH1 *h)
Definition: computils.cxx:295
SG::IConstAuxStore::size
virtual size_t size() const =0
Return the number of elements in the store.
SG::IAuxStore::shift
virtual void shift(size_t pos, ptrdiff_t offs)=0
Shift the elements of the container.
SG::IAuxStore::linkedVector
virtual IAuxTypeVector * linkedVector(SG::auxid_t)
Definition: IAuxStore.h:187
SG::IAuxStoreIO
Interface providing I/O for a generic auxiliary store.
Definition: IAuxStoreIO.h:44
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
SG::AuxTypeRegistry
Handle mappings between names and auxid_t.
Definition: AuxTypeRegistry.h:61
Atlas::getExtendedEventContext
const ExtendedEventContext & getExtendedEventContext(const EventContext &ctx)
Retrieve an extended context from a context object.
Definition: ExtendedEventContext.cxx:32
xAOD::AuxContainerBase::size
virtual size_t size() const override
Get the size of the container.
Definition: AuxContainerBase.cxx:430
DiTauMassTools::ignore
void ignore(T &&)
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:58
SG::IAuxStore::setOption
virtual bool setOption(auxid_t, const AuxDataOption &)
Set an option for a given auxiliary variable.
Definition: IAuxStore.h:173
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
SG::IConstAuxStore::clearDecorations
virtual bool clearDecorations()=0
Clear all decorations.
xAOD::AuxContainerBase::auxid_set_t
SG::auxid_set_t auxid_set_t
The aux ID set type definition.
Definition: AuxContainerBase.h:65
xAOD::AuxContainerBase::m_auxids
auxid_set_t m_auxids
Internal list of all available variables.
Definition: AuxContainerBase.h:232
xAOD::AuxContainerBase::m_vecs
std::vector< SG::IAuxTypeVector * > m_vecs
Internal list of all managed variables.
Definition: AuxContainerBase.h:234
lumiFormat.i
int i
Definition: lumiFormat.py:85
CxxUtils::ConcurrentBitset::insert
ConcurrentBitset & insert(bit_t bit, bit_t new_nbits=0)
Set a bit to 1.
test_pyathena.parent
parent
Definition: test_pyathena.py:15
python.xAODType.dummy
dummy
Definition: xAODType.py:4
SG::IConstAuxStore::getDecoration
virtual void * getDecoration(auxid_t auxid, size_t size, size_t capacity)=0
Return the data vector for one aux data decoration item.
SG::AuxTypeRegistry::getVecType
const std::type_info * getVecType(SG::auxid_t auxid) const
Return the type of the STL vector used to hold an aux data item.
Definition: AuxTypeRegistry.cxx:936
xAOD::IOStats::instance
static IOStats & instance()
Singleton object accessor.
Definition: IOStats.cxx:11
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
xAOD::AuxContainerBase::getVector
virtual const SG::IAuxTypeVector * getVector(SG::auxid_t auxid) const override final
Return vector interface for one aux data item.
Definition: AuxContainerBase.cxx:239
CxxUtils::as_const_ptr
const T * as_const_ptr(const T *p)
Helper for getting a const version of a pointer.
Definition: as_const_ptr.h:32
xAOD::AuxContainerBase::getWritableAuxIDs
virtual const auxid_set_t & getWritableAuxIDs() const override
Return a set of writable data identifiers.
Definition: AuxContainerBase.cxx:498
SG::IAuxStoreIO::getIOData
virtual const void * getIOData(SG::auxid_t auxid) const =0
Return a pointer to the data to be stored for one aux data item.
xAOD::AuxContainerBase::getData
virtual const void * getData(auxid_t auxid) const override
Get a pointer to a given array.
Definition: AuxContainerBase.cxx:230
xAOD::ReadStats::readBranch
void readBranch(const std::string &prefix, SG::auxid_t auxid)
Function incrementing the read counter on a specific branch.
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
xAOD::AuxContainerBase::auxid_t
SG::auxid_t auxid_t
The aux ID type definition.
Definition: AuxContainerBase.h:63
SG::IAuxStore
Interface for non-const operations on an auxiliary store.
Definition: IAuxStore.h:48
SG::AuxStoreInternal
An auxiliary data store that holds data internally.
Definition: AuxStoreInternal.h:43
python.PyAthena.v
v
Definition: PyAthena.py:154
xAOD::AuxContainerBase::ATLAS_THREAD_SAFE
CxxUtils::CachedPointer< std::pmr::memory_resource > m_memResource ATLAS_THREAD_SAFE
Memory resource to use for this container.
Definition: AuxContainerBase.h:254
SG::IAuxStore::getData
virtual void * getData(auxid_t auxid, size_t size, size_t capacity)=0
Return the data vector for one aux data item.
xAOD::AuxContainerBase::m_locked
bool m_locked
Has the container been locked?
Definition: AuxContainerBase.h:243
SG::IAuxTypeVector
Abstract interface for manipulating vectors of arbitrary types.
Definition: IAuxTypeVector.h:42
xAOD::AuxContainerBase::m_ownsStore
bool m_ownsStore
Flag deciding if the object owns the dynamic store or not.
Definition: AuxContainerBase.h:241
SG::IConstAuxStore::getDecorIDs
virtual const SG::auxid_set_t & getDecorIDs() const =0
Return a set of identifiers for decorations in this store.
SG::IConstAuxStore::lock
virtual void lock()=0
Lock the container.
xAOD::AuxContainerBase::m_storeIO
SG::IAuxStoreIO * m_storeIO
The IO interface to the internal auxiliary store.
Definition: AuxContainerBase.h:239
xAOD::AuxContainerBase::AuxContainerBase
AuxContainerBase(bool allowDynamicVars=true)
Default constructor.
Definition: AuxContainerBase.cxx:31
SG::IAuxStore::resize
virtual bool resize(size_t sz)=0
Change the size of all aux data vectors.
SG::auxid_set_t
A set of aux data identifiers.
Definition: AuxTypes.h:47
SG::IConstAuxStore::isDecoration
virtual bool isDecoration(auxid_t auxid) const =0
Test if a particular variable is tagged as a decoration.
SG::IAuxStoreHolder::AST_ObjectStore
@ AST_ObjectStore
The store describes a single object.
Definition: IAuxStoreHolder.h:67
SG::IConstAuxStore::getAuxIDs
virtual const SG::auxid_set_t & getAuxIDs() const =0
Return a set of identifiers for existing data items in this store.
SG::IAuxTypeVector::toPtr
virtual void * toPtr()=0
Return a pointer to the start of the vector's data.
SG::IAuxStore::reserve
virtual void reserve(size_t sz)=0
Change the capacity of all aux data vectors.
SG::IAuxStoreHolder::AST_ContainerStore
@ AST_ContainerStore
The store describes a container.
Definition: IAuxStoreHolder.h:68