8#ifndef COLUMNAR_CORE_OBJECT_RANGE_H
9#define COLUMNAR_CORE_OBJECT_RANGE_H
19 template<ContainerIdConcept CI,
typename CM>
class ObjectRange;
88 template<
typename Acc,
typename...
Args>
89 requires std::invocable<Acc,ObjectRange<CI,ColumnarModeXAOD>,
Args...>
90 [[nodiscard]]
decltype(
auto)
operator() (Acc& acc,
Args&&... args)
const {
91 return acc (*
this, std::forward<Args> (args)...);}
95 return obj.getXAODObjectNoexcept().index(); }
136 template<ContainerIdConcept CI>
137 requires (std::is_same_v<typename CI::xAODObjectRangeType,typename CI::xAODObjectIdType>)
177 template<
typename Acc,
typename...
Args>
178 requires std::invocable<Acc,ObjectRange<CI,ColumnarModeXAOD>,
Args...>
179 [[nodiscard]]
decltype(
auto)
operator() (Acc& acc,
Args&&... args)
const {
180 return acc (*
this, std::forward<Args> (args)...);}
254 throw std::logic_error (
"can't call xAOD function in columnar mode");
268 throw std::logic_error (
"can't call xAOD function in columnar mode");}
274 template<
typename Acc,
typename...
Args>
275 requires std::invocable<Acc,ObjectRange<CI,ColumnarModeArray>,
Args...>
276 [[nodiscard]]
decltype(
auto)
operator() (Acc& acc,
Args&&... args)
const {
277 return acc (*
this, std::forward<Args> (args)...);}
289 explicit ObjectRange (
void **val_data, std::size_t val_beginIndex,
290 std::size_t val_endIndex) noexcept
326 m_index += stepSize;
return *
this;}
329 return m_index == that.m_index;}
331 return m_index != that.m_index;}
Define macros for attributes used to control the static checker.
#define ATLAS_THREAD_SAFE
a class representing a single object (electron, muons, etc.)
an iterator over objects in an ObjectRange
ObjectId< CI, CM > operator*() const noexcept
bool operator==(const ObjectRangeIteratorArray< CI, stepSize > &that) const noexcept
bool operator!=(const ObjectRangeIteratorArray< CI, stepSize > &that) const noexcept
ObjectRangeIteratorArray< CI, stepSize > & operator++() noexcept
ObjectRangeIteratorArray(void **val_data, std::size_t val_index) noexcept
ObjectRangeIteratorXAODContainer(IteratorType &&val_iterator) noexcept
bool operator==(const ObjectRangeIteratorXAODContainer< CI, IteratorType > &that) const noexcept
bool operator!=(const ObjectRangeIteratorXAODContainer< CI, IteratorType > &that) const noexcept
ObjectRangeIteratorXAODContainer< CI, IteratorType > & operator++() noexcept
ObjectId< CI, CM > operator*() const noexcept
bool operator==(const ObjectRangeIteratorXAODSinglet< CI > &that) const noexcept
ObjectRangeIteratorXAODSinglet(XAODObjectType *val_object) noexcept
XAODObjectType * m_object
typename CI::xAODObjectIdType XAODObjectType
bool operator!=(const ObjectRangeIteratorXAODSinglet< CI > &that) const noexcept
ObjectId< CI, CM > operator*() const noexcept
ObjectRangeIteratorXAODSinglet< CI > & operator++() noexcept
bool empty() const noexcept
std::size_t size() const noexcept
void ** getData() const noexcept
typename CI::xAODObjectRangeType xAODContainer
ObjectRange(const xAODContainer &)
ObjectRangeIteratorArray< CI, 1 > begin() const noexcept
std::size_t beginIndex() const noexcept
xAODContainer & getXAODObject() const
std::size_t endIndex() const noexcept
ObjectRangeIteratorArray< CI,-1 > rbegin() const noexcept
ObjectRangeIteratorArray< CI,-1 > rend() const noexcept
std::size_t getIndexInRange(const ObjectId< CI, CM > &obj) const
get the index inside the given range
ObjectRangeIteratorArray< CI, 1 > end() const noexcept
ObjectRange(void **val_data, std::size_t val_beginIndex, std::size_t val_endIndex) noexcept
std::size_t getIndexInRange(const ObjectId< CI, CM > &obj) const
get the index inside the given range
auto begin() const noexcept
ObjectRange(xAODContainer &val_singlet) noexcept
xAODContainer * m_singlet
auto end() const noexcept
auto rend() const noexcept
auto rbegin() const noexcept
ObjectRange(xAODContainer &val_container) noexcept
xAODContainer * m_container
std::size_t size() const noexcept
xAODContainer & getXAODObjectNoexcept() const noexcept
typename CI::xAODObjectRangeType xAODContainer
bool empty() const noexcept
xAODContainer & getXAODObject() const noexcept
a class representing a continuous sequence of objects (a.k.a. a container)
std::map< std::string, HypoJetVector >::const_iterator CI