ATLAS Offline Software
ToolColumnVectorMap.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 
8 #ifndef COLUMNAR_TOOL_WRAPPER_TOOL_COLUMN_VECTOR_MAP_H
9 #define COLUMNAR_TOOL_WRAPPER_TOOL_COLUMN_VECTOR_MAP_H
10 
12 
13 #include <unordered_map>
14 
15 namespace columnar
16 {
28 
30  {
33 
34  public:
35 
41  explicit ToolColumnVectorMap (ColumnVectorHeader& val_columnHeader, IColumnarTool& val_tool);
42 
43 
45  [[nodiscard]] const IColumnarTool& getTool () const {
46  return *m_tool; }
47 
49  [[nodiscard]] const ColumnVectorHeader& getColumnHeader () const {
50  return *m_columnHeader; }
51 
52 
58  [[nodiscard]] std::vector<std::string> getColumnNames () const;
59 
64  [[nodiscard]] std::size_t getColumnIndex (const std::string& name) const;
65 
66 
67 
74 
75 
78  template<typename CT>
79  void setColumn (ColumnVectorData& columnData, const std::string& name, std::size_t size, CT* dataPtr) const {
80  columnData.setColumn (getColumnIndex(name), size, dataPtr);
81  }
82 
85  void setColumnVoid (ColumnVectorData& columnData, const std::string& name, std::size_t size, const void *dataPtr, const std::type_info& type, bool isConst) const {
86  columnData.setColumnVoid (getColumnIndex(name), size, dataPtr, type, isConst);
87  }
88 
89 
92  template<typename CT>
93  [[nodiscard]] std::pair<std::size_t,CT*>
94  getColumn (ColumnVectorData& columnData, const std::string& name) const {
95  return columnData.getColumn<CT> (getColumnIndex(name));
96  }
97 
99  [[nodiscard]] std::pair<std::size_t,const void*>
100  getColumnVoid (ColumnVectorData& columnData, const std::string& name, const std::type_info *type, bool isConst) const {
101  return columnData.getColumnVoid (getColumnIndex(name), type, isConst);
102  }
103 
104 
105 
108 
109  private:
110 
112  const IColumnarTool *m_tool = nullptr;
113 
116 
119  {
120  unsigned index = 0u;
121  };
122  std::unordered_map<std::string,MyColumnInfo> m_columns;
123  };
124 }
125 
126 #endif
columnar::IColumnarTool
an interface for tools that operate on columnar data
Definition: IColumnarTool.h:214
columnar::ColumnVectorData::setColumn
void setColumn(std::size_t columnIndex, std::size_t size, CT *dataPtr)
set the data for the given column
Definition: ColumnVectorWrapper.h:169
index
Definition: index.py:1
columnar::ToolColumnVectorMap::ToolColumnVectorMap
ToolColumnVectorMap(ColumnVectorHeader &val_columnHeader, IColumnarTool &val_tool)
standard constructor
Definition: ToolColumnVectorMap.cxx:26
columnar::ColumnVectorHeader
the header information for the entire columnar data vector
Definition: ColumnVectorWrapper.h:97
columnar::ToolColumnVectorMap::m_tool
const IColumnarTool * m_tool
the wrapped tool
Definition: ToolColumnVectorMap.h:112
columnar::ToolColumnVectorMap::m_columns
std::unordered_map< std::string, MyColumnInfo > m_columns
Definition: ToolColumnVectorMap.h:122
columnar::ToolColumnVectorMap::MyColumnInfo
my cached information for the various columns needed
Definition: ToolColumnVectorMap.h:119
columnar::ToolColumnVectorMap
a class that interfaces an IColumnarTool to a ColumnVectorHeader
Definition: ToolColumnVectorMap.h:30
columnar::ToolColumnVectorMap::getColumnNames
std::vector< std::string > getColumnNames() const
get the list of all defined columns
Definition: ToolColumnVectorMap.cxx:61
columnar::ToolColumnVectorMap::getColumnVoid
std::pair< std::size_t, const void * > getColumnVoid(ColumnVectorData &columnData, const std::string &name, const std::type_info *type, bool isConst) const
get the data for the given column in a type-erased manner
Definition: ToolColumnVectorMap.h:100
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
columnar::ToolColumnVectorMap::setColumn
void setColumn(ColumnVectorData &columnData, const std::string &name, std::size_t size, CT *dataPtr) const
set the data for the given column picking up the type via a template
Definition: ToolColumnVectorMap.h:79
columnar::ColumnVectorData::getColumnVoid
std::pair< std::size_t, const void * > getColumnVoid(std::size_t columnIndex, const std::type_info *type, bool isConst)
Definition: ColumnVectorWrapper.cxx:242
columnar::ToolColumnVectorMap::setColumnVoid
void setColumnVoid(ColumnVectorData &columnData, const std::string &name, std::size_t size, const void *dataPtr, const std::type_info &type, bool isConst) const
set the data for the given column with the user passing in the type
Definition: ToolColumnVectorMap.h:85
columnar::ColumnVectorData::setColumnVoid
void setColumnVoid(std::size_t columnIndex, std::size_t size, const void *dataPtr, const std::type_info &type, bool isConst)
Definition: ColumnVectorWrapper.cxx:208
columnar::ColumnVectorData::getColumn
std::pair< std::size_t, CT * > getColumn(std::size_t columnIndex)
get the data for the given column
Definition: ColumnVectorWrapper.h:179
ColumnVectorWrapper.h
columnar::size
std::size_t size() const noexcept
Definition: ObjectRange.h:166
columnar::ToolColumnVectorMap::m_columnHeader
ColumnVectorHeader * m_columnHeader
the header information for the various columns needed
Definition: ToolColumnVectorMap.h:115
columnar::final
CM final
Definition: ColumnAccessor.h:106
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
columnar::ColumnVectorData
a class that holds the columnar data for a single call
Definition: ColumnVectorWrapper.h:158
columnar::CT
CT
Definition: ColumnAccessor.h:160
columnar
Definition: ClusterDef.h:16
columnar::ToolColumnVectorMap::getTool
const IColumnarTool & getTool() const
get the wrapped tool
Definition: ToolColumnVectorMap.h:45
columnar::ToolColumnVectorMap::getColumnIndex
std::size_t getColumnIndex(const std::string &name) const
get the index for the column with the given name
Definition: ToolColumnVectorMap.cxx:73
columnar::ToolColumnVectorMap::getColumnHeader
const ColumnVectorHeader & getColumnHeader() const
get the header information for the various columns needed
Definition: ToolColumnVectorMap.h:49
columnar::ToolColumnVectorMap::getColumn
std::pair< std::size_t, CT * > getColumn(ColumnVectorData &columnData, const std::string &name) const
get the data for the given column picking up the type via a template
Definition: ToolColumnVectorMap.h:94