使用 pyROOT 访问好友 TTree
Accessing a friend TTree using pyROOT
我有一个 pyROOT 脚本,我在其中使用 TChain::AddFriend 组合两个 TTrees:
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")
但这会产生同样的错误。
我有一个类似的问题,并在 ROOT 论坛上找到了答案(好吧,解决方法):
https://root-forum.cern.ch/t/accessing-a-friend-ttree-using-pyroot/25513
尽管没有使用 TFriend
提出解决方案。
相反,RobS 找到了解决他自己问题的解决方法,即分别加载 TFile
和 TTree
以及 运行 LoadTree()
和 GetEvent()
每个 TChain
我有一个 pyROOT 脚本,我在其中使用 TChain::AddFriend 组合两个 TTrees:
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")
但这会产生同样的错误。
我有一个类似的问题,并在 ROOT 论坛上找到了答案(好吧,解决方法):
https://root-forum.cern.ch/t/accessing-a-friend-ttree-using-pyroot/25513
尽管没有使用 TFriend
提出解决方案。
相反,RobS 找到了解决他自己问题的解决方法,即分别加载 TFile
和 TTree
以及 运行 LoadTree()
和 GetEvent()
每个 TChain