File indexing completed on 2024-11-25 02:29:58
0001
0002
0003
0004 import csv
0005 import re
0006 def is_intstr(s):
0007 try:
0008 int(s)
0009 return True
0010 except ValueError:
0011 return False
0012 class csvLumibyLSParser(object):
0013 def __init__(self,filename,RunX):
0014 self.__result={}
0015 self.__strresult={}
0016 self.__filename=filename
0017 self.__RunX=RunX
0018 csvReader=csv.reader(open(filename),delimiter=',')
0019 oldRun=0
0020 runnumber=0
0021 ldict = {}
0022 llist = []
0023 NonValidLumi = 0
0024 lastLumi = 0
0025 for row in csvReader:
0026 field0=str(row[0]).strip()
0027 fieldsplit=re.split(':',field0)
0028 runstring = fieldsplit[0]
0029 try:
0030 field1=str(row[1]).strip()
0031 fieldsplit=re.split(':',field1)
0032 lsstring = fieldsplit[0]
0033 except Exception as e:
0034 lsstring='1'
0035 if not is_intstr(runstring) or not is_intstr(lsstring):
0036 continue
0037 runnumber=int(runstring)
0038 lsnumber=int(lsstring)
0039
0040 if runnumber != oldRun:
0041 if oldRun>0:
0042 self.__result[oldRun]=ldict
0043 ldict = {}
0044 oldRun = runnumber
0045 lastLumi = 0
0046 NonValidLumi = 0
0047 else:
0048 oldRun = runnumber
0049
0050 try:
0051 if RunX=='Run2':
0052 delivered, recorded = float( row[4] ), float( row[5] )
0053 if RunX=='Run1':
0054 delivered, recorded = float( row[5] ), float( row[6] )
0055 except:
0056 print('Record not parsed, Run = %d, LS = %d' % (runnumber, lsnumber))
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076 elems = [ delivered,recorded ]
0077 ldict[lsnumber]=elems
0078
0079 self.__result[runnumber]=ldict
0080
0081 def runs(self):
0082 return self.__result.keys()
0083 def runsandls(self):
0084 '''return {run:lslist}
0085 '''
0086 return self.__result
0087
0088
0089
0090
0091 def numruns(self):
0092 return len(self.__result)
0093 def numls(self,run):
0094 return len(self.__result[run])
0095
0096 if __name__ == '__main__':
0097 result={}
0098
0099 filename='test.csv'
0100 s=csvLumibyLSParser(filename)
0101 print('runs : ',s.runs())
0102 print('full result : ',s.runsandls())
0103
0104 print('num runs : ',s.numruns())
0105
0106