issue reading tracks.usr data
as a followup to the issue #39 (closed) , I realized that best_track fails with @adomi file because km3io can not read tracks.usr data. Here is the error:
In [1]: import km3io as ki
In [2]: r = ki.OfflineReader("/home/zineb/Downloads/mcv5.1.genhen_anumuNC.sirene.jte.jchain.aashower.7.root")
In [3]: trk = r.events[0].tracks
In [4]: trk.dir_z
Out[4]:
array([-1.07542271e-01, -1.07542271e-01, -1.07542271e-01, -1.19143022e-01,
-1.67952385e-01, -8.90734293e-02, -2.21739542e-01, -8.49305503e-02,
-7.90512441e-02, -1.09114738e-01, -9.05574075e-02, -8.80751009e-02,
-1.45556897e-01, -1.24347805e-01, -1.40586009e-01, -1.30909248e-01,
-9.08788819e-02, -1.27533107e-01, -1.09356231e-01, -1.07196582e-01,
-9.72476003e-02, -1.64802013e-01, -1.63353857e-01, -8.36759217e-02,
-8.47319654e-02, -1.12186443e-01, -1.09371233e-01, -1.33543743e-01,
-1.33543743e-01, -1.09371233e-01, -1.57637054e-01, -1.09371233e-01,
-1.57637054e-01, -1.09371233e-01, -1.81636876e-01, -1.09371233e-01,
-1.33543743e-01, -1.33543743e-01, 0.00000000e+00, 6.12323400e-17,
3.86674980e-01, -2.95017494e-01, -8.77054114e-01, -5.94520470e-01,
-9.55497952e-01, -9.38177935e-01, -9.97959630e-01, -9.93066708e-01,
-9.93017552e-01, -6.30810531e-01, -1.77665289e-01, -3.57597735e-01])
In [5]: trk.usr
/home/zineb/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/base.py:394: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
return cls.numpy.array(value, copy=False)
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-5-4163cab01346> in <module>
----> 1 trk.usr
~/km3net/km3net/km3io/km3io/rootio.py in __getattribute__(self, attr)
125 return self.__getkey__(attr)
126
--> 127 return object.__getattribute__(self, attr)
128
129 def __getkey__(self, key):
~/km3net/km3net/km3io/km3io/tools.py in __get__(self, obj, cls)
20 if obj is None:
21 return self
---> 22 prop = obj.__dict__[self.function.__name__] = self.function(obj)
23 return prop
24
~/km3net/km3net/km3io/km3io/offline.py in usr(self)
77 @cached_property
78 def usr(self):
---> 79 return Usr(self._mapper, self._branch, index_chain=self._index_chain)
80
81
~/km3net/km3net/km3io/km3io/offline.py in __init__(self, mapper, branch, index_chain)
92 self._usr_key = 'usr' if mapper.flat else mapper.key + '.usr'
93
---> 94 self._initialise()
95
96 def _initialise(self):
~/km3net/km3net/km3io/km3io/offline.py in _initialise(self)
117
118 if self._index_chain:
--> 119 data = unfold_indices(data, self._index_chain)
120
121 self._usr_data = data
~/km3net/km3net/km3io/km3io/tools.py in unfold_indices(obj, indices)
29 for depth, idx in enumerate(indices):
30 try:
---> 31 obj = obj[idx]
32 except IndexError:
33 print(
~/km3net/km3net/km3io/km3io/patches.py in new_getitem(self, item)
12 return ak1.Array(self)[item]
13 else:
---> 14 return old_getitem(self, item)
15
16
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/chunked.py in __getitem__(self, where)
340 if self._util_isinteger(head):
341 chunk, localhead = self.global2local(head)
--> 342 return chunk[(localhead,) + tail]
343
344 elif isinstance(head, slice):
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/virtual.py in __getitem__(self, where)
367
368 def __getitem__(self, where):
--> 369 return self.array[where]
370
371 def __setitem__(self, where, what):
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/virtual.py in array(self)
293 if self._array is None:
294 # states (1) and (3)
--> 295 return self.materialize()
296
297 elif self._cache is None:
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/awkward/array/virtual.py in materialize(self)
324
325 def materialize(self):
--> 326 array = self._util_toarray(self._generator(*self._args, **self._kwargs), self.DEFAULTTYPE)
327 if self._setitem is not None:
328 for n, x in self._setitem.items():
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/tree.py in __call__(self, entrystart, entrystop)
1986
1987 def __call__(self, entrystart, entrystop):
-> 1988 return self.branch.array(interpretation=self.interpretation, entrystart=entrystart, entrystop=entrystop, flatten=self.flatten, awkwardlib=self.awkwardlib, cache=None, basketcache=self.basketcache, keycache=self.keycache, executor=self.executor, blocking=True)
1989
1990 def lazyarray(path, treepath, branchname, interpretation=None, namedecode="utf-8", entrysteps=float("inf"), flatten=False, awkwardlib=None, cache=None, basketcache=None, keycache=None, executor=None, persistvirtual=False, localsource=MemmapSource.defaults, xrootdsource=XRootDSource.defaults, httpsource=HTTPSource.defaults, **options):
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/tree.py in array(self, interpretation, entrystart, entrystop, flatten, awkwardlib, cache, basketcache, keycache, executor, blocking)
1415 keycache = {}
1416
-> 1417 basket_itemoffset = self._basket_itemoffset(interpretation, basketstart, basketstop, keycache)
1418 basket_entryoffset = self._basket_entryoffset(basketstart, basketstop)
1419
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/tree.py in _basket_itemoffset(self, interpretation, basketstart, basketstop, keycache)
1370 for j, key in enumerate(self._threadsafe_iterate_keys(keycache, True, basketstart, basketstop)):
1371 i = basketstart + j
-> 1372 numitems = interpretation.numitems(key.border, self.basket_numentries(i))
1373 basket_itemoffset.append(basket_itemoffset[-1] + numitems)
1374 return basket_itemoffset
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/interp/jagged.py in numitems(self, numbytes, numentries)
59
60 def numitems(self, numbytes, numentries):
---> 61 return self.content.numitems(numbytes - numentries * self.skipbytes, numentries)
62
63 def source_numitems(self, source):
~/km3net/km3net/km3io/venv/lib/python3.8/site-packages/uproot/interp/numerical.py in numitems(self, numbytes, numentries)
157 dtype, shape = _dtypeshape(self.fromdtype)
158 quotient, remainder = divmod(numbytes, dtype.itemsize)
--> 159 assert remainder == 0
160 return quotient
161
AssertionError:
In [6]: