2 from RecoLuminosity.LumiDB
import csvSelectionParser,selectionParser,CommonUtil
5 filelist=inputfilename.split(
'+')
17 inputfilecontent=selectf.read()
23 hasHeader=csv.Sniffer().has_header(ifile.read(1024))
25 csvReader=csv.reader(ifile,delimiter=
',')
28 if hasHeader
and irow==0:
31 self.__inputResult.append(row)
35 '''return the input selection file name
39 '''if empty input selection filename give, I assume you only need to merge pieces of output result files into one
56 given the input result field name and typem return the list of values
61 fieldidx=self.__inputResultHeader.index(fieldname)
63 print 'field ',fieldname,
' not found'
66 stringvalue=r[fieldidx]
67 if fieldtype
in [
'int',
'unsigned int']:
69 print 'field ',fieldname,
' is not integer type'
72 result.append(int(stringvalue))
74 elif fieldtype
in [
'float']:
76 print 'field ',fieldname,
' is not float type'
79 result.append(float(stringvalue))
81 elif fieldtype
in [
'string',
'str']:
82 result.append(stringvalue)
84 raise 'unsupported type ',fieldtype
88 given the input result field name and type, return the total
93 fieldidx=self.__inputResultHeader.index(fieldname)
95 print 'field ',fieldname,
' not found'
98 stringvalue=r[fieldidx]
99 if fieldtype
in [
'int',
'unsigned int']:
101 print 'field ',fieldname,
' is not integer type'
104 result=int(result)+int(stringvalue)
106 elif fieldtype
in [
'float'] :
108 print 'field ',fieldname,
' is not float type'
111 result=float(result)+float(stringvalue)
114 raise 'cannot sum types other than int ,float'
119 return self.__inputSelectionFileparsingResult.runs()
123 return self.__inputSelectionFileparsingResult.runsandls()
127 return self.__inputSelectionFileparsingResult.runsandlsStr()
129 if __name__ ==
'__main__':
131 filename=
'../test/overview.csv+../test/overview-140381.csv+../test/Cert_132440-139103_7TeV_StreamExpress_Collisions10_JSON.txt'
134 print p.selectionfilename()
135 print p.resultfiles()
138 print 'do I only need to merge the results? ',p.mergeResultOnly()
139 resultheader=p.resultHeader()
140 result=p.resultInput()
141 alreadyprocessedRuns=p.fieldvalues(
'run',
'int')
142 print 'runs already have results ', alreadyprocessedRuns
143 print 'total delivered ',p.fieldtotal(
'delivered',
'float')
144 print 'total recorded ',p.fieldtotal(
'recorded',
'float')
146 for run,cmslslist
in p.runsandls().items():
147 if run
in alreadyprocessedRuns:
150 newrunsandls[run]=cmslslist
151 print 'runs and ls still need to be processed', newrunsandls
152 filename=
'../test/lumi_900_output.json'
154 print 'result 2: ',p2.runs()