-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathCheckErrorsDelphes.py
128 lines (104 loc) · 4.02 KB
/
CheckErrorsDelphes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import os, sys, getopt
execfile("/uscms_data/d3/jmanagan/EOSSafeUtils.py")
dir = sys.argv[1]
print; print 'Checking', dir
try:
opts, args = getopt.getopt(sys.argv[2:], "", ["verbose=", "resubmit=", "resub_num=", "pileup="])
except getopt.GetoptError as err:
print str(err)
sys.exit(1)
verbose_level = 0
resubmit = '0'
resub_num = -2
doNoLog = False
pileup = '0PU'
for o, a in opts:
print o, a
if o == '--verbose': verbose_level = int(a)
if o == '--resubmit': resubmit = a
if o == '--resub_num': resub_num = int(a)
if o == '--pileup': pileup = str(a)
print 'Pileup setting:',pileup
rootdir = '/eos/uscms/store/user/snowmass/noreplica/'+dir.split('/')[-2]+'/'
rootdir = rootdir.replace('_logs','')
print 'checking ROOT files in:',rootdir
folders = [x for x in os.walk(dir).next()[1]]
total_total = 0
total_succeeded = 0
total_error = 0
total_running = 0
total_roots = 0
no_roots = 0
size_fail = 0
copy_fail = 0
for folder in folders:
#to exclude one or more processes:
#if 'BBB-4p-0-600' not in folder and 'vbf-4p-2300' not in folder: continue
if pileup == '200PU' and '_200PU' not in folder:
print 'skipping',folder,', pileup was',pileup
continue
if pileup == '140PU' and '_140PU' not in folder:
print 'skipping',folder,', pileup was', pileup
continue
if pileup == '0PU' and '_0PU' not in folder:
print 'skipping',folder,', pileup was', pileup
continue
if verbose_level > 0: print; print folder
rootfiles = EOSlist_root_files(rootdir+folder)
total_roots += len(rootfiles)
files = [x for x in os.listdir(dir+'/'+folder) if '.jdl' in x]
os.listdir(dir+'/'+folder)
resub_index = []
count_total = 0
for file in files:
total_total+=1
index = file[file.find('_')+1:file.find('.')]
if '_' in index: index = index.split('_')[-1]
count_total += 1
try:
current = open(dir + '/'+folder+'/'+file.replace('.jdl','.out'),'r')
copyfail = False
for line in current:
if 'failure in xrdcp' in line: copyfail = True
if not nofail:
if verbose_level > 0:
print '\tXRDCP FAIL:',file,' and JobIndex:',index
copy_fail+=1
if resub_num == -1 or resub_num == 2: resub_index.append(index)
continue
except:
pass
thisroot = ''
for rootfile in rootfiles:
if '_'+index+'_' in rootfile: thisroot = rootfile
if thisroot != '':
zerosize = EOSisZeroSizefile(rootdir+folder+'/'+thisroot,'Sep')
if zerosize:
if verbose_level > 0:
print '\tZERO SIZE:',file,' and JobIndex:',index
size_fail+=1
if resub_num == -1 or resub_num == 0: resub_index.append(index)
continue
else:
if verbose_level > 0:
print '\tNO ROOT:',file,' and JobIndex:',index
no_roots+=1
if resub_num == -1 or resub_num == 1: resub_index.append(index)
continue
if resub_index != []: print 'RESUBS:', resub_index
if resubmit != '1': continue
indexind = 0
savedir = os.getcwd()
for index in resub_index:
os.chdir(dir + '/' + folder)
os.system('rm ' + dir + '/' + folder + '/' + folder.replace('_'+pileup,'') + '_' + index + '.out')
os.system('condor_submit ' + dir + '/' + folder + '/' + folder.replace('_'+pileup,'') + '_' + index + '.jdl')
indexind+=1
os.chdir(savedir)
print
print 'TOTAL JOBS: ', total_total
print 'ZERO SIZE:', size_fail
print 'COPY FAIL:', copy_fail
print 'NO ROOTS:', no_roots
print 'ROOT files:', total_roots
print 'DONE:', total_total - no_roots - size_fail - copy_fail