Доступ к другу TTree с помощью 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")
но это приводит к той же ошибке.
1 ответ
У меня был похожий вопрос, и я нашел ответ (ну, обходной путь) на форуме ROOT:
https://root-forum.cern.ch/t/accessing-a-friend-ttree-using-pyroot/25513
хотя решение не было представлено с использованием TFriend
,
Вместо этого Робс нашел обходной путь для своего собственного вопроса, просто загрузив два TFile
а также TTree
отдельно и работает LoadTree()
а также GetEvent()
на каждой TChain