问题标签 [uproot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
44 浏览

python - 在 uproot 中读取 TH1D 和 TH2D 直方图

我有一个cern root 格式的文件,其中包含许多TH1D 和TH2D 直方图。我希望能够通过使用 uproot4 读取它们来绘制它们,然后使用 matplotlib 进行绘图。
我可以用 uproot.open(path) ok 打开文件,并且 print(file.keys()) 给出了直方图名称的列表,但我无法列出直方图内容或将它们转换为任何其他有意义的形式。谁能指出我的示例代码?

0 投票
1 回答
23 浏览

python - 根除问题:无法理解特定的“分支”

我在 python 中打开了一个根文件,如下所示:

一切都好,但如果我尝试探索时间分支,print(file[b'time'].keys())我会收到一条错误消息

'TVectorT_3c_double_3e_' 对象没有属性 'keys'

如何探索此分支中的值?

0 投票
0 回答
17 浏览

python - 读取 TBranchElement 时将解释设置为多暗淡数组

我有一个在一个分支元素上包含 TGeoTracks 的文件。TGeoTracks 有两个我感兴趣的私人成员,一些点和一个 4*nPoints 的数组(https://root.cern.ch/doc/master/TGeoTrack_8h_source.html#l00040)。

这是 TBrowser 中的 ROOT 文件:

在此处输入图像描述

请注意,TBrowser 中的解释有点误导,因为每个事件的所有四个元素都存储在同一个直方图中。

现在,我正在尝试使用 uproot 读取文件。此分支元素的默认解释是错误的:

所以我尝试了自定义解释:

但这失败了:

如何将此分支元素的解释指定为每点四个双精度数?

0 投票
1 回答
28 浏览

vector - 计算射流的不变质量时,uproot4/vector 中的 TLorentz 矢量特征

我希望总结喷气机中所有成分的 4 动量。在 uproot3 (+ uproot3-methods) 中,有创建一个 TLorentzVectorArray 并只是做 .sum() 的功能

所以这很好用:

然而,由于 uproot3 已被弃用,根据Uproot 4 中的 TLorentz 矢量的方式似乎是矢量包。我尝试的是以下内容。

p4.sum()现在的问题是那里似乎不存在此功能。我发现的另一种可能性显示在向量讨论 #117中。所以,现在我在导入之后添加vector.register_awkward()到最后jet_p4_u4 = ak.Array(p4, with_name="Momentum4D")

问题仍然存在,我如何总结 4 动量?在执行 ak.sum(jet_p4_u4, axis=-1) 时,只有 pt 和 energy 似乎具有正确的值,但 eta 和 phi 与 uproot3 的结果完全不同。

更新:似乎由于 ```ak.sum`` 函数无法以所需的方式将角度相加,因此用求和 x、y、z 和能量替换求和部分并像这样构造向量解决了问题。但是,我相信一定有比这更好的方法。所以当前的工作版本: