ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
DataQuality
DataQualityUtils
scripts
ScanHistFile.py
Go to the documentation of this file.
1
#!/bin/env python
2
3
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
4
#copied from DQPostProcessi.py and modified
5
# Sami Kama
6
import
sys
7
def
_dolsrwrapper
(fname):
8
import
ROOT
9
rf = ROOT.TFile.Open(fname,
'READ'
)
10
if
not
rf
or
not
rf.IsOpen():
11
print
(
' %s is empty or not accessible'
% fname)
12
return
3
13
if
rf.TestBit(ROOT.TFile.kRecovered):
14
print
(
" %s is recovered. It means it was corrupt"
% fname)
15
return
7
16
cleancache = ROOT.gROOT.MustClean(); ROOT.gROOT.SetMustClean(
False
)
17
RV=
_dolsr
(rf)
18
print
(
"dolsr returned %s "
%(RV))
19
rf.Close()
20
ROOT.gROOT.SetMustClean(cleancache)
21
return
RV
22
def
_dolsr
(dir):
23
import
ROOT
24
resultdir = dir.Get(
'Results'
); statusobj =
None
25
if
resultdir:
26
statusobj = resultdir.Get(
'Status'
)
27
if
statusobj:
28
l = statusobj.GetListOfKeys()
29
l[0].GetName()
30
keys = dir.GetListOfKeys()
31
for
key
in
keys:
32
name = key.GetName()
33
#print "Reading key named %s"%name
34
keyClass=ROOT.TClass.GetClass(key.GetClassName())
35
if
keyClass.InheritsFrom(
'TDirectory'
):
36
dirobj = key.ReadObj()
37
resultdir = dirobj.Get(
'Results'
); statusobj =
None
38
if
resultdir:
39
statusobj = resultdir.Get(
'Status'
)
40
# is a check? is a summary? or recurse?
41
if
name[-1] ==
'_'
and
resultdir:
42
hist = dir.Get(name[:-1])
43
subkeys = resultdir.GetListOfKeys()
44
for
subkey
in
subkeys:
45
ressub = subkey.GetName()
46
if
ressub
not
in
(
'Status'
,
'Reference'
,
'ResultObject'
)
and
ROOT.TClass.GetClass(subkey.GetClassName()).InheritsFrom(
'TDirectory'
):
47
subObj=subkey.ReadObj()
48
l = subObj.GetListOfKeys()
49
l[0].GetName()
50
# status flag
51
l = statusobj.GetListOfKeys()
52
l[0].GetName()
53
54
else
:
55
_dolsr
(dirobj)
56
del dirobj
57
elif
keyClass.InheritsFrom(
"TTree"
):
58
currObj=key.ReadObj()
59
if
currObj
is
None
:
60
print
(
"WARNING TTree Object \"%s\" in file:directory \"%s\" is corrupt "
\
61
"keylen=%s numbytes=%s objlen=%s fseekkey=%s"
%(name,dir.GetPath(),key.GetKeylen(),
62
key.GetNbytes(),key.GetObjlen(),key.GetSeekKey()))
63
return
9
64
else
:
65
nentries=currObj.GetEntriesFast()
66
#print "Scanning tree Object \"%s\" in file:directory \"%s\" is corrupt "\
67
#"keylen=%s numbytes=%s objlen=%s fseekkey=%s "%(name,dir.GetPath(),key.GetKeylen(),
68
# key.GetNbytes(),key.GetObjlen(),key.GetSeekKey()),
69
#print "Scanning tree %s"%name,
70
for
j
in
range(nentries):
71
ientry=currObj.LoadTree(j)
72
if
ientry<0:
73
break
74
nb=currObj.GetEntry(j)
75
if
nb<=0:
76
continue
77
#print " Done"
78
currObj.Delete()
79
del currObj
80
else
:
81
currObj=key.ReadObj()
82
if
currObj
is
None
:
83
print
(
"WARNING Object \"%s\" in file:directory \"%s\" is corrupt "
\
84
"keylen=%s numbytes=%s objlen=%s fseekkey=%s"
%(name,dir.GetPath(),key.GetKeylen(),
85
key.GetNbytes(),key.GetObjlen(),key.GetSeekKey()))
86
return
5
87
currObj.Delete()
88
del currObj
89
return
0
90
def
scanFiles
(globstr='testOutFile*'):
91
RV=
_dolsrwrapper
(globstr)
92
return
RV
93
if
__name__ ==
"__main__"
:
94
if
len(sys.argv)<2:
95
RV=
scanFiles
()
96
else
:
97
RV=
scanFiles
(
"%s"
%(sys.argv[1]))
98
sys.exit(RV)
print
void print(char *figname, TCanvas *c1)
Definition
TRTCalib_StrawStatusPlots.cxx:26
ScanHistFile.scanFiles
scanFiles(globstr='testOutFile *')
Definition
ScanHistFile.py:90
ScanHistFile._dolsr
_dolsr(dir)
Definition
ScanHistFile.py:22
ScanHistFile._dolsrwrapper
_dolsrwrapper(fname)
Definition
ScanHistFile.py:7
Generated on
for ATLAS Offline Software by
1.17.0