示例#1
0
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
示例#2
0
文件: eloss.py 项目: VinInn/pyTools
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")
示例#3
0
文件: eloss.py 项目: VinInn/pyTools
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")
示例#4
0
        '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()
示例#5
0
文件: tkcomp.py 项目: VinInn/pyTools
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


示例#6
0
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))
示例#8
0
文件: tkcomp.py 项目: VinInn/pyTools
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
示例#9
0
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)
示例#10
0
文件: convert.py 项目: wa01/Workspace
      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.')
示例#11
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]
示例#12
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)
示例#13
0
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)))
示例#14
0
        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)
示例#15
0
# 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())
示例#16
0

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
示例#17
0
    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]
示例#19
0
文件: miniAOD.py 项目: VinInn/pyTools
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")
示例#20
0
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
示例#21
0
    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)
示例#22
0
    #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
示例#23
0
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())
示例#24
0
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(),
示例#25
0
文件: ctpps.py 项目: gqlcms/JetMET
    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())
示例#26
0
 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)
示例#27
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!"
示例#28
0
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"))])
示例#29
0
    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)))
示例#30
0
文件: PFEGM.py 项目: schoef/JetMET
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
示例#31
0
    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()
示例#32
0
    #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)
示例#33
0
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")
示例#34
0
文件: miniAOD.py 项目: VinInn/pyTools
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")
示例#35
0
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)
示例#36
0
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(),
示例#37
0
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(), 
示例#38
0
# 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())
示例#39
0
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,
示例#40
0
                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()
示例#43
0
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))) :
示例#44
0
文件: ptdiff.py 项目: VinInn/pyTools
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
示例#45
0
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()
示例#46
0
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
示例#47
0
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()