ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tools
PyUtils
python
scripts
dump_root_file.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
# @file PyUtils.scripts.dump_root_file
4
# @purpose ascii-fy a ROOT file
5
# @author Sebastien Binet
6
# @date December 2010
7
8
__doc__ =
"ASCII-fy a ROOT file"
9
__author__ =
"Sebastien Binet"
10
11
12
13
import
PyUtils.acmdlib
as
acmdlib
14
15
@acmdlib.command(name='dump-root')
16
@acmdlib.argument
(
'fname'
,
17
help=
'path to the ROOT file to dump'
)
18
@acmdlib.argument
(
'-t'
,
'--tree-name'
,
19
default=
None
,
20
help=
'name of the TTree to dump (default:all)'
)
21
@acmdlib.argument
(
'--entries'
,
22
default=
None
,
23
help=
"""a list of entries (indices, not event numbers) or an expression leading to such a list, to compare (default:all).
24
ex: --entries='0:10' to get the first 10 events
25
--entries='10:20:2' to get the even events between 10 and 20
26
--entries='range(10)' to get the first 10 events
27
--entries=10 to get the first 10 events
28
--entries=0,2,1 to get the entry 0, then 2 then 1
29
"""
)
30
@acmdlib.argument
(
'-v'
,
'--verbose'
,
31
action=
'store_true'
,
32
default=
False
,
33
help=
"""Enable verbose printout"""
)
34
def
main(args):
35
"""dump the content of a ROOT file into an ASCII format.
36
"""
37
38
import
PyUtils.RootUtils
as
ru
39
root = ru.import_root()
40
41
_inspect = root.RootUtils.PyROOTInspector.pyroot_inspect2
# noqa: F841
42
43
import
PyUtils.Logging
as
L
44
msg = L.logging.getLogger(
'dump-root'
)
45
msg.setLevel(L.logging.INFO)
46
47
msg.info(
'fname: [%s]'
, args.fname)
48
root_file = root.TFile.Open(args.fname)
49
if
(root_file
is
None
or
50
not
isinstance(root_file, root.TFile)
or
not
root_file.IsOpen()):
51
msg.error(
'could not open [%s]'
, args.fname)
52
return
1
53
54
tree_names = []
55
if
args.tree_name:
56
tree_names = args.tree_name.split(
','
)
57
else
:
58
tree_names = []
59
keys = [k.GetName()
for
k
in
root_file.GetListOfKeys()]
60
for
k
in
keys:
61
o = root_file.Get(k)
62
if
isinstance(o, root.TTree):
63
tree_names.append(k)
64
65
msg.info(
'dumping trees: %s'
, tree_names)
66
67
for
tree_name
in
tree_names:
68
f = ru.RootFileDumper(args.fname, tree_name)
69
nentries = f.tree.GetEntries()
70
if
args.entries:
71
nentries = args.entries
72
for
d
in
f.dump(tree_name, nentries):
73
tree_name, ientry, name, data = d
74
n =
'.'
.join(
map
(str, [tree_name,
"%03i"
%ientry]+name))
75
print
(
'%s %r'
%(n, data))
76
return
0
map
STL class.
Generated on
for ATLAS Offline Software by
1.17.0