def getInstLumiPerLS(dbsession,c,runList,selectionDict,beamstatus=None,beamenergy=None,beamenergyfluctuation=0.09,finecorrections=None): ''' input: runList[runnum], selectionDict{runnum:[ls]} output:[[runnumber,lsnumber,deliveredInst,recordedInst,norbit,startorbit,runstarttime,runstoptime]] ''' result=[] selectedRunlist=runList if len(selectionDict)!=0: selectedRunlist=[] allruns=runlist+selectionDict.keys() dups=CommonUtil.count_dups(allruns) for runnum,dupcount in dups: if dupcount==2: selectedRunlist.append(runnum) dbsession.transaction().start(True) for run in selectedRunlist: q=dbsession.nominalSchema().newQuery() runsummary=lumiQueryAPI.runsummaryByrun(q,run) del q runstarttime=runsummary[3] runstoptime=runsummary[4] q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[run]: lumiperrun=lumiQueryAPI.lumisummaryByrun(q,run,c.LUMIVERSION,beamstatus,beamenergy,beamenergyfluctuation,finecorrections=finecorrections[run]) else: lumiperrun=lumiQueryAPI.lumisummaryByrun(q,run,c.LUMIVERSION,beamstatus,beamenergy,beamenergyfluctuation) del q if len(lumiperrun)==0: #no result for this run result.append([run,1,0.0,0.0,0,0,runstarttime,runstoptime]) else: for lumiperls in lumiperrun: cmslsnum=lumiperls[0] instlumi=lumiperls[1] recordedlumi=0.0 numorbit=lumiperls[2] startorbit=lumiperls[3] deadcount=0 bitzero=0 result.append([run,cmslsnum,instlumi,recordedlumi,numorbit,startorbit,runstarttime,runstoptime]) dbsession.transaction().commit() if c.VERBOSE: print result return result
def main(*args): runnum = 0 try: runnum = args[1] report = csvReporter.csvReporter('instlumibytime-' + str(runnum) + '.csv') msg = coral.MessageStream('') msg.setMsgVerbosity(coral.message_Level_Error) os.environ['CORAL_AUTH_PATH'] = '/afs/cern.ch/cms/lumi' svc = coral.ConnectionService() connectstr = 'oracle://cms_orcoff_prod/cms_lumi_prod' session = svc.connect(connectstr, accessMode=coral.access_ReadOnly) session.typeConverter().setCppTypeForSqlType("unsigned int", "NUMBER(10)") session.typeConverter().setCppTypeForSqlType("unsigned long long", "NUMBER(20)") session.transaction().start(True) schema = session.nominalSchema() q = schema.newQuery() runsummaryOut = lumiQueryAPI.runsummaryByrun(q, runnum) del q q = schema.newQuery() lumisummaryOut = lumiQueryAPI.lumisummaryByrun(q, runnum, '0001') del q session.transaction().commit() del session del svc #print runsummaryOut starttimestr = runsummaryOut[3] t = lumiTime.lumiTime() report.writeRow(['cmslsnum', 'utctime', 'unixtimestamp', 'instlumi']) for dataperls in lumisummaryOut: cmslsnum = dataperls[0] instlumi = dataperls[1] startorbit = dataperls[3] orbittime = t.OrbitToTime(starttimestr, startorbit) orbittimestamp = time.mktime( orbittime.timetuple()) + orbittime.microsecond / 1e6 report.writeRow([cmslsnum, orbittime, orbittimestamp, instlumi]) except IndexError: print 'runnumber should be provided' return 1 except Exception as er: print str(er) return 2 else: return 0
def main(*args): runnum=0 try: runnum=args[1] report=csvReporter.csvReporter('instlumibytime-'+str(runnum)+'.csv') msg=coral.MessageStream('') msg.setMsgVerbosity(coral.message_Level_Error) os.environ['CORAL_AUTH_PATH']='/afs/cern.ch/cms/lumi' svc = coral.ConnectionService() connectstr='oracle://cms_orcoff_prod/cms_lumi_prod' session=svc.connect(connectstr,accessMode=coral.access_ReadOnly) session.typeConverter().setCppTypeForSqlType("unsigned int","NUMBER(10)") session.typeConverter().setCppTypeForSqlType("unsigned long long","NUMBER(20)") session.transaction().start(True) schema=session.nominalSchema() q=schema.newQuery() runsummaryOut=lumiQueryAPI.runsummaryByrun(q,runnum) del q q=schema.newQuery() lumisummaryOut=lumiQueryAPI.lumisummaryByrun(q,runnum,'0001') del q session.transaction().commit() del session del svc #print runsummaryOut starttimestr=runsummaryOut[3] t=lumiTime.lumiTime() report.writeRow(['cmslsnum','utctime','unixtimestamp','instlumi']) for dataperls in lumisummaryOut: cmslsnum=dataperls[0] instlumi=dataperls[1] startorbit=dataperls[3] orbittime=t.OrbitToTime(starttimestr,startorbit) orbittimestamp=time.mktime(orbittime.timetuple())+orbittime.microsecond/1e6 report.writeRow([cmslsnum,orbittime,orbittimestamp,instlumi]) except IndexError: print('runnumber should be provided') return 1 except Exception as er: print(str(er)) return 2 else: return 0
def getLumiPerRun(dbsession,c,run,beamstatus=None,beamenergy=None,beamenergyfluctuation=0.09,finecorrections=None): ''' input: run output:{runnumber:[[lsnumber,deliveredInst,recordedInst,norbit,startorbit,runstarttime,runstoptime]]} ''' result=[] dbsession.transaction().start(True) q=dbsession.nominalSchema().newQuery() runsummary=lumiQueryAPI.runsummaryByrun(q,run) del q runstarttime=runsummary[3] runstoptime=runsummary[4] fillnum=runsummary[0] q=dbsession.nominalSchema().newQuery() lumiperrun=lumiQueryAPI.lumisummaryByrun(q,run,c.LUMIVERSION,beamstatus,beamenergy,beamenergyfluctuation,finecorrections=finecorrections) del q q=dbsession.nominalSchema().newQuery() trgperrun=lumiQueryAPI.trgbitzeroByrun(q,run) # {cmslsnum:[trgcount,deadtime,bitname,prescale]} del q for lumiperls in lumiperrun: cmslsnum=lumiperls[0] instlumi=lumiperls[1] recordedlumi=0.0 numorbit=lumiperls[2] startorbit=lumiperls[3] deadcount=0 bitzero=0 if trgperrun.has_key(cmslsnum): bitzero=trgperrun[cmslsnum][0] deadcount=trgperrun[cmslsnum][1] bitzeroprescale=trgperrun[cmslsnum][-1] try: recordedlumi=instlumi*(1.0-float(deadcount)/(float(bitzero)*float(bitzeroprescale))) except ZeroDivisionError: recordedlumi=-0.1 # result.append([cmslsnum,instlumi,recordedlumi,numorbit,startorbit,fillnum,runstarttime,runstoptime]) dbsession.transaction().commit() if c.VERBOSE: print result return result
def getSpecificLumi(dbsession,parameters,fillnum,inputdir,finecorrections=None): ''' specific lumi in 1e-30 (ub-1s-1) unit lumidetail occlumi in 1e-27 1309_lumi_401_CMS.txt time(in seconds since January 1,2011,00:00:00 UTC) stab(fraction of time spent in stable beams for this time bin) l(lumi in Hz/ub) dl(point-to-point error on lumi in Hz/ub) sl(specific lumi in Hz/ub) dsl(error on specific lumi) 20800119.0 1 -0.889948 0.00475996848729 0.249009 0.005583287562 -0.68359 6.24140208607 0.0 0.0 0.0 0.0 0.0 0.0 0.0383576 0.00430892097862 0.0479095 0.00430892097862 66.6447 4.41269758764 0.0 0.0 0.0 result [(time,beamstatusfrac,lumi,lumierror,speclumi,speclumierror)] ''' #result=[] runtimesInFill=getFillFromFile(fillnum,inputdir)#{runnum:starttimestr} beamstatusDict={}#{runnum:{(startorbit,cmslsnum):beamstatus}} t=lumiTime.lumiTime() fillbypos={}#{bxidx:(lstime,beamstatusfrac,lumi,lumierror,specificlumi,specificlumierror)} #referencetime=time.mktime(datetime.datetime(2010,1,1,0,0,0).timetuple()) referencetime=0 if fillnum and len(runtimesInFill)==0: runtimesInFill=getFillFromDB(dbsession,parameters,fillnum)#{runnum:starttimestr} #precheck totalstablebeamLS=0 for runnum in runtimesInFill.keys(): q=dbsession.nominalSchema().newQuery() runinfo=lumiQueryAPI.lumisummaryByrun(q,runnum,'0001',beamstatus=None) del q lsbeamstatusdict={} for perlsdata in runinfo: cmslsnum=perlsdata[0] startorbit=perlsdata[3] beamstatus=perlsdata[4] lsbeamstatusdict[(startorbit,cmslsnum)]=beamstatus #print (startorbit,cmslsnum),beamstatus if beamstatus=='STABLE BEAMS': totalstablebeamLS+=1 beamstatusDict[runnum]=lsbeamstatusdict if totalstablebeamLS<10:#less than 10 LS in a fill has 'stable beam', it's no a good fill print 'fill ',fillnum,' , having less than 10 stable beam lS, is not good, skip' return fillbypos for runnum,starttime in runtimesInFill.items(): #if not runtimesInFill.has_key(runnum): # print 'run '+str(runnum)+' does not exist' # continue q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[runnum]: occlumidata=lumiQueryAPI.calibratedDetailForRunLimitresult(q,parameters,runnum,finecorrection=finecorrections[runnum])#{(startorbit,cmslsnum):[(bxidx,lumivalue,lumierr)]} #values after cut else: occlumidata=lumiQueryAPI.calibratedDetailForRunLimitresult(q,parameters,runnum) del q #print occlumidata q=dbsession.nominalSchema().newQuery() beamintensitydata=lumiQueryAPI.beamIntensityForRun(q,parameters,runnum)#{startorbit:[(bxidx,beam1intensity,beam2intensity),()]} #print 'beamintensity for run ',runnum,beamintensitydata del q for (startorbit,cmslsnum),lumilist in occlumidata.items(): if len(lumilist)==0: continue beamstatusflag=beamstatusDict[runnum][(startorbit,cmslsnum)] beamstatusfrac=0.0 if beamstatusflag=='STABLE BEAMS': beamstatusfrac=1.0 lstimestamp=t.OrbitToUTCTimestamp(starttime,startorbit) for lumidata in lumilist:#loop over bx bxidx=lumidata[0] lumi=lumidata[1] lumierror=lumidata[2] speclumi=(0.0,0.0) if not fillbypos.has_key(bxidx): fillbypos[bxidx]=[] if beamintensitydata.has_key(startorbit): beaminfo=beamintensitydata[startorbit] for beamintensitybx in beaminfo: if beamintensitybx[0]==bxidx: beam1intensity=beamintensitybx[1] beam2intensity=beamintensitybx[2] if beam1intensity<0: beam1intensity=0 if beam2intensity<0: beam2intensity=0 speclumi=calculateSpecificLumi(lumi,lumierror,beam1intensity,0.0,beam2intensity,0.0) break fillbypos[bxidx].append((lstimestamp-referencetime,beamstatusfrac,lumi,lumierror,speclumi[0],speclumi[1])) #print 'fillbypos.keys ',fillbypos.keys() return fillbypos
def insertupdateValidationData(dbsession,data): ''' input: data {run:[[ls,status,comment]]} ''' toreplacenocomment=[]#[[('RUNNUM',runnum),('CMSLSNUM',cmslsnum),('FLAG',flag)],[]] toreplacewcomment=[]#[[('RUNNUM',runnum),('CMSLSNUM',cmslsnum),('FLAG',flag),('COMMENT',comment)],[]] toinsert=[] #[[('RUNNUM',runnum),('CMSLSNUM',cmslsnum),('FLAG',flag),('COMMENT',comment)],[]] try: dbsession.transaction().start(True) dbutil=dbUtil.dbUtil(dbsession.nominalSchema()) for run,alllsdata in data.items(): lsselection=[] if len(alllsdata)==0:#cross query lumisummary to get all the cmslsnum for this run,then insert all to default queryHandle=dbsession.nominalSchema().newQuery() lumisummaryData=lumiQueryAPI.lumisummaryByrun(queryHandle,run,'0001') del queryHandle for lumisummary in lumisummaryData: if lumisummary[-1]==1:#cmsalive lsselection.append([lumisummary[0],'UNKNOWN','NA']) else: lsselection=alllsdata if len(lsselection)==0: print 'no LS found for run '+str(run)+' do nothing' continue for lsdata in lsselection: condition='RUNNUM=:runnum AND CMSLSNUM=:cmslsnum' conditionDefDict={} conditionDefDict['runnum']='unsigned int' conditionDefDict['cmslsnum']='unsigned int' conditionDict={} conditionDict['runnum']=run conditionDict['cmslsnum']=lsdata[0] if dbutil.existRow(nameDealer.lumivalidationTableName(),condition,conditionDefDict,conditionDict): if len(lsdata)>2 and lsdata[2]: toreplacewcomment.append([('runnum',run),('cmslsnum',lsdata[0]),('flag',lsdata[1]),('comment',lsdata[2])]) else: toreplacenocomment.append([('runnum',run),('cmslsnum',lsdata[0]),('flag',lsdata[1]),('comment','')]) else: if len(lsdata)>2 and lsdata[2]: toinsert.append([('RUNNUM',run),('CMSLSNUM',lsdata[0]),('FLAG',lsdata[1]),('COMMENT',lsdata[2])]) else: toinsert.append([('RUNNUM',run),('CMSLSNUM',lsdata[0]),('FLAG',lsdata[1]),('COMMENT','N/A')]) dbsession.transaction().commit() #print 'toreplace with comment ',toreplacewcomment #print 'toreplace without comment ',toreplacenocomment #print 'toinsert ',toinsert #perform insert if len(toinsert)!=0: dbsession.transaction().start(False) dbutil=dbUtil.dbUtil(dbsession.nominalSchema()) tabrowDef=[] tabrowDef.append(('RUNNUM','unsigned int')) tabrowDef.append(('CMSLSNUM','unsigned int')) tabrowDef.append(('FLAG','string')) tabrowDef.append(('COMMENT','string')) dbutil.bulkInsert(nameDealer.lumivalidationTableName(),tabrowDef,toinsert) dbsession.transaction().commit() #perform update with comment if len(toreplacewcomment)!=0: dbsession.transaction().start(False) dbutil=dbUtil.dbUtil(dbsession.nominalSchema()) updateAction='FLAG=:flag,COMMENT=:comment' updateCondition='RUNNUM=:runnum and CMSLSNUM=:cmslsnum' bindvarDef=[] bindvarDef.append(('flag','string')) bindvarDef.append(('comment','string')) bindvarDef.append(('runnum','unsigned int')) bindvarDef.append(('cmslsnum','unsigned int')) dbutil.updateRows(nameDealer.lumivalidationTableName(),updateAction,updateCondition,bindvarDef,toreplacewcomment) dbsession.transaction().commit() #perform update with NO comment if len(toreplacenocomment)!=0: dbsession.transaction().start(False) dbutil=dbUtil.dbUtil(dbsession.nominalSchema()) updateAction='FLAG=:flag' updateCondition='RUNNUM=:runnum and CMSLSNUM=:cmslsnum' bindvarDef=[] bindvarDef.append(('flag','string')) bindvarDef.append(('runnum','unsigned int')) bindvarDef.append(('cmslsnum','unsigned int')) dbutil.updateRows(nameDealer.lumivalidationTableName(),updateAction,updateCondition,bindvarDef,toreplacenocomment) dbsession.transaction().commit() except Exception, e: dbsession.transaction().rollback() del dbsession raise Exception, 'lumiValidate.insertupdateValidationData:'+str(e)
def getLumiOrderByLS(dbsession,c,runList,selectionDict,hltpath='',beamstatus=None,beamenergy=None,beamfluctuation=None,finecorrections=None): ''' input: runList[runnum], selectionDict{runnum:[ls]} output: [[runnumber,runstarttime,lsnum,lsstarttime,delivered,recorded,recordedinpath]] ''' #print 'getLumiOrderByLS selectionDict seen ',selectionDict t=lumiTime.lumiTime() result=[]#[[runnumber,runstarttime,lsnum,lsstarttime,delivered,recorded]] dbsession.transaction().start(True) sortedresult=[] #print 'runlist ',runList for runnum in runList: delivered=0.0 recorded=0.0 #print 'looking for run ',runnum q=dbsession.nominalSchema().newQuery() runsummary=lumiQueryAPI.runsummaryByrun(q,runnum) del q runstarttimeStr=runsummary[3] if len(runstarttimeStr)==0: if c.VERBOSE: print 'warning request run ',runnum,' has no runsummary, skip' continue if len(selectionDict)!=0 and not selectionDict.has_key(runnum): if runnum<max(selectionDict.keys()): result.append([runnum,runstarttimeStr,1,t.StrToDatetime(runstarttimeStr),0.0,0.0]) continue #print 'runsummary ',runsummary lumitrginfo={} q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[runnum]: lumitrginfo=lumiQueryAPI.lumisummarytrgbitzeroByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation,finecorrections=finecorrections[runnum]) #q2 else: lumitrginfo=lumiQueryAPI.lumisummarytrgbitzeroByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation) #q2 del q #print 'lumitrginfo ',lumitrginfo if len(lumitrginfo)==0: #if no qualified cross lumi-trg found, try lumionly #result.append([runnum,runstarttimeStr,1,t.StrToDatetime(runstarttimeStr),0.0,0.0]) q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[runnum]: lumiinfobyrun=lumiQueryAPI.lumisummaryByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation,finecorrections=finecorrections[runnum]) #q3 else: lumiinfobyrun=lumiQueryAPI.lumisummaryByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation) del q if len(lumiinfobyrun)!=0: #if lumionly has qualified data means trg has no data print 'warning request run ',runnum,' has no trigger data, calculate delivered only' for perlsdata in lumiinfobyrun: cmslsnum=perlsdata[0] instlumi=perlsdata[1] norbit=perlsdata[2] startorbit=perlsdata[3] lsstarttime=t.OrbitToTime(runstarttimeStr,startorbit) lslength=t.bunchspace_s*t.nbx*norbit delivered=instlumi*lslength result.append([runnum,runstarttimeStr,cmslsnum,lsstarttime,delivered,0.0]) else: #print 'run '+str(runnum)+' has no qualified data ' lsstarttime=t.OrbitToTime(runstarttimeStr,0) result.append([runnum,runstarttimeStr,1,lsstarttime,0.0,0.0]) else: norbits=lumitrginfo.values()[0][1] lslength=t.bunchspace_s*t.nbx*norbits trgbitinfo={} for cmslsnum,valuelist in lumitrginfo.items(): instlumi=valuelist[0] startorbit=valuelist[2] bitzero=valuelist[5] deadcount=valuelist[6] prescale=valuelist[-1] lsstarttime=t.OrbitToTime(runstarttimeStr,startorbit) if len(selectionDict)!=0 and not (cmslsnum in selectionDict[runnum]): #if there's a selection list but cmslsnum is not selected,set to 0 result.append([runnum,runstarttimeStr,cmslsnum,lsstarttime,0.0,0.0]) continue delivered=instlumi*lslength if valuelist[5]==0:#bitzero==0 means no beam,do nothing recorded=0.0 else: deadfrac=float(deadcount)/float(float(bitzero)*float(prescale)) if(deadfrac<1.0): recorded=delivered*(1.0-deadfrac) result.append([runnum,runstarttimeStr,cmslsnum,lsstarttime,delivered,recorded]) #print 'result : ',result dbsession.transaction().commit() transposedResult=CommonUtil.transposed(result) lstimes=transposedResult[3] lstimes.sort() for idx,lstime in enumerate(lstimes): sortedresult.append(result[idx]) if c.VERBOSE: print sortedresult return sortedresult
def getLumiInfoForRuns(dbsession,c,runList,selectionDict,hltpath='',beamstatus=None,beamenergy=None,beamfluctuation=0.0,finecorrections=None): ''' input: runList[runnum], selectionDict{runnum:[ls]} output:{runnumber:[delivered,recorded,recordedinpath] } ''' t=lumiTime.lumiTime() result={}#runnumber:[lumisumoverlumils,lumisumovercmsls-deadtimecorrected,lumisumovercmsls-deadtimecorrected*hltcorrection_hltpath] #print 'selectionDict seen ',selectionDict dbsession.transaction().start(True) for runnum in runList: totallumi=0.0 delivered=0.0 recorded=0.0 recordedinpath=0.0 if len(selectionDict)!=0 and not selectionDict.has_key(runnum): if runnum<max(selectionDict.keys()): result[runnum]=[0.0,0.0,0.0] continue q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[runnum]: totallumi=lumiQueryAPI.lumisumByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation,finecorrections=finecorrections[runnum]) #q1 else: totallumi=lumiQueryAPI.lumisumByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation) del q if not totallumi: result[runnum]=[0.0,0.0,0.0] if c.VERBOSE: print 'run ',runnum,' does not exist or has no lumi, skip' continue lumitrginfo={} hltinfo={} hlttrgmap={} q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[runnum]: lumitrginfo=lumiQueryAPI.lumisummarytrgbitzeroByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation,finecorrections=finecorrections[runnum]) #q2 else: lumitrginfo=lumiQueryAPI.lumisummarytrgbitzeroByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation) del q if len(lumitrginfo)==0: q=dbsession.nominalSchema().newQuery() if finecorrections and finecorrections[runnum]: lumiinfobyrun=lumiQueryAPI.lumisummaryByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation,finecorrections=finecorrections[runnum]) #q3 else: lumiinfobyrun=lumiQueryAPI.lumisummaryByrun(q,runnum,c.LUMIVERSION,beamstatus,beamenergy,beamfluctuation) del q if len(lumiinfobyrun)!=0: print 'warning request run ',runnum,' has no trigger data, calculate delivered only' for perlsdata in lumiinfobyrun: cmslsnum=perlsdata[0] instlumi=perlsdata[1] norbit=perlsdata[2] lslength=t.bunchspace_s*t.nbx*norbit delivered+=instlumi*lslength result[runnum]=[delivered,0.0,0.0] #result[runnum]=[0.0,0.0,0.0] #if c.VERBOSE: print 'request run ',runnum,' has no trigger, skip' else: norbits=lumitrginfo.values()[0][1] lslength=t.bunchspace_s*t.nbx*norbits delivered=totallumi*lslength hlttrgmap={} trgbitinfo={} if len(hltpath)!=0 and hltpath!='all': q=dbsession.nominalSchema().newQuery() #optional q3, initiated only if you ask for a hltpath hlttrgmap=lumiQueryAPI.hlttrgMappingByrun(q,runnum) del q if hlttrgmap.has_key(hltpath): l1bitname=hltTrgSeedMapper.findUniqueSeed(hltpath,hlttrgmap[hltpath]) q=dbsession.nominalSchema().newQuery() #optional q4, initiated only if you ask for a hltpath and it exists hltinfo=lumiQueryAPI.hltBypathByrun(q,runnum,hltpath) del q q=dbsession.nominalSchema().newQuery() trgbitinfo=lumiQueryAPI.trgBybitnameByrun(q,runnum,l1bitname) #optional q5, initiated only if you ask for a hltpath and it has a unique l1bit del q #done all possible queries. process result for cmslsnum,valuelist in lumitrginfo.items(): if len(selectionDict)!=0 and not (cmslsnum in selectionDict[runnum]): #if there's a selection list but cmslsnum is not selected,skip continue if valuelist[5]==0:#bitzero==0 means no beam,do nothing continue trgprescale=valuelist[8] deadfrac=float(valuelist[6])/float(float(valuelist[5])*float(trgprescale)) if(deadfrac<1.0): recorded=recorded+valuelist[0]*(1.0-deadfrac)*lslength if hlttrgmap.has_key(hltpath) and hltinfo.has_key(cmslsnum): hltprescale=hltinfo[cmslsnum][2] trgprescale=trgbitinfo[cmslsnum][3] recordedinpath=recordedinpath+valuelist[0]*(1.0-deadfrac)*lslength*hltprescale*trgprescale else: if deadfrac<0.0: print 'warning deadfraction negative in run',runnum,' ls ',cmslsnum if c.VERBOSE: print runnum,cmslsnum,valuelist[0]*lslength,valuelist[0]*(1.0-deadfrac)*lslength,lslength,deadfrac result[runnum]=[delivered,recorded,recordedinpath] dbsession.transaction().commit() #if c.VERBOSE: # print result return result