 |
ATLAS Offline Software
|
Go to the documentation of this file.
8 #ifndef COLUMNAR_CORE_OBJECT_ID_H
9 #define COLUMNAR_CORE_OBJECT_ID_H
19 template<ContainerIdConcept CI,
typename CM>
class ObjectId;
34 : m_object (&val_object)
39 template<ContainerIdConcept CI2>
requires (CI2::isMutable && std::is_same_v<typename CI2::constId,CI>)
61 template<
typename Acc,
typename...
Args>
62 requires std::invocable<Acc,ObjectId<CI,ColumnarModeXAOD>,
Args...>
63 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
64 return acc (*
this, std::forward<Args> (
args)...);}
75 template<ContainerIdConcept CI>
78 return str << &
obj.getXAODObjectNoexcept() <<
"/" <<
obj.getXAODObjectNoexcept().index();
81 template<ContainerIdConcept CI>
87 template<ContainerIdConcept CI>
111 throw std::logic_error (
"can't call xAOD function in columnar mode");
116 template<ContainerIdConcept CI2>
requires (CI2::isMutable && std::is_same_v<typename CI2::constId,CI>)
128 throw std::logic_error (
"can't call xAOD function in columnar mode");}
130 template<
typename Acc,
typename...
Args>
131 requires std::invocable<Acc,ObjectId<CI,ColumnarModeArray>,
Args...>
132 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
133 return acc (*
this, std::forward<Args> (
args)...);}
141 explicit ObjectId (
void **val_data, std::size_t val_index) noexcept
142 :
m_data (val_data), m_index (val_index)
158 std::size_t m_index = 0
u;
161 template<ContainerIdConcept CI>
164 return str << CI::idName <<
"/" <<
obj.getIndex();
167 template<ContainerIdConcept CI>
173 template<ContainerIdConcept CI>
ObjectId(void **val_data, std::size_t val_index) noexcept
requires(CI2::isMutable &&std::is_same_v< typename CI2::constId, CI >) ObjectId(const ObjectId< CI2
const InDetSimData * getData(const InDetSimDataCollection &coll, const Identifier &id)
typename CI::xAODObjectIdType xAODObject
xAODObject & getXAODObject() const
xAODObject & getXAODObjectNoexcept() const noexcept
ObjectId(const ObjectId< CI, ColumnarModeXAOD > &that) noexcept=default
xAODContainer & getXAODObjectNoexcept() const noexcept
std::size_t getIndex() const noexcept
AccessorTemplate & operator=(AccessorTemplate &&that)
typename CI::xAODObjectIdType xAODObject
bool const RAWDATA *ch2 const
std::map< std::string, HypoJetVector >::const_iterator CI
@ u
Enums for curvilinear frames.
bool operator==(const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs)
void ** getData() const noexcept
bool operator!=(const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs)
requires(CI2::isMutable &&std::is_same_v< typename CI2::constId, CI >) ObjectId(const ObjectId< CI2
ObjectId(const ObjectId< CI, ColumnarModeArray > &that) noexcept=default
a class representing a single object (electron, muons, etc.)
xAODObject & getXAODObject() const noexcept
ObjectId(xAODObject &val_object) noexcept
#define ATLAS_THREAD_SAFE
Define macros for attributes used to control the static checker.
std::ostream & operator<<(std::ostream &str, const ObjectId< CI, ColumnarModeXAOD > &obj)