16 #ifndef ROOT_RNTupleDS
17 #define ROOT_RNTupleDS
29 namespace Experimental {
35 class RNTupleDS final :
public ROOT::RDF::RDataSource {
37 std::vector<std::unique_ptr<ROOT::Experimental::RNTupleReader>> fReaders;
38 std::vector<std::unique_ptr<ROOT::Experimental::REntry>> fEntries;
40 std::vector<std::vector<void*>> fValuePtrs;
42 bool fHasSeenAllRanges =
false;
43 std::vector<std::string> fColumnNames;
44 std::vector<std::string> fColumnTypes;
47 explicit RNTupleDS(std::unique_ptr<ROOT::Experimental::RNTupleReader> ntuple);
48 ~RNTupleDS() =
default;
49 void SetNSlots(
unsigned int nSlots)
final;
50 const std::vector<std::string> &GetColumnNames() const final;
51 bool HasColumn(std::string_view colName) const final;
52 std::
string GetTypeName(std::string_view colName) const final;
53 std::vector<std::pair<ULong64_t, ULong64_t>> GetEntryRanges() final;
55 bool SetEntry(
unsigned int slot, ULong64_t entry) final;
57 void Initialise() final;
60 Record_t GetColumnReadersImpl(std::string_view name, const std::type_info &) final;
63 RDataFrame MakeNTupleDataFrame(std::string_view ntupleName, std::string_view fileName);