コード例 #1
0
ファイル: draw_functions.py プロジェクト: simonecid/FCCSW
def prepare_double_canvas(name, title, factor = 1):
   c = TCanvas(name, title, 1200, int(900 + 900 / factor))
   pad1 = TPad("pad1","pad1",0,0,1,factor / (1. + factor))
   pad2 = TPad("pad2","pad2",0,factor / (1. + factor),1,1)
   print("heights:",factor / (1. + factor) )
   pad2.SetBottomMargin(0.01)
   pad2.SetRightMargin(0.03)
   pad2.SetLeftMargin(0.15)
   pad1.SetBorderMode(0)
   pad1.SetTopMargin(0.01)
   pad1.SetRightMargin(0.03)
   pad1.SetLeftMargin(0.15)
   pad1.SetBottomMargin(0.15)
   pad2.SetBorderMode(0)
   pad2.SetGridy()
   pad1.SetTickx(1)
   pad2.SetTickx(1)
   pad1.SetTicky(1)
   pad2.SetTicky(1)
   pad1.Draw()
   pad2.Draw()
   ROOT.SetOwnership(c,False)
   ROOT.SetOwnership(pad1,False)
   ROOT.SetOwnership(pad2,False)
   pad1.cd()
   return c, pad1, pad2
コード例 #2
0
def draw_resoLin(histReso, histLin):
    pad1 = TPad("pad1", "pad1", 0, 0, 1, 0.66)
    pad2 = TPad("pad2", "pad2", 0, 0.66, 1, 1)
    pad2.SetBottomMargin(0.01)
    pad1.SetBorderMode(0)
    pad1.SetTopMargin(0.01)
    pad1.SetBottomMargin(0.15)
    pad2.SetBorderMode(0)
    pad1.SetTickx(1)
    pad2.SetTickx(1)
    pad1.SetTicky(1)
    pad2.SetTicky(1)
    pad1.Draw()
    pad2.Draw()

    pad1.cd()
    pad1.SetLogx()
    histReso.Draw("AP")
    histReso.GetXaxis().SetTitle("E [GeV]")
    histReso.GetYaxis().SetTitle("#sigma_{E_{tot}}/#LT E_{tot}#GT")
    histReso.GetXaxis().SetLimits(10, 11000)
    histReso.SetMinimum(0.)
    histReso.SetMaximum(0.15)
    histReso.Draw("AP")

    pad2.cd()
    pad2.SetLogx()
    pad2.SetGridy()
    histLin.GetYaxis().SetLabelSize(0.09)
    histLin.GetYaxis().SetTitleOffset(0.9)
    histLin.GetYaxis().SetTickLength(0.04)
    histLin.GetYaxis().SetTitleSize(0.09)
    histLin.GetXaxis().SetTickLength(0.04)
    histLin.GetXaxis().SetTitleOffset(1.1)
    histLin.GetXaxis().SetLabelSize(0.1)
    histLin.GetXaxis().SetTitleSize(0.09)
    histLin.GetXaxis().SetLimits(10, 11000)
    histLin.GetYaxis().SetRangeUser(-0.155, 0.155)
    histLin.Draw("AP")
コード例 #3
0
def draw_ratio(c_title, h_top=[], h_bottom=[], draw_top=[], draw_bottom=[]):
    c = TCanvas(c_title)
    c.cd()
    pad_bottom = TPad("pad_bottom", "", 0, 0.02105263, 1, 0.4)
    pad_bottom.SetFrameBorderMode(0)
    pad_bottom.SetFrameBorderMode(0)
    pad_bottom.SetBorderMode(0)
    pad_bottom.SetTopMargin(0)
    pad_bottom.SetBottomMargin(0.3)

    pad_bottom.Draw()
    pad_bottom.cd()
    h_bottom[0].SetStats(0)
    pad_bottom.SetGridy()

    h_bottom[0].Draw(draw_bottom[0])
    h_bottom[0].GetYaxis().SetRangeUser(0.91, 1.09)
    h_bottom[0].GetYaxis().SetNdivisions(5, 0, 5)
    h_bottom[0].GetYaxis().SetLabelSize(0.10)
    h_bottom[0].GetYaxis().SetTitleSize(0.13)
    h_bottom[0].GetYaxis().SetTitleOffset(0.35)
    h_bottom[0].GetXaxis().SetLabelSize(0.10)
    h_bottom[0].GetXaxis().SetTitleSize(0.13)
    h_bottom[0].GetXaxis().SetTitleOffset(0.85)
    h_bottom[0].GetYaxis().SetTitle("Data/MC")
    h_bottom[0].GetYaxis().CenterTitle()

    h_bottom[0].SetMarkerStyle(20)
    h_bottom[0].SetLineColor(1)
    for i, h in enumerate(h_bottom[1:]):
        h.Draw("same" + draw_bottom[i + 1])

    c.cd()
    pad_top = TPad("pad_top", "", 0, 0.4, 1, 1)
    pad_top.SetBottomMargin(0)
    pad_top.SetTopMargin(0.15)
    pad_top.Draw()
    pad_top.cd()
    h_top[0].SetStats(0)
    h_top[0].DrawCopy(draw_top[0])
    h_top[0].GetYaxis().SetTitleOffset(0.59)
    h_top[0].GetYaxis().SetTitleSize(0.07)

    h_top[0].SetFillStyle(3001)
    h_top[0].Draw("e2same")

    for i, h in enumerate(h_top[1:]):
        h.Draw("same" + draw_top[i + 1])

    c.Update()
    return c
