首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PyROOT中使用TTreeReader

如何在PyROOT中使用TTreeReader
EN

Stack Overflow用户
提问于 2014-10-27 22:42:13
回答 1查看 1.2K关注 0票数 0

我正在尝试使用TTreeReader方法在PyROOT中读取TTrees。作为指南,我使用根6分析研讨会(http://root.cern.ch/drupal/content/7-using-ttreereader)及其相关的根文件(http://root.cern.ch/root/files/tutorials/mockupx.root)。

代码语言:javascript
复制
from ROOT import *
fileName = "mockupx.root"
file = TFile(fileName)
tree = file.Get("MyTree")
treeReader = TTreeReader("MyTree", file)

在这之后,我有点迷失了。我尝试使用TTreeReader对象访问变量信息,但并不是很有效:

代码语言:javascript
复制
>>> 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

我在哪里做错了?

EN

回答 1

Stack Overflow用户

发布于 2014-11-06 21:51:54

TTreeReaderValue是一个模板化的类,如TTreeReader文档中的示例所示,因此您需要指定模板类型。

您可以使用以下命令完成此操作

代码语言:javascript
复制
rvMissingET = ROOT.TTreeReaderValue(ROOT.Double)(treeReader, "missingET")

Python built-ins可用于intfloat类型,例如

代码语言:javascript
复制
rvInt = ROOT.TTreeReaderValue(int)(treeReader, "intBranch")
rvFloat = ROOT.TTreeReaderValue(float)(treeReader, "floatBranch")

另请注意,using TTreeReader in PyROOT is not recommended。(如果您正在寻找Python中更快的元组分支访问,您可以查看我编写的Ntuple类。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26590089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档