24 class RRootDS final :
public ROOT::RDF::RDataSource {
26 unsigned int fNSlots = 0U;
27 std::string fTreeName;
28 std::string fFileNameGlob;
29 mutable TChain fModelChain;
30 std::vector<double *> fAddressesToFree;
31 std::vector<std::string> fListOfBranches;
32 std::vector<std::pair<ULong64_t, ULong64_t>> fEntryRanges;
33 std::vector<std::vector<void *>> fBranchAddresses;
34 std::vector<std::unique_ptr<TChain>> fChains;
36 std::vector<void *> GetColumnReadersImpl(std::string_view,
const std::type_info &);
39 std::string AsString() {
return "ROOT data source"; };
42 RRootDS(std::string_view treeName, std::string_view fileNameGlob);
44 std::string GetTypeName(std::string_view colName)
const;
45 const std::vector<std::string> &GetColumnNames()
const;
46 bool HasColumn(std::string_view colName)
const;
47 void InitSlot(
unsigned int slot, ULong64_t firstEntry);
48 void FinaliseSlot(
unsigned int slot);
49 std::vector<std::pair<ULong64_t, ULong64_t>> GetEntryRanges();
50 bool SetEntry(
unsigned int slot, ULong64_t entry);
51 void SetNSlots(
unsigned int nSlots);
53 std::string GetLabel();
56 RDataFrame MakeRootDataFrame(std::string_view treeName, std::string_view fileNameGlob);