コード例 #4
0
def PlotFakeRatio(ratio):
    c = TCanvas("c", "canvas", 800, 800)
    gStyle.SetOptStat(0)
    gStyle.SetLegendBorderSize(0)

    pad = TPad("pad", "pad", 0.01, 0.01, 0.99, 0.99)
    pad.Draw()
    pad.cd()
    pad.SetGrid()
    pad.SetFillColor(0)
    pad.SetFrameBorderMode(0)
    pad.SetBorderMode(0)

    xaxis_title = "Photon P_{T} [GeV]"

    leg = getLegend(xmin=0.5, ymin=0.7, scale=0.75)

    fake_style(ratio)
    ratio.SetTitle("")
    ratio.GetYaxis().SetTitle("Fake Ratio")
    # ratio.GetYaxis().SetTitleOffset(0.5)
    ratio.GetXaxis().SetTitle(xaxis_title)
    # ratio.GetYaxis().SetRangeUser(0.75,1.2)
    print SetBounds([ratio], scale=1)

    ratio.Draw("p same")

    leg.AddEntry(ratio, "#frac{Data_{ISO}}{Data_{Non-ISO}}", "lp")
    leg.Draw()

    lumi_label = '%s' % float('%.3g' %
                              (max(config.lumi.values()) / 1000.)) + " fb^{-1}"
    texLumi, texCMS = getCMSText(lumi_label, config.version, scale=0.8)

    SaveAs(c,
           "fake_ratio_%s" % parser.args.variable,
           year=config.version,
           sub="GammaPurity/FakeRatio/")
コード例 #5
0
        c.SetTopMargin(T / H)
        c.SetBottomMargin(B / H)
        c.SetTickx(0)
        c.SetTicky(0)
        c.Draw()
        c.cd()

        pad1 = TPad("zxc_p1", "zxc_p1", 0, padRatio - padOverlap, 1, 1)
        pad2 = TPad("qwe_p2", "qwe_p2", 0, 0, 1, padRatio + padOverlap)
        pad1.SetLeftMargin(L / W)
        pad1.SetRightMargin(R / W)
        pad1.SetTopMargin(T / H / (1 - padRatio + padOverlap))
        pad1.SetBottomMargin(
            (padOverlap + padGap) / (1 - padRatio + padOverlap))
        pad1.SetFillColor(0)
        pad1.SetBorderMode(0)
        pad1.SetFrameFillStyle(0)
        pad1.SetFrameBorderMode(0)
        pad1.SetTickx(0)
        pad1.SetTicky(0)

        pad2.SetLeftMargin(L / W)
        pad2.SetRightMargin(R / W)
        pad2.SetTopMargin((padOverlap) / (padRatio + padOverlap))
        pad2.SetBottomMargin(B / H / (padRatio + padOverlap))
        pad2.SetFillColor(0)
        pad2.SetFillStyle(4000)
        pad2.SetBorderMode(0)
        pad2.SetFrameFillStyle(0)
        pad2.SetFrameBorderMode(0)
        pad2.SetTickx(0)
