uproot.lazyarrays не читает то, что показывает uproot.open - PullRequest
2 голосов
/ 19 октября 2019

Вернемся к еще одному быстрому вопросу о том, как правильно использовать выкорчевывание. Я пытаюсь загрузить выходной файл Delphes .root и пытаюсь перейти от использования uproot.open к использованию uproot.lazyarrays для использования разделенных файлов MC, и когда я наивно пытался приблизиться к этому, у меня были проблемы с получением некоторых изинформация из файла .root.

Я могу правильно открыть любой файл с помощью uproot.open и получить все содержимое, а команда "show" перечисляет их все.

Track                      TStreamerInfo              asdtype('>i4')
Track.PT                   TStreamerBasicType         asjagged(asdtype('>f4'))

LargeJet                   TStreamerInfo              asdtype('>i4')
LargeJet.PT                TStreamerBasicType         asjagged(asdtype('>f4'))


events = uproot.lazyarrays("*.root","Delphes")
print(len(events))                      # correct merged event number

print(events._contents["Track.PT"])     # shows correctly
print(events._contents["LargeJet.PT"])  # shows ([] [] [] ... [])

events = uproot.open("tag_1_delphes_events.root")["Delphes"]
events = events.arrays(["LargeJet.PT"],outputtype=tuple)
print(events)                           # shows correctly

Я быожидаю, что lazyarrays будет загружен правильно для всего содержимого, однако кажется, что я не могу получить часть содержимого, и я не могу понять, что и по какому правилу. Я использую PyCharm, и я могу получить доступ к содержимому загруженных файлов и увидеть, какие массивы загружены, а какие нет.

В чем может быть причина и / или как я могу это обработать?

...