iris-hep / func_adl_uproot

Uproot-based backend for FuncADL
MIT License
0 stars 0 forks source link

`Choose` loses its input's fields #83

Closed masonproffitt closed 2 years ago

masonproffitt commented 2 years ago

Something like the following will fail:

ds.Where(lambda event: event.nJet >= 3).Select(lambda event: Zip({'p4': Zip({'pt': event.Jet_pt,
                                                                             'eta': event.Jet_eta,
                                                                             'phi': event.Jet_phi,
                                                                             'mass': event.Jet_mass}).ToFourMomenta(),
                                                                 'btag': event.Jet_btag}
                                                                 ).Choose(3)
                                                                 .Select(lambda triplet: {'btag_values': triplet.Select(lambda jet: jet.btag),
                                                                                          'p4': triplet.p4[0] + triplet.p4[1] + triplet.p4[2]}))

with the error AttributeError: no field named 'btag'. This is because ak.combinations produces an array of tuples, which only has numbered fields.