Example #1
0
def getStatusPhotons(event, sample):
    GenMGPhotons = getCollection(event, 'GenMGPhoton',
                                 ["pt", "eta", "phi", "status"],
                                 'nGenMGPhoton')
    GenMGAllPhotons = getCollection(event, 'GenMGAllPhoton',
                                    ["pt", "eta", "phi", "status"],
                                    'nGenMGAllPhoton')
    GenAllJet = getCollection(event, 'GenAllJet', ["pt", "eta", "phi"],
                              'nGenAllJet')
    GenLepton = getCollection(event, 'GenLepton', ["pt", "eta", "phi"],
                              'nGenLepton')
    GenAllLepton = getCollection(event, 'GenLepton', ["pt", "eta", "phi"],
                                 'nGenAllLepton')

    GenMGAllPhotons = list(
        filter(
            lambda j: min([999] + [deltaR2(j, p) for p in GenAllJet]) > 0.04,
            GenMGAllPhotons))
    #    GenMGAllPhotons  = list( filter( lambda j: min( [999] + [ deltaR2( j, p ) for p in GenLepton ] ) > 0.04, GenMGAllPhotons ) )
    GenLepton = list(
        filter(
            lambda j: min([999] + [
                deltaR2(j, p) for p in GenMGAllPhotons if p["status"] > 1
            ]) > 0.04, GenLepton))

    #    GenMGPhotons = filter( lambda x: x["status"]>1, GenMGPhotons )
    event.nGenMGPhoton = len(GenMGPhotons) if event.nGenLepton == len(
        GenLepton) and len(GenAllLepton) == 1 else 0
Example #2
0
def calcdR(event, sample):
    #    if sample.name != "cut": event.genJetDR = 1.
    GenJets = getCollection(event, 'GenJet', ["pt", "eta", "phi"], 'nGenJet')
    GenJets = filter(lambda p: p["pt"] > 5, GenJets)
    GenParts = getCollection(event, 'GenPart',
                             ["status", "pt", "eta", "phi", "pdgId"],
                             'nGenPart')
    GenLeptons = filter(
        lambda p: (abs(p["pdgId"]) == 11 or abs(p["pdgId"] == 13)) and p["pt"]
        > 5 and p["status"] == 1, GenParts)
    #    print GenLeptons
    GenJets = deltaRCleaning(GenJets, GenLeptons, dRCut=0.4)

    GenPhotons = filter(
        lambda p: p["pdgId"] == 22 and p["pt"] > 10 and p["status"] == 1,
        GenParts)
    GenPhotons.sort(key=lambda p: -p['pt'])
    GenPhotons = deltaRCleaning(GenPhotons, GenLeptons, dRCut=0.4)
    GenJets = deltaRCleaning(GenJets, GenPhotons, dRCut=0.05)

    #    print GenPhotons, GenJets
    if GenPhotons and GenJets:
        event.genJetDR = min(deltaR(GenPhotons[0], j) for j in GenJets)
    else:
        event.genJetDR = -1
Example #3
0
def getMinDR(event, sample):
    GenJets = getCollection(event, 'GenJet',
                            ["pt", "eta", "phi", "pdgId", "matchBParton"],
                            'nGenJet')
    trueBjets = list(filter(lambda j: j['matchBParton'], GenJets))
    trueNonBjets = list(filter(lambda j: not j['matchBParton'], GenJets))

    GenPromptLeptons = getCollection(event, 'GenLepton', ["pt", "eta", "phi"],
                                     'nGenLepton')
    GenMGPhotonsAll = getCollection(
        event, 'GenMGPhoton', ["pt", "eta", "phi", "status", "motherPdgId"],
        'nGenMGPhoton')

    if "nPhoton" in args.selection:
        GenMGPhotonsAll = list(
            filter(lambda g: g["status"] > 1, GenMGPhotonsAll))

    event.minDRaa = min([
        deltaR(g1, g2) for i, g1 in enumerate(GenMGPhotonsAll[:-1])
        for g2 in GenMGPhotonsAll[i + 1:]
    ] + [999])
    event.minDRaj = min(
        [deltaR(a, j) for a in GenMGPhotonsAll for j in trueNonBjets] + [999])
    event.minDRab = min(
        [deltaR(a, b) for a in GenMGPhotonsAll for b in trueBjets] + [999])
    event.minDRal = min(
        [deltaR(l, a) for l in GenPromptLeptons
         for a in GenMGPhotonsAll] + [999])