コード例 #6
0
def CanvasPartition(C,
                    Nx,
                    Ny,
                    lMargin=0.15,
                    rMargin=0.05,
                    bMargin=0.15,
                    tMargin=0.05):
    if (not C):
        return (0)
    #Setup Pad layout:
    vSpacing = 0.0
    vStep = (1. - bMargin - tMargin - (Ny - 1) * vSpacing) / Ny
    hSpacing = 0.0
    hStep = (1. - lMargin - rMargin - (Nx - 1) * hSpacing) / Nx
    vposd = 0
    vposu = 0
    vmard = 0
    vmaru = 0
    vfactor = 0
    hposl = 0
    hposr = 0
    hmarl = 0
    hmarr = 0
    hfactor = 0
    for i in range(Nx):
        if (i == 0):
            hposl = 0.0
            hposr = lMargin + hStep
            hfactor = hposr - hposl
            hmarl = lMargin / hfactor
            hmarr = 0.0
        elif (i == Nx - 1):
            hposl = hposr + hSpacing
            hposr = hposl + hStep + rMargin
            hfactor = hposr - hposl
            hmarl = 0.0
            hmarr = rMargin / (hposr - hposl)
        else:
            hposl = hposr + hSpacing
            hposr = hposl + hStep
            hfactor = hposr - hposl
            hmarl = 0.0
            hmarr = 0.0

            for j in range(Ny):
                if (j == 0):
                    vposd = 0.0
                    vposu = bMargin + vStep
                    vfactor = vposu - vposd
                    vmard = bMargin / vfactor
                    vmaru = 0.0
                elif (j == Ny - 1):
                    vposd = vposu + vSpacing
                    vposu = vposd + vStep + tMargin
                    vfactor = vposu - vposd
                    vmard = 0.0
                    vmaru = tMargin / (vposu - vposd)
                else:
                    vposd = vposu + vSpacing
                    vposu = vposd + vStep
                    vfactor = vposu - vposd
                    vmard = 0.0
                    vmaru = 0.0

                C.cd(0)
                name = "pad_" + str(i) + "_" + str(j)
                #pad = gROOT.FindObject(name)
                pad = TPad(name, "", hposl, vposd, hposr, vposu)
                pad.SetLeftMargin(hmarl)
                pad.SetRightMargin(hmarr)
                pad.SetBottomMargin(vmard)
                pad.SetTopMargin(vmaru)
                pad.SetFrameBorderMode(0)
                pad.SetBorderMode(0)
                pad.SetBorderSize(0)
                pad.Draw()
