8#ifndef COLUMNAR_CORE_VECTOR_VECTOR_COLUMN_H
9#define COLUMNAR_CORE_VECTOR_VECTOR_COLUMN_H
20 template<ContainerIdConcept CI,
typename CT>
36 auto myinfoOuter = info;
37 myinfoOuter.offsetName = CI::idName;
38 myinfoOuter.isOffset =
true;
39 auto myinfoInner = info;
40 myinfoInner.offsetName = std::string (CI::idName) +
"." + name +
".outerOffset";
41 myinfoInner.isOffset =
true;
42 info.offsetName = std::string (CI::idName) +
"." + name +
".innerOffset";
44 columnBase.addColumn (myinfoInner.offsetName, m_outerOffsetData.get(), std::move (myinfoOuter));
46 columnBase.addColumn (info.offsetName, m_innerOffsetData.get(), std::move (myinfoInner));
47 m_dataData = std::make_unique<ColumnAccessorDataArray> (&m_dataIndex, &m_dataData, &
typeid (ElementType),
ColumnAccessMode::input);
48 columnBase.addColumn (std::string (CI::idName) +
"." + name +
".data", m_dataData.get(), std::move (info));
76 return std::span<const ElementType> (
data +
index,
data + endIndex);},
77 std::span<const ColumnarOffsetType> (innerOffset + outerOffset[
id.getIndex()], innerOffset + outerOffset[
id.getIndex()+1]));
83 return data !=
nullptr;
char data[hepevt_bytes_allocation_ATLAS]
unsigned m_innerOffsetIndex
bool isAvailable(ObjectId< CI, CM > id) const noexcept
static constexpr ColumnAccessMode CAM
std::unique_ptr< ColumnAccessorDataArray > m_innerOffsetData
std::unique_ptr< ColumnAccessorDataArray > m_outerOffsetData
AccessorTemplate(ColumnarTool< CM > &columnBase, const std::string &name, ColumnInfo &&info={})
std::unique_ptr< ColumnAccessorDataArray > m_dataData
AccessorTemplate()=default
typename ColumnTypeTraits< CT, ColumnarModeArray >::ColumnType ElementType
AccessorTemplate(AccessorTemplate &&that)
unsigned m_outerOffsetIndex
a class representing a single object (electron, muons, etc.)
VectorConvertView(FunctionType &&, ViewType &&) -> VectorConvertView< std::remove_cv_t< FunctionType >, std::remove_cv_t< ViewType > >
void moveAccessor(unsigned &dataIndex, std::unique_ptr< ColumnAccessorDataArray > &accessorData, unsigned &sourceIndex, std::unique_ptr< ColumnAccessorDataArray > &sourceData)
ColumnAccessMode
an enum for the different access modes for a column
std::size_t ColumnarOffsetType
the type used for the size and offsets in the columnar data
a struct that contains meta-information about each column that's needed to interface the column with ...
a trait class to provide information about the column type
static constexpr bool isNativeType
std::map< std::string, HypoJetVector >::const_iterator CI