9 rf = ROOT.TFile.Open(fname,
'READ')
10 if not rf
or not rf.IsOpen():
11 print(
' %s is empty or not accessible' % fname)
13 if rf.TestBit(ROOT.TFile.kRecovered):
14 print(
" %s is recovered. It means it was corrupt" % fname)
16 cleancache = ROOT.gROOT.MustClean(); ROOT.gROOT.SetMustClean(
False)
18 print(
"dolsr returned %s "%(RV))
20 ROOT.gROOT.SetMustClean(cleancache)
24 resultdir = dir.Get(
'Results'); statusobj =
None
26 statusobj = resultdir.Get(
'Status')
28 l = statusobj.GetListOfKeys()
30 keys = dir.GetListOfKeys()
34 keyClass=ROOT.TClass.GetClass(key.GetClassName())
35 if keyClass.InheritsFrom(
'TDirectory'):
36 dirobj = key.ReadObj()
37 resultdir = dirobj.Get(
'Results'); statusobj =
None
39 statusobj = resultdir.Get(
'Status')
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()
51 l = statusobj.GetListOfKeys()
57 elif keyClass.InheritsFrom(
"TTree"):
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()))
65 nentries=currObj.GetEntriesFast()
70 for j
in range(nentries):
71 ientry=currObj.LoadTree(j)
74 nb=currObj.GetEntry(j)
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()))
93 if __name__ ==
"__main__" :