【发布时间】:2020-10-16 12:35:06
【问题描述】:
总结:运行uproot tutorial 时,TTree 分支似乎丢失了。
我有一个根文件,其中包含一个名为“prod”的 TTree,它有一组复杂的锯齿状叶子和分支,我可以在 ROOT 的 TBrowser 中看到这些叶子和分支。 我使用此根文件作为输入启动了 uproot 教程,并在交互式会话开始时收到以下错误:
>>>import uproot as up
>>> file = up.open('small.root')
>>> file
<ROOTDirectory b'small.root' at 0x025b5e3477c0>
>>> file.keys()
[b'prod;1']
>>> file.classnames()
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
file.classnames()
AttributeError: 'ROOTDirectory' object has no attribute 'classnames'
>>> file['prod']
<TTree b'prod' at 0x025b5dd15d00>
为什么我在尝试获取类名时会出错?
忽略这一点并继续前进。下一个问题是当我尝试查看 TTree 中的内容时 prod
>>> tree = file['prod']
>>> tree.keys()
[b'COSMIC', b'COSMICRES', b'COTNBC', b'COTTIME', b'GLB', b'LUM', b'MET', b'MU', b'PHOTON', b'RESIDUALS', b'TRACK', b'TRKDET', b'VERTEX', b'ZVTX', b'MOM_ntk', b'MOM_pt', b'MOM_px', b'MOM_py', b'MOM_pz']
>>> branches = tree.arrays(namedecode='utf-8')
>>> branches.keys()
dict_keys(['MET', 'MOM_ntk', 'MOM_pt', 'MOM_px', 'MOM_py', 'MOM_pz'])
uproot 教程暗示我应该得到所有的分支,但显然我错过了很多分支。特别是,唯一被转移的分支是那些我称之为“简单”的分支,因为它们只有数字数据成员。
其他分支中包含更多项目。例如,“MU”分支具有事件中每个 μ 子的属性。首先是这样的 μ 子的数量,然后是每个 μ 子属性的进一步分支,例如它的质量和与之相关的轨道编号。 “MET”、“MOM_ntk”、“MOM_pt”、“MOM_px”、“MOM_py”和“MOM_pz”都只包含浮点数列表。 MOM_ntk 每个事件只有一个编号(称为“alpha”),而其他 MOM 分支的每个分支中都有“alpha”编号。
该文件只有 1000 个事件,总大小只有 5MB 左右。
我想知道所有其他分支机构都去了哪里!我的朋友“COTNBC”或“GLB”在哪里(其中应该包含所有运行和事件编号)。
任何建议或帮助将不胜感激!
具有 32GB RAM 的 Windows 10 电脑 Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz x64 处理器
【问题讨论】: