Accessing a friend TTree using pyROOT

607 Views Asked by At

I have a pyROOT script where I use TChain::AddFriend to combine two 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

When I run this I get:

$ 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'

With the last line commented-out it runs fine. So it appears I am not accessing the leaves of the friend tree (muon_gen) correctly. How do I access them?

I also tried combining the TTrees using:

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

but this produces the same error.

1

There are 1 best solutions below

1
On BEST ANSWER

I had a similar question, and found an answer (well, workaround) on the ROOT forum:
https://root-forum.cern.ch/t/accessing-a-friend-ttree-using-pyroot/25513
although no solution was presented using TFriend.

Instead, RobS found a workaround for his own question of just loading the two TFile and TTree separately and running LoadTree() and GetEvent() on each TChain