コード例 #7
0
def PlotRatio(h_reco_unfolded,h_ptcl_or,h_reco_unfolded_roof, h_reco_unfolded_svd, h_reco_unfolded_T,h_reco_unfolded_Ids, svd_par, Ids_par ,outputname="test.png"):
    
    gStyle.SetPadLeftMargin(0.12)
    gStyle.SetPadRightMargin(0.12)
    c = TCanvas("canvas_"+outputname,"canvas_"+outputname,0,0,800, 800)
    c.cd()
    pad1 = TPad("pad1","pad1",0,0.40,1,1)
    pad1.SetTopMargin(0.15)
    pad1.SetBottomMargin(0.01)
    pad1.SetFillStyle(0)
    pad1.SetTicks(1,1)
    pad1.SetBorderMode(0)
    pad1.Draw()
    c.cd()
    pad2 = TPad("pad2","pad2",0,0.01,1,0.422)
    pad2.SetFillStyle(0)
    pad2.SetTopMargin(0.043)
    pad2.SetBottomMargin(0.2)
    pad2.SetBorderMode(0)
    pad2.SetTicks(1,1)
    pad2.Draw()
    pad2.Modified()
    c.cd()
    pad1.cd()
    gStyle.SetOptStat(0)
    h_ptcl_or.SetTitle("")
    h_ptcl_or.SetLineColor(2)
    #h_ptcl_or.GetYaxis().SetRangeUser(0,h_ptcl_or.GetMaximum()*1.5)
    h_ptcl_or.GetXaxis().SetTitleSize(34)
    h_ptcl_or.GetXaxis().SetTitleFont(43)
    h_ptcl_or.GetYaxis().SetTitleSize(27)
    h_ptcl_or.GetYaxis().SetTitleFont(43)
    h_ptcl_or.GetYaxis().SetTitleOffset(1.5)
    h_ptcl_or.GetYaxis().SetTitle("Events")
    h_ptcl_or.GetYaxis().SetLabelFont(43)
    h_ptcl_or.GetYaxis().SetLabelSize(25)
    legend = TLegend(0.55,0.5,0.85,0.8)
    legend.SetFillStyle(0)
    legend.AddEntry(h_ptcl_or,"Simulation")
    legend.AddEntry(h_reco_unfolded,"Fully Bayesian Unfolding","p")
    legend.AddEntry(h_reco_unfolded_roof,"D'Agostini RooUnfold, par. 4","p")
    legend.AddEntry(h_reco_unfolded_svd,"SVD RooUnfold, par. " + str(svd_par),"p")
    legend.AddEntry(h_reco_unfolded_T,"T RooUnfold","p")
    legend.AddEntry(h_reco_unfolded_Ids,"Ids RooUnfold, par. " + str(Ids_par),"p")
    legend.SetBorderSize(0)
    h_reco_unfolded.SetLineColor(1)
    h_reco_unfolded.SetMarkerColor(1)
    h_reco_unfolded.SetMarkerStyle(22)
    h_reco_unfolded_roof.SetMarkerColor(6)
    h_reco_unfolded_roof.SetLineColor(6)
    h_reco_unfolded_roof.SetMarkerStyle(20)
    h_reco_unfolded_svd.SetMarkerColor(4)
    h_reco_unfolded_svd.SetLineColor(4)
    h_reco_unfolded_svd.SetMarkerStyle(5)
    h_reco_unfolded_T.SetMarkerColor(7)
    h_reco_unfolded_T.SetLineColor(7)
    h_reco_unfolded_T.SetMarkerStyle(34)
    h_reco_unfolded_Ids.SetMarkerColor(8)
    h_reco_unfolded_Ids.SetLineColor(8)
    h_reco_unfolded_Ids.SetMarkerStyle(3)
    h_ptcl_or.Draw("hist")
    h_reco_unfolded.Draw("same p x0")
    h_reco_unfolded_roof.Draw("same p x0")
    h_reco_unfolded_svd.Draw("same p x0")
    h_reco_unfolded_T.Draw("same p x0")
    h_reco_unfolded_Ids.Draw("same p x0")
    legend.Draw("same")
    pad1.RedrawAxis()
    pad2.cd()
    h_ptcl_or_clone = h_ptcl_or.Clone(h_ptcl_or.GetName()+"_clone")
    h_reco_unfolded_clone = h_reco_unfolded.Clone(h_reco_unfolded.GetName()+"_clone")
    h_reco_unfolded_roof_clone = h_reco_unfolded_roof.Clone(h_reco_unfolded_roof.GetName()+"_clone")
    h_reco_unfolded_svd_clone = h_reco_unfolded_svd.Clone(h_reco_unfolded_svd.GetName()+"_clone")
    h_reco_unfolded_T_clone = h_reco_unfolded_T.Clone(h_reco_unfolded_T.GetName()+"_clone")
    h_reco_unfolded_Ids_clone = h_reco_unfolded_Ids.Clone(h_reco_unfolded_Ids.GetName()+"_clone")
    h_ptcl_or_clone.Divide(h_ptcl_or)
    h_reco_unfolded_clone.Divide(h_ptcl_or)
    h_reco_unfolded_roof_clone.Divide(h_ptcl_or)
    h_reco_unfolded_svd_clone.Divide(h_ptcl_or)
    h_reco_unfolded_T_clone.Divide(h_ptcl_or)
    h_reco_unfolded_Ids_clone.Divide(h_ptcl_or)
    
    h_ptcl_or_clone.GetXaxis().SetTitleSize(27)
    h_ptcl_or_clone.GetXaxis().SetTitleFont(43)
    h_ptcl_or_clone.GetYaxis().SetTitleSize(27)
    h_ptcl_or_clone.GetYaxis().SetTitleFont(43)
    
    h_ptcl_or_clone.GetXaxis().SetLabelFont(43)
    h_ptcl_or_clone.GetXaxis().SetLabelSize(25)
    h_ptcl_or_clone.GetYaxis().SetLabelFont(43)
    h_ptcl_or_clone.GetYaxis().SetLabelSize(25)
    
    h_ptcl_or_clone.SetMaximum(1.3)
    h_ptcl_or_clone.SetMinimum(0.7)
    
    h_ptcl_or_clone.GetXaxis().SetTitleOffset(2.5)
    h_ptcl_or_clone.GetXaxis().SetTitle(args.title)
    
    h_ptcl_or_clone.GetYaxis().SetTitle("#frac{Unfolded}{Simulation}      ")
    h_ptcl_or_clone.Draw("hist")
    h_reco_unfolded_clone.Draw("same p x0")
    h_reco_unfolded_roof_clone.Draw("same p x0")
    h_reco_unfolded_svd_clone.Draw("same p x0")
    h_reco_unfolded_T_clone.Draw("same p x0")
    h_reco_unfolded_Ids_clone.Draw("same p x0")
    pad2.RedrawAxis()
    c.Update()
    histograms.append(c) # here is the crash probably
    PrintCan(c, outputname)
