Exemple #1
0
def make_efficiency_plots_pls(names, outname, colors):
    if len(names) < 2:
        raise ValueError("I need 2 or more histograms!")

    if len(names) != len(colors):
        raise ValueError("I need a color for each histogram!")

    # First
    n = len(names)
    i = 1
    hname = names[0]
    denom = histograms[hname]
    hname = names[i]
    numer = histograms[hname]
    hname = outname
    eff = Efficiency(numer, denom, name=hname)
    eff.SetStatisticOption(0)  # kFCP
    eff.SetConfidenceLevel(0.682689492137)  # one sigma
    eff.linecolor = colors[i]
    eff.linewidth = 2
    eff.markercolor = colors[i]
    eff.markerstyle = 1
    #
    frame = eff.GetCopyTotalHisto().Clone(hname + "_frame")
    frame.Reset()
    frame.SetMinimum(0)
    frame.SetMaximum(1.2)
    frame.GetYaxis().SetTitle("#varepsilon")
    frame.SetStats(0)
    frame.Draw()
    tline = TLine()
    tline.SetLineColor(1)
    xmin, xmax = frame.GetXaxis().GetXmin(), frame.GetXaxis().GetXmax()
    tline.DrawLine(xmin, 1.0, xmax, 1.0)
    #
    eff.Draw("same p")
    keepalive(gPad.func(), eff)
    gPad.Print(options.outdir + hname + ".png")

    # Second and on
    for i in xrange(2, n):
        hname = names[0]
        denom = histograms[hname]
        hname = names[i]
        numer = histograms[hname]
        hname = outname
        eff = Efficiency(numer, denom, name=hname)
        eff.SetStatisticOption(0)  # kFCP
        eff.SetConfidenceLevel(0.682689492137)  # one sigma
        eff.linecolor = colors[i]
        eff.linewidth = 2
        eff.markercolor = colors[i]
        eff.markerstyle = 1
        eff.Draw("same p")
        keepalive(gPad.func(), eff)
        gPad.Print(options.outdir + hname + ".png")
    return
Exemple #2
0
def test_overall_efficiency():
    for stat_op in range(0, 8):
        Eff = Efficiency(Hist(20, -3, 3), Hist(20, -3, 3))
        Eff_1bin = Efficiency(Hist(1, -3, 3), Hist(1, -3, 3))
        Eff.SetStatisticOption(stat_op)
        Eff_1bin.SetStatisticOption(stat_op)

        for i in xrange(1000):
            x = gauss(0, 3.6)
            w = uniform(0, 1)
            passed = w > 0.5
            Eff.Fill(passed, x)
            Eff_1bin.Fill(passed, x)

        assert_almost_equal(
            Eff.overall_efficiency(overflow=True)[0],
            Eff_1bin.overall_efficiency(overflow=True)[0])
        assert_almost_equal(
            Eff.overall_efficiency(overflow=True)[1],
            Eff_1bin.overall_efficiency(overflow=True)[1])
        assert_almost_equal(
            Eff.overall_efficiency(overflow=True)[2],
            Eff_1bin.overall_efficiency(overflow=True)[2])
        print "..", in_q, q
    h1a.linecolor = options.palette[i]
    h1a.linewidth = 2
    h1a.Draw("hist")
    gPad.Print(options.outdir + hname + ".png")

    # Make efficiency vs gen pT
    k = "denom"
    hname = "eff_vs_genpt_l1pt20_%s" % k
    denom = histograms[hname]
    k = "numer"
    hname = "eff_vs_genpt_l1pt20_%s" % k
    numer = histograms[hname]
    hname = "eff_vs_genpt_l1pt20"
    eff = Efficiency(numer, denom, name=hname)
    eff.SetStatisticOption(0)  # kFCP
    eff.SetConfidenceLevel(0.682689492137)  # one sigma
    eff.linecolor = 'gray'
    eff.linewidth = 2
    eff.markercolor = 'gray'
    eff.markerstyle = 1
    #
    frame = eff.GetCopyTotalHisto().Clone(hname + "_frame")
    frame.Reset()
    frame.SetMinimum(0)
    frame.SetMaximum(1.2)
    frame.GetYaxis().SetTitle("#varepsilon")
    frame.SetStats(0)
    frame.Draw()
    tline = TLine()
    tline.SetLineColor(1)