22def _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
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
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
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
67
68
69
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
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
void print(char *figname, TCanvas *c1)