11 #ifndef ROOT_RDFNODES_UTILS
12 #define ROOT_RDFNODES_UTILS
21 class TTreeReaderValue;
24 class TTreeReaderArray;
30 using namespace ROOT::VecOps;
31 using namespace ROOT::Detail::RDF;
32 using namespace ROOT::RDF;
37 struct TReaderValueOrArray {
38 using Proxy_t = TTreeReaderValue<T>;
42 struct TReaderValueOrArray<RVec<T>> {
43 using Proxy_t = TTreeReaderArray<T>;
47 using ReaderValueOrArray_t =
typename TReaderValueOrArray<T>::Proxy_t;
53 template <
typename RDFValueTuple, std::size_t... S>
54 void InitRDFValues(
unsigned int slot, RDFValueTuple &valueTuple, TTreeReader *r,
const ColumnNames_t &bn,
55 const RBookedCustomColumns &customCols, std::index_sequence<S...>,
56 const std::array<
bool,
sizeof...(S)> &isCustomColumn)
61 int expander[] = {(isCustomColumn[S]
62 ? std::get<S>(valueTuple).SetTmpColumn(slot, customCols.GetColumns().at(bn[S]).get())
63 : std::get<S>(valueTuple).MakeProxy(r, bn[S]),