【发布时间】:2016-04-19 21:52:11
【问题描述】:
如何在 C++ 代码中打开 .root 文件?并在终端上使用 C++ 代码从 .root 文件中读取和打印参数?
【问题讨论】:
标签: file frameworks analysis root-framework
如何在 C++ 代码中打开 .root 文件?并在终端上使用 C++ 代码从 .root 文件中读取和打印参数?
【问题讨论】:
标签: file frameworks analysis root-framework
你需要安装ROOT (https://root.cern.ch/)
那么您有几个选项,最简单的方法是在解释器中打开它,只需在控制台中输入即可:
root your_file.root
你可以在浏览器中查看,输入:
TBrowser b
从脚本/C++ 代码打开它并获取存储在其中的树:
#include "TFile.h"
#include "TTree.h"
TFile *f=new TFile("your_file.root");
TTree *tr=(TTree*)f->Get("the_tree_name");
【讨论】:
如果您仅限于终端(即无法访问 X 服务器),那么您可以使用类似的东西
root -l myfile.root
root [0] .ls
<...>
KEY: TTree tree;1 Demo ntuple
root [1] tree->Scan("parameter")
(参见根用户指南的section 11)。
根据您要打印的参数类型,您可能还需要考虑myObject->Print()(从您的根命令行会话中点击myObject->[tab])。
如果您可以使用图形用户界面(例如ssh -Y),那么@asen-christov 的答案就是您要走的路。
【讨论】:
我通常只保存一个文件(例如 try.cpp)
然后在终端输入root -l try.cpp
打印和扫描(如上面的答案所示)打印您需要的内容。
TBrowser b 显示 .root 文件中的内容(树、树枝和树叶)
【讨论】: