scikit-hep / uproot3-methods

Pythonic behaviors for non-I/O related ROOT classes.
BSD 3-Clause "New" or "Revised" License
21 stars 28 forks source link

TLorentzVectorArray.p3 and TLorentzVectorArray.boostp3 broken, TLorentzVectorArray.empty_like returns invalid #89

Open jrueb opened 4 years ago

jrueb commented 4 years ago

Calling empty_like on a TLorentzVectorArray gives invalid results. The returning object's _valid method raises exceptions. Example:

import awkward
import uproot_methods

a = awkward.fromiter([[1, 2], [3]])
t = uproot_methods.TLorentzVectorArray.from_cartesian(a, a, a, a * 10)
print(t.empty_like())

This causes p3 and boostp3 to break, however it might not be visible in all cases. Slicing for example will make it visible:

t[[True, True]].p3

raises an exception.