Example #4
0
def sequenceExample(event, sample):
    global taus, notaus, total, wtaus, wnotaus, wtotal, mcWeight
    # get all photons
    gPart = getCollection(event, 'GenPart',
                          ["pt", "eta", "phi", "pdgId", "genPartIdxMother"],
                          'nGenPart')
    genLep = filter(lambda g: g["pt"] >= 15 and abs(g["eta"]) <= 2.4, gPart)
    genE = filter(lambda g: abs(g["pdgId"]) == 11, genLep)
    genMu = filter(lambda g: abs(g["pdgId"]) == 13, genLep)

    recoLep = getCollection(
        event, 'Lepton',
        ["pt", "eta", "phi", "pdgId", "isTracker", "isGlobal", "isPFcand", ""],
        'nLepton')

    selection = "overlapRemoval==1&&pTStitching==1&&Sum$(%s&&GenPart_pt>=15&&abs(GenPart_eta)<=2.4)==1" % lep
    lep = {
        "pt": event.GenLeptonCMSUnfold0_pt,
        "eta": event.GenLeptonCMSUnfold0_eta,
        "phi": event.GenLeptonCMSUnfold0_phi,
        "pdgId": event.GenLeptonCMSUnfold0_pdgId,
        "genPartIdxMother": event.GenLeptonCMSUnfold0_genPartIdxMother
    }
    ids = map(abs, getParentIds(lep, gPart))
    if 15 in ids:
        taus += 1
        wtaus += mcWeight(event, sample)
    else:
        notaus += 1
        wnotaus += mcWeight(event, sample)
    total += 1
    wtotal += mcWeight(event, sample)
Example #5
0
def sequenceExample( event, sample ):

    # get all photons
    allPhotons  = getCollection( event, 'Photon', ["pt/F","eta/F","phi/F"], 'nPhoton' )

    # additional filters according to your needs
    highPTPhotons = filter( lambda p: p['pt'] > 100, allPhotons )

    # this variable will be added for each event and can be plotted afterwards (event.yourVariable =)
    event.nHighPTPhotons = len(highPTPhotons)
Example #6
0
def mvaPhotons(event, sample):
    allPhotons = getCollection(event, 'Photon', photonVarList, 'nPhoton')
    allPhotons.sort(key=lambda j: -j['pt'])
    mvaPhotons = list(
        filter(lambda g: recoPhotonSel_mva(g) and g["mvaID_WP90"], allPhotons)
        + [None])[0]

    if mvaPhotons:
        for var in photonVarList:
            setattr(event, "PhotonMVA0_" + var, mvaPhotons[var])
