Skip to content

Commit 2601d6b

Browse files
committed
[RF] Correctly clone TTree in RooTreeDataStore::loadValues
Follows up on #6452.
1 parent d05d6de commit 2601d6b

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

roofit/roofitcore/src/RooTreeDataStore.cxx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -366,11 +366,8 @@ void RooTreeDataStore::createTree(RooStringView name, RooStringView title)
366366
void RooTreeDataStore::loadValues(const TTree *t, const RooFormulaVar* select, const char* /*rangeName*/, Int_t /*nStart*/, Int_t /*nStop*/)
367367
{
368368
// Make our local copy of the tree, so we can safely loop through it.
369-
// We need a custom deleter, because if we don't deregister the Tree from the directory
370-
// of the original, it tears it down at destruction time!
371-
auto deleter = [](TTree* tree){tree->SetDirectory(nullptr); delete tree;};
372-
std::unique_ptr<TTree, decltype(deleter)> tClone(static_cast<TTree*>(t->Clone()), deleter);
373-
tClone->SetDirectory(t->GetDirectory());
369+
std::unique_ptr<TTree> tClone{static_cast<TTree*>(const_cast<TTree*>(t)->CloneTree())};
370+
tClone->SetDirectory(nullptr);
374371

375372
// Clone list of variables
376373
RooArgSet sourceArgSet;

0 commit comments

Comments
 (0)