8#ifndef COLUMNAR_CORE_COLUMN_ACCESSOR_H
9#define COLUMNAR_CORE_COLUMN_ACCESSOR_H
81 template<ContainerIdConcept CI,
typename CT,ColumnAccessMode CAM,
typename CM>
class AccessorTemplate;
94 template<
typename CT,
typename CM>
103 template<
typename CT,
typename CM>
104 requires ((std::is_integral_v<CT> || std::is_floating_point_v<CT>) && !std::is_same_v<CT,bool>)
121 template<
typename CT,
typename CM>
139 static_assert (!std::is_const_v<CT>,
"CT must not be const");
140 static_assert (!std::is_const_v<UT>,
"UT must not be const");
143 template<
typename UT,
typename CT,
typename CM>
158 template<ContainerIdConcept CI,
typename CT,
typename CM>
160 class AccessorTemplate<CI,CT,ColumnAccessMode::input,CM>
final
165 using UserType =
typename ColumnTypeTraits<CT,CM>::UserType;
167 AccessorTemplate () =
default;
169 AccessorTemplate (ColumnarTool<CM>& columnBase,
const std::string& name, ColumnInfo&& info = {})
183 return m_base.isAvailable (
id);
186 [[nodiscard]] std::optional<UserType> getOptional (
ObjectId<CI,CM> id)
const
188 if (m_base.isAvailable (
id))
189 return operator()(
id);
201 template<ContainerIdConcept CI,
typename CT,
typename CM>
225 return m_base.isAvailable (
id);
228 [[nodiscard]] std::optional<UserType> getOptional (
ObjectId<CI,CM> id)
const
230 if (m_base.isAvailable (
id))
231 return operator()(
id);
251 template<ContainerIdConcept CI,
typename CT,ColumnAccessMode CAM,
typename CM>
254 accessor = AccessorTemplate<CI,CT,CAM,CM> (columnBase, name, std::move (info));
Helper class to provide constant type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Helper class to provide type-safe access to aux data.
Helper class to provide constant type-safe access to aux data.
Helper class to provide type-safe access to aux data.
the raw column accessor template class
a class representing a single object (electron, muons, etc.)
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
bool isAvailable(const T_Aux &cont, SG::auxid_t auxid)
const InDetSimData * getData(const InDetSimDataCollection &coll, const Identifier &id)
AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > ColumnAccessor
void resetAccessor(AccessorTemplate< CI, CT, CAM, CM > &accessor, ColumnarTool< CM > &columnBase, const std::string &name, ColumnInfo &&info={})
reset a column accessor to point to a new column
AccessorTemplate< CI, CT, ColumnAccessMode::output, CM > ColumnDecorator
ColumnAccessMode
an enum for the different access modes for a column
@ update
an updateable column
AccessorTemplate< CI, CT, ColumnAccessMode::update, CM > ColumnUpdater
SG::Decorator< T > XAODAccessor
SG::Accessor< T > XAODAccessor
a struct that contains meta-information about each column that's needed to interface the column with ...
static constexpr bool isNativeType
static constexpr bool useConvertWithDataInput
static constexpr bool useConvertInput
static ColumnInfo & updateColumnInfo(ColumnarTool< CM > &, ColumnInfo &info)
static constexpr bool isNativeType
static constexpr bool useConvertInput
static ColumnInfo & updateColumnInfo(ColumnarTool< CM > &, ColumnInfo &info)
static constexpr bool useConvertWithDataInput
static ColumnInfo & updateColumnInfo(ColumnarTool< CM > &, ColumnInfo &info)
static UT convertInput(const CT &value)
static constexpr bool useConvertWithDataInput
static constexpr bool useConvertInput
static constexpr bool isNativeType
a trait class to provide information about the column type
static constexpr bool isNativeType
static constexpr bool useConvertWithDataInput
static constexpr bool useConvertInput
static ColumnInfo & updateColumnInfo(ColumnarTool< CM > &, ColumnInfo &info)
a type wrapper to force AccessorTemplate to treat the type as native
a type wrapper to make AccessorTemplate convert the underlying column type to a different type