ATLAS Offline Software
Loading...
Searching...
No Matches
AuxContainerBase.h
Go to the documentation of this file.
1// Dear emacs, this is -*- c++ -*-
2/*
3 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4*/
5#ifndef XAODCORE_AUXCONTAINERBASE_H
6#define XAODCORE_AUXCONTAINERBASE_H
7
8// STL include(s):
9#include <vector>
10#include <string>
11#include <memory>
12
13// EDM include(s):
22#include "SGCore/ILockable.h"
23
24// Local include(s):
26
27// Forward declaration(s):
28namespace SG {
29 class IAuxTypeVector;
30}
32namespace std { namespace pmr {
33class memory_resource;
34}}
35
37namespace xAOD {
38
52 public SG::IAuxStoreIO,
54 public ILockable
55 {
56
57 public:
62
64 AuxContainerBase( bool allowDynamicVars = true );
66 AuxContainerBase( std::pmr::memory_resource* memResource,
67 bool allowDynamicVars = true );
69 AuxContainerBase( const AuxContainerBase& parent );
72 std::pmr::memory_resource* memResource = nullptr );
75
78
81
83 virtual SG::IAuxStore* getStore() override;
84 virtual const SG::IAuxStore* getStore() const override;
86 virtual void setStore( SG::IAuxStore* store ) override;
88 virtual AuxStoreType getStoreType() const override { return AST_ContainerStore; }
89
91 std::pmr::memory_resource* memResource();
92
94
97
99 virtual const void* getData( auxid_t auxid ) const override;
100
102 virtual const SG::IAuxTypeVector* getVector (SG::auxid_t auxid) const override final;
103
105 virtual const auxid_set_t& getAuxIDs() const override;
106
108 virtual const auxid_set_t& getDecorIDs() const override;
109
111 virtual bool isDecoration (auxid_t auxid) const override;
112
114 virtual void* getDecoration( auxid_t auxid, size_t size,
115 size_t capacity ) override;
116
118 virtual void lock() override;
119
121 virtual bool clearDecorations() override;
122
124 virtual size_t size() const override;
125
127 virtual void lockDecoration (SG::auxid_t auxid) override;
128
130 virtual const SG::IAuxTypeVector* linkedVector (SG::auxid_t auxid) const override;
131
133
136
138 virtual void* getData( auxid_t auxid, size_t size,
139 size_t capacity ) override;
140
142 virtual const auxid_set_t& getWritableAuxIDs() const override;
143
145 virtual bool resize( size_t size ) override;
147 virtual void reserve( size_t size ) override;
149 virtual void shift( size_t pos, ptrdiff_t offs ) override;
151 virtual bool insertMove (size_t pos,
152 IAuxStore& other,
153 const SG::auxid_set_t& ignore) override;
155 virtual bool setOption( auxid_t id, const SG::AuxDataOption& option ) override;
156
158 virtual SG::IAuxTypeVector* linkedVector (SG::auxid_t auxid) override;
159
161
164
166 virtual const void* getIOData( auxid_t auxid ) const override;
167
169 virtual const std::type_info* getIOType( auxid_t auxid ) const override;
170
172 virtual const auxid_set_t& getDynamicAuxIDs() const override;
173
175 virtual SG::auxid_set_t getSelectedAuxIDs() const override;
176
178
181
183 const char* name() const;
185 void setName( const char* name );
186
188
190 template <class T, class ALLOC = std::allocator<T> >
191 using AuxVariable_t = std::vector<T, ALLOC>;
192 template <class T, class ALLOC = std::allocator<T> >
194
196 template< typename T, typename ALLOC >
197 auxid_t getAuxID( const std::string& name,
198 std::vector< T, ALLOC >& /*vec*/,
199 SG::AuxVarFlags flags =
201 const SG::auxid_t linkedVariable = SG::null_auxid );
203 template< typename T >
204 auxid_t getAuxID( const std::string& name,
206 SG::AuxVarFlags flags =
208 const SG::auxid_t linkedVariable = SG::null_auxid );
210 template< typename T, typename ALLOC >
211 void regAuxVar( auxid_t auxid, const std::string& name,
212 std::vector< T, ALLOC >& vec );
213
215 template< typename T >
216 void regAuxVar( auxid_t auxid, const std::string& name,
218
219 private:
220 friend class ::xAODAuxContainerBaseCnv;
221
223 template< typename ELT, typename CONT >
224 void regAuxVar1( auxid_t auxid, const std::string& name,
225 CONT& vec );
226
230 std::vector< SG::IAuxTypeVector* > m_vecs;
231
240
242 typedef AthContainers_detail::mutex mutex_t;
243 typedef AthContainers_detail::lock_guard< mutex_t > guard_t;
245
247 std::string m_name;
248
251
252 }; // class AuxContainerBase
253
254} // namespace xAOD
255
256// Declare a class ID for the class:
257#include "xAODCore/CLASS_DEF.h"
258CLASS_DEF( xAOD::AuxContainerBase, 1225080690, 3 )
259
260// Describe the inheritance of the class:
261#include "xAODCore/BaseInfo.h"
264
265// Include the template implementation:
266#include "AuxContainerBase.icc"
267
268#endif // XAODCORE_AUXCONTAINERBASE_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.
size_t size() const
Number of registered mappings.
Define macros for attributes used to control the static checker.
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.
Definition IAuxStoreIO.h:44
Interface for non-const operations on an auxiliary store.
Definition IAuxStore.h:48
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.
Definition AuxTypes.h:47
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.
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.
Forward declaration.
AuxVarFlags
Additional flags to qualify an auxiliary variable.
Definition AuxTypes.h:58
@ None
No special flags set.
Definition AuxTypes.h:60
static const auxid_t null_auxid
To signal no aux data item.
Definition AuxTypes.h:30
size_t auxid_t
Identifier for a particular aux data item.
Definition AuxTypes.h:27
STL namespace.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Threading definitions.
Cached pointer with atomic update.