C++ 如何防止将TTree写入TFile
在我的根脚本中,我有一个C++ 如何防止将TTree写入TFile,c++,root-framework,C++,Root Framework,在我的根脚本中,我有一个TTree,我创建了这个树,但从不希望保存它。确保t树永远不会保存到t文件的最佳方法是什么 我曾想过为我创建的每一棵树创建一个t文件,但不需要保存,但感觉应该有一种更简单的方法将TTree标记为不可写入。我想您需要TTree::SetDirectory。传入一个0指针,将没有“所有者”目录,包括没有根内存管理。这可能就是我想要的,尽管这会导致TTree在我尝试访问它时消失。它相当长而且很难解开,如果我无法跟踪错误,我将尝试制作一个MWE。使用tree->SetDirect
TTree
,我创建了这个树,但从不希望保存它。确保t树
永远不会保存到t文件
的最佳方法是什么
我曾想过为我创建的每一棵树创建一个
t文件
,但不需要保存,但感觉应该有一种更简单的方法将TTree
标记为不可写入。我想您需要TTree::SetDirectory
。传入一个0指针,将没有“所有者”目录,包括没有根内存管理。这可能就是我想要的,尽管这会导致TTree
在我尝试访问它时消失。它相当长而且很难解开,如果我无法跟踪错误,我将尝试制作一个MWE。使用tree->SetDirectory(0)
工作正常,但也会影响连接的树(正如我用TTree::CopyTree
创建的tree
),这是一个单独的问题。是的,根内存结构有点令人讨厌。您可能希望在TROOT(又名global var gROOT:)有很多功能,可以在文件、目录和临时目录(RAM?)之间切换内存上下文。至少对于直方图SetDirectory
可以全局设置。也许你的TTree就是这样(不看TTree代码很难说)