 |
ATLAS Offline Software
|
Go to the documentation of this file.
8 #ifndef COLUMNAR_VARIANT_VARIANT_OBJECT_ID_H
9 #define COLUMNAR_VARIANT_VARIANT_OBJECT_ID_H
28 : m_object (&val_object)
33 template<ContainerIdConcept CI2>
56 template<ContainerIdConcept CI2>
63 template<
typename Acc,
typename...
Args>
65 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
66 return acc (*
this, std::forward<Args> (
args)...);}
80 return str << &
obj.getXAODObjectNoexcept() <<
"/" <<
obj.getXAODObjectNoexcept().index();
86 return &lhs.getXAODObjectNoexcept() == &rhs.getXAODObjectNoexcept();
92 return &lhs.getXAODObjectNoexcept() != &rhs.getXAODObjectNoexcept();
114 throw std::logic_error (
"can't call xAOD function in columnar mode");
119 template<ContainerIdConcept CI2>
132 throw std::logic_error (
"can't call xAOD function in columnar mode");}
134 template<ContainerIdConcept CI2>
138 if (m_variantIndex ==
CI::template getVariantIndex<CI2>())
144 template<
typename Acc,
typename...
Args>
146 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
147 return acc (*
this, std::forward<Args> (
args)...);}
155 explicit ObjectId (
void **val_data, std::size_t val_variantIndex, std::size_t val_objectIndex) noexcept
156 :
m_data (val_data), m_variantIndex (val_variantIndex), m_objectIndex (val_objectIndex)
160 return m_variantIndex;}
163 return m_objectIndex;}
175 std::size_t m_variantIndex = 0
u;
176 std::size_t m_objectIndex = 0
u;
183 return str << CI::idNameArray.at(
obj.getVariantIndex()) <<
"/" <<
obj.getObjectIndex();
189 return lhs.getVariantIndex() == rhs.getVariantIndex() && lhs.getObjectIndex() == rhs.getObjectIndex();
195 return lhs.getVariantIndex() != rhs.getVariantIndex() || lhs.getObjectIndex() != rhs.getObjectIndex();
const InDetSimData * getData(const InDetSimDataCollection &coll, const Identifier &id)
ObjectId(const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &that) noexcept=default
xAODContainer & getXAODObject() const noexcept
ObjectId(xAODObject &val_object) noexcept
requires(CI2::regularObjectId &&CI::template isValidContainer< CI2 >()) ObjectId(const ObjectId< CI2
a class representing a single optional object (electron, muons, etc.)
AccessorTemplate & operator=(AccessorTemplate &&that)
bool const RAWDATA *ch2 const
void ** getData() const noexcept
std::size_t getVariantIndex() const noexcept
std::map< std::string, HypoJetVector >::const_iterator CI
@ u
Enums for curvilinear frames.
xAODObject & getXAODObjectNoexcept() const noexcept
std::size_t getObjectIndex() const noexcept
bool operator==(const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs)
xAODObject & getXAODObject() const
typename CIBase::xAODObjectIdType xAODObjectIdType
the xAOD type to use with ObjectId
bool operator!=(const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs)
requires(CI::template isValidContainer< CI2 >()) OptObjectId< CI2
ObjectId(const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &that) noexcept=default
a class representing a single object (electron, muons, etc.)
ObjectId(void **val_data, std::size_t val_variantIndex, std::size_t val_objectIndex) noexcept
typename CI::xAODObjectIdType xAODObject
typename CI::xAODObjectIdType xAODObject
concept ContainerIdConcept
concept for a container id
xAODObject & getXAODObject() const noexcept
#define ATLAS_THREAD_SAFE
requires(CI::template isValidContainer< CI2 >()) ObjectId(const ObjectId< CI2
requires(CI::template isValidContainer< CI2 >()) OptObjectId< CI2
std::ostream & operator<<(std::ostream &str, const ObjectId< CI, ColumnarModeXAOD > &obj)