Skip to content
Snippets Groups Projects
Commit 483eab58 authored by Tamas Gal's avatar Tamas Gal :speech_balloon:
Browse files

First iteration prototype

parent 9b2c4b45
No related branches found
No related tags found
1 merge request!47Resolve "uproot4 integration"
Pipeline #16331 failed
......@@ -19,8 +19,8 @@ class OfflineReader(EventReader):
item_name = "OfflineEvent"
skip_keys = ["t", "AAObject"]
aliases = {
"t_sec": "t.fSec",
"t_ns": "t.fNanoSec",
"t_sec": "t/t.fSec",
"t_ns": "t/t.fNanoSec",
"usr": "AAObject/usr",
"usr_names": "AAObject/usr_names",
}
......
......@@ -95,13 +95,28 @@ class EventReader:
def _initialise_keys(self):
skip_keys = set(self.skip_keys)
toplevel_keys = set(k.split("/")[0] for k in self._fobj[self.event_path].keys())
all_keys = set(self._fobj[self.event_path].keys())
toplevel_keys = set(k.split("/")[0] for k in all_keys)
valid_aliases = {}
for fromkey, tokey in self.aliases.items():
if tokey in all_keys:
valid_aliases[fromkey] = tokey
self.aliases = valid_aliases
keys = (toplevel_keys - skip_keys).union(
list(self.aliases.keys()) + list(self.nested_aliases)
list(valid_aliases) + list(self.nested_aliases)
)
for key in list(self.nested_branches) + list(self.nested_aliases):
keys.add("n_" + key)
# self._grouped_branches = {k for k in toplevel_keys - skip_keys if isinstance(self._fobj[self.event_path][k].interpretation, uproot.AsGrouped)}
valid_nested_branches = {}
for nested_key, aliases in self.nested_branches.items():
if nested_key in toplevel_keys:
valid_nested_branches[nested_key] = {}
subbranch_keys = self._fobj[self.event_path][nested_key].keys()
for fromkey, tokey in aliases.items():
if tokey in subbranch_keys:
valid_nested_branches[nested_key][fromkey] = tokey
self.nested_branches = valid_nested_branches
self._keys = keys
def keys(self):
......@@ -187,7 +202,6 @@ class EventReader:
) # all top-level keys for regular branches
log.debug("keys: %s", keys)
log.debug("aliases: %s", self.aliases)
# check for valid keys, e.g. `usr` is not always there and raises recursion error!
events_it = events.iterate(
keys, aliases=self.aliases, step_size=self._step_size
)
......@@ -197,8 +211,6 @@ class EventReader:
) # dict-key ordering is an implementation detail
log.debug("nested_keys: %s", nested_keys)
for key in nested_keys:
# print(f"adding {key} with keys {self.nested_branches[key].keys()} and aliases {self.nested_branches[key]}")
nested.append(
events[key].iterate(
self.nested_branches[key].keys(),
......
......@@ -264,7 +264,10 @@ def best_track(tracks, startend=None, minmax=None, stages=None):
if minmax is not None:
m1 = mask(tracks.rec_stages, minmax=minmax)
original_ndim = tracks.ndim
try:
original_ndim = tracks.ndim
except AttributeError:
original_ndim = 1
axis = 1 if original_ndim == 2 else 0
tracks = tracks[m1]
......@@ -278,6 +281,8 @@ def best_track(tracks, startend=None, minmax=None, stages=None):
out = tracks[m3]
if original_ndim == 1:
if isinstance(out, ak.Record):
return out[:, 0]
return out[0]
return out[:, 0]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment