diff --git a/tree/treeplayer/inc/ROOT/TDFNodes.hxx b/tree/treeplayer/inc/ROOT/TDFNodes.hxx index cdf5bf3568e14fdd1682ab69f2f226d026f78a28..dfacc1dcf08a2dcc4025c26a6bf1584c85450f4d 100644 --- a/tree/treeplayer/inc/ROOT/TDFNodes.hxx +++ b/tree/treeplayer/inc/ROOT/TDFNodes.hxx @@ -56,6 +56,7 @@ class TLoopManager : public std::enable_shared_from_this<TLoopManager> { FilterBaseVec_t fBookedFilters; FilterBaseVec_t fBookedNamedFilters; ///< Contains a subset of fBookedFilters, i.e. only the named filters std::map<std::string, TCustomColumnBasePtr_t> fBookedCustomColumns; + ColumnNames_t fCustomColumnNames; ///< Contains names of all custom columns defined in the functional graph. RangeBaseVec_t fBookedRanges; std::vector<std::shared_ptr<bool>> fResProxyReadiness; ::TDirectory *const fDirPtr{nullptr}; @@ -94,6 +95,7 @@ public: std::shared_ptr<TLoopManager> GetSharedPtr() { return shared_from_this(); } const ColumnNames_t &GetDefaultColumnNames() const; const ColumnNames_t GetCustomColumns() const { return {}; }; + const ColumnNames_t &GetCustomColumnNames() const { return fCustomColumnNames; }; TTree *GetTree() const; TCustomColumnBase *GetBookedBranch(const std::string &name) const; const std::map<std::string, TCustomColumnBasePtr_t> &GetBookedColumns() const { return fBookedCustomColumns; } @@ -275,7 +277,8 @@ public: void InitSlot(TTreeReader *r, unsigned int slot) final { - InitTDFValues(slot, fValues[slot], r, fBranches, fTmpBranches, fImplPtr->GetBookedColumns(), TypeInd_t()); + InitTDFValues(slot, fValues[slot], r, fBranches, fImplPtr->GetCustomColumnNames(), fImplPtr->GetBookedColumns(), + TypeInd_t()); fHelper.InitSlot(r, slot); } @@ -371,8 +374,8 @@ public: void InitSlot(TTreeReader *r, unsigned int slot) final { - TDFInternal::InitTDFValues(slot, fValues[slot], r, fBranches, fTmpBranches, fImplPtr->GetBookedColumns(), - TypeInd_t()); + TDFInternal::InitTDFValues(slot, fValues[slot], r, fBranches, fImplPtr->GetCustomColumnNames(), + fImplPtr->GetBookedColumns(), TypeInd_t()); } void *GetValuePtr(unsigned int slot) final { return static_cast<void *>(fLastResultPtr[slot].get()); } @@ -515,8 +518,8 @@ public: void InitSlot(TTreeReader *r, unsigned int slot) final { - TDFInternal::InitTDFValues(slot, fValues[slot], r, fBranches, fTmpBranches, fImplPtr->GetBookedColumns(), - TypeInd_t()); + TDFInternal::InitTDFValues(slot, fValues[slot], r, fBranches, fImplPtr->GetCustomColumnNames(), + fImplPtr->GetBookedColumns(), TypeInd_t()); } // recursive chain of `Report`s diff --git a/tree/treeplayer/src/TDFNodes.cxx b/tree/treeplayer/src/TDFNodes.cxx index 31cb76429784e95c91117c6119c092de6bba543b..b8593c07a5983e35ea59eef560aee8c15d1576da 100644 --- a/tree/treeplayer/src/TDFNodes.cxx +++ b/tree/treeplayer/src/TDFNodes.cxx @@ -402,7 +402,9 @@ void TLoopManager::Book(const FilterBasePtr_t &filterPtr) void TLoopManager::Book(const TCustomColumnBasePtr_t &columnPtr) { - fBookedCustomColumns[columnPtr->GetName()] = columnPtr; + const auto &name = columnPtr->GetName(); + fBookedCustomColumns[name] = columnPtr; + fCustomColumnNames.emplace_back(name); } void TLoopManager::Book(const std::shared_ptr<bool> &readinessPtr)