【问题标题】:How to prevent a TTree being written to a TFile如何防止将 TTree 写入 TFile
【发布时间】:2016-07-23 22:09:07
【问题描述】:

在我的 ROOT 脚本中,我创建了一个 TTree,但我不想保存它。确保TTree 永远不会被保存到TFile 的最佳方法是什么?

我曾想过为我创建但不需要保存的每棵树创建一个TFile,但感觉应该有一种更简单的方法将TTree标记为不写。

【问题讨论】:

    标签: c++ root-framework


    【解决方案1】:

    我想你想要TTree::SetDirectory。传入一个 0 指针,就不会有“所有者”目录,包括没有 ROOT 内存管理。

    【讨论】:

    • 这可能是我想要的,尽管这会导致TTree 在我尝试访问它时消失。
    • 比较长,很难解开,如果我无法追踪错误,我会尝试做一个MWE。
    • 使用tree->SetDirectory(0) 可以正常工作,但也会影响连接树(因为我用TTree::CopyTree 创建了tree),这是一个单独的问题。
    • 是的,ROOT 内存结构有点令人反感。您可能希望在 TROOT(又名 global var gROOT:root.cern.ch/doc/master/classTROOT.html)有很多东西,您可以在其中切换文件、目录和临时目录(RAM?)之间的内存上下文。至少在直方图方面,SetDirectory 可以全局设置。也许这就是你的 TTree 发生的事情(如果不看 TTree 代码就很难说)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2013-02-08
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多