def getSpecificLumi(schema,fillnum,inputdir,dataidmap,normmap,xingMinLum=0.0,amodetag='PROTPHYS',bxAlgo='OCC1'): ''' 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)] ''' t=lumiTime.lumiTime() fillbypos={}#{bxidx:[[ts,beamstatusfrac,lumi,lumierror,spec1,specerror],[]]} runtimesInFill=getFillFromDB(schema,fillnum)#{runnum:starttimestr} runlist=runtimesInFill.keys() if not runlist: return fillbypos irunlsdict=dict(list(zip(runlist,[None]*len(runlist)))) #prirunlsdict GrunsummaryData=lumiCalcAPI.runsummaryMap(session.nominalSchema(),irunlsdict) lumidetails=lumiCalcAPI.deliveredLumiForIds(schema,irunlsdict,dataidmap,GrunsummaryData,beamstatusfilter=None,normmap=normmap,withBXInfo=True,bxAlgo=bxAlgo,xingMinLum=xingMinLum,withBeamIntensity=True,lumitype='HF') # #output: {run:[lumilsnum(0),cmslsnum(1),timestamp(2),beamstatus(3),beamenergy(4),deliveredlumi(5),calibratedlumierr(6),(bxvalues,bxerrs)(7),(bxidx,b1intensities,b2intensities)(8),fillnum(9)]} # totalstablebeamls=0 orderedrunlist=sorted(lumidetails) for run in orderedrunlist: perrundata=lumidetails[run] for perlsdata in perrundata: beamstatus=perlsdata[3] if beamstatus=='STABLE BEAMS': totalstablebeamls+=1 #print 'totalstablebeamls in fill ',totalstablebeamls 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 lumiparam=lumiParameters.ParametersObject() for run in orderedrunlist: perrundata=lumidetails[run] for perlsdata in perrundata: beamstatusfrac=0.0 tsdatetime=perlsdata[2] ts=calendar.timegm(tsdatetime.utctimetuple()) beamstatus=perlsdata[3] if beamstatus=='STABLE BEAMS': beamstatusfrac=1.0 (bxidxlist,bxvaluelist,bxerrolist)=perlsdata[7] #instbxvaluelist=[x/lumiparam.lslengthsec() for x in bxvaluelist if x] instbxvaluelist=[x for x in bxvaluelist if x] maxlumi=0.0 if len(instbxvaluelist)!=0: maxlumi=max(instbxvaluelist) avginstlumi=0.0 if len(instbxvaluelist)!=0: avginstlumi=sum(instbxvaluelist) (intbxidxlist,b1intensities,b2intensities)=perlsdata[8]#contains only non-zero bx for bxidx in bxidxlist: idx=bxidxlist.index(bxidx) instbxvalue=bxvaluelist[idx] bxerror=bxerrolist[idx] if instbxvalue<max(xingMinLum,maxlumi*0.2): continue bintensityPos=-1 try: bintensityPos=intbxidxlist.index(bxidx) except ValueError: pass if bintensityPos<=0: fillbypos.setdefault(bxidx,[]).append([ts,beamstatusfrac,instbxvalue,bxerror,0.0,0.0]) continue b1intensity=b1intensities[bintensityPos] b2intensity=b2intensities[bintensityPos] speclumi=calculateSpecificLumi(instbxvalue,bxerror,b1intensity,0.0,b2intensity,0.0) fillbypos.setdefault(bxidx,[]).append([ts,beamstatusfrac,instbxvalue,bxerror,speclumi[0],speclumi[1]]) return fillbypos
datatagname, normname, workingversion, updateversion, 'HF', toFile=options.headerfile) if not dataidmap: print '[INFO] No qualified data found, do nothing' sys.exit(13) ################## # ls level # ################## session.transaction().start(True) GrunsummaryData = lumiCalcAPI.runsummaryMap(session.nominalSchema(), irunlsdict) if options.action == 'delivered': result = lumiCalcAPI.deliveredLumiForIds(session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, lumitype='HF') lumiReport.toScreenTotDelivered(result, iresults, options.scalefactor, irunlsdict=irunlsdict, noWarning=options.nowarning, toFile=options.outputfile)
normname=normmap.keys()[0] normid=normmap[normname] else: normid=normDML.normIdByName(session.nominalSchema(),normname) if not normid: raise RuntimeError('[ERROR] cannot resolve norm/correction') sys.exit(12) normvalueDict=normDML.normValueById(session.nominalSchema(),normid) #{since:[corrector(0),{paramname:paramvalue}(1),amodetag(2),egev(3),comment(4)]} session.transaction().commit() lumiReport.toScreenHeader(thiscmmd,datatagname,normname,workingversion,updateversion,'PIXEL',toFile=options.headerfile) ################## # ls level # ################## session.transaction().start(True) GrunsummaryData=lumiCalcAPI.runsummaryMap(session.nominalSchema(),irunlsdict,dataidmap,lumitype='PIXEL') if options.action == 'overview': result=lumiCalcAPI.lumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=None,timeFilter=timeFilter,normmap=normvalueDict,lumitype='PIXEL') lumiReport.toScreenOverview(result,iresults,options.scalefactor,irunlsdict=irunlsdict,noWarning=noWarning,toFile=options.outputfile) if options.action == 'lumibyls': if not options.hltpath: result=lumiCalcAPI.lumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=None,timeFilter=timeFilter,normmap=normvalueDict,lumitype='PIXEL',minbiasXsec=options.minbiasxsec) lumiReport.toScreenLumiByLS(result,iresults,options.scalefactor,irunlsdict=irunlsdict,noWarning=noWarning,toFile=options.outputfile) else: hltname=options.hltpath hltpat=None if hltname=='*' or hltname=='all': hltname=None elif 1 in [c in hltname for c in '*?[]']: #is a fnmatch pattern hltpat=hltname hltname=None
print '[INFO] runs from db: ',irunlsdict if lastDrawnRun: print '[INFO] last run in old plot: ',lastDrawnRun print '[INFO] first run from DB in fresh plot: ',newFirstRun if maxDrawnDay: print '[INFO] last day in old plot: ',maxDrawnDay print '[INFO] first day from DB in fresh plot: ',newFirstDay if len(rruns)==0: if len(resultlines)!=0: print '[INFO] drawing all from old plot data' else: print '[INFO] found no old nor new data, do nothing' exit(0) GrunsummaryData=lumiCalcAPI.runsummaryMap(session.nominalSchema(),irunlsdict) ##################################### #resolve data ids ##################################### datatagname=options.datatag if not datatagname: (datatagid,datatagname)=revisionDML.currentDataTag(session.nominalSchema()) dataidmap=revisionDML.dataIdsByTagId(session.nominalSchema(),datatagid,runlist=rruns,withcomment=False) #{run:(lumidataid,trgdataid,hltdataid,())} else: dataidmap=revisionDML.dataIdsByTagName(session.nominalSchema(),datatagname,runlist=rruns,withcomment=False) # # check normtag and get norm values if required # normname='NONE' normid=0
def getSpecificLumi(schema, fillnum, inputdir, dataidmap, normmap, xingMinLum=0.0, amodetag='PROTPHYS', bxAlgo='OCC1'): ''' 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)] ''' t = lumiTime.lumiTime() fillbypos = { } #{bxidx:[[ts,beamstatusfrac,lumi,lumierror,spec1,specerror],[]]} runtimesInFill = getFillFromDB(schema, fillnum) #{runnum:starttimestr} runlist = runtimesInFill.keys() if not runlist: return fillbypos irunlsdict = dict(zip(runlist, [None] * len(runlist))) #prirunlsdict GrunsummaryData = lumiCalcAPI.runsummaryMap(session.nominalSchema(), irunlsdict) lumidetails = lumiCalcAPI.deliveredLumiForIds(schema, irunlsdict, dataidmap, GrunsummaryData, beamstatusfilter=None, normmap=normmap, withBXInfo=True, bxAlgo=bxAlgo, xingMinLum=xingMinLum, withBeamIntensity=True, lumitype='HF') # #output: {run:[lumilsnum(0),cmslsnum(1),timestamp(2),beamstatus(3),beamenergy(4),deliveredlumi(5),calibratedlumierr(6),(bxvalues,bxerrs)(7),(bxidx,b1intensities,b2intensities)(8),fillnum(9)]} # totalstablebeamls = 0 orderedrunlist = sorted(lumidetails) for run in orderedrunlist: perrundata = lumidetails[run] for perlsdata in perrundata: beamstatus = perlsdata[3] if beamstatus == 'STABLE BEAMS': totalstablebeamls += 1 #print 'totalstablebeamls in fill ',totalstablebeamls 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 lumiparam = lumiParameters.ParametersObject() for run in orderedrunlist: perrundata = lumidetails[run] for perlsdata in perrundata: beamstatusfrac = 0.0 tsdatetime = perlsdata[2] ts = calendar.timegm(tsdatetime.utctimetuple()) beamstatus = perlsdata[3] if beamstatus == 'STABLE BEAMS': beamstatusfrac = 1.0 (bxidxlist, bxvaluelist, bxerrolist) = perlsdata[7] #instbxvaluelist=[x/lumiparam.lslengthsec() for x in bxvaluelist if x] instbxvaluelist = [x for x in bxvaluelist if x] maxlumi = 0.0 if len(instbxvaluelist) != 0: maxlumi = max(instbxvaluelist) avginstlumi = 0.0 if len(instbxvaluelist) != 0: avginstlumi = sum(instbxvaluelist) (intbxidxlist, b1intensities, b2intensities) = perlsdata[8] #contains only non-zero bx for bxidx in bxidxlist: idx = bxidxlist.index(bxidx) instbxvalue = bxvaluelist[idx] bxerror = bxerrolist[idx] if instbxvalue < max(xingMinLum, maxlumi * 0.2): continue bintensityPos = -1 try: bintensityPos = intbxidxlist.index(bxidx) except ValueError: pass if bintensityPos <= 0: fillbypos.setdefault(bxidx, []).append( [ts, beamstatusfrac, instbxvalue, bxerror, 0.0, 0.0]) continue b1intensity = b1intensities[bintensityPos] b2intensity = b2intensities[bintensityPos] speclumi = calculateSpecificLumi(instbxvalue, bxerror, b1intensity, 0.0, b2intensity, 0.0) fillbypos.setdefault(bxidx, []).append([ ts, beamstatusfrac, instbxvalue, bxerror, speclumi[0], speclumi[1] ]) return fillbypos
def lumidb(run_lumi_dict, action='delivered', lumi_report=False): "Call lumidb to get luminosity numbers" actions = ['overview', 'delivered', 'recorded', 'lumibyls', 'lumibylsXing'] if action not in actions: raise Exception('Unsupported action="%s", please check from %s' % (action, actions)) beamModeChoices = ['stable'] amodetagChoices = ['PROTPHYS', 'IONPHYS', 'PAPHYS' ] xingAlgoChoices = ['OCC1', 'OCC2', 'ET'] # # parse arguments # connect='frontier://LumiCalc/CMS_LUMI_PROD' authpath = None scalefactor = 1.0 beamfluctuation = 0.2 minbiasxsec = 69300.0 # minbias cross-secvtion in ub xingMinLum = 1e-03 # Minimum perbunch luminosity to print, default=1e-03/ub xingAlgo = 'OCC1' hltpath = None outputfile = None siteconfpath = None withoutNorm = False withoutCheckforupdate = False fillnum = None nowarning = True debug = False beamenergy = None amodetag = None reqrunmin=None reqfillmin=None reqtimemin=None reqrunmax=None reqfillmax=None reqtimemax=None timeFilter=[None,None] pbeammode = None iresults=[] reqTrg=False reqHlt=False svc = sessionManager.sessionManager(connect, authpath, siteconfpath, debugON=debug) session=svc.openSession(isReadOnly=True, cpp2sqltype=[('unsigned int', 'NUMBER(10)'), ('unsigned long long', 'NUMBER(20)')]) ############################################################## # check run/ls list ############################################################## irunlsdict={} rruns=[] session.transaction().start(True) irunlsdict = run_lumi_dict iresults = [] runlist=lumiCalcAPI.runList(session.nominalSchema(), fillnum, runmin=reqrunmin, runmax=reqrunmax, fillmin=reqfillmin, fillmax=reqfillmax, startT=reqtimemin, stopT=reqtimemax, l1keyPattern=None, hltkeyPattern=None, amodetag=amodetag, nominalEnergy=beamenergy, energyFlut=beamfluctuation, requiretrg=False, requirehlt=False) rruns = [val for val in runlist if val in irunlsdict.keys()] for selectedrun in irunlsdict.keys():#if there's further filter on the runlist,clean input dict if selectedrun not in rruns: del irunlsdict[selectedrun] ############################################################## # check datatag # ############################################################# datatagid, datatagname = revisionDML.currentDataTag(session.nominalSchema()) dataidmap=revisionDML.dataIdsByTagId(\ session.nominalSchema(), datatagid, runlist=rruns, withcomment=False) session.transaction().commit() if not dataidmap: print_warning('No data found in LumiDB for given set run lumi section') return 0, '/ub' # return lumi, units normvalueDict={} ################## # ls level # ################## session.transaction().start(True) GrunsummaryData=lumiCalcAPI.runsummaryMap(session.nominalSchema(),irunlsdict) if action == 'delivered': result=lumiCalcAPI.deliveredLumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=pbeammode,timeFilter=timeFilter,normmap=normvalueDict,lumitype='HF') if lumi_report: lumiReport.toScreenTotDelivered(result,iresults,scalefactor,irunlsdict=irunlsdict,noWarning=nowarning,toFile=outputfile) # result {run:[lumilsnum(0),cmslsnum(1),timestamp(2),beamstatus(3),beamenergy(4),deliveredlumi(5),calibratedlumierr(6),(bxidxlist,bxvalues,bxerrs)(7),(bxidx,b1intensities,b2intensities)(8),fillnum(9),pu(10)]} totlumi = 0 for run, val in result.items(): for llist in val: if irunlsdict[run]: if llist[0] in irunlsdict[run]: # select only lumis from input run ls dict totlumi += llist[5] else: totlumi += llist[5] totlumival, lumiunit = CommonUtil.guessUnit(totlumi) return totlumival, lumiunit if action == 'overview': result=lumiCalcAPI.lumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=pbeammode,timeFilter=timeFilter,normmap=normvalueDict,lumitype='HF') lumiReport.toScreenOverview(result,iresults,scalefactor,irunlsdict=irunlsdict,noWarning=nowarning,toFile=outputfile) if action == 'lumibyls': if not hltpath: result=lumiCalcAPI.lumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=pbeammode,timeFilter=timeFilter,normmap=normvalueDict,lumitype='HF',minbiasXsec=minbiasxsec) lumiReport.toScreenLumiByLS(result,iresults,scalefactor,irunlsdict=irunlsdict,noWarning=nowarning,toFile=outputfile) else: hltname=hltpath hltpat=None if hltname=='*' or hltname=='all': hltname=None elif 1 in [c in hltname for c in '*?[]']: #is a fnmatch pattern hltpat=hltname hltname=None result=lumiCalcAPI.effectiveLumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=pbeammode,timeFilter=timeFilter,normmap=normvalueDict,hltpathname=hltname,hltpathpattern=hltpat,withBXInfo=False,bxAlgo=None,xingMinLum=xingMinLum,withBeamIntensity=False,lumitype='HF') lumiReport.toScreenLSEffective(result,iresults,scalefactor,irunlsdict=irunlsdict,noWarning=nowarning,toFile=outputfile) if action == 'recorded':#recorded actually means effective because it needs to show all the hltpaths... hltname=hltpath hltpat=None if hltname is not None: if hltname=='*' or hltname=='all': hltname=None elif 1 in [c in hltname for c in '*?[]']: #is a fnmatch pattern hltpat=hltname hltname=None result=lumiCalcAPI.effectiveLumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=pbeammode,timeFilter=timeFilter,normmap=normvalueDict,hltpathname=hltname,hltpathpattern=hltpat,withBXInfo=False,bxAlgo=None,xingMinLum=xingMinLum,withBeamIntensity=False,lumitype='HF') lumiReport.toScreenTotEffective(result,iresults,scalefactor,irunlsdict=irunlsdict,noWarning=nowarning,toFile=outputfile) if action == 'lumibylsXing': result=lumiCalcAPI.lumiForIds(session.nominalSchema(),irunlsdict,dataidmap,runsummaryMap=GrunsummaryData,beamstatusfilter=pbeammode,timeFilter=timeFilter,normmap=normvalueDict,withBXInfo=True,bxAlgo=xingAlgo,xingMinLum=xingMinLum,withBeamIntensity=False,lumitype='HF') outfile=outputfile if not outfile: print '[WARNING] no output file given. lumibylsXing writes per-bunch lumi only to default file lumibylsXing.csv' outfile='lumibylsXing.csv' lumiReport.toCSVLumiByLSXing(result,scalefactor,outfile,irunlsdict=irunlsdict,noWarning=nowarning) session.transaction().commit() del session del svc
def lumidb(run_lumi_dict, action='delivered', lumi_report=False): "Call lumidb to get luminosity numbers" actions = ['overview', 'delivered', 'recorded', 'lumibyls', 'lumibylsXing'] if action not in actions: raise Exception('Unsupported action="%s", please check from %s' % (action, actions)) beamModeChoices = ['stable'] amodetagChoices = ['PROTPHYS', 'IONPHYS', 'PAPHYS'] xingAlgoChoices = ['OCC1', 'OCC2', 'ET'] # # parse arguments # connect = 'frontier://LumiCalc/CMS_LUMI_PROD' authpath = None scalefactor = 1.0 beamfluctuation = 0.2 minbiasxsec = 69300.0 # minbias cross-secvtion in ub xingMinLum = 1e-03 # Minimum perbunch luminosity to print, default=1e-03/ub xingAlgo = 'OCC1' hltpath = None outputfile = None siteconfpath = None withoutNorm = False withoutCheckforupdate = False fillnum = None nowarning = True debug = False beamenergy = None amodetag = None reqrunmin = None reqfillmin = None reqtimemin = None reqrunmax = None reqfillmax = None reqtimemax = None timeFilter = [None, None] pbeammode = None iresults = [] reqTrg = False reqHlt = False svc = sessionManager.sessionManager(connect, authpath, siteconfpath, debugON=debug) session = svc.openSession(isReadOnly=True, cpp2sqltype=[('unsigned int', 'NUMBER(10)'), ('unsigned long long', 'NUMBER(20)') ]) ############################################################## # check run/ls list ############################################################## irunlsdict = {} rruns = [] session.transaction().start(True) irunlsdict = run_lumi_dict iresults = [] runlist = lumiCalcAPI.runList(session.nominalSchema(), fillnum, runmin=reqrunmin, runmax=reqrunmax, fillmin=reqfillmin, fillmax=reqfillmax, startT=reqtimemin, stopT=reqtimemax, l1keyPattern=None, hltkeyPattern=None, amodetag=amodetag, nominalEnergy=beamenergy, energyFlut=beamfluctuation, requiretrg=False, requirehlt=False) rruns = [val for val in runlist if val in irunlsdict.keys()] for selectedrun in irunlsdict.keys( ): #if there's further filter on the runlist,clean input dict if selectedrun not in rruns: del irunlsdict[selectedrun] ############################################################## # check datatag # ############################################################# datatagid, datatagname = revisionDML.currentDataTag( session.nominalSchema()) dataidmap=revisionDML.dataIdsByTagId(\ session.nominalSchema(), datatagid, runlist=rruns, withcomment=False) session.transaction().commit() if not dataidmap: print_warning('No data found in LumiDB for given set run lumi section') return 0, '/ub' # return lumi, units normvalueDict = {} ################## # ls level # ################## session.transaction().start(True) GrunsummaryData = lumiCalcAPI.runsummaryMap(session.nominalSchema(), irunlsdict) if action == 'delivered': result = lumiCalcAPI.deliveredLumiForIds(session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, lumitype='HF') if lumi_report: lumiReport.toScreenTotDelivered(result, iresults, scalefactor, irunlsdict=irunlsdict, noWarning=nowarning, toFile=outputfile) # result {run:[lumilsnum(0),cmslsnum(1),timestamp(2),beamstatus(3),beamenergy(4),deliveredlumi(5),calibratedlumierr(6),(bxidxlist,bxvalues,bxerrs)(7),(bxidx,b1intensities,b2intensities)(8),fillnum(9),pu(10)]} totlumi = 0 for run, val in result.items(): for llist in val: if irunlsdict[run]: if llist[0] in irunlsdict[ run]: # select only lumis from input run ls dict totlumi += llist[5] else: totlumi += llist[5] totlumival, lumiunit = CommonUtil.guessUnit(totlumi) return totlumival, lumiunit if action == 'overview': result = lumiCalcAPI.lumiForIds(session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, lumitype='HF') lumiReport.toScreenOverview(result, iresults, scalefactor, irunlsdict=irunlsdict, noWarning=nowarning, toFile=outputfile) if action == 'lumibyls': if not hltpath: result = lumiCalcAPI.lumiForIds(session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, lumitype='HF', minbiasXsec=minbiasxsec) lumiReport.toScreenLumiByLS(result, iresults, scalefactor, irunlsdict=irunlsdict, noWarning=nowarning, toFile=outputfile) else: hltname = hltpath hltpat = None if hltname == '*' or hltname == 'all': hltname = None elif 1 in [c in hltname for c in '*?[]']: #is a fnmatch pattern hltpat = hltname hltname = None result = lumiCalcAPI.effectiveLumiForIds( session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, hltpathname=hltname, hltpathpattern=hltpat, withBXInfo=False, bxAlgo=None, xingMinLum=xingMinLum, withBeamIntensity=False, lumitype='HF') lumiReport.toScreenLSEffective(result, iresults, scalefactor, irunlsdict=irunlsdict, noWarning=nowarning, toFile=outputfile) if action == 'recorded': #recorded actually means effective because it needs to show all the hltpaths... hltname = hltpath hltpat = None if hltname is not None: if hltname == '*' or hltname == 'all': hltname = None elif 1 in [c in hltname for c in '*?[]']: #is a fnmatch pattern hltpat = hltname hltname = None result = lumiCalcAPI.effectiveLumiForIds(session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, hltpathname=hltname, hltpathpattern=hltpat, withBXInfo=False, bxAlgo=None, xingMinLum=xingMinLum, withBeamIntensity=False, lumitype='HF') lumiReport.toScreenTotEffective(result, iresults, scalefactor, irunlsdict=irunlsdict, noWarning=nowarning, toFile=outputfile) if action == 'lumibylsXing': result = lumiCalcAPI.lumiForIds(session.nominalSchema(), irunlsdict, dataidmap, runsummaryMap=GrunsummaryData, beamstatusfilter=pbeammode, timeFilter=timeFilter, normmap=normvalueDict, withBXInfo=True, bxAlgo=xingAlgo, xingMinLum=xingMinLum, withBeamIntensity=False, lumitype='HF') outfile = outputfile if not outfile: print '[WARNING] no output file given. lumibylsXing writes per-bunch lumi only to default file lumibylsXing.csv' outfile = 'lumibylsXing.csv' lumiReport.toCSVLumiByLSXing(result, scalefactor, outfile, irunlsdict=irunlsdict, noWarning=nowarning) session.transaction().commit() del session del svc