29 std::array<ColumnarOffsetType, 2>
data = {0, 0};
36 virtual bool connect(
Backend , std::unordered_map<std::string,
const std::vector<ColumnarOffsetType>*>& ,std::unordered_map<std::string, ColumnInfo>& requestedColumns)
override
66 result.name =
"EventCount(auto)";
88 virtual bool connect(
Backend , std::unordered_map<std::string,
const std::vector<ColumnarOffsetType>*>& offsetColumns, std::unordered_map<std::string, ColumnInfo>& requestedColumns)
override
91 if (iter == requestedColumns.end())
95 const auto & offsetName = iter->second.offsetName;
96 if (offsetName.empty())
97 throw std::runtime_error (
"missing offset column for: " +
outputColumns.at(0).name);
99 if (
auto offsetIter = offsetColumns.find (offsetName); offsetIter != offsetColumns.end())
102 throw std::runtime_error (
"missing offset column for: " +
outputColumns.at(0).name +
" (offset column: " + offsetName +
")");
107 requestedColumns.erase (iter);
145 std::vector<ColumnarOffsetType>
offsets = {0};
153 outputColumns.push_back ({.name = val_columnName, .isOffset =
true});
154 outputColumns.push_back ({.name = val_columnName +
".name.data"});
155 outputColumns.push_back ({.name = val_columnName +
".name.offset", .isOffset =
true});
156 outputColumns.push_back ({.name = val_columnName +
".nameHash"});
159 virtual bool connect([[maybe_unused]]
Backend source, std::unordered_map<std::string,
const std::vector<ColumnarOffsetType>*>&
offsetColumns, std::unordered_map<std::string, ColumnInfo>& requestedColumns)
override
161 if (
auto iter = requestedColumns.find (
outputColumns.at(0).name);
162 iter != requestedColumns.end())
163 requestedColumns.erase (iter);
168 if (
auto iter = requestedColumns.find (
outputColumns.at(1).name);
169 iter != requestedColumns.end())
172 requestedColumns.erase (iter);
175 if (
auto iter = requestedColumns.find (
outputColumns.at(2).name);
176 iter != requestedColumns.end())
179 requestedColumns.erase (iter);
182 if (
auto iter = requestedColumns.find (
outputColumns.at(3).name);
183 iter != requestedColumns.end())
186 requestedColumns.erase (iter);
212 namesHash.push_back (std::hash<std::string> () (termName));
244 knownColumns.push_back (std::make_shared<ColumnReaderEventCount> ());
247 void makeCommonLateColumnReaders (std::vector<std::shared_ptr<TestUtils::ColumnReader>>& knownColumns,
const std::vector<std::string>& allMetTermNames)
249 if (!allMetTermNames.empty())
250 knownColumns.push_back(std::make_shared<ColumnReaderOutputMet>(
"OutputMET",allMetTermNames));
269 using namespace asg::msgUserCode;
275 for (
auto& [name, info] : requestedColumns)
279 auto offsetIter = requestedColumns.find(info.offsetName);
280 if (offsetIter == requestedColumns.end() || offsetIter->second.offsetName !=
eventRangeColumnName)
282 ANA_MSG_WARNING (
"skipping column {} as it is not a scalar decoration on a global container", name);
285 std::shared_ptr<TestUtils::ColumnReader> myColumn;
286 if (*info.type ==
typeid(
float))
287 myColumn = std::make_shared<TestUtils::ColumnReaderOutVector<float>>(info.name, 0);
288 else if (*info.type ==
typeid(
char))
289 myColumn = std::make_shared<TestUtils::ColumnReaderOutVector<char>>(info.name, 0);
290 else if (*info.type ==
typeid(std::uint16_t))
291 myColumn = std::make_shared<TestUtils::ColumnReaderOutVector<std::uint16_t>>(info.name, 0);
292 else if (*info.type ==
typeid(std::uint64_t))
293 myColumn = std::make_shared<TestUtils::ColumnReaderOutVector<std::uint64_t>>(info.name, 0);
296 ANA_MSG_WARNING(
"unhandled column type: " << info.name <<
" "<< info.type->name());
299 knownColumns.push_back(myColumn);
A number of constexpr particle constants to avoid hardcoding them directly in various places.
a class that holds the columnar data for a single call
void setColumn(std::size_t columnIndex, std::size_t size, CT *dataPtr)
set the data for the given column
the header information for the entire columnar data vector
static constexpr std::size_t nullIndex
the index used for an invalid index (always has to be 0)
std::unordered_map< std::string, ColumnInfo > getAllColumnInfo() const
get all columns as a map of ColumnInfo for use with IColumnData::connect
std::vector< OutputColumnInfo > outputColumns
constexpr double muonMassInMeV
the mass of the muon (in MeV)
std::variant< TTree *, RNTupleBackend * > Backend
void makeCommonColumnReaders(std::vector< std::shared_ptr< TestUtils::ColumnReader > > &knownColumns)
void makeCommonLateColumnReaders(std::vector< std::shared_ptr< TestUtils::ColumnReader > > &knownColumns, const std::vector< std::string > &allMetTermNames)
void makeOutputColumnReaders(std::vector< std::shared_ptr< TestUtils::ColumnReader > > &knownColumns, const ColumnVectorHeader &columnHeader)
const std::string eventRangeColumnName
the default name for the column containing the event range
@ Jet
The object is a jet.
@ Muon
The object is a muon.
the performance data for reading a single branch/column
std::array< ColumnarOffsetType, 2 > data
virtual void setData(ColumnVectorData &columnData) override
virtual void getEntry(Long64_t) override
virtual bool connect(Backend, std::unordered_map< std::string, const std::vector< ColumnarOffsetType > * > &, std::unordered_map< std::string, ColumnInfo > &requestedColumns) override
virtual void clearColumns() override
virtual BranchPerfData getPerfData(float) override
virtual void collectColumnData() override
virtual BranchPerfData getPerfData(float) override
virtual bool connect(Backend, std::unordered_map< std::string, const std::vector< ColumnarOffsetType > * > &offsetColumns, std::unordered_map< std::string, ColumnInfo > &requestedColumns) override
virtual void clearColumns() override
virtual void getEntry(Long64_t) override
virtual void collectColumnData() override
virtual void setData(ColumnVectorData &columnData) override
ColumnReaderOutVector(const std::string &val_columnName, const T &val_defaultValue)
const std::vector< ColumnarOffsetType > * offsetColumn
std::vector< char > namesData
std::vector< std::size_t > namesHash
const std::vector< ColumnarOffsetType > * offsetColumns
virtual void clearColumns() override
std::vector< std::string > termNames
virtual void getEntry(Long64_t) override
virtual bool connect(Backend source, std::unordered_map< std::string, const std::vector< ColumnarOffsetType > * > &offsetColumns, std::unordered_map< std::string, ColumnInfo > &requestedColumns) override
std::vector< ColumnarOffsetType > namesOffsets
std::vector< ColumnarOffsetType > offsets
virtual BranchPerfData getPerfData(float) override
virtual void collectColumnData() override
ColumnReaderOutputMet(const std::string &val_columnName, std::vector< std::string > val_termNames)
virtual void setData(ColumnVectorData &colData) override