コード例 #8
0
def eraselabel(pad, h):
    pad.cd()
    pe = TPad("pe", "pe", 0, 0, pad.GetLeftMargin(), h)
    pe.Draw()
    pe.SetFillColor(pad.GetFillColor())
    pe.SetBorderMode(0)
コード例 #9
0
def PlotSig(templates, sideband_templates):
    print "Plotting Signal Template"
    data = templates["Data"].histo.Clone()
    gjets = templates["GJets"].histo.Clone()
    sideband = sideband_templates["Sideband"].histo.Clone()
    full = gjets.Clone()
    full.Add(sideband)

    c = TCanvas("c", "canvas", 800, 800)
    gStyle.SetOptStat(0)
    gStyle.SetLegendBorderSize(0)
    # c.SetLeftMargin(0.15);
    # c.SetLogy();
    #c.cd();

    pad1 = TPad("pad1", "pad1", 0.01, 0.25, 0.99, 0.99)
    pad1.SetBottomMargin(0.)
    pad1.Draw()
    pad1.cd()
    pad1.SetLogy()
    pad1.SetFillColor(0)
    pad1.SetFrameBorderMode(0)
    pad1.SetBorderMode(0)

    temp_style(gjets, kGreen + 2)
    temp_style(sideband, kRed)
    temp_style(full, kBlue + 2)
    DataStyle(data)

    leg = getLegend(xmax=0.7, ymin=0.55, ymax=0.75)

    gjets.Draw("hist")

    gjets.SetTitle("")
    gjets.GetYaxis().SetTitle("Events")

    if templates.variable.xaxis_title == "":
        templates.variable.xaxis_title = next(
            (vartitle for var, vartitle in xaxismap.items()
             if var in templates.variable.variable), "")
    gjets.GetXaxis().SetTitle(templates.variable.xaxis_title)

    sideband.Draw("hist same")
    full.Draw("hist same")
    data.Draw("pex0 same")
    hslist = [data, gjets, sideband]

    leg.AddEntry(data, "Data", "lp")
    leg.AddEntry(gjets, "Real GJets", "l")
    leg.AddEntry(sideband, "QCD Fake Template", "l")
    leg.AddEntry(full, "Full", "l")

    VarBounds(templates.variable.variable, hslist)
    leg.Draw()

    lumi_label = '%s' % float('%.3g' % (templates.lumi / 1000.)) + " fb^{-1}"
    texLumi, texCMS = getCMSText(lumi_label, templates.year)

    if re.search("(\d+to\d+|\d+toInf)", templates.variable.variable):
        ptrange = templates.variable.variable.split("_")[1].split("to")
        rtext = PtRangeText(ptrange=ptrange)

    c.cd()
    pad2 = TPad("pad2", "pad2", 0.01, 0.01, 0.99, 0.25)
    pad2.SetGridy()
    pad2.Draw()
    pad2.cd()
    pad2.SetFillColor(0)
    pad2.SetFrameBorderMode(0)
    pad2.SetBorderMode(0)
    pad2.SetTopMargin(0)
    pad2.SetBottomMargin(0.35)

    ratio = GetRatio(data, full)

    RatioStyle(ratio,
               rymin=-0.25,
               rymax=2.25,
               xname=templates.variable.xaxis_title,
               yname="Data/Full")
    ratio.Draw("pex0")
    line = getRatioLine(data.GetXaxis().GetXmin(), data.GetXaxis().GetXmax())
    line.Draw("same")

    SaveAs(c,
           "real_template_%s" % templates.varname,
           year=templates.year,
           sub="GammaPurity")