def insertV2(dbsession,runnum,inputpathnames,inputdata): ''' inputpathnames: [pathname] inputdata: {cmslsnum:[presc,presc...]} ''' branchrevision_id=DATABRANCH_ID try: pathnamesClob=','.join(inputpathnames) hltrundata=[pathnamesClob,'text file'] (hltrevid,hltentryid,hltdataid)=dataDML.addHLTRunDataToBranch(dbsession.nominalSchema(),runnum,hltrundata,(branchrevision_id,'DATA')) hltlsdata={} for cmslsnum,perlsdata in inputdata.items(): prescaleArray=array.array('I') hltcountArray=array.array('I') hltacceptArray=array.array('I') for presc in perlsdata: thiscount=0 thisaccept=0 prescaleArray.append(presc) hltcountArray.append(thiscount) hltacceptArray.append(thisaccept) prescaleblob=CommonUtil.packArraytoBlob(prescaleArray) hltcountblob=CommonUtil.packArraytoBlob(hltcountArray) hltacceptblob=CommonUtil.packArraytoBlob(hltacceptArray) hltlsdata[cmslsnum]=[hltcountblob,hltacceptblob,prescaleblob] dataDML.bulkInsertHltLSData(dbsession,runnum,hltdataid,hltlsdata,500) except: raise
def trg(schema,nls): ''' input: output: [datasource,bitzeroname,bitnameclob,{cmslsnum:[deadtime,bitzerocount,bitzeroprescale,trgcountBlob,trgprescaleBlob]}] ''' o=['oracle://cms_orcon_prod/cms_gtmon','L1_ZeroBias'] bitnameclob='L1_ZeroBias,False,L1_SingleHfBitCountsRing1_1,L1_SingleHfBitCountsRing2_1,L1_SingleMu15,L1SingleJet,Jura' o.append(bitnameclob) perlsdata={} for cmslsnum in range(1,nls+1): deadtime=99+cmslsnum bitzerocount=897865 bitzeroprescale=17 trgcounts=array.array('I') prescalecounts=array.array('I') for i in range(1,192): trgcounts.append(778899+i) prescalecounts.append(17) trgcountsBlob=CommonUtil.packArraytoBlob(trgcounts) prescalecountsBlob=CommonUtil.packArraytoBlob(prescalecounts) if not perlsdata.has_key(cmslsnum): perlsdata[cmslsnum]=[] perlsdata[cmslsnum].extend([deadtime,bitzerocount,bitzeroprescale,trgcountsBlob,prescalecountsBlob]) o.append(perlsdata) return o
def hlt(schema, nls): ''' input: output: [datasource,pathnameclob,{cmslsnum:[inputcountBlob,acceptcountBlob,prescaleBlob]}] ''' o = ['oracle://cms_orcon_prod/cms_runinfo'] pathnameclob = 'HLT_PixelTracks_Multiplicity70,HLT_PixelTracks_Multiplicity85,HLT_PixelTracks_Multiplicity100,HLT_GlobalRunHPDNoise,HLT_TechTrigHCALNoise' o.append(pathnameclob) perlsdata = {} for cmslsnum in range(1, nls + 1): inputcounts = array.array('I') acceptcounts = array.array('I') prescalecounts = array.array('I') for i in range(1, 201): inputcounts.append(6677889) acceptcounts.append(3344565) prescalecounts.append(17) inputcountsBlob = CommonUtil.packArraytoBlob(inputcounts) acceptcountsBlob = CommonUtil.packArraytoBlob(acceptcounts) prescalecountsBlob = CommonUtil.packArraytoBlob(prescalecounts) if cmslsnum not in perlsdata: perlsdata[cmslsnum] = [] perlsdata[cmslsnum].extend( [inputcountsBlob, acceptcountsBlob, prescalecountsBlob]) o.append(perlsdata) return o
def trg(schema, nls): ''' input: output: [datasource,bitzeroname,bitnameclob,{cmslsnum:[deadtime,bitzerocount,bitzeroprescale,trgcountBlob,trgprescaleBlob]}] ''' o = ['oracle://cms_orcon_prod/cms_gtmon', 'L1_ZeroBias'] bitnameclob = 'L1_ZeroBias,False,L1_SingleHfBitCountsRing1_1,L1_SingleHfBitCountsRing2_1,L1_SingleMu15,L1SingleJet,Jura' o.append(bitnameclob) perlsdata = {} for cmslsnum in range(1, nls + 1): deadtime = 99 + cmslsnum bitzerocount = 897865 bitzeroprescale = 17 trgcounts = array.array('I') prescalecounts = array.array('I') for i in range(1, 192): trgcounts.append(778899 + i) prescalecounts.append(17) trgcountsBlob = CommonUtil.packArraytoBlob(trgcounts) prescalecountsBlob = CommonUtil.packArraytoBlob(prescalecounts) if cmslsnum not in perlsdata: perlsdata[cmslsnum] = [] perlsdata[cmslsnum].extend([ deadtime, bitzerocount, bitzeroprescale, trgcountsBlob, prescalecountsBlob ]) o.append(perlsdata) return o
def hlt(schema,nls): ''' input: output: [datasource,pathnameclob,{cmslsnum:[inputcountBlob,acceptcountBlob,prescaleBlob]}] ''' o=['oracle://cms_orcon_prod/cms_runinfo'] pathnameclob='HLT_PixelTracks_Multiplicity70,HLT_PixelTracks_Multiplicity85,HLT_PixelTracks_Multiplicity100,HLT_GlobalRunHPDNoise,HLT_TechTrigHCALNoise' o.append(pathnameclob) perlsdata={} for cmslsnum in range(1,nls+1): inputcounts=array.array('I') acceptcounts=array.array('I') prescalecounts=array.array('I') for i in range(1,201): inputcounts.append(6677889 ) acceptcounts.append(3344565) prescalecounts.append(17) inputcountsBlob=CommonUtil.packArraytoBlob(inputcounts) acceptcountsBlob=CommonUtil.packArraytoBlob(acceptcounts) prescalecountsBlob=CommonUtil.packArraytoBlob(prescalecounts) if not perlsdata.has_key(cmslsnum): perlsdata[cmslsnum]=[] perlsdata[cmslsnum].extend([inputcountsBlob,acceptcountsBlob,prescalecountsBlob]) o.append(perlsdata) return o
def insertV2(dbsession,runnum,inputpathnames,inputdata): ''' inputpathnames: [pathname] inputdata: {cmslsnum:[presc,presc...]} ''' branchrevision_id=DATABRANCH_ID try: pathnamesClob=','.join(inputpathnames) hltrundata=[pathnamesClob,'text file'] (hltrevid,hltentryid,hltdataid)=dataDML.addHLTRunDataToBranch(dbsession.nominalSchema(),runnum,hltrundata,(branchrevision_id,'DATA')) hltlsdata={} for cmslsnum,perlsdata in inputdata.items(): prescaleArray=array.array('I') hltcountArray=array.array('I') hltacceptArray=array.array('I') for presc in perlsdata: thiscount=0 thisaccept=0 prescaleArray.append(presc) hltcountArray.append(thiscount) hltacceptArray.append(thisaccept) prescaleblob=CommonUtil.packArraytoBlob(prescaleArray) hltcountblob=CommonUtil.packArraytoBlob(hltcountArray) hltacceptblob=CommonUtil.packArraytoBlob(hltacceptArray) hltlsdata[cmslsnum]=[hltcountblob,hltacceptblob,prescaleblob] dataDML.bulkInsertHltLSData(dbsession,runnum,hltdataid,hltlsdata,500) except: raise
def insertLumiDetaildata(dbsession,perlsrawdata,perbunchrawdata,summaryidlsmap): dataDef=[] dataDef.append(('LUMISUMMARY_ID','unsigned long long')) dataDef.append(('LUMIDETAIL_ID','unsigned long long')) dataDef.append(('BXLUMIVALUE','blob')) dataDef.append(('BXLUMIERROR','blob')) dataDef.append(('BXLUMIQUALITY','blob')) dataDef.append(('ALGONAME','string')) perbunchiData=[] dbsession.transaction().start(False) iddealer=idDealer.idDealer(dbsession.nominalSchema()) db=dbUtil.dbUtil(dbsession.nominalSchema()) print('to insert lumidetail ') for algoname in ['OCC1','OCC2','ET']: for cmslsnum,instlumi in perlsrawdata.items(): lumisummary_id=summaryidlsmap[cmslsnum] lumidetail_id=iddealer.generateNextIDForTable('LUMIDETAIL') bxdata=array.array('f') bxerror=array.array('f') bxquality=array.array('h') for bxidx in range(1,3565): lumifraction=0.0 if bxidx in perbunchrawdata: lumifraction=perbunchrawdata[bxidx] bxlumivalue=float(instlumi*lumifraction)/float(bunchnorm) bxdata.append(bxlumivalue) bxerror.append(0.0) bxquality.append(1) bxdataBlob=CommonUtil.packArraytoBlob(bxdata) bxerrorBlob=CommonUtil.packArraytoBlob(bxerror) bxqualityBlob=CommonUtil.packArraytoBlob(bxquality) perbunchiData.append([('LUMISUMMARY_ID',lumisummary_id),('LUMIDETAIL_ID',lumidetail_id),('BXLUMIVALUE',bxdataBlob),('BXLUMIERROR',bxerrorBlob),('BXLUMIQUALITY',bxqualityBlob),('ALGONAME',algoname)]) db.bulkInsert('LUMIDETAIL',dataDef,perbunchiData) dbsession.transaction().commit() return
def insertLumiDetaildata(dbsession,perlsrawdata,perbunchrawdata,summaryidlsmap): dataDef=[] dataDef.append(('LUMISUMMARY_ID','unsigned long long')) dataDef.append(('LUMIDETAIL_ID','unsigned long long')) dataDef.append(('BXLUMIVALUE','blob')) dataDef.append(('BXLUMIERROR','blob')) dataDef.append(('BXLUMIQUALITY','blob')) dataDef.append(('ALGONAME','string')) perbunchiData=[] dbsession.transaction().start(False) iddealer=idDealer.idDealer(dbsession.nominalSchema()) db=dbUtil.dbUtil(dbsession.nominalSchema()) print('to insert lumidetail ') for algoname in ['OCC1','OCC2','ET']: for cmslsnum,instlumi in perlsrawdata.items(): lumisummary_id=summaryidlsmap[cmslsnum] lumidetail_id=iddealer.generateNextIDForTable('LUMIDETAIL') bxdata=array.array('f') bxerror=array.array('f') bxquality=array.array('h') for bxidx in range(1,3565): lumifraction=0.0 if bxidx in perbunchrawdata: lumifraction=perbunchrawdata[bxidx] bxlumivalue=float(instlumi*lumifraction)/float(bunchnorm) bxdata.append(bxlumivalue) bxerror.append(0.0) bxquality.append(1) bxdataBlob=CommonUtil.packArraytoBlob(bxdata) bxerrorBlob=CommonUtil.packArraytoBlob(bxerror) bxqualityBlob=CommonUtil.packArraytoBlob(bxquality) perbunchiData.append([('LUMISUMMARY_ID',lumisummary_id),('LUMIDETAIL_ID',lumidetail_id),('BXLUMIVALUE',bxdataBlob),('BXLUMIERROR',bxerrorBlob),('BXLUMIQUALITY',bxqualityBlob),('ALGONAME',algoname)]) db.bulkInsert('LUMIDETAIL',dataDef,perbunchiData) dbsession.transaction().commit() return
def insertLumiDetaildata(dbsession, perlsrawdata, perbunchrawdata, summaryidlsmap): dataDef = [] dataDef.append(("LUMISUMMARY_ID", "unsigned long long")) dataDef.append(("LUMIDETAIL_ID", "unsigned long long")) dataDef.append(("BXLUMIVALUE", "blob")) dataDef.append(("BXLUMIERROR", "blob")) dataDef.append(("BXLUMIQUALITY", "blob")) dataDef.append(("ALGONAME", "string")) perbunchiData = [] dbsession.transaction().start(False) iddealer = idDealer.idDealer(dbsession.nominalSchema()) db = dbUtil.dbUtil(dbsession.nominalSchema()) print "to insert lumidetail " for algoname in ["OCC1", "OCC2", "ET"]: for cmslsnum, instlumi in perlsrawdata.items(): lumisummary_id = summaryidlsmap[cmslsnum] lumidetail_id = iddealer.generateNextIDForTable("LUMIDETAIL") print "cmslsnum ", lumidetail_id, lumisummary_id bxdataocc1 = array.array("f") bxdataocc2 = array.array("f") bxdataet = array.array("f") bxerror = array.array("f") bxquality = array.array("h") for bxidx in range(1, 3565): lumifraction = 0.0 if perbunchrawdata.has_key(bxidx): lumifraction = perbunchrawdata[bxidx] bxlumivalue = float(instlumi * lumifraction) bxdataocc1.append(bxlumivalue) bxdataocc2.append(bxlumivalue) bxdataet.append(bxlumivalue) bxdataocc1Blob = CommonUtil.packArraytoBlob(bxdataocc1) bxdataocc2Blob = CommonUtil.packArraytoBlob(bxdataocc2) bxdataetBlob = CommonUtil.packArraytoBlob(bxdataet) bxqualityBlob = CommonUtil.packArraytoBlob(bxquality) perbunchiData.append( [ ("LUMISUMMARY_ID", lumisummary_id), ("LUMIDETAIL_ID", lumidetail_id), ("BXLUMIVALUE", bxdataocc1Blob), ("BXLUMIERROR", bxdataocc2Blob), ("BXLUMIQUALITY", bxqualityBlob), ("ALGONAME", algoname), ] ) db.bulkInsert("LUMIDETAIL", dataDef, perbunchiData) print perbunchiData dbsession.transaction().commit() return
def lumiSummary(schema, nlumils): ''' input: output: [datasource,{lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beamintensityblob_1,beamintensitublob_2,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]}] ''' o = ['file:fake.root'] perlsdata = {} for lumilsnum in range(1, nlumils + 1): cmslsnum = 0 if lumilsnum < 100: cmslsnum = lumilsnum instlumi = 2.37 instlumierror = 0.56 instlumiquality = 2 beamstatus = 'STABLE BEAMS' beamenergy = 3.5e03 numorbit = 12345 startorbit = numorbit * lumilsnum if cmslsnum == 0: cmsbxindex = None beam1intensity = None beam2intensity = None else: cmsbxindex = array.array('I') beam1intensity = array.array('f') beam2intensity = array.array('f') for idx in range(1, 3565): cmsbxindex.append(idx) beam1intensity.append(1.5e09) beam2intensity.append(5.5e09) cmsbxindexBlob = CommonUtil.packArraytoBlob(cmsbxindex) beam1intensityBlob = CommonUtil.packArraytoBlob(beam1intensity) beam2intensityBlob = CommonUtil.packArraytoBlob(beam2intensity) bxlumivalue = array.array('f') bxlumierror = array.array('f') bxlumiquality = array.array('I') for idx in range(1, 3565): bxlumivalue.append(2.3) bxlumierror.append(0.4) bxlumiquality.append(2) bxlumivalueBlob = CommonUtil.packArraytoBlob(bxlumivalue) bxlumierrorBlob = CommonUtil.packArraytoBlob(bxlumierror) bxlumiqualityBlob = CommonUtil.packArraytoBlob(bxlumiquality) if lumilsnum not in perlsdata: perlsdata[lumilsnum] = [] perlsdata[lumilsnum].extend([ cmslsnum, instlumi, instlumierror, instlumiquality, beamstatus, beamenergy, numorbit, startorbit, cmsbxindexBlob, beam1intensityBlob, beam2intensityBlob, bxlumivalueBlob, bxlumierrorBlob, bxlumiqualityBlob, bxlumivalueBlob, bxlumierrorBlob, bxlumiqualityBlob, bxlumivalueBlob, bxlumierrorBlob, bxlumiqualityBlob ]) o.append(perlsdata) return o
def lumiSummary(schema,nlumils): ''' input: output: [datasource,{lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beamintensityblob_1,beamintensitublob_2,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]}] ''' o=['file:fake.root'] perlsdata={} for lumilsnum in range(1,nlumils+1): cmslsnum=0 if lumilsnum<100: cmslsnum=lumilsnum instlumi=2.37 instlumierror=0.56 instlumiquality=2 beamstatus='STABLE BEAMS' beamenergy=3.5e03 numorbit=12345 startorbit=numorbit*lumilsnum if cmslsnum==0: cmsbxindex=None beam1intensity=None beam2intensity=None else: cmsbxindex=array.array('I') beam1intensity=array.array('f') beam2intensity=array.array('f') for idx in range(1,3565): cmsbxindex.append(idx) beam1intensity.append(1.5e09) beam2intensity.append(5.5e09) cmsbxindexBlob=CommonUtil.packArraytoBlob(cmsbxindex) beam1intensityBlob=CommonUtil.packArraytoBlob(beam1intensity) beam2intensityBlob=CommonUtil.packArraytoBlob(beam2intensity) bxlumivalue=array.array('f') bxlumierror=array.array('f') bxlumiquality=array.array('I') for idx in range(1,3565): bxlumivalue.append(2.3) bxlumierror.append(0.4) bxlumiquality.append(2) bxlumivalueBlob=CommonUtil.packArraytoBlob(bxlumivalue) bxlumierrorBlob=CommonUtil.packArraytoBlob(bxlumierror) bxlumiqualityBlob=CommonUtil.packArraytoBlob(bxlumiquality) if not perlsdata.has_key(lumilsnum): perlsdata[lumilsnum]=[] perlsdata[lumilsnum].extend([cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexBlob,beam1intensityBlob,beam2intensityBlob,bxlumivalueBlob,bxlumierrorBlob,bxlumiqualityBlob,bxlumivalueBlob,bxlumierrorBlob,bxlumiqualityBlob,bxlumivalueBlob,bxlumierrorBlob,bxlumiqualityBlob]) o.append(perlsdata) return o
def insertLumischemaV2(dbsession, runnum, datasource, perlsrawdata, perbunchrawdata, bxdistribution, withDetails=False, deliveredonly=False): ''' input: lumirundata[datasource] perlsrawdata: {cmslsnum:instlumi} perbunchrawdata: {bxidx:lumifraction} lumilsdata {lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]} ''' branchrevision_id = 3 #databranch_id branchinfo = (branchrevision_id, 'DATA') lumirundata = [datasource] lumilsdata = {} for cmslsnum, instlumi in perlsrawdata.items(): mystartorbit = startorbit + numorbit * (cmslsnum - 1) bxdataocc1blob = None bxdataocc2blob = None bxdataetblob = None bxerrorocc1blob = None bxerrorocc2blob = None bxerroretblob = None bxqualityocc1blob = None bxqualityocc2blob = None bxqualityetblob = None cmsbxindexblob = None beam1intensityblob = None beam2intensityblob = None beamstatus = 'STABLE BEAMS' beamenergy = 4000. instlumierror = 0. instlumiquality = 1 if perbunchrawdata: withDetails = True bxdataocc1blob = perbunchrawdata[cmslsnum][0] bxerrorocc1blob = perbunchrawdata[cmslsnum][1] bxqualityocc1blob = perbunchrawdata[cmslsnum][2] bxdataocc2blob = perbunchrawdata[cmslsnum][3] bxerrorocc2blob = perbunchrawdata[cmslsnum][4] bxqualityocc2blob = perbunchrawdata[cmslsnum][5] bxdataetblob = perbunchrawdata[cmslsnum][6] bxerroretblob = perbunchrawdata[cmslsnum][7] bxqualityetblob = perbunchrawdata[cmslsnum][8] bxindexblob = perbunchrawdata[cmslsnum][9] beam1intensityblob = perbunchrawdata[cmslsnum][10] beam2intensityblob = perbunchrawdata[cmslsnum][11] beamstatus = perbunchrawdata[cmslsnum][12] beamenergy = perbunchrawdata[cmslsnum][13] instlumierror = perbunchrawdata[cmslsnum][14] instlumiquality = perbunchrawdata[cmslsnum][15] elif bxdistribution: withDetails = True bxdataArray = array.array('f') bxerrorArray = array.array('f') bxqualityArray = array.array('h') cmsbxindexArray = array.array('h') beam1intensityArray = array.array('f') beam2intensityArray = array.array('f') for bxidx in range(1, 3565): lumifraction = 0.0 if bxidx in perbunchrawdata: lumifraction = perbunchrawdata[bxidx] bxlumivalue = float(instlumi * lumifraction) bxdataArray.append(bxlumivalue) beam1intensityArray.append(9124580336.0) beam1intensityArray.append(8932813306.0) cmsbxindexArray.append(bxidx) bxqualityArray.append(1) bxerrorArray.append(0.0) bxdataocc1blob = CommonUtil.packArraytoBlob(bxdataArray) bxdataocc2blob = CommonUtil.packArraytoBlob(bxdataArray) bxdataetblob = CommonUtil.packArraytoBlob(bxdataArray) bxerrorocc1blob = CommonUtil.packArraytoBlob(bxerrorArray) bxerrorocc2blob = CommonUtil.packArraytoBlob(bxerrorArray) bxerroretblob = CommonUtil.packArraytoBlob(bxerrorArray) bxqualityocc1blob = CommonUtil.packArraytoBlob(bxqualityArray) bxqualityocc2blob = CommonUtil.packArraytoBlob(bxqualityArray) bxqualityetblob = CommonUtil.packArraytoBlob(bxqualityArray) cmsbxindexblob = CommonUtil.packArraytoBlob(cmsbxindexArray) beam1intensityblob = CommonUtil.packArraytoBlob( beam1intensityArray) beam2intensityblob = CommonUtil.packArraytoBlob( beam2intensityArray) if deliveredonly: perlsdata = [ 0, float(instlumi), instlumierror, instlumiquality, beamstatus, beamenergy, numorbit, mystartorbit, cmsbxindexblob, beam1intensityblob, beam2intensityblob, bxdataocc1blob, bxerrorocc1blob, bxqualityocc1blob, bxdataocc2blob, bxerrorocc2blob, bxqualityocc2blob, bxdataetblob, bxerroretblob, bxqualityetblob ] else: perlsdata = [ cmslsnum, float(instlumi), instlumierror, instlumiquality, beamstatus, beamenergy, numorbit, mystartorbit, cmsbxindexblob, beam1intensityblob, beam2intensityblob, bxdataocc1blob, bxerrorocc1blob, bxqualityocc1blob, bxdataocc2blob, bxerrorocc2blob, bxqualityocc2blob, bxdataetblob, bxerroretblob, bxqualityetblob ] lumilsdata[cmslsnum] = perlsdata #print 'toinsert from scratch',lumilsdata print(lumilsdata) dbsession.transaction().start(False) (revision_id, entry_id, data_id) = dataDML.addLumiRunDataToBranch(dbsession.nominalSchema(), runnum, lumirundata, branchinfo, 'LUMIDATA') dataDML.bulkInsertLumiLSSummary(dbsession, runnum, data_id, lumilsdata, 'LUMISUMMARYV2', withDetails=withDetails) dbsession.transaction().commit()
def generateLumidata(lumirundatafromfile,lsdatafromfile,rundatafromdb,lsdatafromdb,replacelsMin,replacelsMax): ''' input: perrunresultfromfile=[]#source,starttime,stoptime,nls perlsresultfromfile={} #{lumilsnum:instlumiub} lumirundatafromdb=[] #[source,nominalegev,ncollidingbunches,starttime,stoptime,nls] lumilsdatafromdb={}#{lumilsnum:[cmslsnum(0),instlumi(1),instlumierror(2),instlumiquality(3),beamstatus(4),beamenergy(5),numorbit(6),startorbit(7),cmsbxindexblob(8),beamintensityblob_1(9),beamintensityblob_2(10),bxlumivalue_occ1(11),bxlumierror_occ1(12),bxlumiquality_occ1(13),bxlumivalue_occ2(14),bxlumierror_occ2(15),bxlumiquality_occ2(16),bxlumivalue_et(17),bxlumierror_et(18),bxlumiquality_et(19)]} ''' lumip=lumiParameters.ParametersObject() numorbit=lumip.numorbit startorbit=0 fakebeamenergy=4000. fakebeamstatus='STABLE BEAMS' fakefloatArray=array.array('f') fakeidxArray=array.array('h') fakeshortArray=array.array('h') for bxidx in range(1,3565): fakeidxArray.append(bxidx) fakefloatArray.append(0.) fakeshortArray.append(0) lumirundata=[] lumilsdata={} if rundatafromdb: lumirundata=rundatafromdb lumirundata[0]=rundatafromdb[0]+'+file:'+lumirundatafromfile[0] else: lu=lumiTime.lumiTime() source='+file:'+lumirundatafromfile[0] nominalegev=fakebeamenergy ncollidingbunches=72 starttime=lumirundatafromfile[1] stoptime=lumirundatafromfile[2] starttimeT=lu.timestampTodatetimeUTC(starttime) stoptimeT=lu.timestampTodatetimeUTC(stoptime) print(starttimeT.day,starttimeT.month,starttimeT.year) starttimeT_coral=coral.TimeStamp(starttimeT.year,starttimeT.month,starttimeT.day,starttimeT.hour,starttimeT.minute,starttimeT.second,0) stoptimeT_coral=coral.TimeStamp(stoptimeT.year,stoptimeT.month,stoptimeT.day,stoptimeT.hour,stoptimeT.minute,stoptimeT.second,0) nls=lumirundatafromfile[3] lumirundata=[source,nominalegev,ncollidingbunches,starttimeT_coral,stoptimeT_coral,nls] if lsdatafromdb: lumilsdata=lsdatafromdb if replacelsMin>len(lsdatafromdb): print('[INFO]Operation: extend an existing run from LS=',replacelsMin) lumirundata[5]+=len(lsdatafromfile) else: print('[INFO]Operation: replace instlumi in an existing run LS range=',replacelsMin,replacelsMax) else: print('[INFO]Operation: insert a new fake run') for lumilsnum in range(replacelsMin,replacelsMax+1): instlumi=lsdatafromfile[lumilsnum] if lumilsnum in lsdatafromdb.keys(): #if this is a hole lumilsdata[lumilsnum][1]=instlumi else: #if this is an extension instlumierror=0.0 instlumiquality=0 startorbit=(lumilsnum-1)*numorbit cmsbxindexblob=CommonUtil.packArraytoBlob(fakeshortArray) beamintensityblob_1=CommonUtil.packArraytoBlob(fakefloatArray) beamintensityblob_2=CommonUtil.packArraytoBlob(fakefloatArray) bxlumivalue_occ1=CommonUtil.packArraytoBlob(fakefloatArray) bxlumierror_occ1=CommonUtil.packArraytoBlob(fakefloatArray) bxlumiquality_occ1=CommonUtil.packArraytoBlob(fakeshortArray) bxlumivalue_occ2=CommonUtil.packArraytoBlob(fakefloatArray) bxlumierror_occ2=CommonUtil.packArraytoBlob(fakefloatArray) bxlumiquality_occ2=CommonUtil.packArraytoBlob(fakeshortArray) bxlumivalue_et=CommonUtil.packArraytoBlob(fakefloatArray) bxlumierror_et=CommonUtil.packArraytoBlob(fakefloatArray) bxlumiquality_et=CommonUtil.packArraytoBlob(fakeshortArray) lumilsdata[lumilsnum]=[0,instlumi,instlumierror,instlumiquality,fakebeamstatus,fakebeamenergy,numorbit,startorbit,cmsbxindexblob,beamintensityblob_1,beamintensityblob_2,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et] return (lumirundata,lumilsdata)
def generateLumidata(lumirundatafromfile, lsdatafromfile, rundatafromdb, lsdatafromdb, replacelsMin, replacelsMax): ''' input: perrunresultfromfile=[]#source,starttime,stoptime,nls perlsresultfromfile={} #{lumilsnum:instlumiub} lumirundatafromdb=[] #[source,nominalegev,ncollidingbunches,starttime,stoptime,nls] lumilsdatafromdb={}#{lumilsnum:[cmslsnum(0),instlumi(1),instlumierror(2),instlumiquality(3),beamstatus(4),beamenergy(5),numorbit(6),startorbit(7),cmsbxindexblob(8),beamintensityblob_1(9),beamintensityblob_2(10),bxlumivalue_occ1(11),bxlumierror_occ1(12),bxlumiquality_occ1(13),bxlumivalue_occ2(14),bxlumierror_occ2(15),bxlumiquality_occ2(16),bxlumivalue_et(17),bxlumierror_et(18),bxlumiquality_et(19)]} ''' lumip = lumiParameters.ParametersObject() numorbit = lumip.numorbit startorbit = 0 fakebeamenergy = 4000. fakebeamstatus = 'STABLE BEAMS' fakefloatArray = array.array('f') fakeidxArray = array.array('h') fakeshortArray = array.array('h') for bxidx in range(1, 3565): fakeidxArray.append(bxidx) fakefloatArray.append(0.) fakeshortArray.append(0) lumirundata = [] lumilsdata = {} if rundatafromdb: lumirundata = rundatafromdb lumirundata[0] = rundatafromdb[0] + '+file:' + lumirundatafromfile[0] else: lu = lumiTime.lumiTime() source = '+file:' + lumirundatafromfile[0] nominalegev = fakebeamenergy ncollidingbunches = 72 starttime = lumirundatafromfile[1] stoptime = lumirundatafromfile[2] starttimeT = lu.timestampTodatetimeUTC(starttime) stoptimeT = lu.timestampTodatetimeUTC(stoptime) print(starttimeT.day, starttimeT.month, starttimeT.year) starttimeT_coral = coral.TimeStamp(starttimeT.year, starttimeT.month, starttimeT.day, starttimeT.hour, starttimeT.minute, starttimeT.second, 0) stoptimeT_coral = coral.TimeStamp(stoptimeT.year, stoptimeT.month, stoptimeT.day, stoptimeT.hour, stoptimeT.minute, stoptimeT.second, 0) nls = lumirundatafromfile[3] lumirundata = [ source, nominalegev, ncollidingbunches, starttimeT_coral, stoptimeT_coral, nls ] if lsdatafromdb: lumilsdata = lsdatafromdb if replacelsMin > len(lsdatafromdb): print('[INFO]Operation: extend an existing run from LS=', replacelsMin) lumirundata[5] += len(lsdatafromfile) else: print( '[INFO]Operation: replace instlumi in an existing run LS range=', replacelsMin, replacelsMax) else: print('[INFO]Operation: insert a new fake run') for lumilsnum in range(replacelsMin, replacelsMax + 1): instlumi = lsdatafromfile[lumilsnum] if lumilsnum in lsdatafromdb.keys(): #if this is a hole lumilsdata[lumilsnum][1] = instlumi else: #if this is an extension instlumierror = 0.0 instlumiquality = 0 startorbit = (lumilsnum - 1) * numorbit cmsbxindexblob = CommonUtil.packArraytoBlob(fakeshortArray) beamintensityblob_1 = CommonUtil.packArraytoBlob(fakefloatArray) beamintensityblob_2 = CommonUtil.packArraytoBlob(fakefloatArray) bxlumivalue_occ1 = CommonUtil.packArraytoBlob(fakefloatArray) bxlumierror_occ1 = CommonUtil.packArraytoBlob(fakefloatArray) bxlumiquality_occ1 = CommonUtil.packArraytoBlob(fakeshortArray) bxlumivalue_occ2 = CommonUtil.packArraytoBlob(fakefloatArray) bxlumierror_occ2 = CommonUtil.packArraytoBlob(fakefloatArray) bxlumiquality_occ2 = CommonUtil.packArraytoBlob(fakeshortArray) bxlumivalue_et = CommonUtil.packArraytoBlob(fakefloatArray) bxlumierror_et = CommonUtil.packArraytoBlob(fakefloatArray) bxlumiquality_et = CommonUtil.packArraytoBlob(fakeshortArray) lumilsdata[lumilsnum] = [ 0, instlumi, instlumierror, instlumiquality, fakebeamstatus, fakebeamenergy, numorbit, startorbit, cmsbxindexblob, beamintensityblob_1, beamintensityblob_2, bxlumivalue_occ1, bxlumierror_occ1, bxlumiquality_occ1, bxlumivalue_occ2, bxlumierror_occ2, bxlumiquality_occ2, bxlumivalue_et, bxlumierror_et, bxlumiquality_et ] return (lumirundata, lumilsdata)
def insertLumischemaV2(dbsession,runnum,datasource,perlsrawdata,perbunchrawdata,bxdistribution,withDetails=False,deliveredonly=False): ''' input: lumirundata[datasource] perlsrawdata: {cmslsnum:instlumi} perbunchrawdata: {bxidx:lumifraction} lumilsdata {lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]} ''' branchrevision_id=3#databranch_id branchinfo=(branchrevision_id,'DATA') lumirundata=[datasource] lumilsdata={} for cmslsnum,instlumi in perlsrawdata.items(): mystartorbit=startorbit+numorbit*(cmslsnum-1) bxdataocc1blob=None bxdataocc2blob=None bxdataetblob=None bxerrorocc1blob=None bxerrorocc2blob=None bxerroretblob=None bxqualityocc1blob=None bxqualityocc2blob=None bxqualityetblob=None cmsbxindexblob=None beam1intensityblob=None beam2intensityblob=None beamstatus='STABLE BEAMS' beamenergy=4000. instlumierror=0. instlumiquality=1 if perbunchrawdata: withDetails=True bxdataocc1blob=perbunchrawdata[cmslsnum][0] bxerrorocc1blob=perbunchrawdata[cmslsnum][1] bxqualityocc1blob=perbunchrawdata[cmslsnum][2] bxdataocc2blob=perbunchrawdata[cmslsnum][3] bxerrorocc2blob=perbunchrawdata[cmslsnum][4] bxqualityocc2blob=perbunchrawdata[cmslsnum][5] bxdataetblob=perbunchrawdata[cmslsnum][6] bxerroretblob=perbunchrawdata[cmslsnum][7] bxqualityetblob=perbunchrawdata[cmslsnum][8] bxindexblob=perbunchrawdata[cmslsnum][9] beam1intensityblob=perbunchrawdata[cmslsnum][10] beam2intensityblob=perbunchrawdata[cmslsnum][11] beamstatus=perbunchrawdata[cmslsnum][12] beamenergy=perbunchrawdata[cmslsnum][13] instlumierror=perbunchrawdata[cmslsnum][14] instlumiquality=perbunchrawdata[cmslsnum][15] elif bxdistribution: withDetails=True bxdataArray=array.array('f') bxerrorArray=array.array('f') bxqualityArray=array.array('h') cmsbxindexArray=array.array('h') beam1intensityArray=array.array('f') beam2intensityArray=array.array('f') for bxidx in range(1,3565): lumifraction=0.0 if bxidx in perbunchrawdata: lumifraction=perbunchrawdata[bxidx] bxlumivalue=float(instlumi*lumifraction) bxdataArray.append(bxlumivalue) beam1intensityArray.append(9124580336.0) beam1intensityArray.append(8932813306.0) cmsbxindexArray.append(bxidx) bxqualityArray.append(1) bxerrorArray.append(0.0) bxdataocc1blob=CommonUtil.packArraytoBlob(bxdataArray) bxdataocc2blob=CommonUtil.packArraytoBlob(bxdataArray) bxdataetblob=CommonUtil.packArraytoBlob(bxdataArray) bxerrorocc1blob=CommonUtil.packArraytoBlob(bxerrorArray) bxerrorocc2blob=CommonUtil.packArraytoBlob(bxerrorArray) bxerroretblob=CommonUtil.packArraytoBlob(bxerrorArray) bxqualityocc1blob=CommonUtil.packArraytoBlob(bxqualityArray) bxqualityocc2blob=CommonUtil.packArraytoBlob(bxqualityArray) bxqualityetblob=CommonUtil.packArraytoBlob(bxqualityArray) cmsbxindexblob=CommonUtil.packArraytoBlob(cmsbxindexArray) beam1intensityblob=CommonUtil.packArraytoBlob(beam1intensityArray) beam2intensityblob=CommonUtil.packArraytoBlob(beam2intensityArray) if deliveredonly: perlsdata=[0,float(instlumi),instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,mystartorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxdataocc1blob,bxerrorocc1blob,bxqualityocc1blob,bxdataocc2blob,bxerrorocc2blob,bxqualityocc2blob,bxdataetblob,bxerroretblob,bxqualityetblob] else: perlsdata=[cmslsnum,float(instlumi),instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,mystartorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxdataocc1blob,bxerrorocc1blob,bxqualityocc1blob,bxdataocc2blob,bxerrorocc2blob,bxqualityocc2blob,bxdataetblob,bxerroretblob,bxqualityetblob] lumilsdata[cmslsnum]=perlsdata #print 'toinsert from scratch',lumilsdata print(lumilsdata) dbsession.transaction().start(False) (revision_id,entry_id,data_id)=dataDML.addLumiRunDataToBranch(dbsession.nominalSchema(),runnum,lumirundata,branchinfo,'LUMIDATA') dataDML.bulkInsertLumiLSSummary(dbsession,runnum,data_id,lumilsdata,'LUMISUMMARYV2',withDetails=withDetails) dbsession.transaction().commit()
def insertLumischemaV2(dbsession,runnum,datasource,perlsrawdata,perbunchrawdata): ''' input: lumirundata[datasource] perlsrawdata: {cmslsnum:instlumi} perbunchrawdata: {bxidx:lumifraction} lumilsdata {lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]} ''' branchrevision_id=3#databranch_id branchinfo=(branchrevision_id,'DATA') lumirundata=[datasource] lumilsdata={} for cmslsnum,instlumi in perlsrawdata.items(): mystartorbit=startorbit+numorbit*(cmslsnum-1) bxdataArray=array.array('f') bxerrorArray=array.array('f') bxqualityArray=array.array('h') cmsbxindexArray=array.array('h') beam1intensityArray=array.array('f') beam2intensityArray=array.array('f') for bxidx in range(1,3565): lumifraction=0.0 if bxidx in perbunchrawdata: lumifraction=perbunchrawdata[bxidx] bxlumivalue=float(instlumi*lumifraction)/float(bunchnorm) bxdataArray.append(bxlumivalue) beam1intensityArray.append(9124580336.0) beam1intensityArray.append(8932813306.0) cmsbxindexArray.append(bxidx) bxqualityArray.append(1) bxerrorArray.append(0.0) bxdataocc1blob=CommonUtil.packArraytoBlob(bxdataArray) bxdataocc2blob=CommonUtil.packArraytoBlob(bxdataArray) bxdataetblob=CommonUtil.packArraytoBlob(bxdataArray) bxerrorocc1blob=CommonUtil.packArraytoBlob(bxerrorArray) bxerrorocc2blob=CommonUtil.packArraytoBlob(bxerrorArray) bxerroretblob=CommonUtil.packArraytoBlob(bxerrorArray) bxqualityocc1blob=CommonUtil.packArraytoBlob(bxqualityArray) bxqualityocc2blob=CommonUtil.packArraytoBlob(bxqualityArray) bxqualityetblob=CommonUtil.packArraytoBlob(bxqualityArray) cmsbxindexblob=CommonUtil.packArraytoBlob(cmsbxindexArray) beam1intensityblob=CommonUtil.packArraytoBlob(beam1intensityArray) beam2intensityblob=CommonUtil.packArraytoBlob(beam2intensityArray) perlsdata=[cmslsnum,float(instlumi)/float(6370),0.0,1,'STABLE BEAMS',beamenergy,numorbit,mystartorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxdataocc1blob,bxerrorocc1blob,bxqualityocc1blob,bxdataocc2blob,bxerrorocc2blob,bxqualityocc2blob,bxdataetblob,bxerroretblob,bxqualityetblob] lumilsdata[cmslsnum]=perlsdata print(lumilsdata) dbsession.transaction().start(False) (revision_id,entry_id,data_id)=dataDML.addLumiRunDataToBranch(dbsession.nominalSchema(),runnum,lumirundata,branchinfo) dataDML.bulkInsertLumiLSSummary(dbsession,runnum,data_id,lumilsdata) dbsession.transaction().commit()
def insertLumischemaV2(dbsession, runnum, datasource, perlsrawdata, perbunchrawdata): ''' input: lumirundata[datasource] perlsrawdata: {cmslsnum:instlumi} perbunchrawdata: {bxidx:lumifraction} lumilsdata {lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]} ''' branchrevision_id = 3 #databranch_id branchinfo = (branchrevision_id, 'DATA') lumirundata = [datasource] lumilsdata = {} for cmslsnum, instlumi in perlsrawdata.items(): mystartorbit = startorbit + numorbit * (cmslsnum - 1) bxdataArray = array.array('f') bxerrorArray = array.array('f') bxqualityArray = array.array('h') cmsbxindexArray = array.array('h') beam1intensityArray = array.array('f') beam2intensityArray = array.array('f') for bxidx in range(1, 3565): lumifraction = 0.0 if bxidx in perbunchrawdata: lumifraction = perbunchrawdata[bxidx] bxlumivalue = float(instlumi * lumifraction) / float(bunchnorm) bxdataArray.append(bxlumivalue) beam1intensityArray.append(9124580336.0) beam1intensityArray.append(8932813306.0) cmsbxindexArray.append(bxidx) bxqualityArray.append(1) bxerrorArray.append(0.0) bxdataocc1blob = CommonUtil.packArraytoBlob(bxdataArray) bxdataocc2blob = CommonUtil.packArraytoBlob(bxdataArray) bxdataetblob = CommonUtil.packArraytoBlob(bxdataArray) bxerrorocc1blob = CommonUtil.packArraytoBlob(bxerrorArray) bxerrorocc2blob = CommonUtil.packArraytoBlob(bxerrorArray) bxerroretblob = CommonUtil.packArraytoBlob(bxerrorArray) bxqualityocc1blob = CommonUtil.packArraytoBlob(bxqualityArray) bxqualityocc2blob = CommonUtil.packArraytoBlob(bxqualityArray) bxqualityetblob = CommonUtil.packArraytoBlob(bxqualityArray) cmsbxindexblob = CommonUtil.packArraytoBlob(cmsbxindexArray) beam1intensityblob = CommonUtil.packArraytoBlob(beam1intensityArray) beam2intensityblob = CommonUtil.packArraytoBlob(beam2intensityArray) perlsdata = [ cmslsnum, float(instlumi) / float(6370), 0.0, 1, 'STABLE BEAMS', beamenergy, numorbit, mystartorbit, cmsbxindexblob, beam1intensityblob, beam2intensityblob, bxdataocc1blob, bxerrorocc1blob, bxqualityocc1blob, bxdataocc2blob, bxerrorocc2blob, bxqualityocc2blob, bxdataetblob, bxerroretblob, bxqualityetblob ] lumilsdata[cmslsnum] = perlsdata print(lumilsdata) dbsession.transaction().start(False) (revision_id, entry_id, data_id) = dataDML.addLumiRunDataToBranch(dbsession.nominalSchema(), runnum, lumirundata, branchinfo) dataDML.bulkInsertLumiLSSummary(dbsession, runnum, data_id, lumilsdata) dbsession.transaction().commit()
def patchV2(dbsession,runnum,inputpathnames,inputdata): ''' inputpathnames: [pathname,] inputdata: {cmslsnum:[presc,presc...]} update the most recent version of lshlt data if some ls exist if none old ls exists insert new hlt records ''' try: dbsession.transaction().start(True) oldhltdataid=dataDML.guessHltDataIdByRun(dbsession.nominalSchema(),runnum) existingrundata=dataDML.hltRunById(dbsession.nominalSchema(),oldhltdataid) dbsession.transaction().commit() if not oldhltdataid:#no data at all dbsession.transaction().start(False) insertV2(dbsession,runnum,inputpathnames,inputdata) dbsession.transaction().commit() return hltnamedict=existingrundata[3]#[(pathidx,hltname),(pathidx,hltname)...] dbsession.transaction().start(True) existinglsdata=dataDML.hltLSById(dbsession.nominalSchema(),oldhltdataid) dbsession.transaction().commit() oldlsdata=existinglsdata[1] existinglslist=oldlsdata.keys() toupdate={}#{cmslsnum:[presc,presc...]} toinsert={}#{cmslsnum:[presc,presc...]} if existinglslist and len(existinglslist)!=0:#there are some existing data for cmslsnum,oldlscontent in oldlsdata.items(): if cmslsnum in inputdata.keys(): # if overlap with new data, update old data with new toupdate[cmslsnum]=inputdata[cmslsnum] for cmslsnum,lshltcontent in inputdata.items(): if cmslsnum in toupdate: continue #it's to update not to insert toinsert[cmslsnum]=inputdata[cmslsnum] # # insert into lshlt(data_id,runnum,cmslsnum,prescaleblob,hltcountblob,hltacceptblob) values() # dbsession.transaction().start(False) tabrowDefDict={'DATA_ID':'unsigned long long','RUNNUM':'unsigned int','CMSLSNUM':'unsigned int','PRESCALEBLOB':'blob','HLTCOUNTBLOB':'blob','HLTACCEPTBLOB':'blob'} for cmslsnum,perlsdata in toinsert.items(): prescaleArray=array.array('I') hltcountArray=array.array('I') hltacceptArray=array.array('I') for (pathidx,hltname) in hltnamedict: thispathIdx=inputpathnames.index(hltname) thispresc=perlsdata[thispathIdx] thiscount=0 thisaccept=0 prescaleArray.append(thispresc) hltcountArray.append(thiscount) hltacceptArray.append(thisaccept) prescaleblob=CommonUtil.packArraytoBlob(prescaleArray) hltcountblob=CommonUtil.packArraytoBlob(hltcountArray) hltacceptblob=CommonUtil.packArraytoBlob(hltacceptArray) tabrowValueDict={'DATA_ID':oldhltdataid,'RUNNUM':int(runnum),'CMSLSNUM':int(cmslsnum),'PRESCALEBLOB':prescaleblob,'HLTCOUNTBLOB':hltcountblob,'HLTACCEPTBLOB':hltacceptblob} db=dbUtil.dbUtil(dbsession.nominalSchema()) db.insertOneRow(nameDealer.lshltTableName(),tabrowDefDict,tabrowValueDict) # # update lshlt set prescaleblob=:prescaleblob,hltcoutblob=:hltcountblob,hltacceptblob=:hltacceptblob where data_id=:olddata_id and cmslsnum=:cmslsnum; # setClause='PRESCALEBLOB=:prescaleblob,HLTCOUNTBLOB=:hltcountblob,HLTACCEPTBLOB=:hltacceptblob' updateCondition='DATA_ID=:oldhltdataid and CMSLSNUM=:cmslsnum' for cmslsnum,perlsdata in toupdate.items(): prescaleArray=array.array('I') hltcountArray=array.array('I') hltacceptArray=array.array('I') for (pathidx,hltname) in hltnamedict: thispathIdx=inputpathnames.index(hltname) thispresc=perlsdata[thispathIdx] thiscount=0 thisaccept=0 prescaleArray.append(thispresc) hltcountArray.append(thiscount) hltacceptArray.append(thisaccept) prescaleblob=CommonUtil.packArraytoBlob(prescaleArray) hltcountblob=CommonUtil.packArraytoBlob(hltcountArray) hltacceptblob=CommonUtil.packArraytoBlob(hltacceptArray) iData=coral.AttributeList() iData.extend('prescaleblob','blob') iData.extend('hltcountblob','blob') iData.extend('hltacceptblob','blob') iData.extend('olddata_id','unsigned int') iData.extend('cmslsnum','unsigned int') iData['prescaleblob'].setData(prescaleblob) iData['hltcountblob'].setData(hltcountblob) iData['hltacceptblob'].setData(hltacceptblob) iData['olddata_id'].setData(int(olddata_id)) iData['cmslsnum'].setData(int(cmslsnum)) db=dbUtil.dbUtil(schema) db.singleUpdate(nameDealer.lshltTableName(),setClause,updateCondition,iData) dbsession.transaction().commit() #dbsession.transaction().rollback() except : raise
def insertLumischemaV2(dbsession,runnum,datasource,perlsrawdata,perbunchrawdata,deliveredonly=False): ''' input: lumirundata[datasource] perlsrawdata: {cmslsnum:instlumi} perbunchrawdata: {bxidx:lumifraction} lumilsdata {lumilsnum:[cmslsnum,instlumi,instlumierror,instlumiquality,beamstatus,beamenergy,numorbit,startorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxlumivalue_occ1,bxlumierror_occ1,bxlumiquality_occ1,bxlumivalue_occ2,bxlumierror_occ2,bxlumiquality_occ2,bxlumivalue_et,bxlumierror_et,bxlumiquality_et]} ''' branchrevision_id=3#databranch_id branchinfo=(branchrevision_id,'DATA') lumirundata=[datasource] lumilsdata={} dbsession.transaction().start(True) oldlumidataid=dataDML.guessLumiDataIdByRun(dbsession.nominalSchema(),runnum) dbsession.transaction().commit() for cmslsnum,instlumi in perlsrawdata.items(): mystartorbit=startorbit+numorbit*(cmslsnum-1) bxdataocc1blob=None bxdataocc2blob=None bxdataetblob=None bxerrorocc1blob=None bxerrorocc2blob=None bxerroretblob=None bxqualityocc1blob=None bxqualityocc2blob=None bxqualityetblob=None cmsbxindexblob=None beam1intensityblob=None beam2intensityblob=None if perbunchrawdata: bxdataArray=array.array('f') bxerrorArray=array.array('f') bxqualityArray=array.array('h') cmsbxindexArray=array.array('h') beam1intensityArray=array.array('f') beam2intensityArray=array.array('f') for bxidx in range(1,3565): lumifraction=0.0 if perbunchrawdata.has_key(bxidx): lumifraction=perbunchrawdata[bxidx] bxlumivalue=float(instlumi*lumifraction)/float(bunchnorm) bxdataArray.append(bxlumivalue) beam1intensityArray.append(9124580336.0) beam1intensityArray.append(8932813306.0) cmsbxindexArray.append(bxidx) bxqualityArray.append(1) bxerrorArray.append(0.0) bxdataocc1blob=CommonUtil.packArraytoBlob(bxdataArray) bxdataocc2blob=CommonUtil.packArraytoBlob(bxdataArray) bxdataetblob=CommonUtil.packArraytoBlob(bxdataArray) bxerrorocc1blob=CommonUtil.packArraytoBlob(bxerrorArray) bxerrorocc2blob=CommonUtil.packArraytoBlob(bxerrorArray) bxerroretblob=CommonUtil.packArraytoBlob(bxerrorArray) bxqualityocc1blob=CommonUtil.packArraytoBlob(bxqualityArray) bxqualityocc2blob=CommonUtil.packArraytoBlob(bxqualityArray) bxqualityetblob=CommonUtil.packArraytoBlob(bxqualityArray) cmsbxindexblob=CommonUtil.packArraytoBlob(cmsbxindexArray) beam1intensityblob=CommonUtil.packArraytoBlob(beam1intensityArray) beam2intensityblob=CommonUtil.packArraytoBlob(beam2intensityArray) if deliveredonly: perlsdata=[0,float(instlumi)/float(6370),0.0,1,'STABLE BEAMS',beamenergy,numorbit,mystartorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxdataocc1blob,bxerrorocc1blob,bxqualityocc1blob,bxdataocc2blob,bxerrorocc2blob,bxqualityocc2blob,bxdataetblob,bxerroretblob,bxqualityetblob] else: perlsdata=[cmslsnum,float(instlumi)/float(6370),0.0,1,'STABLE BEAMS',beamenergy,numorbit,mystartorbit,cmsbxindexblob,beam1intensityblob,beam2intensityblob,bxdataocc1blob,bxerrorocc1blob,bxqualityocc1blob,bxdataocc2blob,bxerrorocc2blob,bxqualityocc2blob,bxdataetblob,bxerroretblob,bxqualityetblob] lumilsdata[cmslsnum]=perlsdata print 'toinsert from scratch',lumilsdata dbsession.transaction().start(False) (revision_id,entry_id,data_id)=dataDML.addLumiRunDataToBranch(dbsession.nominalSchema(),runnum,lumirundata,branchinfo) newlumilsnumMin=min(lumilsdata.keys()) newlumilsnumMax=max(lumilsdata.keys()) #update id of existing to new #update lumisummaryv2 set DATA_ID=:data_id where DATA_ID=:oldid and lumilsnum<newlumilsnumMin or lumilsnum>newlumilsnumMax #lumidataid is not None update lumilsdata set lumidataid=:newlumidataid where runnum=:run a inputData=coral.AttributeList() inputData.extend('dataid','unsigned long long') inputData.extend('oldid','unsigned long long') inputData.extend('lumilsnumMin','unsigned int') inputData.extend('lumilsnumMax','unsigned int') inputData['dataid'].setData( data_id ) inputData['oldid'].setData( oldlumidataid ) inputData['lumilsnumMin'].setData( newlumilsnumMin ) inputData['lumilsnumMax'].setData( newlumilsnumMax ) db=dbUtil.dbUtil(dbsession.nominalSchema()) db.singleUpdate('LUMISUMMARYV2','DATA_ID=:dataid','DATA_ID=:oldid AND LUMILSNUM<:lumilsnumMin OR lumilsnum>:lumilsnumMax',inputData) print 'to update existing id ',oldlumidataid,' outside region ',newlumilsnumMin,' , ',newlumilsnumMax dataDML.bulkInsertLumiLSSummary(dbsession,runnum,data_id,lumilsdata) dbsession.transaction().commit()
def patchV2(dbsession,runnum,inputpathnames,inputdata): ''' inputpathnames: [pathname,] inputdata: {cmslsnum:[presc,presc...]} update the most recent version of lshlt data if some ls exist if none old ls exists insert new hlt records ''' try: dbsession.transaction().start(True) oldhltdataid=dataDML.guessHltDataIdByRun(dbsession.nominalSchema(),runnum) existingrundata=dataDML.hltRunById(dbsession.nominalSchema(),oldhltdataid) dbsession.transaction().commit() if not oldhltdataid:#no data at all dbsession.transaction().start(False) insertV2(dbsession,runnum,inputpathnames,inputdata) dbsession.transaction().commit() return hltnamedict=existingrundata[3]#[(pathidx,hltname),(pathidx,hltname)...] dbsession.transaction().start(True) existinglsdata=dataDML.hltLSById(dbsession.nominalSchema(),oldhltdataid) dbsession.transaction().commit() oldlsdata=existinglsdata[1] existinglslist=oldlsdata.keys() toupdate={}#{cmslsnum:[presc,presc...]} toinsert={}#{cmslsnum:[presc,presc...]} if existinglslist and len(existinglslist)!=0:#there are some existing data for cmslsnum,oldlscontent in oldlsdata.items(): if cmslsnum in inputdata.keys(): # if overlap with new data, update old data with new toupdate[cmslsnum]=inputdata[cmslsnum] for cmslsnum,lshltcontent in inputdata.items(): if cmslsnum in toupdate: continue #it's to update not to insert toinsert[cmslsnum]=inputdata[cmslsnum] # # insert into lshlt(data_id,runnum,cmslsnum,prescaleblob,hltcountblob,hltacceptblob) values() # dbsession.transaction().start(False) tabrowDefDict={'DATA_ID':'unsigned long long','RUNNUM':'unsigned int','CMSLSNUM':'unsigned int','PRESCALEBLOB':'blob','HLTCOUNTBLOB':'blob','HLTACCEPTBLOB':'blob'} for cmslsnum,perlsdata in toinsert.items(): prescaleArray=array.array('I') hltcountArray=array.array('I') hltacceptArray=array.array('I') for (pathidx,hltname) in hltnamedict: thispathIdx=inputpathnames.index(hltname) thispresc=perlsdata[thispathIdx] thiscount=0 thisaccept=0 prescaleArray.append(thispresc) hltcountArray.append(thiscount) hltacceptArray.append(thisaccept) prescaleblob=CommonUtil.packArraytoBlob(prescaleArray) hltcountblob=CommonUtil.packArraytoBlob(hltcountArray) hltacceptblob=CommonUtil.packArraytoBlob(hltacceptArray) tabrowValueDict={'DATA_ID':oldhltdataid,'RUNNUM':int(runnum),'CMSLSNUM':int(cmslsnum),'PRESCALEBLOB':prescaleblob,'HLTCOUNTBLOB':hltcountblob,'HLTACCEPTBLOB':hltacceptblob} db=dbUtil.dbUtil(dbsession.nominalSchema()) db.insertOneRow(nameDealer.lshltTableName(),tabrowDefDict,tabrowValueDict) # # update lshlt set prescaleblob=:prescaleblob,hltcoutblob=:hltcountblob,hltacceptblob=:hltacceptblob where data_id=:olddata_id and cmslsnum=:cmslsnum; # setClause='PRESCALEBLOB=:prescaleblob,HLTCOUNTBLOB=:hltcountblob,HLTACCEPTBLOB=:hltacceptblob' updateCondition='DATA_ID=:oldhltdataid and CMSLSNUM=:cmslsnum' for cmslsnum,perlsdata in toupdate.items(): prescaleArray=array.array('I') hltcountArray=array.array('I') hltacceptArray=array.array('I') for (pathidx,hltname) in hltnamedict: thispathIdx=inputpathnames.index(hltname) thispresc=perlsdata[thispathIdx] thiscount=0 thisaccept=0 prescaleArray.append(thispresc) hltcountArray.append(thiscount) hltacceptArray.append(thisaccept) prescaleblob=CommonUtil.packArraytoBlob(prescaleArray) hltcountblob=CommonUtil.packArraytoBlob(hltcountArray) hltacceptblob=CommonUtil.packArraytoBlob(hltacceptArray) iData=coral.AttributeList() iData.extend('prescaleblob','blob') iData.extend('hltcountblob','blob') iData.extend('hltacceptblob','blob') iData.extend('olddata_id','unsigned int') iData.extend('cmslsnum','unsigned int') iData['prescaleblob'].setData(prescaleblob) iData['hltcountblob'].setData(hltcountblob) iData['hltacceptblob'].setData(hltacceptblob) iData['olddata_id'].setData(int(olddata_id)) iData['cmslsnum'].setData(int(cmslsnum)) db=dbUtil.dbUtil(schema) db.singleUpdate(nameDealer.lshltTableName(),setClause,updateCondition,iData) dbsession.transaction().commit() #dbsession.transaction().rollback() except : raise