5#ifndef XAODCORE_AUXCONTAINERBASE_H
6#define XAODCORE_AUXCONTAINERBASE_H
32namespace std {
namespace pmr {
67 bool allowDynamicVars =
true );
115 size_t capacity )
override;
118 virtual void lock()
override;
124 virtual size_t size()
const override;
139 size_t capacity )
override;
149 virtual void shift(
size_t pos, ptrdiff_t offs )
override;
183 const char*
name()
const;
190 template <
class T,
class ALLOC = std::allocator<T> >
192 template <
class T,
class ALLOC = std::allocator<T> >
196 template<
typename T,
typename ALLOC >
198 std::vector< T, ALLOC >& ,
203 template<
typename T >
210 template<
typename T,
typename ALLOC >
212 std::vector< T, ALLOC >&
vec );
215 template<
typename T >
220 friend class ::xAODAuxContainerBaseCnv;
223 template<
typename ELT,
typename CONT >
230 std::vector< SG::IAuxTypeVector* >
m_vecs;
243 typedef AthContainers_detail::lock_guard< mutex_t >
guard_t;
261#include "xAODCore/BaseInfo.h"
Handle mappings between names and auxid_t.
Cached pointer with atomic update.
std::vector< size_t > vec
#define SG_BASES3(D, B1, B2, B3)
Declare that class D derives from classes B1, B2, and B3.
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
File providing the different SG_BASE macros.
Interface providing I/O for a generic auxiliary store.
Interface for non-const operations on an auxiliary store.
Container to hold aux data to be stored in a packed form.
Define macros for attributes used to control the static checker.
Interface to allow an object to lock itself when made const in SG.
Hold information about an option setting request.
Interface for objects taking part in direct ROOT I/O.
AuxStoreType
Type of the auxiliary store.
@ AST_ContainerStore
The store describes a container.
Interface providing I/O for a generic auxiliary store.
Interface for non-const operations on an auxiliary store.
Abstract interface for manipulating vectors of arbitrary types.
Container to hold aux data to be stored in a packed form.
A set of aux data identifiers.
POOL converter for the xAOD::AuxContainerBase class.
Common base class for the auxiliary containers.
void regAuxVar1(auxid_t auxid, const std::string &name, CONT &vec)
Common code between regAuxVar cases.
SG::auxid_set_t auxid_set_t
The aux ID set type definition.
void regAuxVar(auxid_t auxid, const std::string &name, SG::PackedContainer< T > &vec)
Register one of the persistent variables internally.
virtual bool resize(size_t size) override
Resize the arrays to a given size.
void setName(const char *name)
Set the name of the container instance.
AthContainers_detail::mutex mutex_t
Mutex for multithread synchronization.
virtual const void * getIOData(auxid_t auxid) const override
Get a pointer to the data being stored for one aux data item.
CxxUtils::CachedPointer< std::pmr::memory_resource > m_memResource ATLAS_THREAD_SAFE
Memory resource to use for this container.
bool m_locked
Has the container been locked?
AuxVariable_t< T, ALLOC > LinkedVariable_t
virtual bool isDecoration(auxid_t auxid) const override
Test if a variable is a decoration.
virtual SG::IAuxStore * getStore() override
Get the currently used internal store object.
virtual void lockDecoration(SG::auxid_t auxid) override
Lock a decoration.
std::vector< T, ALLOC > AuxVariable_t
Declare how to wrap variables for this sort of base.
virtual const void * getData(auxid_t auxid) const override
Get a pointer to a given array.
virtual const auxid_set_t & getAuxIDs() const override
Get the types(names) of variables handled by this container.
virtual void setStore(SG::IAuxStore *store) override
Set a different internal store object.
SG::IAuxStore * m_store
Internal dynamic auxiliary store object.
virtual bool insertMove(size_t pos, IAuxStore &other, const SG::auxid_set_t &ignore) override
Insert contents of another store via move.
virtual size_t size() const override
Get the size of the container.
virtual const SG::IAuxTypeVector * getVector(SG::auxid_t auxid) const override final
Return vector interface for one aux data item.
AuxContainerBase(bool allowDynamicVars=true)
Default constructor.
virtual void shift(size_t pos, ptrdiff_t offs) override
Shift the contents of the stored arrays.
bool m_ownsStore
Flag deciding if the object owns the dynamic store or not.
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.
virtual SG::auxid_set_t getSelectedAuxIDs() const override
Get the IDs of the selected dynamic Aux variables (for writing)
virtual const auxid_set_t & getDynamicAuxIDs() const override
Get the types(names) of variables created dynamically.
AthContainers_detail::lock_guard< mutex_t > guard_t
std::string m_name
Name of the container in memory. Set externally.
virtual void * getDecoration(auxid_t auxid, size_t size, size_t capacity) override
Get a pointer to a given array, as a decoration.
virtual AuxStoreType getStoreType() const override
Return the type of the store object.
virtual void lock() override
Lock the container.
std::pmr::memory_resource * memResource()
Return the memory resource to use.
~AuxContainerBase()
Destructor.
virtual const auxid_set_t & getDecorIDs() const override
Get the types(names) of decorations handled by this container.
void regAuxVar(auxid_t auxid, const std::string &name, std::vector< T, ALLOC > &vec)
Register one of the persistent variables internally.
SG::IAuxStoreIO * m_storeIO
The IO interface to the internal auxiliary store.
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.
virtual void reserve(size_t size) override
Reserve a given size for the arrays.
auxid_set_t m_auxids
Internal list of all available variables.
virtual const std::type_info * getIOType(auxid_t auxid) const override
Return the type of the data to be stored for one aux data item.
virtual const SG::IAuxTypeVector * linkedVector(SG::auxid_t auxid) const override
Return interface for a linked variable.
virtual const auxid_set_t & getWritableAuxIDs() const override
Return a set of writable data identifiers.
std::vector< SG::IAuxTypeVector * > m_vecs
Internal list of all managed variables.
const char * name() const
Get the name of the container instance.
virtual bool clearDecorations() override
Clear all decorations.
SG::auxid_t auxid_t
The aux ID type definition.
virtual bool setOption(auxid_t id, const SG::AuxDataOption &option) override
Make an option setting on an aux variable.
AuxContainerBase & operator=(const AuxContainerBase &rhs)
Assignment operator.
AuxVarFlags
Additional flags to qualify an auxiliary variable.
@ None
No special flags set.
static const auxid_t null_auxid
To signal no aux data item.
size_t auxid_t
Identifier for a particular aux data item.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Cached pointer with atomic update.