예제 #1
0
def makeBoostedJetPLots(self, sel, jets, uname):
    maxJet = 1
    binScaling = 1
    plots = []
    for i in range(maxJet):
        plots.append(
            Plot.make1D(f"{uname}_boostedjet{i+1}_pt",
                        jets[i].pt,
                        sel,
                        EqB(60, 170., 800.),
                        title=f"{utils.getCounter(i+1)} jet p_{{T}} [GeV]",
                        plotopts=utils.getOpts(uname)))
        plots.append(
            Plot.make1D(f"{uname}_boostedjet{i+1}_eta",
                        jets[i].eta,
                        sel,
                        EqB(50 // binScaling, -2.4, 2.4),
                        title=f"{utils.getCounter(i+1)} jet eta",
                        plotopts=utils.getOpts(uname)))
        plots.append(
            Plot.make1D(f"{uname}_boostedjet{i+1}_phi",
                        jets[i].phi,
                        sel,
                        EqB(50 // binScaling, -3.1416, 3.1416),
                        title=f"{utils.getCounter(i+1)} jet phi",
                        plotopts=utils.getOpts(uname)))
        plots.append(
            Plot.make1D(f"{uname}_boostedjet{i+1}_mass",
                        jets[i].phi,
                        sel,
                        EqB(50 // binScaling, -3.1416, 3.1416),
                        title=f"{utils.getCounter(i+1)} jet mass [GeV]",
                        plotopts=utils.getOpts(uname)))

    return plots
def makeJetmultiplictyPlots(selection, jets, suffix, uname, ForBeauty=False):
    binScaling = 1
    plots = []
    plots.append(
        Plot.make1D(f"{uname}_%s_Jet_mulmtiplicity" % suffix,
                    op.rng_len(jets),
                    selection,
                    EqBin(10, 0., 10.),
                    title="Jet mulmtiplicity",
                    plotopts=utils.getOpts(uname, **{"log-y": True})))
    if ForBeauty:
        wp = suffix.split('_')[-1]
        cut = suffix.replace(wp, '')
        print(wp, cut)
        for key, sel in selection.items():
            tagger = key.replace(wp, "")
            bjets = safeget(jets, tagger, wp)
            plots.append(
                Plot.make1D(f"{uname}_%s_%s%s_Jet_mulmtiplicity" %
                            (cut, tagger, wp),
                            op.rng_len(bjets),
                            sel,
                            EqBin(10, 0., 10.),
                            title="Jet mulmtiplicity",
                            plotopts=utils.getOpts(uname, **{"log-y": True})))

    return plots
def make2DMAPS(sel, jets, suffix, uname):
    plots = []
    plots.append(
        Plot.make2D(
            f"{uname}_{suffix}_jetETA_vs_Phi",
            (op.map(jets, lambda j: j.eta), op.map(jets, lambda j: j.phi)),
            sel, (EqBin(50, -2.5, 2.5), EqBin(50, -2.5, 2.5)),
            title=" Eta vs #phi",
            plotopts=utils.getOpts(uname, **{"log-y": True})))
    #plots.append( Plot.make2D(f"{uname}_{suffix}_jetPT_vs_ETA",(op.map(jets, lambda j : j.pt), op.map(jets, lambda j : j.eta)), sel,
    #    (EqBin(50, 30., 600.), EqBin(50,  -2.5, 2.5)), title=" p_{T} vs Eta",
    #    plotopts=utils.getOpts(uname, **{"log-y": True})))
    lowerPtBinEdges = [30, 50, 70, 100, 140, 200, 300, 600]
    for i in range(len(lowerPtBinEdges) - 1):
        ptBin = str(lowerPtBinEdges[i]) + "to" + str(lowerPtBinEdges[i + 1])
        plots.append(
            Plot.make2D(
                f"{uname}_{suffix}_jetPT_vs_ETA_ptBin{ptBin}",
                (op.map(jets, lambda j: j.pt), op.map(jets, lambda j: j.eta)),
                sel, (EqBin(50, lowerPtBinEdges[i],
                            lowerPtBinEdges[i + 1]), EqBin(50, -2.5, 2.5)),
                title=" p_{T} vs Eta",
                plotopts=utils.getOpts(uname, **{"log-y": True})))

    return plots
def makeDiscriminatorPlots(sel, bjets, wp, btaggingWPs, suffix, cut, uname,
                           era):
    plots = []
    for key in sel.keys():

        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)
        idx = (0 if wp == "L" else (1 if wp == "M" else 2))
        bin0 = btaggingWPs[tagger][era][idx]
        for i in range(2):
            if tagger == "DeepFlavour":
                plots.append(
                    Plot.make1D(
                        f"{uname}_{suffix}_jet{i+1}_{cut}_discr_deepFlav{wp}",
                        bjets_[i].btagDeepFlavB,
                        safeget(sel, "DeepFlavour{0}".format(wp)),
                        EqBin(60, bin0, 1.),
                        title="DeepFlavourBDisc {0}".format(wp),
                        plotopts=utils.getOpts(uname, **{"log-y": True})))
            else:
                plots.append(
                    Plot.make1D(
                        f"{uname}_{suffix}_jet{i+1}_{cut}_discr_deepCSV{wp}",
                        bjets_[i].btagDeepB,
                        safeget(sel, "DeepCSV{0}".format(wp)),
                        EqBin(60, bin0, 1.),
                        title="DeepCSVBDisc {0}".format(wp),
                        plotopts=utils.getOpts(uname, **{"log-y": True})))
        # Let's do L, M, T discr in one plot
    return plots
예제 #5
0
def MakeEllipsesPLots(self, sel, bjets, lepton, wp, uname, suffix):
    plots = []
    binScaling = 1
    for key in sel.keys():

        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)

        plots.append(
            Plot.make1D(
                "jj_M_{0}_{1}_hZA_lljj_{2}_mll_and_met_cut".format(
                    suffix, uname, key),
                op.invariant_mass(bjets_[0].p4, bjets_[1].p4),
                sel.get(key),
                EqB(60 // binScaling, 0., 1000.),
                title="invariant mass of two b-tagged jets wrt {0} Discriminator"
                .format(suffix, key),
                xTitle="mjj {0} {1} [GeV]".format(suffix, key),
                plotopts=utils.getOpts(uname, **{"log-y": False})))

        plots.append(
            Plot.make1D(
                "lljj_M_{0}_{1}_hZA_lljj_{2}_mll_and_met_cut".format(
                    suffix, uname, key), (lepton[0].p4 + lepton[1].p4 +
                                          bjets_[0].p4 + bjets_[1].p4).M(),
                sel.get(key),
                EqB(60 // binScaling, 0., 1000.),
                title=
                "invariant mass of 2 leptons two b-tagged jets wrt {0} Discriminator"
                .format(suffix, key),
                xTitle="mlljj {0} {1} [GeV]".format(suffix, key),
                plotopts=utils.getOpts(uname, **{"log-y": False})))

        plots.append(
            Plot.make2D(
                "Mjj_vs_Mlljj_{0}_{1}_hZA_lljj_{2}_mll_and_met_cut".format(
                    suffix, uname,
                    key), (op.invariant_mass(bjets_[0].p4, bjets_[1].p4),
                           (lepton[0].p4 + lepton[1].p4 + bjets_[0].p4 +
                            bjets_[1].p4).M()),
                sel.get(key), (EqB(60 // binScaling, 0.,
                                   1000.), EqB(60 // binScaling, 0., 1000.)),
                title="mlljj vs mjj invariant mass {0} wrt {1} Discriminator".
                format(suffix, key),
                plotopts=utils.getOpts(uname, **{"log-y": False})))

        plots.append(
            Plot.make1D(
                "ll_M_{0}_{1}_hZA_lljj_{2}_mll_and_met_cut".format(
                    suffix, uname, key),
                op.invariant_mass(lepton[0].p4, lepton[1].p4),
                sel.get(key),
                EqB(60 // binScaling, 70., 110.),
                title=" dilepton invariant mass {0} wrt {1} Discriminator".
                format(suffix, key),
                xTitle="mll {0} {1} [GeV]".format(suffix, key),
                plotopts=utils.getOpts(uname)))
    return plots
def makeBJetPlots(selections, bjets, wp, suffix, cut, uname):

    plots = []
    binScaling = 1
    for key, sel in selections.items():
        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)
        for i in range(2):
            plots.append(
                Plot.make1D(
                    f"{uname}_{suffix}_bJet{i+1}_{cut}_pT_{key}".format(
                        key=key),
                    bjets_[i].pt,
                    sel,
                    EqBin(60 // binScaling, 30., 730. - max(2, i) * 100),
                    title=f"{utils.getCounter(i+1)} bJet pT [GeV]",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))

            plots.append(
                Plot.make1D(
                    f"{uname}_{suffix}_bJet{i+1}_{cut}_eta_{key}".format(
                        key=key),
                    bjets_[i].eta,
                    sel,
                    EqBin(50 // binScaling, -2.4, 2.4),
                    title=f"{utils.getCounter(i+1)} bJet eta",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))

            plots.append(
                Plot.make1D(
                    f"{uname}_{suffix}_bJet{i+1}_{cut}_phi_{key}".format(
                        key=key),
                    bjets_[i].phi,
                    sel,
                    EqBin(50 // binScaling, -3.1416, 3.1416),
                    title=f"{utils.getCounter(i+1)} bJet phi",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))

        jj_p4 = bjets_[0].p4 + bjets_[1].p4

        plots += [
            Plot.make1D(f"{uname}_{suffix}{cut}_bb{nm}_{key}",
                        var,
                        sel,
                        binning,
                        title=f"di-bjet {title}",
                        plotopts=utils.getOpts(uname))
            for nm, (var, binning, title) in {
                "PT": (jj_p4.Pt(), EqBin(60 // binScaling, 0., 450.),
                       "P_{T} [GeV]"),
                "Phi": (jj_p4.Phi(), EqBin(50 // binScaling, -3.1416, 3.1416),
                        "#phi"),
                "Eta": (jj_p4.Eta(), EqBin(50 // binScaling, -3., 3.), "Eta")
            }.items()
        ]

    return plots
예제 #7
0
def makeControlPlotsForZpic(self, sel, lepton, uname):
    plots = []
    for i in range(2):
        if "mu" in uname:
            flav = "Muon"
        if "el" in uname:
            flav = "Electron"

        plots.append(
            Plot.make1D(f"{uname}_lep{i+1}_pt",
                        lepton[i].pt,
                        sel,
                        EqB(60 // binScaling, 30., 530.),
                        title="%s p_{T} [GeV]" % flav,
                        plotopts=utils.getOpts(uname)))
        plots.append(
            Plot.make1D(f"{uname}_lep{i+1}_eta",
                        lepton[i].eta,
                        sel,
                        EqB(50 // binScaling, -2.4, 2.4),
                        title="%s eta" % flav,
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D(f"{uname}_lep{i+1}_phi",
                        lepton[i].phi,
                        sel,
                        EqB(50 // binScaling, -3.1416, 3.1416),
                        title="%s phi" % flav,
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

        plots.append(
            Plot.make1D("{0}_mll".format(uname),
                        op.invariant_mass(lepton[0].p4, lepton[1].p4),
                        sel,
                        EqB(60, 70., 110.),
                        title="mll [GeV]",
                        plotopts=utils.getOpts(uname)))
        plots.append(
            Plot.make1D("{0}_llpT".format(uname),
                        (dilepton[0].p4 + dilepton[1].p4).Pt(),
                        sel,
                        EqB(60, 0., 450.),
                        title="dilepton P_{T} [GeV]",
                        plotopts=utils.getOpts(uname)))
    # FIXME
    #plots.append(Plot.make1D("{0}_nVX".format(uname),
    #            t.PV.npvs, sel,
    #            EqB(10, 0., 60.),
    #            title="Distrubtion of the number of the reconstructed vertices",
    #            xTitle="number of reconstructed vertices "))
    #plots.append(Plot.make2D("{0}_Electron_dzdxy".format(uname),
    #            (lepton[0].dz ,lepton[0].dxy), sel,
    #            (EqB(10, 0., 2.),
    #            EqB(10, 0., 2.)) ,
    #            title="Electron in Barrel/EndCAP region" ))
    return plots
예제 #8
0
def MakeExtraMETPlots(self, sel, lepton, met, uname, suffix):
    binScaling = 1
    plots = []
    for key in sel.keys():

        plots.append(
            Plot.make1D("{0}_{1}_{2}_MET_pt".format(uname, key, suffix),
                        met.pt,
                        sel.get(key),
                        EqB(60 // binScaling, 0., 600.),
                        title="MET p_{T} [GeV]",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D("{0}_{1}_{2}_MET_phi".format(uname, key, suffix),
                        met.phi,
                        sel.get(key),
                        EqB(60 // binScaling, -3.1416, 3.1416),
                        title="MET #phi",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D("{0}_{1}_{2}_MET_eta".format(uname, key, suffix),
                        met.phi,
                        sel.get(key),
                        EqB(60 // binScaling, -2.4, 2.4),
                        title="MET #eta",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

        for i in range(2):
            plots.append(
                Plot.make1D(
                    f"{uname}_{key}_{suffix}_MET_lep{i+1}_deltaPhi".format(
                        uname=uname, key=key, suffix=suffix),
                    op.Phi_mpi_pi(lepton[i].phi - met.phi),
                    sel.get(key),
                    EqB(60 // binScaling, -3.1416, 3.1416),
                    title="#Delta #phi (lepton, MET)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))

            MT = op.sqrt(
                2. * met.pt * lepton[i].p4.Pt() *
                (1. - op.cos(op.Phi_mpi_pi(met.phi - lepton[i].p4.Phi()))))
            plots.append(
                Plot.make1D(f"{uname}_{key}_{suffix}_MET_MT_lep{i+1}".format(
                    uname=uname, key=key, suffix=suffix),
                            MT,
                            sel.get(key),
                            EqB(60 // binScaling, 0., 600.),
                            title="Lepton M_{T} [GeV]",
                            plotopts=utils.getOpts(uname, **{"log-y": False})))
    return plots
def makeJetPlots(sel, jets, suffix, uname):
    maxJet = 2
    binScaling = 1
    plots = []
    for i in range(maxJet):
        plots.append(
            Plot.make1D(f"{uname}_{suffix}_jet{i+1}_pt",
                        jets[i].pt,
                        sel,
                        EqBin(60 // binScaling, 30., 730. - max(2, i) * 100),
                        title=f"{utils.getCounter(i+1)} jet p_{{T}} (GeV)",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D(f"{uname}_{suffix}_jet{i+1}_eta",
                        jets[i].eta,
                        sel,
                        EqBin(50 // binScaling, -2.4, 2.4),
                        title=f"{utils.getCounter(i+1)} jet eta",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D(f"{uname}_{suffix}_jet{i+1}_phi",
                        jets[i].phi,
                        sel,
                        EqBin(50 // binScaling, -3.1416, 3.1416),
                        title=f"{utils.getCounter(i+1)} jet #phi",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

    jj_p4 = jets[0].p4 + jets[1].p4

    plots += [
        Plot.make1D("{0}_{1}_jj{nm}".format(uname, suffix, nm=nm),
                    var,
                    sel,
                    binning,
                    title=f"di-jets {title}",
                    plotopts=utils.getOpts(uname))
        for nm, (var, binning, title) in {
            "PT": (jj_p4.Pt(), EqBin(60 // binScaling, 0., 450.),
                   "P_{T} [GeV]"),
            "Phi": (jj_p4.Phi(), EqBin(50 // binScaling, -3.1416, 3.1416),
                    "#phi"),
            "Eta": (jj_p4.Eta(), EqBin(50 // binScaling, -3., 3.), "Eta")
        }.items()
    ]

    return plots
def makePrimaryANDSecondaryVerticesPlots(sel, t, uname):
    binScaling = 1
    plots = []
    sv_mass = op.map(t.SV, lambda sv: sv.mass)
    sv_eta = op.map(t.SV, lambda sv: sv.eta)
    sv_phi = op.map(t.SV, lambda sv: sv.phi)
    sv_pt = op.map(t.SV, lambda sv: sv.pt)

    plots.append(
        Plot.make1D(f"{uname}_number_primary_reconstructed_vertices",
                    t.PV.npvsGood,
                    sel,
                    EqBin(50 // binScaling, 0., 60.),
                    title="reconstructed vertices",
                    plotopts=utils.getOpts(uname, **{"log-y": True})))
    plots.append(
        Plot.make1D(f"{uname}_secondary_vertices_mass",
                    sv_mass,
                    sel,
                    EqBin(50 // binScaling, 0., 450.),
                    title="SV mass",
                    plotopts=utils.getOpts(uname, **{"log-y": True})))
    plots.append(
        Plot.make1D(f"{uname}_secondary_vertices_eta",
                    sv_eta,
                    sel,
                    EqBin(50 // binScaling, -2.4, 2.4),
                    title="SV eta",
                    plotopts=utils.getOpts(uname, **{"log-y": True})))
    plots.append(
        Plot.make1D(f"{uname}_secondary_vertices_phi",
                    sv_phi,
                    sel,
                    EqBin(50 // binScaling, -3.1416, 3.1416),
                    title="SV #phi",
                    plotopts=utils.getOpts(uname, **{"log-y": True})))
    plots.append(
        Plot.make1D(f"{uname}_secondary_vertices_pt",
                    sv_pt,
                    sel,
                    EqBin(50 // binScaling, 0., 450.),
                    title="SV p_{T} [GeV]",
                    plotopts=utils.getOpts(uname, **{"log-y": True})))

    return plots
예제 #11
0
def makeResolvedBJetPlots(self, sel, bjets, wp, uname):
    plots = []
    binScaling = 1
    for key in sel.keys():

        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)

        plots.append(
            Plot.make1D("{0}_nBJets_{1}".format(uname, key),
                        op.rng_len(bjets_),
                        sel.get(key),
                        EqB(5, 2., 6.),
                        xTitle="Jets multiplicty {0}".format(key),
                        plotopts=utils.getOpts(uname)))
        for i in range(1):
            plots.append(
                Plot.make1D(
                    f"{uname}_bjet{i+1}_pT_{key}",
                    bjets_[i].pt,
                    sel.get(key),
                    EqB(60, 0., 800.),
                    title=
                    f"{utils.getCounter(i+1)}-highest bjet pT {key} [GeV]",
                    plotopts=utils.getOpts(uname)))

            plots.append(
                Plot.make1D(
                    f"{uname}_bjet{i+1}_eta_{key}",
                    bjets_[i].eta,
                    sel.get(key),
                    EqB(50 // binScaling, -2.4, 2.4),
                    title=f"{utils.getCounter(i+1)}-highest bjet eta {key}",
                    plotopts=utils.getOpts(uname)))

            plots.append(
                Plot.make1D(
                    f"{uname}_bjet{i+1}_eta_{key}",
                    bjets_[i].phi,
                    sel.get(key),
                    EqB(50 // binScaling, -3.1416, 3.1416),
                    title=f"{utils.getCounter(i+1)}-highest bjet phi {key}",
                    plotopts=utils.getOpts(uname)))
    return plots
예제 #12
0
def makeControlPlotsForFinalSel(self, sel, bjets, dilepton, uname):
    plots = []
    binScaling = 1
    for key in sel.keys():

        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)

        plots.append(
            Plot.make1D("{0}_TwoBtaggedJets_pT_{1}".format(uname, key),
                        (bjets_[0].p4 + bjets_[1].p4).Pt(),
                        sel.get(key),
                        EqB(60, 170., 800.),
                        title="di-bjet P_{T} [GeV]",
                        plotopts=utils.getOpts(uname)))

        plots.append(
            Plot.make1D("{0}_mlljj_btagged_{1}".format(uname, key),
                        (lepton[0].p4 + lepton[1].p4 + bjets_[0].p4 +
                         bjets_[1].p4).M(),
                        sel.get(key),
                        EqB(60, 170., 1000.),
                        title="mlljj [GeV]",
                        plotopts=utils.getOpts(uname)))

        plots.append(
            Plot.make1D("{0}_mjj_btagged_{1}".format(uname, key),
                        op.invariant_mass(bjets_[0].p4 + bjets_[1].p4),
                        sel.get(key),
                        EqB(60, 170., 800.),
                        title="mjj [GeV]",
                        plotopts=utils.getOpts(uname)))

        plots.append(
            Plot.make2D("{0}_mlljjvsmjj_btagged_{1}".format(uname, key),
                        (op.invariant_mass(bjets_[0].p4 + bjets_[1].p4),
                         (lepton[0].p4 + lepton[1].p4 + bjets_[0].p4 +
                          bjets_[1].p4).M()),
                        sel.get(key),
                        (EqB(60, 170., 1000.), EqB(60, 170., 1000.)),
                        title="mlljj vs mjj invariant mass [GeV]",
                        plotopts=utils.getOpts(uname)))
    return plots
def MakeEXTRAMETPlots(sel, corrmet, met, suffix, uname):
    plots = []
    binScaling = 1

    plots.append(
        Plot.make1D(f"{uname}_{suffix}_met_pT",
                    met.pt,
                    sel,
                    EqBin(60 // binScaling, 0., 600.),
                    title="MET p_{T} [GeV]",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))

    plots.append(
        Plot.make1D(f"{uname}_{suffix}_xycorrmet_pT",
                    corrmet.pt,
                    sel,
                    EqBin(60 // binScaling, 0., 600.),
                    title="corrMET p_{T} [GeV]",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))

    return plots
예제 #14
0
def makeBoostedJetPLots(self, sel, bjets, wp, uname):
    maxJet = 1
    binScaling = 1
    plots = []

    for key in sel.keys():
        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)

        for i in range(maxJet):
            plots.append(
                Plot.make1D(f"{uname}_boostedjet{i+1}_pt",
                            bjets_[i].pt,
                            sel,
                            EqB(60, 170., 800.),
                            title=f"{utils.getCounter(i+1)} jet p_{{T}} [GeV]",
                            plotopts=utils.getOpts(uname)))
            plots.append(
                Plot.make1D(f"{uname}_boostedjet{i+1}_eta",
                            bjets_[i].eta,
                            sel,
                            EqB(50 // binScaling, -2.4, 2.4),
                            title=f"{utils.getCounter(i+1)} jet eta",
                            plotopts=utils.getOpts(uname)))
            plots.append(
                Plot.make1D(f"{uname}_boostedjet{i+1}_phi",
                            bjets_[i].phi,
                            sel,
                            EqB(50 // binScaling, -3.1416, 3.1416),
                            title=f"{utils.getCounter(i+1)} jet phi",
                            plotopts=utils.getOpts(uname)))
            plots.append(
                Plot.make1D(f"{uname}_boostedjet{i+1}_mass",
                            bjets_[i].phi,
                            sel,
                            EqB(50 // binScaling, -3.1416, 3.1416),
                            title=f"{utils.getCounter(i+1)} jet mass [GeV]",
                            plotopts=utils.getOpts(uname)))

    return plots
예제 #15
0
def MakeMETPlots(self, sel, corrmet, met, uname, suffix):
    plots = []
    binScaling = 1
    for key in sel.keys():

        plots.append(
            Plot.make1D("met_pt_{0}_{1}_hZA_lljj_{2}".format(
                suffix, uname, key),
                        met.pt,
                        sel.get(key),
                        EqB(60 // binScaling, 0., 600.),
                        title="MET p_{T} [GeV]",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D("xycorrmet_pt_{0}_{1}_hZA_lljj_{2}".format(
                suffix, uname, key),
                        corrmet.pt,
                        sel.get(key),
                        EqB(60 // binScaling, 0., 600.),
                        title="corrMET p_{T} [GeV]",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
    return plots
def makeMETPlots(sel, leptons, met, corrMET, uname):
    binScaling = 1
    plots = []

    plots.append(
        Plot.make1D(f"{uname}_MET_pt",
                    met.pt,
                    sel,
                    EqBin(60 // binScaling, 0., 600.),
                    title="MET p_{T} [GeV]",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_MET_phi",
                    met.phi,
                    sel,
                    EqBin(60 // binScaling, -3.1416, 3.1416),
                    title="MET #phi",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    for i in range(2):
        plots.append(
            Plot.make1D(f"{uname}_MET_lep{i+1}_deltaPhi",
                        op.Phi_mpi_pi(leptons[i].phi - met.phi),
                        sel,
                        EqBin(60 // binScaling, -3.1416, 3.1416),
                        title="#Delta #phi (lepton, MET)",
                        plotopts=utils.getOpts(uname, **{"log-y": True})))

        MT = op.sqrt(
            2. * met.pt * leptons[i].p4.Pt() *
            (1. - op.cos(op.Phi_mpi_pi(met.phi - leptons[i].p4.Phi()))))
        plots.append(
            Plot.make1D(f"{uname}_MET_MT_lep{i+1}",
                        MT,
                        sel,
                        EqBin(60 // binScaling, 0., 600.),
                        title="Lepton M_{T} [GeV]",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

    return plots
def makeLeptonPlots(sel, leptons, suffix, uname):
    binScaling = 1
    plots = []

    for i in range(2):
        leptonptCut = (25. if i == 0 else (10. if uname[-1] == 'u' else
                                           (15. if uname[-1] == 'l' else
                                            (0.))))
        plots.append(
            Plot.make1D(f"{uname}_%s_lep{i+1}_pt" % suffix,
                        leptons[i].pt,
                        sel,
                        EqBin(60 // binScaling, leptonptCut, 530.),
                        title=f"{utils.getCounter(i+1)} Lepton pT [GeV]",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D(f"{uname}_%s_lep{i+1}_eta" % suffix,
                        leptons[i].eta,
                        sel,
                        EqBin(50 // binScaling, -2.4, 2.4),
                        title=f"{utils.getCounter(i+1)} Lepton eta",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D(f"{uname}_%s_lep{i+1}_phi" % suffix,
                        leptons[i].phi,
                        sel,
                        EqBin(50 // binScaling, -3.1416, 3.1416),
                        title=f"{utils.getCounter(i+1)} Lepton #phi",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

    plots.append(
        Plot.make1D(f"{uname}_llpT_%s" % (suffix),
                    (leptons[0].p4 + leptons[1].p4).Pt(),
                    sel,
                    EqBin(60 // binScaling, 0., 450.),
                    title="dilepton P_{T} [GeV]",
                    plotopts=utils.getOpts(uname)))
    plots.append(
        Plot.make1D(f"{uname}_llphi_%s" % (suffix),
                    (leptons[0].p4 + leptons[1].p4).Phi(),
                    sel,
                    EqBin(50 // binScaling, -3.1416, 3.1416),
                    title="dilepton #phi ",
                    plotopts=utils.getOpts(uname)))
    plots.append(
        Plot.make1D(f"{uname}_lleta_%s" % (suffix),
                    (leptons[0].p4 + leptons[1].p4).Eta(),
                    sel,
                    EqBin(50 // binScaling, -2.5, 2.5),
                    title="dilepton eta",
                    plotopts=utils.getOpts(uname)))

    return plots
예제 #18
0
def makeResolvedJetPlots(self, sel, jets, uname):
    maxJet = 2
    binScaling = 1
    plots = []
    for i in range(maxJet):
        plots.append(
            Plot.make1D(f"{uname}_jet{i+1}_pt",
                        jets[i].pt,
                        sel,
                        EqB(60 // binScaling, 30., 730. - max(4, i) * 100),
                        title=f"{utils.getCounter(i+1)} jet p_{{T}} [GeV]",
                        plotopts=utils.getOpts(uname)))
        plots.append(
            Plot.make1D(f"{uname}_jet{i+1}_eta",
                        jets[i].eta,
                        sel,
                        EqB(50 // binScaling, -2.4, 2.4),
                        title=f"{utils.getCounter(i+1)} jet eta",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))
        plots.append(
            Plot.make1D(f"{uname}_jet{i+1}_phi",
                        jets[i].phi,
                        sel,
                        EqB(50 // binScaling, -3.1416, 3.1416),
                        title=f"{utils.getCounter(i+1)} jet phi",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

    plots.append(
        Plot.make1D(f"{uname}_jet_DR",
                    op.deltaR(jets[0].p4, jets[1].p4),
                    sel,
                    EqB(50, 0.3, 3.),
                    title="Jets DR",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_jet_M",
                    op.invariant_mass(jets[0].p4, jets[1].p4),
                    sel,
                    EqB(60, 0., 400.),
                    title="dijets invariant mass [GeV]",
                    plotopts=utils.getOpts(uname)))
    plots.append(
        Plot.make1D(f"{uname}_jet_pT", (jets[0].p4 + jets[1].p4).Pt(),
                    sel,
                    EqB(60, 0., 600.),
                    title=" dijets p_{T} [GeV]",
                    plotopts=utils.getOpts(uname)))
    return plots
def makedeltaRPlots(sel, jets, leptons, suffix, uname):
    plots = []
    plots.append(
        Plot.make1D(f"{uname}_{suffix}_jet1jet2_deltaR",
                    op.deltaR(jets[0].p4, jets[1].p4),
                    sel,
                    EqBin(50, 0., 8.),
                    title="#Delta R (leading jet, sub-leading jet)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_{suffix}_jet1lep1_deltaR",
                    op.deltaR(jets[0].p4, leptons[0].p4),
                    sel,
                    EqBin(50, 0., 8.),
                    title="#Delta R (leading jet, leading lepton)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_{suffix}_jet1lep2_deltaR",
                    op.deltaR(jets[0].p4, leptons[1].p4),
                    sel,
                    EqBin(50, 0., 8.),
                    title="#Delta R (leading jet, sub-leading lepton)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_{suffix}_jet2lep1_deltaR",
                    op.deltaR(jets[1].p4, leptons[0].p4),
                    sel,
                    EqBin(50, 0., 8.),
                    title="#Delta R (sub-leading jet, leading lepton)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_{suffix}_jet2lep2_deltaR",
                    op.deltaR(jets[1].p4, leptons[1].p4),
                    sel,
                    EqBin(50, 0., 8.),
                    title="#Delta R (leading jet, sub-leading lepton)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    plots.append(
        Plot.make1D(f"{uname}_{suffix}_lep1lep2_deltaR",
                    op.deltaR(leptons[0].p4, leptons[1].p4),
                    sel,
                    EqBin(50, 0., 8.),
                    title="#Delta R (leading lepton, sub-leading lepton)",
                    plotopts=utils.getOpts(uname, **{"log-y": False})))
    return plots
def makehistosforTTbarEstimation(selections, ll, bjets, wp, met, suffix,
                                 uname):
    plots = []
    for key, sel in selections.items():
        tagger = key.replace(wp, "")
        bjets_ = safeget(bjets, tagger, wp)
        bb = bjets[key.replace(wp, "")][wp]
        plots += [
            Plot.make1D(
                f"{nm}_{uname}_{suffix}_jets_{tagger}_btag{wp}_mll_and_{met}",
                llbbVar,
                sel,
                binning,
                title=title,
                plotopts=utils.getOpts(uname))
            for nm, (llbbVar, binning, title) in {
                "jj_M": (op.invariant_mass(bb[0].p4 + bb[1].p4),
                         EqBin(40, 10., 1000.), "Mjj [GeV]"),
                "lljj_M": ((ll[0].p4 + ll[1].p4 + bb[0].p4 + bb[1].p4).M(),
                           EqBin(50, 100., 1500.), "Mlljj [GeV]"),
                "ll_M": (op.invariant_mass(ll[0].p4 + ll[1].p4),
                         EqBin(60, 70., 120.), "Mll [GeV]"),
                "jj_DR": (op.deltaR(bb[0].p4, bb[1].p4), EqBin(50, 0., 6.),
                          "jj deltaR"),
                "jj_pt": ((bjets_[0].p4 + bjets_[1].p4).Pt(),
                          EqBin(50, 0., 450.), "dijets p_{T} [GeV]"),
                "jet1_pt": (bb[0].pt, EqBin(50, 20., 500.),
                            "jet1 p_{T} [GeV]"),
                "jet2_pt": (bb[1].pt, EqBin(50, 20., 300.),
                            "jet2 p_{T} [GeV]"),
                "lep1_pt": (ll[0].pt, EqBin(50, 20., 400.),
                            "Leading Lepton p_{T} [GeV]"),
                "lep2_pt": (ll[1].pt, EqBin(50, 10., 200.),
                            "Sub-leading Lepton p_{T} [GeV]"),
            }.items()
        ]
    return plots
예제 #21
0
def makeControlPlotsForBasicSel(self, sel, jets, dilepton, uname):
    binScaling = 1
    plots = []
    plots.append(
        Plot.make1D("{0}_leadJetPT".format(uname),
                    jets[0].pt,
                    sel,
                    EqB(60, 0., 450.),
                    title="P_{T} (leading Jet) [GeV]",
                    plotopts=utils.getOpts(uname)))
    plots.append(
        Plot.make1D("{0}_subleadJetPT".format(uname),
                    jets[1].pt,
                    sel,
                    EqB(60, 0., 450.),
                    title="P_{T} (sub-leading Jet) [GeV]",
                    plotopts=utils.getOpts(uname)))

    plots.append(
        Plot.make1D("{0}_leadJetETA".format(uname),
                    jets[0].eta,
                    sel,
                    EqB(10, -2.4, 2.4),
                    title="Eta (leading Jet)",
                    plotopts=utils.getOpts(uname)))
    plots.append(
        Plot.make1D("{0}_subleadJetETA".format(uname),
                    jets[1].eta,
                    sel,
                    EqB(10, -2.4, 2.4),
                    title="Eta (sub-leading Jet)",
                    plotopts=utils.getOpts(uname)))

    for i in range(2):
        plots.append(
            Plot.make1D(f"{uname}_jet{i+1}_phi",
                        jets[i].phi,
                        sel,
                        EqB(50 // binScaling, -3.1416, 3.1416),
                        title=f"{utils.getCounter(i+1)} jet phi",
                        plotopts=utils.getOpts(uname, **{"log-y": False})))

    plots.append(
        Plot.make1D("{0}_jjpT".format(uname), (jets[0].p4 + jets[1].p4).pt,
                    sel,
                    EqB(100, 0., 450.),
                    title="dijet P_{T} [GeV]",
                    plotopts=utils.getOpts(uname)))

    plots.append(
        Plot.make1D("{0}_jjPhi".format(uname), (jets[0].p4 + jets[1].p4).phi,
                    sel,
                    EqB(50 // binScaling, -3.1416, 3.1416),
                    title="dijet phi",
                    plotopts=utils.getOpts(uname)))

    plots.append(
        Plot.make1D("{0}_jjEta".format(uname), (jets[0].p4 + jets[1].p4).eta,
                    sel,
                    EqB(50 // binScaling, -2.4, 2.4),
                    title="dijet eta",
                    plotopts=utils.getOpts(uname)))

    plots.append(
        Plot.make1D("{0}_mjj".format(uname),
                    op.invariant_mass(jets[0].p4, jets[1].p4),
                    sel,
                    EqB(100, 0., 800.),
                    title="mjj [GeV]",
                    plotopts=utils.getOpts(uname)))

    plots.append(
        Plot.make1D("{0}_mlljj".format(uname),
                    (dilepton[0].p4 + dilepton[1].p4 + jets[0].p4 +
                     jets[1].p4).M(),
                    sel,
                    EqB(100, 0., 1000.),
                    title="mlljj [GeV]",
                    plotopts=utils.getOpts(uname)))
    plots.append(
        Plot.make2D(
            "{0}_mlljjvsmjj".format(uname),
            (op.invariant_mass(jets[0].p4, jets[1].p4),
             (dilepton[0].p4 + dilepton[1].p4 + jets[0].p4 + jets[1].p4).M()),
            sel, (EqB(1000, 0., 1000.), EqB(1000, 0., 1000.)),
            title="mlljj vs mjj invariant mass [Gev]",
            plotopts=utils.getOpts(uname)))
    return plots