ATLAS Offline Software
Loading...
Searching...
No Matches
ColumnReader.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_TEST_FIXTURES_COLUMN_READER_H
9#define COLUMNAR_TEST_FIXTURES_COLUMN_READER_H
10
14
15#include <Rtypes.h>
16
17#include <memory>
18#include <unordered_map>
19#include <variant>
20
21class TTree;
22namespace ROOT
23{
24 class RNTupleReader;
25 namespace Experimental
26 {
27 class RNTupleInspector;
28 }
29}
30
31namespace columnar
32{
33 class ColumnVectorData;
34
35 namespace TestUtils
36 {
37 struct BranchPerfData;
38 struct TestDefinition;
39
41 ROOT::RNTupleReader* reader = nullptr;
42 ROOT::Experimental::RNTupleInspector* inspector = nullptr;
43 };
44
45 using Backend = std::variant<TTree*, RNTupleBackend*>;
46
48 {
49 public:
50
52 {
53 std::string name;
54 bool isOffset = false;
55 bool primary = false;
56 bool enabled = false;
58 };
59 std::vector<OutputColumnInfo> outputColumns;
60
61 virtual ~ColumnReader () noexcept = default;
62
63 virtual bool connect(Backend source, std::unordered_map<std::string, const std::vector<ColumnarOffsetType>*>& offsetColumns, std::unordered_map<std::string, ColumnInfo>& requestedColumns) = 0;
64
67 {
68 for (auto& col : outputColumns)
69 {
70 if (col.enabled)
71 col.columnIndex = header.getColumnIndex (col.name);
72 }
73 }
74
75 virtual void clearColumns () = 0;
76
77 virtual void getEntry (Long64_t entry) = 0;
78
79 virtual void setData (ColumnVectorData& columnData) = 0;
80
81 [[nodiscard]] virtual BranchPerfData getPerfData (float emptyTime) = 0;
82
83 virtual void collectColumnData () = 0;
84 };
85
86 void makeCommonColumnReaders (std::vector<std::shared_ptr<TestUtils::ColumnReader>>& knownColumns);
87 void makeTTreeColumnReaders (std::vector<std::shared_ptr<TestUtils::ColumnReader>>& knownColumns, TTree *tree);
88 void makeRNTupleColumnReaders (std::vector<std::shared_ptr<TestUtils::ColumnReader>>& knownColumns, RNTupleBackend* rntbackend);
89 void makeCommonLateColumnReaders (std::vector<std::shared_ptr<TestUtils::ColumnReader>>& knownColumns, const std::vector<std::string>& allMetTermNames);
90 void makeOutputColumnReaders (std::vector<std::shared_ptr<TestUtils::ColumnReader>>& knownColumns, const ColumnVectorHeader& columnHeader);
91 }
92}
93
94#endif
a class that holds the columnar data for a single call
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::vector< OutputColumnInfo > outputColumns
virtual ~ColumnReader() noexcept=default
virtual BranchPerfData getPerfData(float emptyTime)=0
void connectColumnIndices(const ColumnVectorHeader &header)
lookup and store column indices from the header for all enabled output columns
virtual void setData(ColumnVectorData &columnData)=0
virtual bool connect(Backend source, std::unordered_map< std::string, const std::vector< ColumnarOffsetType > * > &offsetColumns, std::unordered_map< std::string, ColumnInfo > &requestedColumns)=0
virtual void getEntry(Long64_t entry)=0
Selection rules: declare transient members.
Definition DataVector.h:583
std::variant< TTree *, RNTupleBackend * > Backend
void makeTTreeColumnReaders(std::vector< std::shared_ptr< TestUtils::ColumnReader > > &knownColumns, TTree *tree)
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 makeRNTupleColumnReaders(std::vector< std::shared_ptr< TestUtils::ColumnReader > > &knownColumns, RNTupleBackend *rntbackend)
void makeOutputColumnReaders(std::vector< std::shared_ptr< TestUtils::ColumnReader > > &knownColumns, const ColumnVectorHeader &columnHeader)
std::size_t ColumnarOffsetType
the type used for the size and offsets in the columnar data
STL namespace.
a struct that contains meta-information about each column that's needed to interface the column with ...
Definition ColumnInfo.h:36
the performance data for reading a single branch/column
ROOT::Experimental::RNTupleInspector * inspector
TChain * tree