Доступ к другу 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

Другие вопросы по тегам