def createPlots(sample, prefix): prunedgenjets_handle = Handle("std::vector<reco::GenJet>") prunedgenjets_label = "ak8GenJets" plots = [] plots += [TH1F(prefix + 'M(X)', ';m(X) [GeV];N', 50, 0, 5000)] for plot in plots: plot.Sumw2() event_count = 0 events = Events(sample) for event in events: event_count += 1 if event_count % 10000 == 1: print "Event:", event_count weight = 1 try: events.getByLabel(prunedgenjets_label, prunedgenjets_handle) prunedgenjets = prunedgenjets_handle.product() except: continue if len(prunedgenjets) < 2: continue z1 = lv(prunedgenjets[0]) z2 = lv(prunedgenjets[1]) x = z1 + z2 plots[0].Fill(x.M(), weight) print "Event:", event_count for plot in plots: #if plot.Integral()>0: # plot.Scale(1./plot.Integral()) plot.GetYaxis().SetRangeUser(plot.GetMaximum() / 10000, plot.GetMaximum() * 1.4) return plots
def loop(fname) : mus = [Handle("vector<reco::Track> "), "generalTracks"] eventsRef = Events(fname) for i in range(0, eventsRef.size()): a= eventsRef.to(i) a=eventsRef.getByLabel(mus[1],mus[0]) pmus = [] for mu in mus[0].product() : if (mu.pt()<5) : continue if (not mu.innerOk()) : continue e = 1000*(mu.momentum().r()-mu.outerMomentum().r()) if (e<0) : continue print e z = abs(mu.outerPosition().z()) r = mu.outerPosition().rho() #rhoH.Fill(mu.outerPosition().rho(),e) zH.Fill(mu.outerPosition().z(),e) etaH.Fill(mu.outerPosition().eta(),e) if (z>240) : xyeH.Fill(mu.outerPosition().x(),mu.outerPosition().y(),e) xyH.Fill(mu.outerPosition().x(),mu.outerPosition().y(),1) if (r<120) :phiH.Fill(mu.outerPosition().phi(),e) rhoH.Fill(r,e) c1 = TCanvas( 'c1', fname, 200, 10, 1000, 1400 ) gStyle.SetOptStat(111111) gStyle.SetHistLineWidth(2) c1.Divide(2,3) c1.cd(1) rhoH.Draw() c1.cd(2) zH.Draw() c1.cd(3) xyH.Draw("COLZ") c1.cd(4) xyeH.Divide(xyH) xyeH.Draw("COLZ") c1.cd(5) etaH.Draw() c1.cd(6) phiH.Draw() c1.Print("eloss"+fname+".png")
def loop(fname): mus = [Handle("vector<reco::Track> "), "generalTracks"] eventsRef = Events(fname) for i in range(0, eventsRef.size()): a = eventsRef.to(i) a = eventsRef.getByLabel(mus[1], mus[0]) pmus = [] for mu in mus[0].product(): if (mu.pt() < 5): continue if (not mu.innerOk()): continue e = 1000 * (mu.momentum().r() - mu.outerMomentum().r()) if (e < 0): continue print e z = abs(mu.outerPosition().z()) r = mu.outerPosition().rho() #rhoH.Fill(mu.outerPosition().rho(),e) zH.Fill(mu.outerPosition().z(), e) etaH.Fill(mu.outerPosition().eta(), e) if (z > 240): xyeH.Fill(mu.outerPosition().x(), mu.outerPosition().y(), e) xyH.Fill(mu.outerPosition().x(), mu.outerPosition().y(), 1) if (r < 120): phiH.Fill(mu.outerPosition().phi(), e) rhoH.Fill(r, e) c1 = TCanvas('c1', fname, 200, 10, 1000, 1400) gStyle.SetOptStat(111111) gStyle.SetHistLineWidth(2) c1.Divide(2, 3) c1.cd(1) rhoH.Draw() c1.cd(2) zH.Draw() c1.cd(3) xyH.Draw("COLZ") c1.cd(4) xyeH.Divide(xyH) xyeH.Draw("COLZ") c1.cd(5) etaH.Draw() c1.cd(6) phiH.Draw() c1.Print("eloss" + fname + ".png")
'label': ("slimmedMETs"), 'edmType': "vector<pat::MET>" }, { 'name': 'triggerResults', 'label': ("TriggerResults", "", "PAT"), 'edmType': "edm::TriggerResults" }, ] handles = {v['name']: Handle(v['edmType']) for v in edmCollections} for i in range(events.size()): events.to(i) eaux = events.eventAuxiliary() run = eaux.run() event = eaux.event() lumi = eaux.luminosityBlock() products = {} for v in edmCollections: events.getByLabel(v['label'], handles[v['name']]) products[v['name']] = handles[v['name']].product() # events_old.to(i) # products_old = {} # for v in edmCollections: # events_old.getByLabel(v['label'],handles[v['name']]) # products_old[v['name']] =handles[v['name']].product() print run, lumi, event, products['pfMet'][0].shiftedPt( 12, 0), products['pfMet'][0].pt() #, 'old', products_old['pfMet'][0].pt()
from DataFormats.FWLite import Handle, Events from ROOT import gROOT, gStyle, TCanvas, TF1, TFile, TTree, gRandom, TH1F, TH2F import os eventsOri = Events("step3_ori.root") eventsNew = Events("step3.root") tracksOri = Handle("std::vector<reco::Track>") tracksNew = Handle("std::vector<reco::Track>") label = "generalTracks" quality = "highPurity" for i in range(0, eventsOri.size()): a= eventsOri.to(i) a= eventsNew.to(i) # print "Event", i a=eventsOri.getByLabel(label, tracksOri) a=eventsNew.getByLabel(label, tracksNew) ntOri = tracksOri.product().size() ntNew = tracksOri.product().size() if (ntOri != ntNew ) : print i, ntOri,ntNew
def createPlots(sample, prefix, jets=0): if sample.endswith(".txt"): files = [] filelist = open(sample) for line in filelist.readlines(): if ".root" in line: files += [line.strip()] else: files = [sample] #generator_handle=Handle("GenEventInfoProduct") #generator_label="generator" #particles_handle=Handle("std::vector<reco::GenParticle>") #particles_label="genParticles" prunedgenjets_handle = Handle("std::vector<reco::GenJet>") prunedgenjets_label = "ak5GenJets" #vertices_handle=Handle("std::vector<reco::Vertex>") #vertices_label="offlinePrimaryVertices" plots = [] plots += [TH1F(prefix + 'M(X)', ';m(X) [GeV];N', 50, 0, 5000)] plots += [TH1F(prefix + 'y_{boost}', ';y_{boost};N', 15, 0, 3)] plots += [TH1F(prefix + '#Chi', ';#Chi;N', 15, 1, 16)] plots += [TH1F(prefix + '#Chi', ';#Chi;N', 15, 1, 16)] plots += [TH1F(prefix + '#Chi', ';#Chi;N', 15, 1, 16)] plots += [TH1F(prefix + '#Chi', ';#Chi;N', 15, 1, 16)] for plot in plots: plot.Sumw2() event_count = 0 events = Events(files) for event in events: event_count += 1 if event_count % 10000 == 1: print "Event:", event_count #events.getByLabel(generator_label,generator_handle) #generator=generator_handle.product() #weight=generator.weight() weight = 1 try: events.getByLabel(prunedgenjets_label, prunedgenjets_handle) prunedgenjets = prunedgenjets_handle.product() except: continue if len(prunedgenjets) < 2: continue z1 = lv(prunedgenjets[0]) z2 = lv(prunedgenjets[1]) if abs(z1.Rapidity()) > 2.5 or abs(z2.Rapidity()) > 2.5 or abs( z1.Rapidity() + z2.Rapidity()) > 1.11 or exp( abs(z1.Rapidity() - z2.Rapidity())) > 16: continue q11 = z1 q12 = z1 q21 = z2 q22 = z2 x = z1 + z2 #if event_count>100: # break if abs(q11.Eta()) > 5.0: continue if abs(q12.Eta()) > 5.0: continue if abs(q21.Eta()) > 5.0: continue if abs(q22.Eta()) > 5.0: continue if q11.Pt() < 10: continue if q12.Pt() < 10: continue if q21.Pt() < 10: continue if q22.Pt() < 10: continue plots[0].Fill(x.M(), weight) if x.M() < 1900: continue plots[1].Fill(abs(z1.Rapidity() + z2.Rapidity()), weight) if x.M() >= 1900 and x.M() < 2400: plots[2].Fill(exp(abs(z1.Rapidity() - z2.Rapidity())), weight) if x.M() >= 2400 and x.M() < 3000: plots[3].Fill(exp(abs(z1.Rapidity() - z2.Rapidity())), weight) if x.M() >= 3000 and x.M() < 4000: plots[4].Fill(exp(abs(z1.Rapidity() - z2.Rapidity())), weight) if x.M() >= 4000: plots[5].Fill(exp(abs(z1.Rapidity() - z2.Rapidity())), weight) print "Event:", event_count for plot in plots: if plot.Integral() > 0: plot.Scale(1. / plot.Integral()) plot.GetYaxis().SetRangeUser(plot.GetMaximum() / 10000, plot.GetMaximum() * 1.4) return plots
# load FWLite C++ libraries ROOT.gSystem.Load("libFWCoreFWLite.so") ROOT.gSystem.Load("libDataFormatsFWLite.so") ROOT.FWLiteEnabler.enable() ROOT.AutoLibraryLoader.enable() # load FWlite python libraries from DataFormats.FWLite import Handle, Events #filein=["/eos/cms//store/data/Run2017B/SingleMuon/MINIAOD/17Nov2017-v1/70000/E4FB2B00-82D8-E711-9BEB-02163E014410.root"] #filein=["/eos/cms/store/mc/RunIIFall17MiniAODv2/WZTo3LNu_3Jets_MLL-50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/00000/369C3391-F858-E811-9895-FA163EA77A9B.root"] filein = [ '/eos/cms//store/user/bortigno/mc_genproduction/darkphoton/LHE-MINIAODSIM/ZD_UpTo2j_MZD125_Eps2e-2_v0/ZD_UpTo2j_MZD125_Eps2e-2/RunIISummer17PrePremix-MC_v2_94X_mc2017_realistic_v11LHE-MINIAODSIM/180525_114650/0000/darkphoton_miniaodsim_299.root' ] events = Events(filein, maxEvents=1) handleTrigRes = Handle("edm::TriggerResults") #labels=["RECO","SIM","PAT","HLT"] labels = ["RECO", "HLT"] for label in labels: events.getByLabel(("TriggerResults", "", label), handleTrigRes) print("======= " + label + " =======") for ev in events: trNames = ev.object().triggerNames(handleTrigRes.product()) for i in range(0, handleTrigRes.product().size()): print(trNames.triggerName(i))
from DataFormats.FWLite import Handle, Events from ROOT import gROOT, gStyle, TCanvas, TF1, TFile, TTree, gRandom, TH1F, TH2F import os eventsOri = Events("step3_ori.root") eventsNew = Events("step3.root") tracksOri = Handle("std::vector<reco::Track>") tracksNew = Handle("std::vector<reco::Track>") label = "generalTracks" quality = "highPurity" for i in range(0, eventsOri.size()): a = eventsOri.to(i) a = eventsNew.to(i) # print "Event", i a = eventsOri.getByLabel(label, tracksOri) a = eventsNew.getByLabel(label, tracksNew) ntOri = tracksOri.product().size() ntNew = tracksOri.product().size() if (ntOri != ntNew): print i, ntOri, ntNew
products={} size=events.size() #if not small else 2000 missingCollections=[] for nev in range(size): if nev%1000==0:print nev,'/',size events.to(nev) eaux=events.eventAuxiliary() run=eaux.run() if options.run>0 and not run==options.run: # print run, options.run continue for k in [ x for x in edmCollections.keys() if x not in missingCollections]: try: events.getByLabel(edmCollections[k][1:],handles[k]) products[k]=handles[k].product() except: products[k]=None print "Not found:",k missingCollections.append(k) d={} # print "Event",nev,'size',products['pfCandidates'].size() assert products['pfCandidates'], "pfCandidates not found!" for p in range(products['pfCandidates'].size()): cand = products['pfCandidates'][p] candID = translatePdgIdToType(cand.pdgId()) if options.miniAOD else cand.particleId() for p in plots[candID]: eta=cand.eta() if eta>p['etaBinning'][1] and eta<p['etaBinning'][2]: yVar = p['yVar'](cand)
print "Reading: ", sample["name"], bin, "with",number_events,"Events using cut", commoncf print "Reading percentage ",options.fromPercentage, "to",options.toPercentage, "which is range",start,"to",stop,"of",number_events for i in range(start, stop): if (i%10000 == 0) and i>0 : print "At",i # print "At",i if elist.GetN()>0 and ntot>0: c.GetEntry(elist.GetEntry(i)) events.to(elist.GetEntry(i)) s.weight = sample["weight"][bin] for var in variables[1:]: getVar = var exec("s."+var+"="+str(getVarValue(c, getVar)).replace("nan","float('nan')")) for var in extraVariables: exec("s."+var+"=float('nan')") events.getByLabel(pflabel,pfhandle) pfcands = pfhandle.product() if options.reweightPFCandidates!='': check_x=0 check_y=0 s.pfMet_None=0. s.pfMetx_None=0. s.pfMety_None=0. s.pfMet=0. s.pfMetx=0. s.pfMety=0. s.pfMetRW=0. s.pfMetRWx=0. s.pfMetRWy=0. for tp in pfTypes+mapNames: exec('s.pfMet_'+tp+'=0.')
continue # keep leptons with certain pt threshold in the event if options.lepType == 0 and muonPts[0] <= muonPtMin: continue if options.lepType == 1 and electronPts[0] <= electronPtMin: continue # Now get the MET event.getByLabel( metLabel, metHandle ) metRaw = metHandle.product()[0] # Now get the PF isolation lepIso = -1.0 if options.lepType == 0 and muonPts is not None : events.getByLabel( muonNhIsoLabel, muonNhIsoHandle ) events.getByLabel( muonChIsoLabel, muonChIsoHandle ) events.getByLabel( muonPhIsoLabel, muonPhIsoHandle ) events.getByLabel( muonPuIsoLabel, muonPuIsoHandle ) nhIso = muonNhIsoHandle.product()[0] chIso = muonChIsoHandle.product()[0] phIso = muonPhIsoHandle.product()[0] puIso = muonPuIsoHandle.product()[0] lepIso = (chIso + max(0.0, nhIso + phIso - 0.5*puIso)) / muonPts[0] if options.lepType == 1 and electronPts is not None : events.getByLabel( electronNhIsoLabel, electronNhIsoHandle ) events.getByLabel( electronChIsoLabel, electronChIsoHandle ) events.getByLabel( electronPhIsoLabel, electronPhIsoHandle ) events.getByLabel( electronPuIsoLabel, electronPuIsoHandle ) nhIso = electronNhIsoHandle.product()[0] chIso = electronChIsoHandle.product()[0]
def compare(target_file, ref_file, file_prefix="file:", out_dir="./"): ### Objects from file ### eles, ele_label = Handle("std::vector<pat::Electron>"), "slimmedElectrons" eles_ref = Handle("std::vector<pat::Electron>") phos, pho_label = Handle("std::vector<pat::Photon>"), "slimmedPhotons" phos_ref = Handle("std::vector<pat::Photon>") ### Events loop ### min_pho_et = 10 min_ele_et = 5 do_phos = True do_eles = True evtLUT = {} events_ref = Events(file_prefix + ref_file) for event_nr, event in enumerate(events_ref): runnr = event.eventAuxiliary().run() eventnr = event.eventAuxiliary().event() lumi = event.eventAuxiliary().luminosityBlock() if runnr not in evtLUT: evtLUT[runnr] = {} if lumi not in evtLUT[runnr]: evtLUT[runnr][lumi] = {} evtLUT[runnr][lumi][eventnr] = event_nr events = Events(file_prefix + target_file) ele_diffs = EleDiffSummary() pho_diffs = PhoDiffSummary() for event_nr, event in enumerate(events): runnr = event.eventAuxiliary().run() eventnr = event.eventAuxiliary().event() lumi = event.eventAuxiliary().luminosityBlock() event_found = events_ref.to(evtLUT[runnr][lumi][eventnr]) event_id = str(event.eventAuxiliary().run()) + ":" + str( event.eventAuxiliary().luminosityBlock()) + ":" + str( event.eventAuxiliary().event()) if do_phos: event.getByLabel(pho_label, phos) events_ref.getByLabel(pho_label, phos_ref) for pho_nr, pho in enumerate(phos.product()): if pho.et() < min_pho_et: continue pho_ref = match_by_sc(pho, phos_ref.product()) pho_diffs.fill(pho, pho_ref) if do_eles: event.getByLabel(ele_label, eles) events_ref.getByLabel(ele_label, eles_ref) for ele_nr, ele in enumerate(eles.product()): if ele.et() < min_ele_et: continue ele_ref = match_by_sc(ele, eles_ref.product()) ele_diffs.fill(ele, ele_ref) target_path_file = os.path.split(target_file) ref_path_file = os.path.split(ref_file) hashstr = hashlib.md5(target_file).hexdigest() out_tag_phos = "pho_{}".format(hashstr) out_tag_eles = "ele_{}".format(hashstr) comp_strs = [] comp_strs.append("<br><br>file = {}<br>".format(target_path_file[1])) comp_strs.append("target dir = {}<br>".format(target_path_file[0])) comp_strs.append("reference dir = {}<br>".format(ref_path_file[0])) comp_strs.append("Photons<br>") comp_strs.append(pho_diffs.create_summary(out_dir, out_tag_phos)) comp_strs.append("Electrons<br>") comp_strs.append(ele_diffs.create_summary(out_dir, out_tag_eles)) # pho_diffs.create_summary(out_dir) return '\n'.join(comp_strs)
ROOT.FWLiteEnabler.enable() ROOT.AutoLibraryLoader.enable() # load FWlite python libraries from DataFormats.FWLite import Handle, Events filein = [ "/eos/cms//store/data/Run2017F/SingleMuon/MINIAOD/17Nov2017-v1/60000/A868A5F6-D4E9-E711-9422-FA163E31662A.root" ] #filein=["/eos/cms/store/mc/RunIIFall17MiniAOD/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/PU2017_94X_mc2017_realistic_v11_ext1-v1/00000/1C18929B-FF90-E811-976C-02163E014BB0.root"] #filein=['/eos/cms//store/user/bortigno/mc_genproduction/darkphoton/LHE-MINIAODSIM/ZD_UpTo2j_MZD125_Eps2e-2_v0/ZD_UpTo2j_MZD125_Eps2e-2/RunIISummer17PrePremix-MC_v2_94X_mc2017_realistic_v11LHE-MINIAODSIM/180525_114650/0000/darkphoton_miniaodsim_299.root'] events = Events(filein, maxEvents=1) handleEvFlags = Handle("edm::TriggerResults") #labels=["RECO","SIM","PAT"] labels = [ "RECO" ] # flags are in RECO for data and the ZD private production, while they are in PAT for Fall17 MC production - remove HLT as there are only triggers there. for label in labels: events.getByLabel(("TriggerResults", "", label), handleEvFlags) print("======= " + label + " =======") for ev in events: flagNames = ev.object().triggerNames(handleEvFlags.product()) for i in range(0, handleEvFlags.product().size()): print(flagNames.triggerName(i)) #print(flagNames.triggerName(i) + " ; accept = " + str(handleEvFlags.product().accept(i)))
vars[k].value = 0 c.GetEntry(eList.GetEntry(i)) if i % 100 == 0: print "Event", i, "/", nEvents patMET = getVarValue(c, 'patPFMet') patMETphi = getVarValue(c, 'patPFMetphi') vars['patMEx'].value = patMET * cos(patMETphi) vars['patMEy'].value = patMET * sin(patMETphi) vars['ptZ'].value = sqrt((getVarValue(c, "muonsPt", 0)*cos(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*cos(getVarValue(c, "muonsPhi", 1)))**2\ +(getVarValue(c, "muonsPt", 0)*sin(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*sin(getVarValue(c, "muonsPhi", 1)))**2) vars['phiZ'].value = atan2( getVarValue(c, "muonsPt", 0)*sin(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*sin(getVarValue(c, "muonsPhi", 1)),\ getVarValue(c, "muonsPt", 0)*cos(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*cos(getVarValue(c, "muonsPhi", 1))) vars['ngoodVertices'].value = int(getVarValue(c, 'ngoodVertices')) events.to(eList.GetEntry(i)) events.getByLabel(labelpf, pfhandle) pfc = pfhandle.product() vecs = {} for t in usedPFTypes: vecs[t] = [] for p in pfc: id = p.particleId() l = label[p.particleId()] p4 = p.p4() Et = p4.Et() phi = p4.phi() eta = p4.eta() occupancy[l].Fill(eta, phi) energy[l].Fill(eta, phi, Et) px = Et * cos(phi) py = Et * sin(phi)
# coding: utf-8 from DataFormats.FWLite import Handle, Events events = Events("/data/kelong/DibosonGenAnalysisSamples/WZJJ_VBFNLO/gentest_WZ-fixGen.root") handle = Handle("std::vector<reco::GenParticle>") genParticles = [] for i,event in enumerate(events): events.getByLabel("genParticles", handle) genParticles = handle.product() j=0 print "-"*20 + ("Event %i" % i) + "-"*20 for part in genParticles: if part.isHardProcess() and part.pdgId() <= 5 and part.pdgId() >= -5: #if part.status() == 1 and part.pdgId() <= 5 and part.pdgId() >= -5: j += 1 print "ME level parton %i in event %i" % (j, i) print " --> pdgId() == %i, pt == %f, eta == %f" % (part.pdgId(), part.pt(), part.eta())
clusRef = Handle("edmNew::DetSetVector<SiStripCluster>") label = "siStripClusters" vRef = Handle("vector<reco::Vertex>") vl = "offlinePrimaryVertices" clusHIP = [0,0,0,0,0,0,0,0,0] nv=0 for i in range(0, eventsRef.size()): #for i in range(0, 20): if (i%100 == 0) : print i a= eventsRef.to(i) # print "Event", i a=eventsRef.getByLabel(label, clusRef) a=eventsRef.getByLabel(vl,vRef) nvtx = vRef.product().size() if (nvtx<2) : continue; nv+=nvtx clusters = clusRef.product().data() for ids in clusRef.product().ids() : for k in range(0,ids.size): clus = clusters[ids.offset+k] if (clus.amplitudes().size()>6 and clus.charge()/clus.amplitudes().size()>250) : clusHIP[(ids.id >>25)&0x7]+=1 # print (ids.id >>25)&0x7 print 'nev, nvtx, nvtx/nev ',eventsRef.size(), nv, float(nv)/float(eventsRef.size()) print clusHIP
vertex_handle=Handle("std::vector<reco::Vertex>") vertex_label="offlinePrimaryVertices" hltvertex_handle=Handle("std::vector<reco::Vertex>") #hltvertex_label="offlinePrimaryVertices" hltvertex_label="hltPixelVertices" #hltvertex_label="hltPixelVertices3DbbPhi" #hltvertex_label="hltPrimaryVertices" #hltvertex_label="verticesFromMuons" #hltvertex_label="verticesFromElectrons" event_count=0 for event in events: event_count+=1 #print "Event:",event_count events.getByLabel(tau_label,tau_handle) taus=tau_handle.product() events.getByLabel(hlttau_label,hlttau_handle) hlttaus=hlttau_handle.product() events.getByLabel(l1filter_label,l1filter_handle) l1filter=l1filter_handle.product() events.getByLabel(elefilter_label,elefilter_handle) elefilter=elefilter_handle.product() events.getByLabel(isolationfilter_label,isolationfilter_handle) isolationfilter=isolationfilter_handle.product() events.getByLabel(isolation2filter_label,isolation2filter_handle) isolation2filter=isolation2filter_handle.product() events.getByLabel(isolation3filter_label,isolation3filter_handle) isolation3filter=isolation3filter_handle.product() events.getByLabel(isolation4filter_label,isolation4filter_handle) isolation4filter=isolation4filter_handle.product()
#Now get muon phi event.getByLabel(muonPhiLabel, muonPhiHandle) muonPhis = muonPhiHandle.product() #Now get the MET phi event.getByLabel(metPhiLabel, metPhiHandle) metPhi = metPhiHandle.product()[0] # Now get the MET event.getByLabel(metLabel, metHandle) metRaw = metHandle.product()[0] # Now get the PF isolation lepIso = -1.0 if options.lepType == 0 and muonPts is not None: events.getByLabel(muonNhIsoLabel, muonNhIsoHandle) events.getByLabel(muonChIsoLabel, muonChIsoHandle) events.getByLabel(muonPhIsoLabel, muonPhIsoHandle) events.getByLabel(muonPuIsoLabel, muonPuIsoHandle) nhIso = muonNhIsoHandle.product()[0] chIso = muonChIsoHandle.product()[0] phIso = muonPhIsoHandle.product()[0] puIso = muonPuIsoHandle.product()[0] lepIso = (chIso + max(0.0, nhIso + phIso - 0.5 * puIso)) / muonPts[0] if options.lepType == 1 and electronPts is not None: events.getByLabel(electronNhIsoLabel, electronNhIsoHandle) events.getByLabel(electronChIsoLabel, electronChIsoHandle) events.getByLabel(electronPhIsoLabel, electronPhIsoHandle) events.getByLabel(electronPuIsoLabel, electronPuIsoHandle) nhIso = electronNhIsoHandle.product()[0] chIso = electronChIsoHandle.product()[0]
def loop(fname): genPars = Handle("vector<reco::GenParticle>") genParsLabel = "prunedGenParticles" gPar = [Handle("vector<pat::PackedGenParticle>"), "packedGenParticles"] vertices = [ Handle("vector<reco::Vertex>"), "offlineSlimmedPrimaryVertices" ] mus = [Handle("vector<pat::Muon>"), "slimmedMuons"] sip2d = TH1F("SIP2D", "SIP2D", 40, -10., 10.) sip3d = TH1F("SIP3D", "SIP3D", 40, -10., 10.) sipxy = TH1F("tk2d", "TK SIPXY", 40, -10., 10.) sipz = TH1F("tk3z", "TK SIPZ", 40, -10., 10.) sip3d_l = TH1F("SIP2D l", "SIP2D l", 40, -10., 10.) sip3d_h = TH1F("SIP2D h", "SIP2D h", 40, -10., 10.) sip3d_best = TH1F("SIP2D best", "SIP2D best", 40, -10., 10.) vert = TH1F("zpv", "zpv", 100, -10., 10.) sip_v = TProfile("SIP2D vs zpv", "SIP2D best vs zpv", 50, 0., 5., 0., 10.) # eventsRef = Events(fname) nw = 0 nehpt = 0 nwhpt = 0 nech = 0 nwch = 0 # for i in range(0, eventsRef.size()): a = eventsRef.to(i) print "Event", i a = eventsRef.getByLabel(genParsLabel, genPars) zpv = 0 gpvp = genPars.product()[0].vertex() for part in genPars.product(): if (part.vz() != 0): zpv = part.vz() gpvp = part.vertex() break print "zpv ", zpv # nmu = 0 nel = 0 nch1 = 0 nch2 = 0 gmu = [] for part in genPars.product(): if (part.status() != 1): continue if (abs(part.pdgId()) == 13 and part.pt() > 5 and abs(part.eta()) < 2.4): gmu.append((part.phi(), part.eta(), part.charge() * part.pt())) if (abs(part.pdgId()) == 13 and part.pt() > 5 and abs(part.eta()) < 2.4): nmu += 1 if (abs(part.pdgId()) == 11 and part.pt() > 7 and abs(part.eta()) < 2.4): nel += 1 if (abs(part.pdgId()) == 13 and part.pt() > 8 and abs(part.eta()) < 2.4): nch1 += 1 if (abs(part.pdgId()) == 11 and part.pt() > 10 and abs(part.eta()) < 2.4): nch1 += 1 if (abs(part.pdgId()) == 13 and part.pt() > 20 and abs(part.eta()) < 2.4): nch2 += 1 if (abs(part.pdgId()) == 11 and part.pt() > 20 and abs(part.eta()) < 2.4): nch2 += 1 # if (abs(part.pdgId())==13): # print "part", part.phi(),part.eta(), part.pt(), part.vz(), part.vx(), part.vy(), part.mass(), part.pdgId(), part.status() # print "nmu ", nmu,nel # print gmu a = eventsRef.getByLabel(vertices[1], vertices[0]) minz = 99999. iv = 0 ii = 0 pv = vertices[0].product()[0] pvp = vertices[0].product()[0].position() nv = vertices[0].product().size() for v in vertices[0].product(): if (abs(v.z() - zpv) < minz): minz = abs(v.z() - zpv) iv = ii ii += 1 print "pv ", iv, minz if (iv != 0): nw += 1 # if (nmu+nel>3) : if (nmu > 1): nehpt += 1 if (iv != 0): nwhpt += 1 # if (nch1>0 and nch2>0) : if (nch1 < 1): continue # nech += 1 if (iv != 0): nwch += 1 a = eventsRef.getByLabel(mus[1], mus[0]) pmus = [] for mu in mus[0].product(): if (mu.pt() < 5): continue # if ( mu.isTrackerMuon() or mu.isGlobalMuon()) : if (mu.isGlobalMuon()): pmus.append( (mu.phi(), mu.eta(), mu.pt() * mu.charge(), mu.dB(2) / mu.edB(2), mu.dB(1) / mu.edB(1), mu.track().dxy(gpvp) / mu.track().dxyError(), mu.track().dz(gpvp) / mu.track().dzError(), mu.track().hitPattern().pixelLayersWithMeasurement())) # print 'mu', iv, mu.phi(), mu.eta(), mu.pt(), mu.dB(2)/mu.edB(2), mu.dB(1)/mu.edB(1), mu.isTrackerMuon(), mu.isGlobalMuon() # print pmus matches = [] i = 0 for g in gmu: j = 0 for mu in pmus: j += 1 if (g[2] / mu[2] < 0.5 or g[2] / mu[2] > 2.0): continue dr = dR2(g[0], g[1], mu[0], mu[1]) if (dr > 0.04): continue matches.append((i, j - 1, dr, abs(1. - g[2] / mu[2]))) #print "matched mu", mu i += 1 if (len(matches) < 1): continue vert.Fill((pv.z() - zpv) / pv.zError()) k = matches[0][0] best = 99999 dr = 999999 for m in matches: # if (abs(pv.z()-zpv)<3*pv.zError()) : if (pmus[m[1]][7] > 2): # if (nv<21) : sip3d_l.Fill(pmus[m[1]][3]) else: sip3d_h.Fill(pmus[m[1]][3]) sip2d.Fill(pmus[m[1]][4]) sip3d.Fill(pmus[m[1]][3]) sipxy.Fill(pmus[m[1]][5]) sipz.Fill(pmus[m[1]][6]) sip_v.Fill(abs(pv.z() - zpv) / pv.zError(), abs(pmus[m[1]][5])) if (m[0] != k): sip3d_best.Fill(best) k = m[0] best = pmus[m[1]][4] dr = m[3] else: if (m[3] < dr): dr = m[3] best = pmus[m[1]][4] if (dr < 9999): sip3d_best.Fill(best) print "wrong pv", nw, nehpt, nwhpt, nech, nwch c1 = TCanvas('c1', fname, 200, 10, 1000, 1400) gStyle.SetOptStat(111111) gStyle.SetHistLineWidth(2) c1.Divide(2, 4) c1.cd(1).SetLogy() sip2d.DrawNormalized() e = TF1("q", "0.5*exp(-0.5*x*x)/sqrt(6.28)", -10., 10.) e.Draw("same") c1.cd(2).SetLogy() sip3d.DrawNormalized() e.Draw("same") c1.cd(3).SetLogy() sipxy.DrawNormalized() e.Draw("same") c1.cd(4).SetLogy() sipz.DrawNormalized() e.Draw("same") c1.cd(5).SetLogy() sip3d_l.DrawNormalized() e.Draw("same") c1.cd(6).SetLogy() sip3d_h.DrawNormalized() e.Draw("same") # sip3d_best.DrawNormalized() c1.cd(7).SetLogy() vert.DrawNormalized() # ev = TF1("qv","0.2*exp(-0.5*x*x)/sqrt(6.28)",-10.,10.) # ev.Draw("same") c1.cd(8) sip_v.Draw() c1.Print("sipall" + fname + ".png")
def createPlots(sample,prefix): plots=[] plots += [TH1F(prefix+'M(X)',';m(X) [GeV];N',40,920,1080)] plots += [TH1F(prefix+'M(Z1)',';m(Z1) [GeV];N',40,70,110)] plots += [TH1F(prefix+'M(Z2)',';m(Z2) [GeV];N',40,70,110)] plots += [TH1F(prefix+'#Delta #eta',';#Delta #eta;N',15,0,3)] plots += [TH1F(prefix+'cos(#theta_{1})',';cos(#theta_{1});N',15,-1,1)] plots += [TH1F(prefix+'cos(#theta_{2})',';cos(#theta_{2});N',15,-1,1)] plots += [TH1F(prefix+'#phi',';#phi;N',15,-3.1416,3.1416)] plots += [TH1F(prefix+'cos(#theta*)',';cos(#theta*);N',15,-1,1)] plots += [TH1F(prefix+'#phi_{1}*',';#phi_{1}*;N',15,-3.1416,3.1416)] plots += [TH1F(prefix+'#phi_{2}*',';#phi_{2}*;N',15,-3.1416,3.1416)] plots += [TH1F(prefix+'#phi_{1}',';#phi_{1};N',15,-3.1416,3.1416)] plots += [TH1F(prefix+'#phi_{2}',';#phi_{2};N',15,-3.1416,3.1416)] for plot in plots: plot.Sumw2() events=Events(sample[0]) particles_handle=Handle("std::vector<reco::GenParticle>") particles_label="genParticlesStatus3" event_count=0 for event in events: event_count+=1 if event_count>1000: break #print "Event:",event_count events.getByLabel(particles_label,particles_handle) particles=particles_handle.product() #for i_particle in range(len(particles)): # print i_particle, particles[i_particle].pdgId() x=particles[sample[1]] z1=particles[sample[2]] z2=particles[sample[3]] assert(z1.pdgId()==23) assert(z2.pdgId()==23) assert(z1.mother(0)==x) assert(z2.mother(0)==x) q11=z1.daughter(0) q12=z1.daughter(1) q21=z2.daughter(0) q22=z2.daughter(1) if abs(q11.eta())>5.0: continue if abs(q12.eta())>5.0: continue if abs(q21.eta())>5.0: continue if abs(q22.eta())>5.0: continue if q11.pt()<10: continue if q12.pt()<10: continue if q21.pt()<10: continue if q22.pt()<10: continue plots[0].Fill(x.mass()) plots[1].Fill(z1.mass()) plots[2].Fill(z2.mass()) plots[3].Fill(abs(z1.eta()-z2.eta())) angles=calculateAngles(lv(x),lv(z1),lv(q11),lv(q12),lv(z2),lv(q21),lv(q22)) plots[4].Fill(angles[0]) plots[5].Fill(angles[1]) plots[6].Fill(angles[2]) plots[7].Fill(angles[3]) plots[8].Fill(angles[4]) plots[9].Fill(angles[5]) plots[10].Fill(angles[6]) plots[11].Fill(angles[7]) for plot in plots: if plot.Integral()>0: plot.Scale(1./plot.Integral()) plot.GetYaxis().SetRangeUser(0,plot.GetMaximum()*1.3) return plots
vars[k].value=0 c.GetEntry(eList.GetEntry(i)) if i%100==0: print "Event",i, "/",nEvents patMET = getVarValue(c, 'patPFMet') patMETphi = getVarValue(c, 'patPFMetphi') vars['patMEx'].value = patMET*cos(patMETphi) vars['patMEy'].value = patMET*sin(patMETphi) vars['ptZ'].value = sqrt((getVarValue(c, "muonsPt", 0)*cos(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*cos(getVarValue(c, "muonsPhi", 1)))**2\ +(getVarValue(c, "muonsPt", 0)*sin(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*sin(getVarValue(c, "muonsPhi", 1)))**2) vars['phiZ'].value = atan2( getVarValue(c, "muonsPt", 0)*sin(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*sin(getVarValue(c, "muonsPhi", 1)),\ getVarValue(c, "muonsPt", 0)*cos(getVarValue(c, "muonsPhi", 0)) + getVarValue(c, "muonsPt", 1)*cos(getVarValue(c, "muonsPhi", 1))) vars['ngoodVertices'].value = int(getVarValue(c, 'ngoodVertices')) events.to(eList.GetEntry(i)) events.getByLabel(labelpf,pfhandle) pfc = pfhandle.product() vecs={} for t in usedPFTypes: vecs[t] = [] for p in pfc: id = p.particleId() l = label[p.particleId()] p4 = p.p4() Et = p4.Et() phi = p4.phi() eta = p4.eta() occupancy[l].Fill(eta, phi) energy[l].Fill(eta, phi, Et) px = Et*cos(phi) py = Et*sin(phi)
#hltvertex_label="offlinePrimaryVertices" hltvertex_label="hltPixelVertices" #hltvertex_label="hltPixelVertices3DbbPhi" #hltvertex_label="hltPrimaryVertices" #hltvertex_label="hltPrimaryVertices2" #hltvertex_label="vertexFromMuon" #hltvertex_label="vertexFromElectron" #hltvertex_label="verticesFromGsfTracks" #hltvertex_label="vertexFromTrack" event_count=0 for event in events: event_count+=1 if str(event_count).replace("0","") in ["1","3"]: print "Event:",event_count events.getByLabel(tau_label,tau_handle) taus=tau_handle.product() events.getByLabel(hlttau_label,hlttau_handle) hlttaus=hlttau_handle.product() #events.getByLabel(selhlttau_label,selhlttau_handle) #selhlttaus=selhlttau_handle.product() events.getByLabel(ele_label,ele_handle) #if len(hlttaus)==0 or hlttaus[0].pt()<20 or abs(hlttaus[0].eta())>2.5: # continue eles=ele_handle.product() try: events.getByLabel(hltele_label,hltele_handle) hlteles=hltele_handle.product() except: hlteles=() #events.getByLabel(l1filter_label,l1filter_handle) #l1filter=l1filter_handle.product()selectionfilter
small=True events = Events(['file:SMP-RunIIFall15DR76-00032.root']) edmCollections = [ # {'name':'pfRecHitsHBHE', 'label':("particleFlowRecHitHBHE"), 'edmType':"vector<reco::PFRecHit>"}, {'name':'pfMet', 'label':('pfMet'), 'edmType':'vector<reco::PFMET>'}, #{'name':'caloRecHits', 'label':("reducedHcalRecHits"), 'edmType':'edm::SortedCollection<HBHERecHit,edm::StrictWeakOrdering<HBHERecHit> >'}, {'name':'pf', 'label':('particleFlow'), 'edmType':'vector<reco::PFCandidate>'} ] handles={v['name']:Handle(v['edmType']) for v in edmCollections} nevents = 1 if small else events.size() for i in range(nevents): events.to(i) eaux=events.eventAuxiliary() run=eaux.run() event=eaux.event() lumi=eaux.luminosityBlock() #read all products products = {} for v in edmCollections: events.getByLabel(v['label'],handles[v['name']]) products[v['name']] =handles[v['name']].product() print run,lumi,event#,"caloRecHits:",products["caloRecHits"].size() #find PFRecHits # for i, rh in enumerate(products["caloRecHits"]): # print "n %i E %3.2f"%(i, rh.energy())
eventsRef = Events(fname + '.root') tracksRef = Handle("std::vector<reco::Track>") label = "generalTracks" quality = "highPurity" #quality = "tight" #quality = "loose" mvaRef = Handle("std::vector<float>") mcMatchRef = Handle("std::vector<float>") for i in range(0, eventsRef.size()): #for i in range(0, 200): a = eventsRef.to(i) print "Event", i a = eventsRef.getByLabel(label, tracksRef) a = eventsRef.getByLabel(label, 'MVAValues', mvaRef) a = eventsRef.getByLabel("trackMCQuality", mcMatchRef) mcMatch = mcMatchRef.product() mva = mvaRef.product() trVal = [] k = -1 for track in tracksRef.product(): k += 1 # if (track.phi()<0) : continue # if (abs(track.eta())>2.3) : continue # if (track.pt()<4) : continue # if (track.quality(track.qualityByName(quality))) : writer.writerow([ i, track.eta(),
v['handle'] = Handle(v['type']) nevents = 1 if small else events.size() for i in range(nevents): events.to(i) eaux = events.eventAuxiliary() # run/lumi/event run = eaux.run() event = eaux.event() lumi = eaux.luminosityBlock() #read all products as specifed in edmCollections products = {} for k, v in edmCollections.iteritems(): events.getByLabel(v['label'], v['handle']) products[k] = v['handle'].product() print run, lumi, event print products['lt'].size() for lt in products['lt']: print lt # #print RecHits # for i, cl in enumerate(products["clusterHCAL"]): # print "cluster n %i E %3.2f"%(i, cl.energy()) # #for i, rh in enumerate(products["caloRecHits"]): # # print "caloRechit n %i E %3.2f"%(i, rh.energy())
event.getByLabel(leptonPtLabel, leptonPtHandle) if not leptonPtHandle.isValid(): continue leptonPts = leptonPtHandle.product() if len(leptonPts) < 1: continue lpt = leptonPts[0] event.getByLabel(leptonEtaLabel, leptonEtaHandle) leptonEtas = leptonEtaHandle.product() leta = leptonEtas[0] event.getByLabel(leptonPhiLabel, leptonPhiHandle) leptonPhis = leptonPhiHandle.product() event.getByLabel(leptonPfisoLabel, leptonPfisoHandle) leptonPfisos = leptonPfisoHandle.product() pfiso = leptonPfisos[0] / lpt events.getByLabel(leptonChargeLabel, leptonChargeHandle) leptonCharges = leptonChargeHandle.product() dummylep = ROOT.TLorentzVector() dummylep.SetPtEtaPhiM(lpt, leta, leptonPhis[0], MLEP) #met metPt = 0 metPhi = 0 event.getByLabel(metPtLabel, metPtHandle) if not metPtHandle.isValid(): continue metPt = metPtHandle.product() metpt = metPt[0] event.getByLabel(metPhiLabel, metPhiHandle) metPhi = metPhiHandle.product() dummyMET = ROOT.TLorentzVector() dummyMET.SetPtEtaPhiM(metpt, 0.0, metPhi[0], 0.0)
{"name": "pfCaloMet", "label": ("pfCaloMet", "", "SKIM"), "edmType": "vector<reco::PFMET>"}, {"name": "HcalNoiseSummary", "label": ("hcalnoise"), "edmType": "HcalNoiseSummary"}, ] events.toBegin() def hbheNoiseIsoFilter(products): return ( products["HcalNoiseSummary"].numIsolatedNoiseChannels() < 10 and products["HcalNoiseSummary"].isolatedNoiseSumE() < 50.0 and products["HcalNoiseSummary"].isolatedNoiseSumEt() < 25.0 ) handles = {v["name"]: Handle(v["edmType"]) for v in edmCollections} for i in range(10): events.to(i) products = {} for v in edmCollections: events.getByLabel(v["label"], handles[v["name"]]) products[v["name"]] = handles[v["name"]].product() if hbheNoiseIsoFilter(products): print "pfMet %f trkMet %f pfCaloMet %f" % ( products["pfMet"][0].pt(), products["pfChMet"][0].pt(), products["pfCaloMet"][0].pt(), ) else: print "Skip-> noise!"
from ROOT import gROOT, gStyle, TCanvas, TF1, TFile, TTree, gRandom, TH1F, TH2F import os eventsRef = Events("ReReco_1.root") tracksRef = Handle("std::vector<reco::Track>") label = "generalTracks" quality = "highPurity" #quality = "tight" #quality = "loose" for i in range(0, eventsRef.size()): #for i in range(0, 200): a = eventsRef.to(i) print "Event", i a = eventsRef.getByLabel(label, tracksRef) trVal = [] for track in tracksRef.product(): # if (track.phi()<0) : continue # if (track.eta()<0) : continue # if (track.pt()<5) : continue # if (track.quality(track.qualityByName(quality))) : pattern = track.hitPattern() if (pattern.numberOfValidHits() != (pattern.numberOfValidPixelHits() + pattern.numberOfValidStripHits())): print pattern.numberOfValidHits(), pattern.numberOfValidPixelHits( ), pattern.numberOfValidStripHits( ), pattern.numberOfValidPixelHits( ) + pattern.numberOfValidStripHits() # trVal.append([10*int(100*track.eta())+track.phi(), "ori", track.eta(), track.phi(), track.pt(), track.numberOfValidHits() , track.hitPattern().numberOfValidPixelHits(), track.ndof(),track.chi2(), # track.algo()-4,track.originalAlgo()-4,track.algoMask().to_string(), track.algoMask(), track.quality(track.qualityByName("highPurity"))])
exit(1) import ROOT ROOT.gROOT.SetBatch(True) ROOT.PyConfig.IgnoreCommandLineOptions = True from DataFormats.FWLite import Handle, Events fedHandle = Handle('FEDRawDataCollection') events = Events(args.input) if events.size() > 1: print 'Warning, this script is designed for pre-picked EDM files (i.e. 1 event!)' events.to(args.event) if not events.getByLabel(args.label, fedHandle): print "Sorry, I couldn't load the FED collection for event %d :<" % args.event exit(1) fedsToPrint = map(int, args.feds.split(',')) for iFed in fedsToPrint: fedEDMObject = fedHandle.product().FEDData(iFed) fedData = fedEDMObject.data( ) # no worries about executor for unknown type ... fedData.SetSize(fedEDMObject.size() / 8) # size in bytes, we read in long (8 bytes) with open(args.output + '_fed%d.txt' % iFed, 'w') as fout: for word in fedData: # Signed to unsigned word conversion fout.write('%016x\n' % (word & (2**64 - 1)))
h = ROOT.TH2F("gamma","gamma",104,-5.2,5.2,50,0,25) for i in range(nevents): events.to(i) eaux = events.eventAuxiliary() # run/lumi/event run = eaux.run() event = eaux.event() lumi = eaux.luminosityBlock() #read all products as specifed in edmCollections products = {} for k, v in edmCollections.iteritems(): events.getByLabel(v['label'], v['handle']) products[k] = v['handle'].product() if collection=='ph': photons = [ p for p in products['pf'] if p.pdgId()==22 ] for p in photons: h.Fill( p.eta(), p.energy() ) elif collection=='rechits': rechits = [ p for p in products['rechits'] ] for p in rechits: o=ROOT.EEDetId(p.detid()) ix = o.ix() - 50.5 # from https://github.com/cms-sw/cmssw/blob/CMSSW_8_0_X/DQMOffline/JetMET/src/ECALRecHitAnalyzer.cc#L253-L255 iy = o.iy() - 50.5 ir = sqrt(ix**2 + iy**2)/50.5 # normalize to 1
vertex_label="offlinePrimaryVertices" hltvertex_handle=Handle("std::vector<reco::Vertex>") #hltvertex_label="offlinePrimaryVertices" #hltvertex_label="hltPixelVertices" #hltvertex_label="hltPixelVertices3DbbPhi" #hltvertex_label="hltPrimaryVertices" hltvertex_label="hltPrimaryVertices2" #hltvertex_label="verticesFromMuons" #hltvertex_label="verticesFromElectrons" event_count=0 for event in events: event_count+=1 #print "Event:",event_count events.getByLabel(tau_label,tau_handle) taus=tau_handle.product() events.getByLabel(hlttau_label,hlttau_handle) hlttaus=hlttau_handle.product() events.getByLabel(l1filter_label,l1filter_handle) l1filter=l1filter_handle.product() events.getByLabel(elefilter_label,elefilter_handle) elefilter=elefilter_handle.product() events.getByLabel(isolationfilter_label,isolationfilter_handle) isolationfilter=isolationfilter_handle.product() events.getByLabel(isolation2filter_label,isolation2filter_handle) isolation2filter=isolation2filter_handle.product() events.getByLabel(isolation3filter_label,isolation3filter_handle) isolation3filter=isolation3filter_handle.product() events.getByLabel(isolation4filter_label,isolation4filter_handle) isolation4filter=isolation4filter_handle.product()
#hltvertex_label="offlinePrimaryVertices" hltvertex_label = "hltPixelVertices" #hltvertex_label="hltPixelVertices3DbbPhi" #hltvertex_label="hltPrimaryVertices" #hltvertex_label="hltPrimaryVertices2" #hltvertex_label="vertexFromMuon" #hltvertex_label="vertexFromElectron" #hltvertex_label="verticesFromGsfTracks" #hltvertex_label="vertexFromTrack" event_count = 0 for event in events: event_count += 1 if str(event_count).replace("0", "") in ["1", "3"]: print "Event:", event_count events.getByLabel(tau_label, tau_handle) taus = tau_handle.product() events.getByLabel(hlttau_label, hlttau_handle) hlttaus = hlttau_handle.product() #events.getByLabel(selhlttau_label,selhlttau_handle) #selhlttaus=selhlttau_handle.product() events.getByLabel(ele_label, ele_handle) #if len(hlttaus)==0 or hlttaus[0].pt()<20 or abs(hlttaus[0].eta())>2.5: # continue eles = ele_handle.product() try: events.getByLabel(hltele_label, hltele_handle) hlteles = hltele_handle.product() except: hlteles = () #events.getByLabel(l1filter_label,l1filter_handle)
def loop(flist,fname,aod) : csvfile = open(fname+'.csv','wb') writer = csv.writer(csvfile) vertices = [Handle("vector<reco::Vertex>"), "offlineSlimmedPrimaryVertices" ] mus = [Handle("vector<pat::Muon>"), "slimmedMuons"] pfMETH = [Handle('std::vector<pat::MET>'),"slimmedMETs"] if (aod) : vertices = [Handle("vector<reco::Vertex>"), "offlinePrimaryVertices" ] mus = [Handle("vector<pat::Muon>"),"cleanPatMuons"] pfMETH = [Handle('vector<pat::MET>'),"systematicsMET"] sip2d = TH1F("SIP2D","SIP2D",40,-10.,10.) sip3d = TH1F("SIP3D","SIP3D",40,-10.,10.) sipxy = TH1F("tk2d","TK SIPXY",40,-10.,10.) sipz = TH1F("tk3z","TK SIPZ",40,-10.,10.) recoilRawH = ROOT.TH1F("Raw MET","Raw MET",1000,0,1000) recoilH = ROOT.TH1F("Recoil","Recoil",100,-10,10) responsePt = ROOT.TProfile("responsePt","responsePt",20,0,100) resolutionPt = ROOT.TProfile("resolutionPt","resolutionPt",20,0,100) responsePU = ROOT.TProfile("responsePU","responsePU",20,0,40) resolutionPU = ROOT.TProfile("resolutionPU","resolutionPU",20,0,40) hmass = ROOT.TH1F("Z mass","Z mass",100,70,120) # eventsRef = Events(flist) nw=0 nehpt=0 nwhpt=0 nech=0 nwch=0 # for i in range(0, eventsRef.size()): a= eventsRef.to(i) eventsRef.getByLabel(pfMETH[1],pfMETH[0]) met = pfMETH[0].product()[0] recoilRawH.Fill(met.pt()) if((i%5000)==0) : print "Event", i a=eventsRef.getByLabel(vertices[1],vertices[0]) pv = vertices[0].product()[0] pvp = vertices[0].product()[0].position() nv = vertices[0].product().size() a=eventsRef.getByLabel(mus[1],mus[0]) muons = mus[0].product() # print muons.size() for mu1,mu2 in itertools.combinations(muons,2): if not(mu1.pt()>15 and mu2.pt()>5): continue; if mu1.charge()+mu2.charge() !=0: continue; if not(mu1.isGlobalMuon() and mu2.isGlobalMuon()) : continue # print mu1.pt(),mu2.pt(),mu1.charge()+mu2.charge(), mu1.isGlobalMuon(), mu2.isGlobalMuon(), mu1.track().chi2(),mu1.track().ndof(),mu1.track().hitPattern().pixelLayersWithMeasurement() if (mu1.track().hitPattern().pixelLayersWithMeasurement()<1): continue if (mu2.track().hitPattern().pixelLayersWithMeasurement()<1): continue mass = (mu1.p4()+mu2.p4()).M() if not (mass>70 and mass<120): continue hmass.Fill(mass) diMu = mu1.p4()+mu2.p4() recoil = -(met.p4()+diMu) Z = diMu.Vect() R = recoil.Vect() Z.SetZ(0) R.SetZ(0) URSP = R.Dot(Z.Unit()) URES = R.Dot(Z.Unit().Cross(ROOT.math.XYZVector(0,0,1))) writer.writerow([i,mass,diMu.pt(),URSP,URES, mu1.pt(),mu1.eta(),mu1.phi(),mu1.dB(2)/mu1.edB(2),mu1.dB(1)/mu1.edB(1),mu1.track().dxy(pvp)/mu1.track().dxyError(),mu1.track().dz(pvp)/mu1.track().dzError(), mu2.pt(),mu2.eta(),mu2.phi(),mu2.dB(2)/mu2.edB(2),mu2.dB(1)/mu2.edB(1),mu2.track().dxy(pvp)/mu2.track().dxyError(),mu2.track().dz(pvp)/mu2.track().dzError()]) responsePt.Fill(diMu.pt(),URSP/diMu.Pt()) resolutionPt.Fill(diMu.pt(),URES/diMu.Pt()) if diMu.pt()>20.0: responsePU.Fill(nv,URSP/diMu.Pt()) resolutionPU.Fill(nv,URES/diMu.Pt()) recoilH.Fill( (URSP+diMu.Pt())/diMu.Pt()) sip2d.Fill(mu1.dB(2)/mu1.edB(2)) sip3d.Fill(mu1.dB(1)/mu1.edB(1)) sipxy.Fill(mu1.track().dxy(pvp)/mu1.track().dxyError()) sipz.Fill(mu1.track().dz(pvp)/mu1.track().dzError()) sip2d.Fill(mu2.dB(2)/mu2.edB(2)) sip3d.Fill(mu2.dB(1)/mu2.edB(1)) sipxy.Fill(mu2.track().dxy(pvp)/mu2.track().dxyError()) sipz.Fill(mu2.track().dz(pvp)/mu2.track().dzError()) csvfile.close() c1 = TCanvas( 'c1', fname, 200, 10, 1000, 1400 ) gStyle.SetOptStat(111111) gStyle.SetHistLineWidth(2) c1.Divide(2,4) c1.cd(1).SetLogy() sip2d.DrawNormalized() e = TF1("q","0.5*exp(-0.5*x*x)/sqrt(6.28)",-10.,10.) e.Draw("same") c1.cd(2).SetLogy() sip3d.DrawNormalized() e.Draw("same") c1.cd(3).SetLogy() sipxy.DrawNormalized() e.Draw("same") c1.cd(4).SetLogy() sipz.DrawNormalized() e.Draw("same") c1.cd(5).SetLogy() hmass.DrawNormalized() c1.Print("dataHist/sipall"+fname+".png") c2 = TCanvas( 'c2', fname, 200, 10, 1000, 1400 ) gStyle.SetOptStat(111111) gStyle.SetHistLineWidth(2) c2.Divide(2,3) c2.cd(1) responsePt.Draw() c2.cd(2) resolutionPt.Draw() c2.cd(3) responsePU.Draw() c2.cd(4) resolutionPU.Draw() c2.cd(5).SetLogy() recoilH.DrawNormalized() c2.cd(6).SetLogy() recoilRawH.DrawNormalized() c2.Print("dataHist/ResponseZmumu"+fname+".png")
def loop(fname) : genPars = Handle("vector<reco::GenParticle>") genParsLabel = "prunedGenParticles" gPar = [Handle("vector<pat::PackedGenParticle>"), "packedGenParticles"] vertices = [Handle("vector<reco::Vertex>"), "offlineSlimmedPrimaryVertices" ] mus = [Handle("vector<pat::Muon>"), "slimmedMuons"] sip2d = TH1F("SIP2D","SIP2D",40,-10.,10.) sip3d = TH1F("SIP3D","SIP3D",40,-10.,10.) sipxy = TH1F("tk2d","TK SIPXY",40,-10.,10.) sipz = TH1F("tk3z","TK SIPZ",40,-10.,10.) sip3d_l = TH1F("SIP2D l","SIP2D l",40,-10.,10.) sip3d_h = TH1F("SIP2D h","SIP2D h",40,-10.,10.) sip3d_best = TH1F("SIP2D best","SIP2D best",40,-10.,10.) vert = TH1F("zpv","zpv",100,-10.,10.) sip_v = TProfile("SIP2D vs zpv","SIP2D best vs zpv",50,0.,5.,0.,10.) # eventsRef = Events(fname) nw=0 nehpt=0 nwhpt=0 nech=0 nwch=0 # for i in range(0, eventsRef.size()): a= eventsRef.to(i) print "Event", i a=eventsRef.getByLabel(genParsLabel, genPars) zpv=0 gpvp = genPars.product()[0].vertex() for part in genPars.product(): if (part.vz()!=0) : zpv = part.vz() gpvp = part.vertex() break print "zpv " , zpv # nmu=0 nel=0 nch1=0 nch2=0 gmu = [] for part in genPars.product(): if (part.status()!=1) : continue if (abs(part.pdgId())==13 and part.pt()>5 and abs(part.eta())<2.4) : gmu.append((part.phi(),part.eta(), part.charge()*part.pt())) if (abs(part.pdgId())==13 and part.pt()>5 and abs(part.eta())<2.4) : nmu+=1 if (abs(part.pdgId())==11 and part.pt()>7 and abs(part.eta())<2.4) : nel+=1 if (abs(part.pdgId())==13 and part.pt()>8 and abs(part.eta())<2.4) : nch1+=1 if (abs(part.pdgId())==11 and part.pt()>10 and abs(part.eta())<2.4) : nch1+=1 if (abs(part.pdgId())==13 and part.pt()>20 and abs(part.eta())<2.4) : nch2+=1 if (abs(part.pdgId())==11 and part.pt()>20 and abs(part.eta())<2.4) : nch2+=1 # if (abs(part.pdgId())==13): # print "part", part.phi(),part.eta(), part.pt(), part.vz(), part.vx(), part.vy(), part.mass(), part.pdgId(), part.status() # print "nmu ", nmu,nel # print gmu a=eventsRef.getByLabel(vertices[1],vertices[0]) minz=99999. iv=0 ii=0 pv = vertices[0].product()[0] pvp = vertices[0].product()[0].position() nv = vertices[0].product().size() for v in vertices[0].product() : if (abs(v.z()-zpv) < minz) : minz=abs(v.z()-zpv) iv = ii ii+=1 print "pv ", iv, minz if (iv!=0) : nw+=1 # if (nmu+nel>3) : if (nmu>1) : nehpt+=1 if (iv!=0) : nwhpt+=1 # if (nch1>0 and nch2>0) : if (nch1<1) : continue # nech+=1 if (iv!=0) : nwch+=1 a=eventsRef.getByLabel(mus[1],mus[0]) pmus = [] for mu in mus[0].product() : if (mu.pt()<5) : continue # if ( mu.isTrackerMuon() or mu.isGlobalMuon()) : if ( mu.isGlobalMuon()) : pmus.append(( mu.phi(), mu.eta(), mu.pt()*mu.charge(), mu.dB(2)/mu.edB(2), mu.dB(1)/mu.edB(1), mu.track().dxy(gpvp)/mu.track().dxyError(), mu.track().dz(gpvp)/mu.track().dzError(), mu.track().hitPattern().pixelLayersWithMeasurement() )) # print 'mu', iv, mu.phi(), mu.eta(), mu.pt(), mu.dB(2)/mu.edB(2), mu.dB(1)/mu.edB(1), mu.isTrackerMuon(), mu.isGlobalMuon() # print pmus matches = [] i=0 for g in gmu : j = 0 for mu in pmus : j+=1 if ( g[2]/mu[2] < 0.5 or g[2]/mu[2] > 2.0 ) : continue dr = dR2(g[0],g[1],mu[0],mu[1]) if ( dr > 0.04 ) : continue matches.append((i,j-1, dr, abs(1.-g[2]/mu[2]))) #print "matched mu", mu i+=1 if (len(matches)<1 ) : continue vert.Fill((pv.z()-zpv)/pv.zError()) k=matches[0][0] best = 99999 dr = 999999 for m in matches : # if (abs(pv.z()-zpv)<3*pv.zError()) : if(pmus[m[1]][7]>2) : # if (nv<21) : sip3d_l.Fill(pmus[m[1]][3]) else : sip3d_h.Fill(pmus[m[1]][3]) sip2d.Fill(pmus[m[1]][4]) sip3d.Fill(pmus[m[1]][3]) sipxy.Fill(pmus[m[1]][5]) sipz.Fill(pmus[m[1]][6]) sip_v.Fill(abs(pv.z()-zpv)/pv.zError(),abs(pmus[m[1]][5])) if (m[0]!=k) : sip3d_best.Fill(best) k=m[0] best = pmus[m[1]][4] dr = m[3] else : if (m[3]<dr ): dr = m[3] best = pmus[m[1]][4] if (dr<9999) : sip3d_best.Fill(best) print "wrong pv", nw, nehpt, nwhpt,nech,nwch c1 = TCanvas( 'c1', fname, 200, 10, 1000, 1400 ) gStyle.SetOptStat(111111) gStyle.SetHistLineWidth(2) c1.Divide(2,4) c1.cd(1).SetLogy() sip2d.DrawNormalized() e = TF1("q","0.5*exp(-0.5*x*x)/sqrt(6.28)",-10.,10.) e.Draw("same") c1.cd(2).SetLogy() sip3d.DrawNormalized() e.Draw("same") c1.cd(3).SetLogy() sipxy.DrawNormalized() e.Draw("same") c1.cd(4).SetLogy() sipz.DrawNormalized() e.Draw("same") c1.cd(5).SetLogy() sip3d_l.DrawNormalized() e.Draw("same") c1.cd(6).SetLogy() sip3d_h.DrawNormalized() e.Draw("same") # sip3d_best.DrawNormalized() c1.cd(7).SetLogy() vert.DrawNormalized() # ev = TF1("qv","0.2*exp(-0.5*x*x)/sqrt(6.28)",-10.,10.) # ev.Draw("same") c1.cd(8) sip_v.Draw() c1.Print("sipall"+fname+".png")
label = "generalTracks" #label = "globalMuons" quality = "highPurity" #quality = "tight" #quality = "loose" def format(x) : return '{:.2f}'.format(x) for i in range(0, eventsRef.size()): #for i in range(0, 200): a= eventsRef.to(i) ev = eventsRef.eventAuxiliary().event() # print "Event", i a=eventsRef.getByLabel(label, tracksRef) trVal = [] for track in tracksRef.product(): # if (track.phi()<0) : continue # if (track.eta()<0) : continue if (track.pt()<1) : continue # if (track.qoverpError()*track.p()>2) : continue # if (not track.quality(track.qualityByName(quality))) : continue # pattern = track.hitPattern() # if (pattern.numberOfValidHits() != (pattern.numberOfValidPixelHits()+pattern.numberOfValidStripHits())) : # print pattern.numberOfValidHits(),pattern.numberOfValidPixelHits(),pattern.numberOfValidStripHits(), pattern.numberOfValidPixelHits()+pattern.numberOfValidStripHits() trVal.append([i, ev, 10*int(100*track.eta())+track.phi(), ver, format(track.eta()), format(track.phi()), format(track.pt()), format(track.qoverpError()*track.p()), track.numberOfValidHits() , track.hitPattern().numberOfValidPixelHits(), track.numberOfLostHits(), format(track.validFraction()), track.ndof(),format(track.chi2()),track.algo()-4,track.originalAlgo()-4,track.quality(track.qualityByName("highPurity"))]) # print tracksRef.product().size(), len(trVal)
tracksRef = Handle("std::vector<reco::Track>") label = "generalTracks" quality = "highPurity" #quality = "tight" #quality = "loose" mvaRef = Handle("std::vector<float>") mcMatchRef = Handle("std::vector<float>") for i in range(0, eventsRef.size()): #for i in range(0, 200): a= eventsRef.to(i) print "Event", i a=eventsRef.getByLabel(label, tracksRef) a=eventsRef.getByLabel(label, 'MVAValues',mvaRef) a=eventsRef.getByLabel("trackMCQuality",mcMatchRef) mcMatch = mcMatchRef.product() mva = mvaRef.product() trVal = [] k = -1 for track in tracksRef.product(): k+=1 # if (track.phi()<0) : continue # if (abs(track.eta())>2.3) : continue # if (track.pt()<4) : continue # if (track.quality(track.qualityByName(quality))) : writer.writerow([i,track.eta(), track.phi(), track.pt(), track.numberOfValidHits(), track.hitPattern().numberOfValidPixelHits(), track.hitPattern().trackerLayersWithMeasurement(),
label = "generalTracks" quality = "highPurity" #quality = "tight" #quality = "loose" mvaRef = Handle("std::vector<float>") mcMatchRef = Handle("std::vector<float>") for i in range(0, eventsRef.size()): #for i in range(0, 200): a= eventsRef.to(i) id = eventsRef.object().id() evid = '{:d}:{:d}:{:d}'.format(int(id.run()),int(id.luminosityBlock()), int(id.event())) print "Event", i , evid a=eventsRef.getByLabel(label, tracksRef) # a=eventsRef.getByLabel(label, 'MVAValues',mvaRef) a=eventsRef.getByLabel("trackMCQuality",mcMatchRef) # mcMatch = mcMatchRef.product() # mva = mvaRef.product() trVal = [] k = -1 for track in tracksRef.product(): k+=1 # if (track.phi()<0) : continue # if (abs(track.eta())>2.3) : continue # if (track.pt()<4) : continue # if (track.quality(track.qualityByName(quality))) : # if (track.algoMask().test(14)): writer.writerow([evid,format(track.eta()), format(track.phi()), format(track.pt()), track.numberOfValidHits(), track.hitPattern().numberOfValidPixelHits(), track.hitPattern().pixelLayersWithMeasurement(),
# coding: utf-8 from DataFormats.FWLite import Handle, Events events = Events("/data/kelong/DibosonGenAnalysisSamples/WZJJ_VBFNLO/gentest_WZ-fixGen.root") handle = Handle("edm::HepMCProduct") genParticles = [] for i,event in enumerate(events): events.getByLabel("source", handle) hepMc = handle.product() evt = hepMc.GetEvent() it = evt.particles_begin() for i in range(evt.particles_size()): part = it.__deref__() it.__preinc__() if part.pdg_id() <= 5 and part.pdg_id() >= -5 and part.status() == 1: print "-"*20 + "Event " + str(i) + "-"*20 print "pdgid == %i, status == %i, pt == %f, eta == %f" % (part.pdg_id(), part.status(), part.momentum().perp(), part.momentum().eta())
label = "generalTracks" quality = "highPurity" #quality = "tight" #quality = "loose" mvaRef = Handle("std::vector<float>") mcMatchRef = Handle("std::vector<float>") for i in range(0, eventsRef.size()): #for i in range(0, 200): a = eventsRef.to(i) id = eventsRef.object().id() evid = '{:d}:{:d}:{:d}'.format(int(id.run()), int(id.luminosityBlock()), int(id.event())) print "Event", i, evid a = eventsRef.getByLabel(label, tracksRef) # a=eventsRef.getByLabel(label, 'MVAValues',mvaRef) a = eventsRef.getByLabel("trackMCQuality", mcMatchRef) # mcMatch = mcMatchRef.product() # mva = mvaRef.product() trVal = [] k = -1 for track in tracksRef.product(): k += 1 # if (track.phi()<0) : continue # if (abs(track.eta())>2.3) : continue # if (track.pt()<4) : continue # if (track.quality(track.qualityByName(quality))) : # if (track.algoMask().test(14)): writer.writerow([ evid,
number_events = elist.GetN() print "Reading: ", sample[ "name"], bin, "file", file, "with", number_events, "Events using cut", commoncf if small: if number_events > 1000: number_events = 1000 for i in range(0, number_events): if (i % 100000 == 0) and i > 0: print i # # Update all the Tuples if elist.GetN() > 0 and ntot > 0: c.GetEntry(elist.GetEntry(i)) # MC specific part if mode == "MC": events.to(elist.GetEntry(i)) events.getByLabel(label, handle) gps = handle.product() lgp = [] lgp2 = [] igp = 0 for gp in gps: if gp.status() == 3: lgp.append(gp) if (abs(gp.pdgId() == 11) or abs( gp.pdgId() == 13)) and gp.pt() > 3.: lgp2.append(gp) lgp2 = sorted(lgp2, key=lambda k: -k.pt()) s.ngp = min(len(lgp) + len(lgp2), 20) for igp, gp in enumerate(lgp): s.gpPdg[igp] = gp.pdgId()
def main(args): MAX_FILES_TO_PROCESS = args.maxfiles x_axis_definition = [40, 0.5, 40.5] if args.bxaxis: x_axis_definition = [4000, -0.5, 3999.5] numerical_lumi = [] numerical_bn = [] bunch_to_train = [0 for x in range(4000)] # In case the user specified LS using the range syntax X-Y, extend it in the form X, X+1, ..., Y. if args.lumi: numerical_lumi.extend(explicitRange(args.lumi)) # Same range extension for the BX number if args.bn: numerical_bn.extend(explicitRange(args.bn)) if args.alltrainsaverage: numerical_bn.extend(explicitRange(args.alltrainsaverage, bunch_to_train)) if args.alltrains: numerical_bn.extend([i for i in range(0,4000)]) print "\nSelecting LS: ", numerical_lumi print "\nSelecting BN: ", numerical_bn print "\nBunch to Train: ", bunch_to_train f = TFile(args.output, "RECREATE") tracks_h = Handle("std::vector<reco::Track>") pv_h = Handle("std::vector<reco::Vertex>") hit_type = {0:'ok', 1:'missing', 2:'inactive', 3:'bad'} hit_category = {0:'track_hits', 1:'missing_inner_hits', 2:'missing_outer_hits'} det = {1:'PXB', 2:'PXF', 3:'TIB', 4:'TID', 5:'TOB', 6:'TEC'} subdet = {'PXB': { 1:'Layer1', 2:'Layer2', 3:'Layer3'}, 'PXF': { 1:'Disk1', 2:'Disk2'}, 'TIB': { 1:'Layer1', 2:'Layer2', 3:'Layer3', 4:'Layer4'}, 'TID': { 1:'wheel1', 2:'wheel2', 3:'wheel3'}, 'TOB': { 1:'Layer1', 2:'Layer2', 3:'Layer3', 4:'Layer4', 5:'Layer5', 6:'Layer6'}, 'TEC': { 1:'wheel1', 2:'wheel2', 3:'wheel3', 4:'wheel4', 5:'wheel5', 6:'wheel6', 7:'wheel7', 8:'wheel8', 9:'wheel9'}} histograms = {} histograms_barrel = {} histograms_endcap = {} for d in subdet.keys(): for sd in subdet[d].keys(): name = d+subdet[d][sd] histograms.setdefault(name, {}).setdefault(0, TH1F('Hits_ok_%s' % name, 'Hits_ok_%s' % name, *x_axis_definition)).Sumw2 histograms.setdefault(name, {}).setdefault(1, TH1F('Hits_missing_%s' % name, 'Hits_missing_%s' % name, *x_axis_definition)).Sumw2 histograms.setdefault(name, {}).setdefault(2, TH1F('Hits_inactive_%s' % name, 'Hits_inactive_%s' % name, *x_axis_definition)).Sumw2 histograms.setdefault(name, {}).setdefault(3, TH1F('Hits_bad_%s' % name, 'Hits_bad_%s' % name, *x_axis_definition)).Sumw2 histograms.setdefault(name, {}).setdefault(4, TH1F('Hits_ok_and_missing_%s' % name, 'Hits_ok_and_missing_%s' % name, *x_axis_definition)).Sumw2 histograms_barrel.setdefault(name, {}).setdefault(0, TH1F('Hits_ok_%s_barrel' % name, 'Hits_ok_%s_barrel' % name, *x_axis_definition)).Sumw2 histograms_barrel.setdefault(name, {}).setdefault(1, TH1F('Hits_missing_%s_barrel' % name, 'Hits_missing_%s_barrel' % name, *x_axis_definition)).Sumw2 histograms_barrel.setdefault(name, {}).setdefault(2, TH1F('Hits_inactive_%s_barrel' % name, 'Hits_inactive_%s_barrel' % name, *x_axis_definition)).Sumw2 histograms_barrel.setdefault(name, {}).setdefault(3, TH1F('Hits_bad_%s_barrel' % name, 'Hits_bad_%s_barrel' % name, *x_axis_definition)).Sumw2 histograms_barrel.setdefault(name, {}).setdefault(4, TH1F('Hits_ok_and_missing_%s_barrel' % name, 'Hits_ok_and_missing_%s_barrel' % name, *x_axis_definition)).Sumw2 histograms_endcap.setdefault(name, {}).setdefault(0, TH1F('Hits_ok_%s_endcap' % name, 'Hits_ok_%s_endcap' % name, *x_axis_definition)).Sumw2 histograms_endcap.setdefault(name, {}).setdefault(1, TH1F('Hits_missing_%s_endcap' % name, 'Hits_missing_%s_endcap' % name, *x_axis_definition)).Sumw2 histograms_endcap.setdefault(name, {}).setdefault(2, TH1F('Hits_inactive_%s_endcap' % name, 'Hits_inactive_%s_endcap' % name, *x_axis_definition)).Sumw2 histograms_endcap.setdefault(name, {}).setdefault(3, TH1F('Hits_bad_%s_endcap' % name, 'Hits_bad_%s_endcap' % name, *x_axis_definition)).Sumw2 histograms_endcap.setdefault(name, {}).setdefault(4, TH1F('Hits_ok_and_missing_%s_endcap' % name, 'Hits_ok_and_missing_%s_endcap' % name, *x_axis_definition)).Sumw2 files = [] if args.input: files.extend(args.input) elif args.eosdir: files.extend(map(lambda x: 'root://eoscms/'+ x, getFileListFromEOS(args.eosdir)) ) else: print 'No input given, quitting' sys.exit(1) total_files = 0 if MAX_FILES_TO_PROCESS < 0: total_files = len(files) else: total_files = min(MAX_FILES_TO_PROCESS, len(files)) analyzed_files = 0 start_cumulative_time = time() start_time = start_cumulative_time end_time = start_cumulative_time file_count = -1 for input_file in files: file_count += 1 analyzed_files += 1 if MAX_FILES_TO_PROCESS > 0 and analyzed_files > MAX_FILES_TO_PROCESS: break print "\n", input_file events = Events(input_file) total_events = float(events.size()) analized_events = 0. for e in range(events.size()): analized_events += 1.0 if analized_events*100./total_events == 100: end_time = time() if not args.debug: sys.stdout.write("\r %d/%d --> %4.1f [%4.1f m / %6f s] ETA: %4.1f m ==> LS: %d" % (file_count, total_files, analized_events*100./total_events, (end_time-start_time)/60.,(end_time-start_time), (end_time-start_cumulative_time)/(60.*analyzed_files) * (total_files - analyzed_files), events.eventAuxiliary().luminosityBlock())) start_time = end_time sys.stdout.flush() a = events.to(e) if args.lumi: if not events.eventAuxiliary().luminosityBlock() in numerical_lumi: continue if len(numerical_bn) !=0 and not events.eventAuxiliary().bunchCrossing() in numerical_bn: continue a = events.getByLabel("generalTracks", tracks_h) a = events.getByLabel("offlinePrimaryVertices", pv_h) good_vertices = getNumberOfGoodVertices(pv_h) if good_vertices < 1: continue for track in range(tracks_h.product().size()): t = tracks_h.product()[track] if not t.quality(t.qualityByName("highPurity")): continue if t.pt() < 1.0 or t.dxy() > 0.1: continue hp = t.hitPattern() if args.debug: print "\n\n" for category in hit_category.keys(): if args.debug: print hit_category[category], "pt, eta, phi, dxy, originalAlgo-4", t.pt(), t.eta(), t.phi(), t.dxy(), t.originalAlgo()-4 for hit in range(0, hp.numberOfHits(category)): pattern = hp.getHitPattern(category, hit) valid = hp.validHitFilter(pattern) missing = hp.missingHitFilter(pattern) inactive = hp.inactiveHitFilter(pattern) bad = hp.badHitFilter(pattern) hit_type = -1 if valid: hit_type = 0 elif missing: hit_type = 1 elif inactive: hit_type = 2 elif bad: hit_type = 3 d = det[hp.getSubStructure(pattern)] sd = subdet[d][hp.getSubSubStructure(pattern)] name = d+sd if args.overwrite: good_vertices = args.overwrite if args.alltrainsaverage is not None: good_vertices = bunch_to_train[events.eventAuxiliary().bunchCrossing()] if args.alltrains: good_vertices = events.eventAuxiliary().bunchCrossing() if abs(t.eta()) < 1.4: if name in histograms_barrel.keys(): histograms_barrel[name][hit_type].Fill(good_vertices) else: if name in histograms_endcap.keys(): histograms_endcap[name][hit_type].Fill(good_vertices) if name in histograms.keys(): # We don't do any selection on any category other than missing! if hit_type != 1: histograms[name][hit_type].Fill(good_vertices) else: if args.hitcategory and not category in args.hitcategory: continue histograms[name][hit_type].Fill(good_vertices) if args.debug: printPattern(hit, category, d, sd, hp, pattern) f.cd() for kind in histograms.keys(): histograms[kind][4].Add(histograms[kind][0]+histograms[kind][1]) histograms.setdefault(kind, {}).setdefault(5, TGraphAsymmErrors(histograms[kind][0], histograms[kind][4])).Write() histograms_barrel[kind][4].Add(histograms_barrel[kind][0]+histograms_barrel[kind][1]) histograms_barrel.setdefault(kind, {}).setdefault(5, TGraphAsymmErrors(histograms_barrel[kind][0], histograms_barrel[kind][4])).Write() histograms_endcap[kind][4].Add(histograms_endcap[kind][0]+histograms_endcap[kind][1]) histograms_endcap.setdefault(kind, {}).setdefault(5, TGraphAsymmErrors(histograms_endcap[kind][0], histograms_endcap[kind][4])).Write() if args.debug: f.ls() f.Write() f.Close()
elist = ROOT.gDirectory.Get("eList") number_events = elist.GetN() print "Reading: ", sample["name"], bin, "with",number_events,"Events using cut", commoncf if small: if number_events>1000: number_events=1000 for i in range(0, number_events): if (i%10000 == 0) and i>0 : print i # # Update all the Tuples if elist.GetN()>0 and ntot>0: c.GetEntry(elist.GetEntry(i)) # MC specific part if not sample['name'].lower().count('data'): events.to(elist.GetEntry(i)) events.getByLabel(label,handle) gps = handle.product() if storeVectors: lgp = [] lgp2 = [] igp = 0 for gp in gps: if gp.status() == 3: lgp.append(gp) if (abs(gp.pdgId()==11) or abs(gp.pdgId()==13)) and gp.pt() > 3.: lgp2.append(gp) lgp2 = sorted(lgp2, key=lambda k: -k.pt()) s.ngp = min(len(lgp)+len(lgp2),20) for igp,gp in enumerate(lgp): s.gpPdg[igp] = gp.pdgId() s.gpM[igp] = gp.mass()
eventsNew = Events("step3all-samesim.root") tracksRef = Handle("std::vector<reco::Track>") tracksNew = Handle("std::vector<reco::Track>") label = "generalTracks" quality = "highPurity" #quality = "tight" #quality = "loose" for i in range(0, eventsRef.size()): #for i in range(0, 200): a= eventsRef.to(i) print "Event", i a=eventsRef.getByLabel(label, tracksRef) trVal = [] for track in tracksRef.product(): # if (track.phi()<0) : continue # if (track.eta()<0) : continue if (track.pt()<5) : continue if (track.quality(track.qualityByName(quality))) : trVal.append([10*int(100*track.eta())+track.phi(), "ori", track.eta(), track.phi(), track.pt(), track.numberOfValidHits() , track.hitPattern().numberOfValidPixelHits(), track.ndof(),track.chi2(), track.algo()-4,track.quality(track.qualityByName("highPurity"))]) ori = len(trVal) a= eventsNew.to(i) a=eventsNew.getByLabel(label, tracksNew) for track in tracksNew.product(): # if (track.phi()<0) : continue # if (track.eta()<0) : continue if (track.pt()<5) : continue if (track.quality(track.qualityByName(quality))) :
d0miss = TH1F("d0 miss","d0 miss",100,-5.,5.) d0r = TH1F("d0 ratio","d0 ratio",100,-5.,5.) dpall = TH1F("dp all","dp all",100,-0.5,0.5) dpmiss = TH1F("dp miss","dp miss",100,-0.5,0.5) dpr = TH1F("dp ratio","dp ratio",100,-0.5,0.5) algoall = TH1F("algo all","algo all",20,0,20) algomiss = TH1F("algo miss","algo miss",20,0,20) algor = TH1F("algo ratio","algo ratio",20,0,20) # for event in eventsRef: for i in range(0, eventsRef.size()): a= eventsRef.to(i) a= eventsNew.to(i) print "Event", i a=eventsRef.getByLabel(label, tracksRef) a=eventsNew.getByLabel(label, tracksNew) trRef = [] j = 0 for track in tracksRef.product(): if (track.found()<8) : continue if (track.quality(track.qualityByName(quality))) : dp = track.outerPosition().phi()-track.outerMomentum().phi() trRef.append((j,track.charge()*track.pt(), track.phi()+track.eta(),track.eta(),track.found(), track.hitPattern(), track.ndof(), track.chi2(), track.dxy(),dp, track.algo() )) j += 1 a = trRef.sort(key=lambda tr: tr[2]) print j trNew = [] j = 0 for track in tracksNew.product(): if (track.found()<8) : continue
import ROOT from DataFormats.FWLite import Events, Handle from PhysicsTools.PythonAnalysis import * events_new = Events(['step3_newCalib.root']) events_old = Events(['step3_RAW2DIGI_RECO.root']) edmCollections = [ {'name':'pfMet', 'label':("pfMet"), 'edmType':"vector<reco::PFMET>"} ] handles={v['name']:Handle(v['edmType']) for v in edmCollections} for i in range(10): events_new.to(i) products_new = {} for v in edmCollections: events_new.getByLabel(v['label'],handles[v['name']]) products_new[v['name']] =handles[v['name']].product() events_old.to(i) products_old = {} for v in edmCollections: events_old.getByLabel(v['label'],handles[v['name']]) products_old[v['name']] =handles[v['name']].product() print "new",products_new['pfMet'][0].pt(), 'old', products_old['pfMet'][0].pt()
def createPlots(sample,prefix,jets=0): if sample.endswith(".txt"): files=[] filelist=open(sample) for line in filelist.readlines(): if ".root" in line: files+=[line.strip()] else: files=[sample] #generator_handle=Handle("GenEventInfoProduct") #generator_label="generator" #particles_handle=Handle("std::vector<reco::GenParticle>") #particles_label="genParticles" prunedgenjets_handle=Handle("std::vector<reco::GenJet>") prunedgenjets_label="ak5GenJets" #vertices_handle=Handle("std::vector<reco::Vertex>") #vertices_label="offlinePrimaryVertices" plots=[] plots += [TH1F(prefix+'M(X)',';m(X) [GeV];N',50,0,5000)] plots += [TH1F(prefix+'y_{boost}',';y_{boost};N',15,0,3)] plots += [TH1F(prefix+'#Chi',';#Chi;N',15,1,16)] plots += [TH1F(prefix+'#Chi',';#Chi;N',15,1,16)] plots += [TH1F(prefix+'#Chi',';#Chi;N',15,1,16)] plots += [TH1F(prefix+'#Chi',';#Chi;N',15,1,16)] for plot in plots: plot.Sumw2() event_count=0 events=Events(files) for event in events: event_count+=1 if event_count%10000==1: print "Event:",event_count #events.getByLabel(generator_label,generator_handle) #generator=generator_handle.product() #weight=generator.weight() weight=1 try: events.getByLabel(prunedgenjets_label,prunedgenjets_handle) prunedgenjets=prunedgenjets_handle.product() except: continue if len(prunedgenjets)<2: continue z1=lv(prunedgenjets[0]) z2=lv(prunedgenjets[1]) if abs(z1.Rapidity())>2.5 or abs(z2.Rapidity())>2.5 or abs(z1.Rapidity()+z2.Rapidity())>1.11 or exp(abs(z1.Rapidity()-z2.Rapidity()))>16: continue q11=z1 q12=z1 q21=z2 q22=z2 x=z1+z2 #if event_count>100: # break if abs(q11.Eta())>5.0: continue if abs(q12.Eta())>5.0: continue if abs(q21.Eta())>5.0: continue if abs(q22.Eta())>5.0: continue if q11.Pt()<10: continue if q12.Pt()<10: continue if q21.Pt()<10: continue if q22.Pt()<10: continue plots[0].Fill(x.M(),weight) if x.M()<1900: continue plots[1].Fill(abs(z1.Rapidity()+z2.Rapidity()),weight) if x.M()>=1900 and x.M()<2400: plots[2].Fill(exp(abs(z1.Rapidity()-z2.Rapidity())),weight) if x.M()>=2400 and x.M()<3000: plots[3].Fill(exp(abs(z1.Rapidity()-z2.Rapidity())),weight) if x.M()>=3000 and x.M()<4000: plots[4].Fill(exp(abs(z1.Rapidity()-z2.Rapidity())),weight) if x.M()>=4000: plots[5].Fill(exp(abs(z1.Rapidity()-z2.Rapidity())),weight) print "Event:",event_count for plot in plots: if plot.Integral()>0: plot.Scale(1./plot.Integral()) plot.GetYaxis().SetRangeUser(plot.GetMaximum()/10000,plot.GetMaximum()*1.4) return plots
import ROOT from DataFormats.FWLite import Events, Handle from PhysicsTools.PythonAnalysis import * events_new = Events(['step3_newCalib.root']) events_old = Events(['step3_RAW2DIGI_RECO.root']) edmCollections = [{ 'name': 'pfMet', 'label': ("pfMet"), 'edmType': "vector<reco::PFMET>" }] handles = {v['name']: Handle(v['edmType']) for v in edmCollections} for i in range(10): events_new.to(i) products_new = {} for v in edmCollections: events_new.getByLabel(v['label'], handles[v['name']]) products_new[v['name']] = handles[v['name']].product() events_old.to(i) products_old = {} for v in edmCollections: events_old.getByLabel(v['label'], handles[v['name']]) products_old[v['name']] = handles[v['name']].product() print "new", products_new['pfMet'][0].pt( ), 'old', products_old['pfMet'][0].pt()