首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在uproot中高效地检索曲目?

如何在uproot中高效地检索曲目?
EN

Stack Overflow用户
提问于 2019-12-29 23:13:01
回答 1查看 89关注 0票数 1

因此,我得到了一个包含两个TTree对象的TFile,这两个对象包含轨道/塔pT、eta和phi,由事件划分。我的目标是提取事件中的每个赛道和塔,然后使用FastJet包对整个事件进行聚类。现在,如果我使用纯根目录执行此任务,我的分析最多需要30分钟(使用大约100 GB的TFile)。在此期间,uproot在此时间限制内将仅处理10,000个事件...

很明显,我做错了什么,所以我想问,什么是访问逐条磁道信息的正确方法,以获得与ROOT相同的速度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-30 01:05:10

Uproot通过对每个Python函数调用的多个事件进行操作来提高效率。上次我检查过的FastJet接口一次只接受一个粒子: Python函数为每个事件中的每个粒子调用。在没有分析它的情况下,我怀疑这就是瓶颈。

还有另一个称为pyjet的库,它通过一次向FastJet提供一个完整的事件来改进这一点。一个事件中的所有粒子都被放入一个大型的连续NumPy数组中。那么,至少每个事件只有一个Python函数调用。

要在每个数组中执行多个事件,将需要交错数组(以指示一个事件在哪里停止,下一个事件在哪里开始)。已经有一些计划将笨拙的数组链接到FastJet来提供此功能,但目前,pyjet是您能做的最好的选择。如果每个事件有许多粒子,例如数百个,这可能是可以的。

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

https://stackoverflow.com/questions/59520611

复制
相关文章

相似问题

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