Example #7
0
def calcISRPhotons(event, sample):
    if sample.name == "data": return

    gPart = getCollection(event, 'GenPart', genVarList, 'nGenPart')
    # get Ws from top or MG matrix element (from gluon)
    GenW = filter(
        lambda l: abs(l['pdgId']) == 24 and l["genPartIdxMother"] >= 0 and l[
            "genPartIdxMother"] < len(gPart), gPart)
    GenW = filter(
        lambda l: abs(gPart[l["genPartIdxMother"]]["pdgId"]) in [6, 21], GenW)
    # e/mu/tau with W mother
    GenLepWMother = filter(
        lambda l: abs(l['pdgId']) in [11, 13, 15] and l["genPartIdxMother"] >=
        0 and l["genPartIdxMother"] < len(gPart), gPart)
    GenLepWMother = filter(
        lambda l: abs(gPart[l["genPartIdxMother"]]["pdgId"]) == 24,
        GenLepWMother)
    # e/mu with tau mother and tau has a W in parentsList
    GenLepTauMother = filter(
        lambda l: abs(l['pdgId']) in [11, 13] and l["genPartIdxMother"] >= 0
        and l["genPartIdxMother"] < len(gPart), gPart)
    GenLepTauMother = filter(
        lambda l: abs(gPart[l["genPartIdxMother"]]["pdgId"]) == 15 and 24 in
        map(abs, getParentIds(gPart[l["genPartIdxMother"]], gPart)),
        GenLepTauMother)

    GenElectron = filter(lambda l: abs(l['pdgId']) == 11, GenLepWMother)
    GenMuon = filter(lambda l: abs(l['pdgId']) == 13, GenLepWMother)
    GenTau = filter(lambda l: abs(l['pdgId']) == 15, GenLepWMother)

    GenTauElectron = filter(lambda l: abs(l['pdgId']) == 11, GenLepTauMother)
    GenTauMuon = filter(lambda l: abs(l['pdgId']) == 13, GenLepTauMother)

    # can't find jets from W in gParts, so assume non-Leptonic W decays are hadronic W decays
    event.nGenWElectron = len(GenElectron)  # W -> e nu
    event.nGenWMuon = len(GenMuon)  # W -> mu nu
    event.nGenWTau = len(GenTau)  # W -> tau nu
    event.nGenW = len(GenW)  # all W from tops
    event.nGenWJets = len(GenW) - len(GenLepWMother)  # W -> q q
    event.nGenWTauElectron = len(GenTauElectron)  # W -> tau nu, tau -> e nu nu
    event.nGenWTauMuon = len(GenTauMuon)  # W -> tau nu, tau -> mu nu nu
    event.nGenWTauJets = len(GenTau) - len(
        GenLepTauMother)  # W -> tau nu, tau -> q q nu

    event.cat_gen2L = int((event.nGenWElectron + event.nGenWMuon +
                           event.nGenWTau) == 2)
    event.cat_genHad = int((event.nGenWElectron + event.nGenWMuon +
                            event.nGenWTau) == 0)
    event.cat_genL = int((event.nGenWElectron + event.nGenWMuon) == 1
                         and not event.cat_gen2L)
    event.cat_genTau_l = int(event.nGenWTau == 1 and event.nGenWTauJets == 0
                             and not event.cat_gen2L)
    event.cat_genTau_q = int(event.nGenWTau == 1 and event.nGenWTauJets == 1
                             and not event.cat_gen2L)
Example #8
0
def clean_Jets(event, sample):
    allJets = getCollection(event, 'Jet', jetVariableNames, 'nJet')
    allJets.sort(key=lambda j: -j['pt'])
    allJets = list(filter(lambda j: j['cleanmask'] and j['pt'] > 30, allJets))

    looseJets = getCollection(event, 'JetGood', jetVariableNames, 'nJetGood')
    looseJets.sort(key=lambda j: -j['pt'])
    looseJets = list(filter(lambda j: j['cleanmask'], looseJets))

    event.nJet = len(allJets)
    event.nJetGood = len(looseJets)
    event.nBTag = len(
        filter(lambda j: isBJet(j, tagger='DeepCSV', year=2017), allJets))
    event.nBTagGood = len(
        filter(lambda j: isBJet(j, tagger='DeepCSV', year=2017), looseJets))

    for var in jetVariableNames:
        for i, jet in enumerate(allJets[:2]):
            getattr(event, "Jet_" + var)[i] = jet[var]
        for i, jet in enumerate(looseJets[:2]):
            getattr(event, "JetGood_" + var)[i] = jet[var]
Example #9
0
def sequenceExample( event, sample ):
    global taus, notaus, total, wtaus, wnotaus, wtotal, mcWeight
    # get all photons
    gPart  = getCollection( event, 'GenPart', ["pt","eta","phi","pdgId","genPartIdxMother"], 'nGenPart' )
    lep = {"pt":event.GenLeptonCMSUnfold0_pt,"eta":event.GenLeptonCMSUnfold0_eta,"phi":event.GenLeptonCMSUnfold0_phi,"pdgId":event.GenLeptonCMSUnfold0_pdgId, "genPartIdxMother":event.GenLeptonCMSUnfold0_genPartIdxMother}
    ids = map( abs, getParentIds( lep, gPart ) )
    if 15 in ids:
        taus += 1
        wtaus += mcWeight( event, sample )
    else:
        notaus += 1
        wnotaus += mcWeight( event, sample )
    total +=1
    wtotal += mcWeight( event, sample )
Example #10
0
def checkParentList(event, sample):
    if sample.name == "data": return

    reco = {
        var: getattr(event, photonVariable + "_" + var)
        for var in photonVarList
    }
    gPart = getCollection(event, 'GenPart', genVarList, 'nGenPart')
    cat = getAdvancedPhotonCategory(reco,
                                    gPart,
                                    coneSize=0.2,
                                    ptCut=5.,
                                    excludedPdgIds=[12, -12, 14, -14, 16, -16])
    setattr(event, photonVariable + "_photonCat", cat)
