摘要: 运行 uproot教程时,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”在哪里(应该包含所有运行和事件编号)。
任何建议或帮助将不胜感激!
Windows 10 PC,32GB RAM Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz x64 处理器