Чтение значений с помощью PyROOT

Я пытаюсь считывать значения из файла ROOT с помощью PyROOT и застрял с этой проблемой. Любая помощь приветствуется.

import ROOT
rootFile = "file.root"

f = ROOT.TFile(rootFile,'read')
tree = f.Get('FCS_ParametrizationInput')
leaves = tree.GetListOfLeaves()

# define dynamically a python class containing root Leaves objects
class PyListOfLeaves(dict) :
    pass

# create an istance
pyl = PyListOfLeaves()

for i in range(0,leaves.GetEntries() ) :
    leaf = leaves.At(i)
    name = leaf.GetName()
    # add dynamically attribute to my class 
    pyl.__setattr__(name,leaf)

    if name == 'TruthPz':
        break


nev = tree.GetEntries()
for iev in range(0,nev) :
    tree.GetEntry(iev)
    # get values from the tree using Python class pyl which contains leaves
    # objects 
    px = pyl.TruthPx.GetValue()
    py = pyl.TruthPy.GetValue()
    pz = pyl.TruthPz.GetValue()

    print(px)
    if iev == 10:
        break

Я основал свой код на этой ссылке. Я думаю, что я следую всему, как указано в этом примере. Однако вместо того, чтобы считывать значения импульса, как положено, я получаю постоянный вывод нулей. Моя древовидная структура показана на рисунке TBrowser.

введите описание изображения здесь

Спасибо!

0 ответов

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