使用pyROOT访问朋友TTree

时间:2017-07-11 17:55:13

标签: python root-framework pyroot

我有一个pyROOT脚本,我使用TChain :: AddFriend来组合两个TTree:

from ROOT import TFile, gDirectory 

myfile = TFile("e.root")
mychain = gDirectory.Get("elec_gen")
entries = mychain.GetEntriesFast()

friendFile = TFile("mu.root")
friendChain = gDirectory.Get("muon_gen")
mychain.AddFriend("muon_gen")

elec_gen_evtNum = mychain.evtNum
muon_gen_evtNum = mychain.muon_gen.evtNum

当我跑步时,我得到:

$ python friendTest.py 
Traceback (most recent call last):
  File "friendTest.py", line 12, in <module>
    muon_gen_evtNum = mychain.muon_gen.evtNum
AttributeError: 'TTree' object has no attribute 'muon_gen'

最后一行注释掉它运行正常。所以看来我没有正确访问朋友树(muon_gen)的叶子。我如何访问它们?

我还尝试使用以下方法组合TTrees:

mychain.AddFriend("muon_gen","mu.root")

但这会产生同样的错误。

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,并在ROOT论坛上找到了答案(很好,解决方法):
https://root-forum.cern.ch/t/accessing-a-friend-ttree-using-pyroot/25513
尽管没有使用TFriend提出解决方案。

相反,RobS针对自己的问题找到了一种解决方法,即仅分别加载两个TFileTTree并在每个LoadTree()上运行GetEvent()TChain