297 def _tree_dump(self, tree, itr_entries, leaves=None, retvecs=False, sortleaves=True):
300 import AthenaPython.PyAthena
as PyAthena
301 _pythonize = PyAthena.RootUtils.PyROOTInspector.pyroot_inspect2
303 tree_name = self.obj_name
304 nentries = tree.GetEntries()
305 if leaves
is not None:
306 leaves = [
str(b).rstrip(
'\0')
for b
in leaves]
309 leaves =
sorted([b.GetName().rstrip(
'\0')
for b
in tree.GetListOfBranches()])
312 if isinstance(itr_entries, str):
313 if ':' in itr_entries:
321 from itertools
import islice
322 itr_entries = islice(
range(nentries),
323 *map(toint, itr_entries.split(
':')))
324 elif (
'range' in itr_entries
or
326 itr_entries = eval(itr_entries)
329 _n =
int(itr_entries)
330 itr_entries =
range(_n)
332 print (
"** err ** invalid 'itr_entries' argument. will iterate over all entries.")
333 itr_entries =
range(nentries)
334 elif isinstance(itr_entries, list):
335 itr_entries = itr_entries
337 itr_entries =
range(itr_entries)
342 isinstance_ = isinstance
344 for ientry
in itr_entries:
345 hdr =
":: entry [%05i]..." % (ientry,)
348 err = tree.LoadTree(ientry)
350 print (
"**err** loading tree for entry",ientry)
354 nbytes = tree.GetEntry(ientry)
356 print (
"**err** reading entry [%s] of tree [%s]" % (ientry, tree_name))
357 hdr =
":: entry [%05i]... [ERR]" % (ientry,)
362 for br_name
in leaves:
363 hdr =
":: branch [%s]..." % (br_name,)
368 br = tree.GetBranch (br_name)
369 if br.GetClassName() !=
'':
375 getattr (ROOT, br.GetClassName())
376 val = getattr(tree, br_name)
377 _vals += [ ([br_name], val) ]
379 for l
in br.GetListOfLeaves():
380 if (br.GetNleaves() == 1
and (br_name == l.GetName()
or
381 br_name.endswith(
'.' + l.GetName()))):
382 _vals += [ ([br_name], _getLeaf (l)) ]
384 _vals += [ ([br_name, l.GetName()], _getLeaf (l)) ]
385 for py_name, val
in _vals:
386 if val
is None:
continue
388 vals = _pythonize(val, py_name,
True, retvecs)
389 except Exception
as err:
390 print (
"**err** for branch [%s] val=%s (type=%s)" % (
391 br_name, val,
type(val),
396 viter =
sorted(vals, key =
lambda x:
'.'.
join(s
for s
in x[0]
if isinstance_(s, str_)))
400 n = list_(map_(str_, o[0]))
402 yield tree_name, ientry, n, v