Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
AtomicConstAccessor.h
Go to the documentation of this file.
1 // This file's extension implies that it's C, but it's really -*- C++ -*-.
2 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
25 #ifndef ATHCONTAINERS_ATOMICCONSTACCESSOR_H
26 #define ATHCONTAINERS_ATOMICCONSTACCESSOR_H
27 
28 
32 #include <atomic>
33 #include <type_traits>
34 
35 
36 namespace SG {
37 
38 
42 template <class T, class ALLOC = AuxAllocator_t<T> >
44  : public ConstAccessor<T, ALLOC>
45 {
46 public:
49 
51  using const_reference_type = const std::atomic<T>&;
52 
55 
57  using const_container_pointer_type = const std::atomic<T>*;
58 
59  // Consistency checks.
61  "Bad type for AtomicConstAccessor");
63  "Bad type for AtomicConstAccessor");
64 
66  "Bad type for AtomicConstAccessor");
67  static_assert (sizeof(T) == sizeof(std::atomic<T>),
68  "Bad type for AtomicConstAccessor");
69  static_assert (std::atomic<T>::is_always_lock_free,
70  "Bad type for AtomicConstAccessor");
71 
78  AtomicConstAccessor (const std::string& name);
79 
80 
88  AtomicConstAccessor (const std::string& name, const std::string& clsname);
89 
90 
98 
99 
107  template <IsConstAuxElement ELT>
108  T operator() (const ELT& e) const;
109 
110 
123  T operator() (const AuxVectorData& container, size_t index) const;
124 
125 
131 };
132 
133 
134 } // namespace SG
135 
136 
138 
139 
140 #endif // not ATHCONTAINERS_ATOMICCONSTACCESSOR_H
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
SG::AtomicConstAccessor::AtomicConstAccessor
AtomicConstAccessor(const std::string &name, const std::string &clsname)
Constructor.
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG::AtomicConstAccessor::const_reference_type
const std::atomic< T > & const_reference_type
Type referencing an item.
Definition: AtomicConstAccessor.h:51
index
Definition: index.py:1
SG::ConstAccessor< T, AuxAllocator_t< T > >::auxid
SG::auxid_t auxid() const
Return the aux id for this variable.
SG::AtomicConstAccessor::element_type
typename AuxDataTraits< T, ALLOC >::element_type element_type
Type the user sees.
Definition: AtomicConstAccessor.h:54
athena.value
value
Definition: athena.py:124
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
SG::AtomicConstAccessor::const_container_pointer_type
const std::atomic< T > * const_container_pointer_type
Pointer into the container holding this item.
Definition: AtomicConstAccessor.h:57
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
SG::AtomicConstAccessor::getDataArray
const_container_pointer_type getDataArray(const AuxVectorData &container) const
Get a pointer to the start of the auxiliary data array.
SG::AtomicConstAccessor
Access an auxiliary variable atomically.
Definition: AtomicConstAccessor.h:45
AuxDataTraits.h
Allow customizing how aux data types are treated.
SG::AtomicConstAccessor::AtomicConstAccessor
AtomicConstAccessor(const SG::auxid_t auxid)
Constructor taking an auxid directly.
SG::AtomicConstAccessor::AtomicConstAccessor
AtomicConstAccessor(const std::string &name)
Constructor.
AtomicConstAccessor.icc
SG::AuxDataTraits::element_type
T element_type
The type the user sees.
Definition: AuxDataTraits.h:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
SG::AtomicConstAccessor::operator()
T operator()(const ELT &e) const
Fetch the variable for one element, as a const reference.
SG::AuxVectorData
Manage lookup of vectors of auxiliary data.
Definition: AuxVectorData.h:168
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
AuxElement.h
Base class for elements of a container that can have aux data.