Example #11
0
def getjetswoetacut(event, sample):
    #jets einlesen
    alljets = getCollection(event, 'Jet_*', jetVarNames, 'nJet')
    electrons = getCollection(event, 'Electron_*', jetVarNames, 'nElectron')
    muons = getCollection(event, 'Muon_*', jetVarNames, 'nMuon')
    leptons = electrons + muons
    #clean against good leptons
    clean_jets, _ = cleanJetsAndLeptons(alljets, leptons)

    jets = filter(lambda j: j['pt'] > 30, clean_jets)

    # Filling jets
    maxNJet = 100
    store_jets = jets  #if not options.keepAllJets else soft_jets + jets
    store_jets = store_jets[:maxNJet]
    store_jets.sort(key=lambda j: -j['pt'])
    event.nJetGood = len(store_jets)

    for iJet, jet in enumerate(store_jets):
        event.JetGoodwoetacut_index[iJet] = jet['index']
        for b in jetVarNames:
            getattr(event, "JetGoodwoetacut_" + b)[iJet] = jet[b]
        event.abseta[iJet] = abs(jet['eta'])
        getattr(event, "abseta")[iJet]
Example #12
0
def makePhotons(event, sample):
    allPhotons = getCollection(event, 'Photon', photonVarList, 'nPhoton')
    allPhotons.sort(key=lambda j: -j['pt'])
    mediumPhotonsNoSieie = list(
        filter(lambda g: recoPhotonSel_medium_noSieie(g), allPhotons) +
        [None])[0]

    for var in photonVarList:
        if mediumPhotonsNoSieie:
            setattr(event, "PhotonNoSieie0_" + var, mediumPhotonsNoSieie[var])
        else:
            try:
                setattr(event, "PhotonNoSieie0_" + var, float("nan"))
            except:
                setattr(event, "PhotonNoSieie0_" + var, 0)
Example #13
0
def getGenJets(event, sample):
    GenJet = getCollection(event, 'GenJet', ["pt"], 'nGenJet')

    GenJet.sort(key=lambda l: -l["pt"])
    GenJet_ptgt30 = filter(lambda j: j["pt"] >= 30, GenJet)
    GenJet_ptlt30 = filter(lambda j: j["pt"] < 30, GenJet)

    event.nGenJet_ptgt30 = len(GenJet_ptgt30)
    event.nGenJet_ptlt30 = len(GenJet_ptlt30)
    event.nGenJet = len(GenJet)

    event.GenJet0_pt = GenJet_ptgt30[0]["pt"] if len(
        GenJet_ptgt30) > 0 else -999
    event.GenJet1_pt = GenJet_ptgt30[1]["pt"] if len(
        GenJet_ptgt30) > 1 else -999

    event.ht_ptgt30 = sum([j["pt"] for j in GenJet_ptgt30])
    event.ht_ptlt30 = sum([j["pt"] for j in GenJet_ptlt30])
    event.ht = sum([j["pt"] for j in GenJet])

    del GenJet
Example #14
0
def getGenLeps(event, sample):
    gPart = getCollection(event, 'GenPart',
                          ["pt", "pdgId", "genPartIdxMother"], 'nGenPart')
    GenPhoton = filter(
        lambda l: abs(l['pdgId']) == 22 and l["genPartIdxMother"] >= 0 and l[
            "genPartIdxMother"] < len(gPart), gPart)
    GenPhoton = filter(
        lambda l: not 11 in map(
            abs, getParentIds(gPart[l["genPartIdxMother"]], gPart)) and not 13
        in map(abs, getParentIds(gPart[l["genPartIdxMother"]], gPart)),
        GenPhoton)

    GenLep = filter(
        lambda l: abs(l['pdgId']) in [11, 13] and l["genPartIdxMother"] >= 0
        and l["genPartIdxMother"] < len(gPart), gPart)
    GenLep = filter(
        lambda l: not 15 in map(
            abs, getParentIds(gPart[l["genPartIdxMother"]], gPart)), GenLep)
    GenLep = filter(lambda l: l["pt"] > 2, GenLep)
    GenLep.sort(key=lambda l: -l["pt"])

    event.weight = len(GenLep) > 1  # and len(GenPhoton) > 1
    event.genL0_pt = GenLep[0]["pt"] if len(GenLep) > 0 else -999
    event.genL1_pt = GenLep[1]["pt"] if len(GenLep) > 1 else -999