1

我有几个包含 TTree 的 ROOT 文件,其中(除其他外)一些分支是 TVector3 对象。我正在尝试将矢量分量 (x, y, z) 加载到 Pandas DataFrame 中,但无论我尝试什么,我都会收到此错误:

ValueError: cannot interpret branch b'hitPosExtrap' as a Python type

我正在尝试使用uproot.pandas.iterate,但也尝试使用树的f[tree_name].array('hitPosExtrap')方法无济于事。阅读连根拔起的自述文件,我觉得它好像能够理解 TVector3 对象,但我想我错过了一些东西。

有谁知道我从这些树中获取矢量组件(或一些类似 TVector3 的对象)的方法?

4

1 回答 1

2

问题似乎是 TVector3 作为一个子分支存储在这个特定的根文件中。向量分量可作为该子分支的叶子访问:

f[tree_name]["hitPosExtrap"]["fX"].array()
f[tree_name]["hitPosExtrap"]["fY"].array()
f[tree_name]["hitPosExtrap"]["fZ"].array()

经过一番讨论(https://github.com/scikit-hep/uproot/issues/443),似乎uproot目前不支持在使​​用该pandas.iterate功能时直接提供分支+子分支的名称。现在必须明确地访问子分支。

于 2020-01-27T17:29:23.407 回答