我正在尝试使用TTreeReader方法在PyROOT中读取TTrees。作为指南,我使用根6分析研讨会(http://root.cern.ch/drupal/content/7-using-ttreereader)及其相关的根文件(http://root.cern.ch/root/files/tutorials/mockupx.root)。
from ROOT import *
fileName = "mockupx.root"
file = TFile(fileName)
tree = file.Get("MyTree")
treeReader = TTreeReader("MyTree", file)在这之后,我有点迷失了。我尝试使用TTreeReader对象访问变量信息,但并不是很有效:
>>> rvMissingET = TTreeReaderValue(treeReader, "missingET")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/ROOT/v6-03-01/root/lib/ROOT.py", line 198, in __call__
result = _root.MakeRootTemplateClass( *newargs )
SystemError: error return without exception set我在哪里做错了?
发布于 2014-11-06 21:51:54
TTreeReaderValue是一个模板化的类,如TTreeReader文档中的示例所示,因此您需要指定模板类型。
您可以使用以下命令完成此操作
rvMissingET = ROOT.TTreeReaderValue(ROOT.Double)(treeReader, "missingET")Python built-ins可用于int和float类型,例如
rvInt = ROOT.TTreeReaderValue(int)(treeReader, "intBranch")
rvFloat = ROOT.TTreeReaderValue(float)(treeReader, "floatBranch")另请注意,using TTreeReader in PyROOT is not recommended。(如果您正在寻找Python中更快的元组分支访问,您可以查看我编写的Ntuple类。)
https://stackoverflow.com/questions/26590089
复制相似问题