Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
8 #ifndef COLUMNAR_CORE_OBJECT_RANGE_H
9 #define COLUMNAR_CORE_OBJECT_RANGE_H
18 template<ContainerId CI,
typename CM=ColumnarModeDefault>
class ObjectRange;
37 : m_container (&val_container)
49 return m_container->empty();}
52 return m_container->size();}
57 template<
typename Acc,
typename...
Args>
58 requires std::invocable<Acc,ObjectRange<CI,ColumnarModeXAOD>,
Args...>
59 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
60 return acc (*
this, std::forward<Args> (
args)...);}
104 template<ContainerId CI>
139 template<
typename Acc,
typename...
Args>
140 requires std::invocable<Acc,ObjectRange<CI,ColumnarModeXAOD>,
Args...>
141 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
142 return acc (*
this, std::forward<Args> (
args)...);}
153 template<ContainerId CI>
class ObjectRangeIteratorXAODSinglet
final
202 return m_beginIndex;}
208 throw std::logic_error (
"can't call xAOD function in columnar mode");
212 return m_beginIndex == m_endIndex;}
215 return m_endIndex - m_beginIndex;}
218 throw std::logic_error (
"can't call xAOD function in columnar mode");}
224 template<
typename Acc,
typename...
Args>
225 requires std::invocable<Acc,ObjectRange<CI,ColumnarModeArray>,
Args...>
226 [[nodiscard]] decltype(
auto) operator() (Acc&
acc,
Args&&...
args)
const {
227 return acc (*
this, std::forward<Args> (
args)...);}
235 explicit ObjectRange (
void **val_data, std::size_t val_beginIndex,
236 std::size_t val_endIndex) noexcept
237 :
m_data (val_data), m_beginIndex (val_beginIndex), m_endIndex (val_endIndex)
250 std::size_t m_beginIndex = 0
u;
251 std::size_t m_endIndex = 0
u;
275 return m_index == that.m_index;}
277 return m_index != that.m_index;}
xAODContainer & getXAODObject() const noexcept
auto end() const noexcept
XAODObjectType * m_object
ObjectId< CI, CM > operator*() const noexcept
bool operator!=(const ObjectRangeIteratorXAODSinglet< CI > &that) const noexcept
std::size_t size() const noexcept
ObjectRangeIteratorXAODSinglet< CI > & operator++() noexcept
xAODContainer & getXAODObject() const noexcept
ObjectRange(const xAODContainer &)
ObjectRangeIteratorXAODContainer(XAODIterator &&val_iterator) noexcept
bool empty() const noexcept
bool operator==(const ObjectRangeIteratorXAODContainer< CI > &that) const noexcept
bool const RAWDATA *ch2 const
ObjectId< CI, CM > operator*() const noexcept
a class representing a continuous sequence of objects (a.k.a. a container)
bool operator!=(const ObjectRangeIteratorArray< CI > &that) const noexcept
std::map< std::string, HypoJetVector >::const_iterator CI
@ u
Enums for curvilinear frames.
ObjectRangeIteratorXAODContainer< CI > & operator++() noexcept
std::size_t size() const noexcept
void ** getData() const noexcept
an iterator over objects in an ObjectRange
std::size_t size() const noexcept
bool empty() const noexcept
ObjectRangeIteratorArray(void **val_data, std::size_t val_index) noexcept
ObjectRange(xAODContainer &val_singlet) noexcept
bool operator!=(const ObjectRangeIteratorXAODContainer< CI > &that) const noexcept
typename ContainerIdTraits< CI >::xAODObjectRangeType xAODContainer
std::size_t beginIndex() const noexcept
auto begin() const noexcept
requires((std::is_integral_v< CT >||std::is_floating_point_v< CT >) &&!std::is_same_v< CT, bool >) struct ColumnTypeTraits< CT
a class representing a single object (electron, muons, etc.)
ObjectId< CI, CM > operator[](std::size_t) const noexcept
typename ContainerIdTraits< CI >::xAODObjectRangeType xAODContainer
typename ContainerIdTraits< CI >::xAODObjectRangeType xAODContainer
xAODContainer & getXAODObject() const
bool empty() const noexcept
auto begin() const noexcept
typename ContainerIdTraits< CI >::xAODObjectIdType XAODObjectType
decltype(std::declval< typename ContainerIdTraits< CI >::xAODObjectRangeType >().begin()) XAODIterator
bool operator==(const ObjectRangeIteratorXAODSinglet< CI > &that) const noexcept
auto end() const noexcept
ObjectRangeIteratorXAODSinglet(XAODObjectType *val_object) noexcept
ObjectRangeIteratorArray< CI > end() const noexcept
ObjectRange(xAODContainer &val_container) noexcept
xAODContainer * m_singlet
ObjectRange(void **val_data, std::size_t val_beginIndex, std::size_t val_endIndex) noexcept
static constexpr bool isDefined
ObjectId< CI, CM > operator*() const noexcept
ObjectRangeIteratorArray< CI > & operator++() noexcept
bool operator==(const ObjectRangeIteratorArray< CI > &that) const noexcept
std::size_t endIndex() const noexcept
ObjectRangeIteratorArray< CI > begin() const noexcept