def getFillFromDB(schema,fillnum): ''' output: {run:starttime} ''' runtimesInFill={} fillrundict=lumiCalcAPI.fillrunMap(schema,fillnum) if len(fillrundict)>0: runs=fillrundict.values()[0] runlsdict=dict(list(zip(runs,[None]*len(runs)))) runresult=lumiCalcAPI.runsummary(schema,runlsdict) for perrundata in runresult: runtimesInFill[perrundata[0]]=perrundata[7] return runtimesInFill
def getFillFromDB(schema, fillnum): ''' output: {run:starttime} ''' runtimesInFill = {} fillrundict = lumiCalcAPI.fillrunMap(schema, fillnum) if len(fillrundict) > 0: runs = fillrundict.values()[0] runlsdict = dict(zip(runs, [None] * len(runs))) runresult = lumiCalcAPI.runsummary(schema, runlsdict) for perrundata in runresult: runtimesInFill[perrundata[0]] = perrundata[7] return runtimesInFill
newFirstRun=lastDrawnRun+1 if options.lastpointfromdb: newFirstRun=lastDrawnRun runsnotdrawn=lumiCalcAPI.runList(schema,options.fillnum,runmin=newFirstRun,runmax=None,startT=begtime,stopT=endtime,l1keyPattern=None,hltkeyPattern=None,amodetag=options.amodetag,nominalEnergy=options.beamenergy,energyFlut=options.beamfluctuation,requiretrg=reqTrg,requirehlt=reqHlt) if options.action=='fill': lastDrawnFill=1000 lastDrawnRun=132000 if resultlines: lastDrawnFill=max([int(t[0]) for t in resultlines]) lastDrawnRun=min([int(t[1]) for t in resultlines if int(t[0])==lastDrawnFill]) newFirstRun=lastDrawnRun+1 if options.lastpointfromdb: newFirstRun=lastDrawnRun runsnotdrawn=lumiCalcAPI.runList(schema,runmin=newFirstRun,runmax=None,startT=begtime,stopT=endtime,l1keyPattern=None,hltkeyPattern=None,amodetag=options.amodetag,nominalEnergy=options.beamenergy,energyFlut=options.beamfluctuation,requiretrg=reqTrg,requirehlt=reqHlt) fillrunMap=lumiCalcAPI.fillrunMap(schema,runmin=newFirstRun,runmax=None,startT=begtime,stopT=endtime) session.transaction().commit() for r in runsnotdrawn: if irunlsdict: if not irunlsdict.has_key(r): continue runlsfromDB[r]=irunlsdict[r] else: runlsfromDB[r]=None if options.verbose: print '[INFO] runs from db: ',runlsfromDB if lastDrawnRun: print '[INFO] last run in old plot: ',lastDrawnRun print '[INFO] first run from DB in fresh plot: ',newFirstRun if maxDrawnDay:
newFirstRun = lastDrawnRun runlist = lumiCalcAPI.runList(session.nominalSchema(), runmin=newFirstRun, runmax=None, startT=begtime, stopT=endtime, l1keyPattern=None, hltkeyPattern=None, amodetag=options.amodetag, nominalEnergy=options.beamenergy, energyFlut=options.beamfluctuation, requiretrg=reqTrg, requirehlt=reqHlt) fillrunMap = lumiCalcAPI.fillrunMap(session.nominalSchema(), runmin=newFirstRun, runmax=None, startT=begtime, stopT=endtime) if options.inputfile: (irunlsdict, iresults) = parseInputFiles(options.inputfile) #apply further filter only if specified if options.fillnum or options.begin or options.end or options.amodetag or options.beamenergy: 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] else: rruns = irunlsdict.keys() else:
lastDrawnRun=max([int(t[0]) for t in resultlines]) newFirstRun=lastDrawnRun+1 if options.lastpointfromdb: newFirstRun=lastDrawnRun runlist=lumiCalcAPI.runList(session.nominalSchema(),options.fillnum,runmin=newFirstRun,runmax=None,startT=begtime,stopT=endtime,l1keyPattern=None,hltkeyPattern=None,amodetag=options.amodetag,nominalEnergy=options.beamenergy,energyFlut=options.beamfluctuation,requiretrg=reqTrg,requirehlt=reqHlt) if options.action=='fill': lastDrawnFill=1000 lastDrawnRun=132000 if resultlines: lastDrawnFill=max([int(t[0]) for t in resultlines]) lastDrawnRun=min([int(t[1]) for t in resultlines if int(t[0])==lastDrawnFill]) newFirstRun=lastDrawnRun+1 if options.lastpointfromdb: newFirstRun=lastDrawnRun runlist=lumiCalcAPI.runList(session.nominalSchema(),runmin=newFirstRun,runmax=None,startT=begtime,stopT=endtime,l1keyPattern=None,hltkeyPattern=None,amodetag=options.amodetag,nominalEnergy=options.beamenergy,energyFlut=options.beamfluctuation,requiretrg=reqTrg,requirehlt=reqHlt) fillrunMap=lumiCalcAPI.fillrunMap(session.nominalSchema(),runmin=newFirstRun,runmax=None,startT=begtime,stopT=endtime) if options.inputfile: (irunlsdict,iresults)=parseInputFiles(options.inputfile) #apply further filter only if specified if options.fillnum or options.begin or options.end or options.amodetag or options.beamenergy: 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] else: rruns=irunlsdict.keys() else: for run in runlist: irunlsdict[run]=None rruns=irunlsdict.keys()
os.environ['CORAL_AUTH_PATH'] = options.authpath svc=sessionManager.sessionManager(options.connect,authpath=options.authpath,debugON=options.debug) session=svc.openSession(isReadOnly=True,cpp2sqltype=[('unsigned int','NUMBER(10)'),('unsigned long long','NUMBER(20)')]) session.transaction().start(True) allfills=lumiCalcAPI.fillInRange(session.nominalSchema(),fillmin=options.minfill,fillmax=options.maxfill,amodetag=options.amodetag) if len(allfills)==0: print 'no qualified fills found, do nothing... ' exit(-1) allfills.sort() runsperfill={} runtimes={} irunlsdict={} if options.fillnum: if int(options.fillnum) in allfills: runsperfill=lumiCalcAPI.fillrunMap(session.nominalSchema(),fillnum=int(options.fillnum)) allruns=runsperfill[ int(options.fillnum) ] allls=[None]*len(allruns) irunlsdict=dict(list(zip(allruns,allls))) runresults=lumiCalcAPI.runsummary(session.nominalSchema(),irunlsdict) for r in runresults: runtimes[r[0]]=r[7] else: for fill in allfills: runtimes={} runsperfill=lumiCalcAPI.fillrunMap(session.nominalSchema(),fillnum=fill) runs=runsperfill.values()#list of lists allruns=[item for sublist in runs for item in sublist] allls=[None]*len(allruns) irunlsdict=dict(list(zip(allruns,allls))) runresults=lumiCalcAPI.runsummary(session.nominalSchema(),irunlsdict)
session.transaction().start(True) allfills = lumiCalcAPI.fillInRange(session.nominalSchema(), fillmin=options.minfill, fillmax=options.maxfill, amodetag=options.amodetag) if len(allfills) == 0: print 'no qualified fills found, do nothing... ' exit(-1) allfills.sort() runsperfill = {} runtimes = {} irunlsdict = {} if options.fillnum: if int(options.fillnum) in allfills: runsperfill = lumiCalcAPI.fillrunMap(session.nominalSchema(), fillnum=int(options.fillnum)) allruns = runsperfill[int(options.fillnum)] allls = [None] * len(allruns) irunlsdict = dict(list(zip(allruns, allls))) runresults = lumiCalcAPI.runsummary(session.nominalSchema(), irunlsdict) for r in runresults: runtimes[r[0]] = r[7] else: for fill in allfills: runtimes = {} runsperfill = lumiCalcAPI.fillrunMap(session.nominalSchema(), fillnum=fill) runs = runsperfill.values() #list of lists allruns = [item for sublist in runs for item in sublist] allls = [None] * len(allruns)