def getPU(runnr,jsonfile): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) lhcfill_key=tables[3][14][1] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % (lhcfill_key) tables=parseURLTables(url) nbunch=int(tables[3][18][1]) totalLS=0 for l1 in jsonfile: totalLS=totalLS+l1[1]-l1[0]+1 lumidic={} sumPU=0. sum_lumi=0 n_lumi=0 nLS=0 max_pu=0 min_pu=99 psAndInstLumis=getPSAndInstLumis(runnr) for ls in jsonfile: minLS=int(ls[0]) maxLS=int(ls[1]) nLS+=(maxLS-minLS+1) for lumi in range(minLS,maxLS+1): if lumi in psAndInstLumis: sum_lumi+=psAndInstLumis[lumi][1] tmp_pu=(psAndInstLumis[lumi][1]*80000)/(11246*nbunch) lumidic[lumi]=(psAndInstLumis[lumi][1],tmp_pu) return lumidic
def getPU(runnr, jsonfile): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % ( runnr) tables = parseURLTables(url) lhcfill_key = tables[3][14][1] url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % ( lhcfill_key) tables = parseURLTables(url) nbunch = int(tables[3][18][1]) totalLS = 0 for l1 in jsonfile: totalLS = totalLS + l1[1] - l1[0] + 1 lumidic = {} sumPU = 0. sum_lumi = 0 n_lumi = 0 nLS = 0 max_pu = 0 min_pu = 99 psAndInstLumis = getPSAndInstLumis(runnr) for ls in jsonfile: minLS = int(ls[0]) maxLS = int(ls[1]) nLS += (maxLS - minLS + 1) for lumi in range(minLS, maxLS + 1): if lumi in psAndInstLumis: sum_lumi += psAndInstLumis[lumi][1] tmp_pu = (psAndInstLumis[lumi][1] * 80000) / (11246 * nbunch) lumidic[lumi] = (psAndInstLumis[lumi][1], tmp_pu) return lumidic
def getL1Prescales(runnr): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) l1_hlt_mode=tables[1][1][3] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/TriggerMode?KEY=%s" % (l1_hlt_mode) tables=parseURLTables(url) prescales={} # l1 algo paths/prescales for line in tables[3]: # path 7e33 1e32 try: prescales[line[1]] = (int(line[4]),int(line[13])) except: prescales[line[1]] = (-1,-1) #l1 tech paths/prescales for line in tables[4]: # path 7e33 1e32 try: prescales[line[1]] = (int(line[4]),int(line[13])) except: prescales[line[1]] = (-1,-1) return prescales
def getnbx(run): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (run) tables=parseURLTables(url) lhcfill_key=tables[3][14][1] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % (lhcfill_key) tables=parseURLTables(url) nbunch=int(tables[3][18][1]) return nbunch
def getnbx(run): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (run) tables=parseURLTables(url) lhcfill_key=tables[3][14][1] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % (lhcfill_key) tables=parseURLTables(url) nbunch=int(tables[3][18][1]) return nbunch
def getPU(runnr, jsonfile): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % ( runnr) tables = parseURLTables(url) lhcfill_key = tables[3][14][1] url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % ( lhcfill_key) tables = parseURLTables(url) nbunch = int(tables[3][18][1]) totalLS = 0 for l1 in jsonfile: totalLS = totalLS + l1[1] - l1[0] + 1 sumPU = 0. sum_lumi = 0 n_lumi = 0 nLS = 0 max_pu = 0 min_pu = 99 psAndInstLumis = getPSAndInstLumis(runnr) for ls in jsonfile: minLS = int(ls[0]) maxLS = int(ls[1]) nLS += (maxLS - minLS + 1) for lumi in range(minLS, maxLS + 1): if lumi in psAndInstLumis: sum_lumi += psAndInstLumis[lumi][1] tmp_pu = (psAndInstLumis[lumi][1] * 80000) / (11246 * nbunch) if max_pu < tmp_pu: max_pu = tmp_pu if min_pu > tmp_pu and tmp_pu > 5: min_pu = tmp_pu if pu_write: hltRates = getpartTriggerRates(runnr, lumi, lumi, 1) print 'lumi section:', lumi, 'in Run: ', runnr, ' ', n_lumi, '/', totalLS for path in PU_list: print path, hltRates[path][0][3] PU_file.write(path + ',%0.2f,%f\n' % (tmp_pu, hltRates[path][0][3])) sumPU += psAndInstLumis[lumi][1] * tmp_pu n_lumi += 1 if n_lumi != nLS: print "warning! miss lumi section!" avePU = sumPU / sum_lumi lumiscaled = 10000 / float(sum_lumi) * n_lumi aveLumi = float(sum_lumi) / n_lumi return avePU, max_pu, min_pu, lumiscaled, aveLumi
def getPU(runnr,jsonfile): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) lhcfill_key=tables[3][14][1] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % (lhcfill_key) tables=parseURLTables(url) nbunch=int(tables[3][18][1]) totalLS=0 for l1 in jsonfile: totalLS=totalLS+l1[1]-l1[0]+1 sumPU=0. sum_lumi=0 n_lumi=0 nLS=0 max_pu=0 min_pu=99 psAndInstLumis=getPSAndInstLumis(runnr) for ls in jsonfile: minLS=int(ls[0]) maxLS=int(ls[1]) nLS+=(maxLS-minLS+1) for lumi in range(minLS,maxLS+1): if lumi in psAndInstLumis: sum_lumi+=psAndInstLumis[lumi][1] tmp_pu=(psAndInstLumis[lumi][1]*80000)/(11246*nbunch) if max_pu<tmp_pu:max_pu=tmp_pu if min_pu>tmp_pu and tmp_pu>5:min_pu=tmp_pu if pu_write: hltRates=getpartTriggerRates(runnr,lumi,lumi,1) print 'lumi section:',lumi,'in Run: ',runnr,' ',n_lumi,'/',totalLS for path in PU_list: print path,hltRates[path][0][3] PU_file.write(path+',%0.2f,%f\n' %(tmp_pu,hltRates[path][0][3])) sumPU+=psAndInstLumis[lumi][1]*tmp_pu n_lumi+=1 if n_lumi != nLS: print "warning! miss lumi section!" avePU = sumPU/sum_lumi lumiscaled = 10000/float(sum_lumi)*n_lumi aveLumi = float(sum_lumi)/n_lumi return avePU,max_pu,min_pu,lumiscaled,aveLumi
def getL1Rates(runnr,minLS,maxLS): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) l1_key_mode=tables[1][1][4] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/L1Summary?fromLS=%s&toLS=%s&RUN=%s&KEY=%s" % (minLS,maxLS,runnr,l1_key_mode) tables=parseURLTables(url) l1Rates={} for line in tables[7][2:]: if ('L1' in line[1]): rates=[] for entry in line[4:8]: rates.append(float(entry.replace(",",""))) l1Rates[line[1].strip()]=(rates,int(line[8])) return l1Rates
def getHLTPrescales(runnr,dataColumn,targetColumn): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) l1_hlt_mode=tables[1][1][3] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/TriggerMode?KEY=%s" % (l1_hlt_mode) tables=parseURLTables(url) prescales={} #HLT paths/prescales for line in tables[5]: if ('Output' in line[1].split('_v')[0]): continue try: prescales[line[1].split('_v')[0]] = (int(line[targetColumn+2]),int(line[dataColumn+2])) except: prescales[line[1].split('_v')[0]] = (-1,-1) return prescales
def getL1Rates(runnr, minLS, maxLS): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % ( runnr) tables = parseURLTables(url) l1_key_mode = tables[1][1][4] url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/L1Summary?fromLS=%s&toLS=%s&RUN=%s&KEY=%s" % ( minLS, maxLS, runnr, l1_key_mode) tables = parseURLTables(url) l1Rates = {} for line in tables[7][2:]: if ('L1' in line[1]): rates = [] for entry in line[4:8]: rates.append(float(entry.replace(",", ""))) l1Rates[line[1].strip()] = (rates, int(line[8])) return l1Rates
def getHLTPrescales(runnr): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) l1_hlt_mode=tables[1][1][3] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/TriggerMode?KEY=%s" % (l1_hlt_mode) #print url tables=parseURLTables(url) prescales={} for line in tables[2]: if ('Output' in line[1].split('_v')[0]): continue # path lumi try: prescales[line[1].split('_v')[0]] = (int(line[lumicolumn]),line[15]) except: prescales[line[1].split('_v')[0]] = (-1,'null') return prescales
def getTriggerRates(runnr,minLS,maxLS): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/HLTSummary?fromLS=%s&toLS=%s&RUN=%s" % (minLS,maxLS,runnr) tables=parseURLTables(url) hltRates={} for line in tables[1][2:]: rates=[] for entry in line[3:7]: rates.append(float(entry.replace(",",""))) hltRates[line[1].split("_v")[0]]=(rates,line[9]) return hltRates
def getPU(runnr,minLS,maxLS): psAndInstLumis=getPSAndInstLumis(runnr) aveLumi=getAveInstLumi(psAndInstLumis,minLS,maxLS) url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % (runnr) tables=parseURLTables(url) lhcfill_key=tables[3][14][1] url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % (lhcfill_key) tables=parseURLTables(url) nbunch=int(tables[3][18][1]) sumPU=0. nLS=0. for lumi in range(minLS,maxLS+1): if lumi in psAndInstLumis: nLS+=1 sumPU+=(psAndInstLumis[lumi][1]/aveLumi)*(psAndInstLumis[lumi][1]*80000)/(11246*nbunch) avePU=sumPU/nLS return avePU
def getTriggerRates(runnr, minLS, maxLS): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/HLTSummary?fromLS=%s&toLS=%s&RUN=%s" % ( minLS, maxLS, runnr) tables = parseURLTables(url) hltRates = {} for line in tables[1][2:]: rates = [] for entry in line[3:7]: rates.append(float(entry.replace(",", ""))) hltRates[line[1].split("_v")[0]] = (rates, line[9]) return hltRates
def getL1TriggerRates(runnr,minLS,maxLS): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/L1Summary?fromLS=%s&toLS=%s&RUN=%s" % (minLS,maxLS,runnr) tables=parseURLTables(url) l1Rates={} for line in tables[6]: if (line[1].startswith('L1_')): #print line[1],line[6].replace(',','') l1Rates[line[1]]=(float(line[6].replace(',',''))) return l1Rates
def getL1TriggerRates(runnr, minLS, maxLS): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/L1Summary?fromLS=%s&toLS=%s&RUN=%s" % ( minLS, maxLS, runnr) tables = parseURLTables(url) l1Rates = {} for line in tables[6]: if (line[1].startswith('L1_')): #print line[1],line[6].replace(',','') l1Rates[line[1]] = (float(line[6].replace(',', ''))) return l1Rates
def getHLTPrescales(runnr): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % ( runnr) tables = parseURLTables(url) l1_hlt_mode = tables[1][1][3] url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/TriggerMode?KEY=%s" % ( l1_hlt_mode) #print url tables = parseURLTables(url) prescales = {} for line in tables[2]: if ('Output' in line[1].split('_v')[0]): continue # path lumi try: prescales[line[1].split('_v')[0]] = (int(line[lumicolumn]), line[15]) except: prescales[line[1].split('_v')[0]] = (-1, 'null') return prescales
def getPU(runnr, minLS, maxLS): psAndInstLumis = getPSAndInstLumis(runnr) aveLumi = getAveInstLumi(psAndInstLumis, minLS, maxLS) url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary?RUN=%s&DB=default" % ( runnr) tables = parseURLTables(url) lhcfill_key = tables[3][14][1] url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/FillReport?FILL=%s" % ( lhcfill_key) tables = parseURLTables(url) nbunch = int(tables[3][18][1]) sumPU = 0. nLS = 0. for lumi in range(minLS, maxLS + 1): if lumi in psAndInstLumis: nLS += 1 sumPU += (psAndInstLumis[lumi][1] / aveLumi) * ( psAndInstLumis[lumi][1] * 80000) / (11246 * nbunch) avePU = sumPU / nLS return avePU
def getPSAndInstLumis(runNum): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/LumiSections?RUN=%s" % runNum tables=parseURLTables(url) psAndInstLumis={} for line in tables[0]: offset=0 if line[0]=="L S": offset=41 lumiSec=int(line[0+offset]) preScaleColumn=int(line[1+offset]) instLumi=float(line[3+offset]) if instLumi==0.0: instLumi=50 psAndInstLumis[lumiSec]=(preScaleColumn,instLumi) return psAndInstLumis
def getPSAndInstLumis(runNum): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/LumiSections?RUN=%s" % runNum tables = parseURLTables(url) psAndInstLumis = {} for line in tables[0]: offset = 0 if line[0] == "L S": offset = 41 lumiSec = int(line[0 + offset]) preScaleColumn = int(line[1 + offset]) instLumi = float(line[3 + offset]) if instLumi == 0.0: instLumi = 50 psAndInstLumis[lumiSec] = (preScaleColumn, instLumi) return psAndInstLumis
def getL1Prescales(runnr): url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/PrescaleSets?RUN=%s" % (runnr) tables=parseURLTables(url) prescales={} # l1 algo paths/prescales for line in tables[1]: if not 'L1_' in line[1]:continue # path lumi try: prescales[line[1]] = (int(line[lumicolumn])) except: prescales[line[1]] = (0) return prescales
def getL1Prescales(runnr): url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/PrescaleSets?RUN=%s" % ( runnr) tables = parseURLTables(url) prescales = {} # l1 algo paths/prescales for line in tables[1]: if not 'L1_' in line[1]: continue # path lumi try: prescales[line[1]] = (int(line[lumicolumn])) except: prescales[line[1]] = (0) return prescales
parser = argparse.ArgumentParser(description='compare hlt reports') args = parser.parse_args() f_json=open("/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions15/13TeV/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt") good_run_lumis=json.loads(f_json.read()) for run in good_run_lumis: print run url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/PrescaleChanges?RUN="+str(run) tables=parseURLTables(url) assert(len(tables) == 1) prescale_indices = [] for i in range(0,len(tables[0])): table = tables[0][i] if i == 0: table=tables[0][i][6:len(table)-1] prescale_index = int (table[2]) lumisection = int(table[1])
args = parser.parse_args() f_json = open( "/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions15/13TeV/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt" ) good_run_lumis = json.loads(f_json.read()) for run in good_run_lumis: print run url = "https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/PrescaleChanges?RUN=" + str( run) tables = parseURLTables(url) assert (len(tables) == 1) prescale_indices = [] for i in range(0, len(tables[0])): table = tables[0][i] if i == 0: table = tables[0][i][6:len(table) - 1] prescale_index = int(table[2]) lumisection = int(table[1])
f_json=open("/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions15/13TeV/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt") good_run_lumis=json.loads(f_json.read()) output_json = {} for run in good_run_lumis: #if run != "258211": # continue print run url="https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/PrescaleChanges?RUN="+str(run) tables=parseURLTables(url) assert(len(tables) == 1) prescale_indices = [] for i in range(0,len(tables[0])): table = tables[0][i] if i == 0: table=tables[0][i][6:len(table)-1] prescale_index = int (table[2]) lumisection = int(table[1])