Beispiel #1
0
def el_fakerate():

    # Glob the file lists
    mcs = [
        output_dirpath + "/wj_ht.root",
        output_dirpath + "/tt_1l.root",
    ]
    num = "ElClosureTight__elptcorretarolledcoarse"
    den = "ElClosureLoose__elptcorretarolledcoarse"
    h_num = ru.get_summed_histogram(mcs, num)
    h_den = ru.get_summed_histogram(mcs, den)
    u.move_in_overflows(h_num)
    u.move_in_overflows(h_den)
    h_num.Divide(h_den)

    qcds = [
        output_dirpath + "/qcd_em.root",
        output_dirpath + "/qcd_bc.root",
    ]
    qcd_num = "OneElTightMR__elptcorretarolledcoarse"
    qcd_den = "OneElMR__elptcorretarolledcoarse"
    h_qcd_num = ru.get_summed_histogram(qcds, qcd_num)
    h_qcd_den = ru.get_summed_histogram(qcds, qcd_den)
    u.move_in_overflows(h_qcd_num)
    u.move_in_overflows(h_qcd_den)
    h_qcd_num.Divide(h_qcd_den)
    h_qcd_num.SetName("QCD(e)")

    # Color settings
    colors = [
        2005,
        2001,
    ]

    # Options
    alloptions = {
        "ratio_range": [0.0, 2.0],
        "nbins": 180,
        "autobin": False,
        "legend_scalex": 1.8,
        "legend_scaley": 1.1,
        "output_name": "plots/fakeratemc/{}.pdf".format(num + "__" + den),
        "bkg_sort_method": "unsorted",
        "no_ratio": False,
        "print_yield": True,
        "yield_prec": 3,
        "draw_points": True,
        "lumi_value": 41.3,
        "legend_datalabel": "W+t#bar{t}"
    }

    # Plot them
    p.plot_hist(bgs=[h_qcd_num],
                data=h_num,
                colors=colors,
                syst=None,
                options=alloptions)
def get_fakerate_histograms(num, den, ps=0, sf=0, sfden=0):

    h_num, _, _, h_num_qcd_mu, h_num_qcd_el, h_num_qcd_bc, _, _, _, _ = plot(
        num, ps, sf)
    if sfden == 0:
        h_den, _, _, h_den_qcd_mu, h_den_qcd_el, h_den_qcd_bc, _, _, _, _ = plot(
            den, ps, sf)
    else:
        h_den, _, _, h_den_qcd_mu, h_den_qcd_el, h_den_qcd_bc, _, _, _, _ = plot(
            den, ps, sfden)

    # Creating a summed histogram (EM + HF sourced e-fake) where the ratio will be only of importance as we will divide the histograms to get fake rate
    h_num_qcd_esum = h_num_qcd_el.Clone("QCD(e)")
    h_den_qcd_esum = h_den_qcd_el.Clone("QCD(e)")
    h_num_qcd_esum.Add(h_num_qcd_bc)
    h_den_qcd_esum.Add(h_den_qcd_bc)

    # Data
    u.move_in_overflows(h_num)
    u.move_in_overflows(h_den)
    h_num.Divide(h_den)

    # Mu fake rate
    u.move_in_overflows(h_num_qcd_mu)
    u.move_in_overflows(h_den_qcd_mu)
    h_num_qcd_mu.Divide(h_den_qcd_mu)

    # EM fake rate
    u.move_in_overflows(h_num_qcd_el)
    u.move_in_overflows(h_den_qcd_el)
    h_num_qcd_el.Divide(h_den_qcd_el)

    # HF fake rate
    u.move_in_overflows(h_num_qcd_bc)
    u.move_in_overflows(h_den_qcd_bc)
    h_num_qcd_bc.Divide(h_den_qcd_bc)

    # Total summed electron fake rate
    u.move_in_overflows(h_num_qcd_esum)
    u.move_in_overflows(h_den_qcd_esum)
    h_num_qcd_esum.Divide(h_den_qcd_esum)

    # Set any negative fake rate to 0 or some tiny number
    def set_nonzero(h):
        for i in xrange(1, h.GetNbinsX() + 1):
            bc = h.GetBinContent(i)
            if bc < 0:
                h.SetBinContent(i, 1e-6)

    set_nonzero(h_num)
    set_nonzero(h_num_qcd_mu)
    set_nonzero(h_num_qcd_esum)
    set_nonzero(h_num_qcd_el)
    set_nonzero(h_num_qcd_bc)

    return h_num, h_num_qcd_mu, h_num_qcd_esum, h_num_qcd_el, h_num_qcd_bc
Beispiel #3
0
    def get_fakerate_histograms(num, den, ps=0, sf=0):

        h_num, _, _, h_num_qcd_mu, h_num_qcd_el, h_num_qcd_bc = plot(
            num, ps, sf)
        h_den, _, _, h_den_qcd_mu, h_den_qcd_el, h_den_qcd_bc = plot(
            den, ps, sf)

        # Creating a summed histogram (EM + HF sourced e-fake) where the ratio will be only of importance as we will divide the histograms to get fake rate
        h_num_qcd_esum = h_num_qcd_el.Clone("QCD(e)")
        h_den_qcd_esum = h_den_qcd_el.Clone("QCD(e)")
        h_num_qcd_esum.Add(h_num_qcd_bc)
        h_den_qcd_esum.Add(h_den_qcd_bc)

        # Data
        u.move_in_overflows(h_num)
        u.move_in_overflows(h_den)
        h_num.Divide(h_den)

        # Mu fake rate
        u.move_in_overflows(h_num_qcd_mu)
        u.move_in_overflows(h_den_qcd_mu)
        h_num_qcd_mu.Divide(h_den_qcd_mu)

        # EM fake rate
        u.move_in_overflows(h_num_qcd_el)
        u.move_in_overflows(h_den_qcd_el)
        h_num_qcd_el.Divide(h_den_qcd_el)

        # HF fake rate
        u.move_in_overflows(h_num_qcd_bc)
        u.move_in_overflows(h_den_qcd_bc)
        h_num_qcd_bc.Divide(h_den_qcd_bc)

        # Total summed electron fake rate
        u.move_in_overflows(h_num_qcd_esum)
        u.move_in_overflows(h_den_qcd_esum)
        h_num_qcd_esum.Divide(h_den_qcd_esum)

        return h_num, h_num_qcd_mu, h_num_qcd_esum, h_num_qcd_el, h_num_qcd_bc