コード例 #1
0
def main(infile,outdir,mvas=""):

    ## initialize ROOT style and set-up the html helper
    setStyle()
    hth = HtmlHelper(outdir)
    hth.header().addobj( HtmlTag("link") ).set("rel","stylesheet").set("type","text/css").set("href","../res/style.css")  
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../../res/jquery.js").txt(" ")
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../res/style.js").txt(" ")
    hth.navbar().cell( HtmlTag("a") ).firstChild().txt("..").set("href","../?C=M;O=D")
    hth.navbar().cell( HtmlTag("a") ).firstChild().txt("kinematics").set("href","./")

    kh = plot_kin(infile,hth)

    ih,rh = plot_jet_id(infile,hth,variables_to_plot=[
        ("jetPt","jetEta","nvtx"),
        ("dR2Mean","dRMean","beta","betaStar","dZ"), ## "dR2Mean",
        tuple(v for v in mvas.split(',') if v != ""),
        ]
        )     
    ## done: create images and html 
    hth.dump()
    save_rocs(rh,outdir)
    
    ###  reweightX = [ kh.reweight.GetBinLowEdge(i) for  i in range(1,kh.reweight.GetNbinsX())]
    ###  reweightY = [ kh.reweight.GetBinContent(i) for  i in range(1,kh.reweight.GetNbinsX())]
    ###  print reweightX
    ###  print reweightY
    
    print kh.reweight_f.GetExpFormula("p")
コード例 #2
0
def main(infile, outdir, mvas=""):

    ## initialize ROOT style and set-up the html helper
    setStyle()
    hth = HtmlHelper(outdir)
    hth.header().addobj(HtmlTag("link")).set("rel", "stylesheet").set(
        "type", "text/css").set("href", "../res/style.css")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../../res/jquery.js").txt(" ")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../res/style.js").txt(" ")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("..").set(
        "href", "../?C=M;O=D")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("kinematics").set(
        "href", "./")

    kh = plot_kin(infile, hth)

    ih, rh = plot_jet_id(
        infile,
        hth,
        variables_to_plot=[
            ("jetPt", "jetEta", "nvtx"),
            ("dR2Mean", "dRMean", "beta", "betaStar", "dZ"),  ## "dR2Mean",
            tuple(v for v in mvas.split(',') if v != ""),
        ])
    ## done: create images and html
    hth.dump()
    save_rocs(rh, outdir)

    ###  reweightX = [ kh.reweight.GetBinLowEdge(i) for  i in range(1,kh.reweight.GetNbinsX())]
    ###  reweightY = [ kh.reweight.GetBinContent(i) for  i in range(1,kh.reweight.GetNbinsX())]
    ###  print reweightX
    ###  print reweightY

    print kh.reweight_f.GetExpFormula("p")
コード例 #3
0
def main(options, args):
    from ROOT import gROOT
    gROOT.SetBatch(options.batch)

    from lip.Tools.rootutils import loadToolsLib, getQuantilesGraphs, apply_modifs, xtitle, ytitle
    loadToolsLib()

    from ROOT import TCut, TCanvas, gDirectory, gPad, kRed, kBlue, kWhite, setStyle, gStyle, TLegend, HtmlHelper, HtmlTag, HtmlTable, HtmlPlot, TPaveText, kOpenCircle, TF1, TLine
    setStyle()
    gStyle.SetOptStat(0)
    gStyle.SetOptFit(0)

    print "Getting list of files"
    files = getListOfFiles(options.indir, options.filePattern)

    chain = mkChain(files, options.treename)
    ## chain = mkChain(files[0:100],options.treename)
    ## chain = mkChain(files[0:1],options.treename)

    hth = HtmlHelper(options.outdir)
    hth.header().addobj(HtmlTag("link")).set("rel", "stylesheet").set(
        "type", "text/css").set("href", "../res/style.css")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../../res/jquery.js").txt(" ")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../res/style.js").txt(" ")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("..").set(
        "href", "../?C=M;O=D")
    wptag = hth.body().addobj(HtmlTag("pre"))
    tab = hth.body().add(HtmlTable())

    quants = {}
    objs = []

    var, binning = options.variable.split(":")
    limits = [float(i) for i in binning.split(",")[1:]]
    delta = 0.1 * max(abs(limits[0]), abs(limits[1]))
    limits[0] -= delta
    limits[1] += delta

    xlab = "p_{T} (GeV)"
    if options.vsnvtx:
        xlab = "N_{PV}"
    sig_style = [("SetLineColor", kBlue), ("SetMarkerColor", kBlue),
                 (xtitle, xlab), (ytitle, "%s cut" % var), ("SetFillStyle", 0),
                 ("SetMarkerColor", kOpenCircle)]
    bkg_style = [("SetLineColor", kRed), ("SetMarkerColor", kRed),
                 (xtitle, xlab), (ytitle, "%s cut" % var), ("SetFillStyle", 0)]
    lab_style = [("SetFillColor", kWhite), ("SetShadowColor", kWhite),
                 ("SetLineColor", kWhite), ("SetFillStyle", 0)]

    fitl = TF1("fitl", "pol1", 12, 19)
    fitr = TF1("fitl", "pol1", 20, 35)
    fita = TF1("fita", "pol1", 15, 25)

    ## wps = { "loose":[0,0.05,0.1,0.1,0.1], "medium":[0,0.10,0.2,0.2,0.2], "tight":[1,0.95,0.9,0.9,0.9] }
    wps = {
        "loose": [0, 0.05, 0.05, 0.05, 0.05],
        "medium": [0, 0.1, 0.1, 0.1, 0.1],
        "tight": [0, 0.2, 0.2, 0.2, 0.2]
    }
    if options.chs:
        wps = {
            "loose": [0, 0.02, 0.1, 0.1, 0.1],
            "medium": [0, 0.05, 0.2, 0.2, 0.2],
            "tight": [1, 0.95, 0.9, 0.9, 0.9]
        }
    wpf = {}
    for a in wps.keys():
        wpf[a] = {}
    wpref = 20.

    icat = 0
    for cut, name, vars in options.categories:
        print "Making TH2 ", name

        icat += 1
        vtxbins = [(10, 20), (20, 999), (1, 999)]
        if options.integrateall:
            vtxbins = [(1, 999)]
        ivtx = 0
        for vtx in vtxbins:
            print(name, ) + vtx
            hname = "%s_%d_%d" % ((name, ) + vtx)

            vtxcut = TCut("nvtx > %d && nvtx < %d" % vtx)

            if options.vsnvtx:
                chain.Draw(
                    "%s:nvtx>>h_sig_%s(50,0.5,50.5,%s)" %
                    (var, hname, binning),
                    TCut("jetPt>20") * vtxcut * TCut(cut) *
                    TCut(options.sigcut), "colz goff")
                chain.Draw(
                    "%s:nvtx>>h_bkg_%s(50,0.5,50.5,%s)" %
                    (var, hname, binning),
                    TCut("jetPt>20") * vtxcut * TCut(cut) *
                    TCut(options.bkgcut), "colz goff")
            else:
                chain.Draw(
                    "%s:jetPt>>h_sig_%s(25,10,60,%s)" % (var, hname, binning),
                    vtxcut * TCut(cut) * TCut(options.sigcut), "colz goff")
                chain.Draw(
                    "%s:jetPt>>h_bkg_%s(25,10,60,%s)" % (var, hname, binning),
                    vtxcut * TCut(cut) * TCut(options.bkgcut), "colz goff")

            gDirectory.ls()
            h_sig = gDirectory.Get("h_sig_%s" % hname)
            h_bkg = gDirectory.Get("h_bkg_%s" % hname)

            print "Getting quantiles ", hname
            sig_qvals = [0.1, 0.2, 0.3, 0.5, 0.02, 0.05, 0.15]
            bkg_qvals = [0.4, 0.7, 0.6, 0.8, 0.9, 0.95, 0.9]
            quants[hname] = getQuantilesGraphs(h_sig,
                                               sig_qvals), getQuantilesGraphs(
                                                   h_bkg, bkg_qvals)

            for i in range(len(sig_qvals)):
                if options.integrateall:
                    quants[hname][0][i].SetTitle(
                        "%1.0f%% efficiency" % (((1. - sig_qvals[i]) * 100.)))
                    if options.vsnvtx:
                        quants[hname][0][i].Fit(fita.Clone(), "R+")
                    else:
                        quants[hname][0][i].Fit(fitl.Clone(), "R+")
                        quants[hname][0][i].Fit(fitr.Clone(), "R+")
                    for wpn, wp in wps.iteritems():
                        if wp[0] == 0 and wp[icat] == sig_qvals[i]:
                            wpf[wpn]["%d_%s" % (icat, name)] = quants[hname][
                                0][i].GetListOfFunctions(
                                ), quants[hname][0][i].GetTitle()
                else:
                    quants[hname][0][i].SetTitle(
                        "%1.0f%% efficiency %d<N_{PV}<%d" %
                        (((1. - sig_qvals[i]) * 100., ) + vtx))
                style = sig_style + [("SetLineColor", kBlue - 2 * ivtx),
                                     ("SetMarkerColor", kBlue - 2 * ivtx)]
                apply_modifs(quants[hname][0][i], style)
                for f in quants[hname][0][i].GetListOfFunctions():
                    apply_modifs(f, style)

            for i in range(len(bkg_qvals)):
                if options.integrateall:
                    quants[hname][1][i].SetTitle("%1.0f%% rejection" %
                                                 ((bkg_qvals[i] * 100.)))
                    if options.vsnvtx:
                        quants[hname][1][i].Fit(fita.Clone(), "R+")
                    else:
                        quants[hname][1][i].Fit(fitl.Clone(), "R+")
                        quants[hname][1][i].Fit(fitr.Clone(), "R+")
                    for wpn, wp in wps.iteritems():
                        if wp[0] == 1 and wp[icat] == bkg_qvals[i]:
                            wpf[wpn]["%d_%s" % (icat, name)] = quants[hname][
                                1][i].GetListOfFunctions(
                                ), quants[hname][1][i].GetTitle()
                else:
                    quants[hname][1][i].SetTitle(
                        "%1.0f%% rejection  %d<N_{PV}<%d" %
                        ((bkg_qvals[i] * 100., ) + vtx))
                style = bkg_style + [("SetLineColor", kRed - 2 * ivtx),
                                     ("SetMarkerColor", kRed - 2 * ivtx)]
                apply_modifs(quants[hname][1][i], style)
                for f in quants[hname][1][i].GetListOfFunctions():
                    apply_modifs(f, style)
            ivtx += 1

        chain.Draw("nvtx>>h_nvtx_%s(50,0.5,50.5)" % (hname),
                   TCut(cut) * TCut(options.sigcut), "goff")
        canv = TCanvas("%s_nvtx" % (name), ("%s" % (name)), 800, 1000)
        canv.cd()
        h_nvtx = gDirectory.Get("h_nvtx_%s" % hname)
        line = TLine(h_nvtx.GetMean(), 0., h_nvtx.GetMean(),
                     h_nvtx.GetMaximum())
        h_nvtx.Draw("hist")
        line.Draw("same")
        objs.append(line)
        objs.append(canv)
        tab.row().cell(HtmlPlot(canv, False, "", True, True, True))

        nvals = len(sig_qvals)
        plotsperline = 4
        for i in range(nvals):
            if i % plotsperline == 0:
                row = tab.row()
            canv = TCanvas("%s_%d" % (name, i), ("%s_%d" % (name, i)), 800,
                           1000)
            canv.SetGridx(), canv.SetGridy()

            first = True
            for vtx in vtxbins:
                kname = "%s_%d_%d" % ((name, ) + vtx)
                if first:
                    quants[kname][0][i].Draw("ap")
                else:
                    quants[kname][0][i].Draw("p")
                quants[kname][1][i].Draw("p")
                quants[kname][0][i].GetYaxis().SetLimits(limits[0], limits[1])
                quants[kname][0][i].GetYaxis().SetRangeUser(
                    limits[0], limits[1])

                if first:
                    leg1 = TLegend(0.2, 0.95, 0.5, 1.0)
                    apply_modifs(leg1, lab_style)
                    leg2 = TLegend(0.5, 0.95, 0.8, 1.0)
                    apply_modifs(leg2, lab_style)
                    first = False

                leg1.AddEntry(quants[kname][0][i], "", "lp")
                leg2.AddEntry(quants[kname][1][i], "", "lp")

            leg1.Draw("SAME")
            leg2.Draw("SAME")

            lab = TPaveText(0.1, 0.95, 0.2, 1.0, "brNDC")
            apply_modifs(lab, lab_style)
            lab.AddText(name)
            lab.Draw("SAME")

            row.cell(HtmlPlot(canv, False, "", True, True, True))
            objs.append(lab)
            objs.append(leg1)
            objs.append(leg2)
            objs.append(canv)

    wpstr = "Working points\n"
    wpstr += "--------------\n"
    for wpn, wpfs in wpf.iteritems():
        wpstr += "\n%s\n" % wpn
        wpstr += "-------\n"
        keys = wpfs.keys()
        keys.sort()
        ## for cat,val in wpfs.iteritems():
        ##    funcs,tit = val
        for cat in keys:
            funcs, tit = wpfs[cat]
            wpstr += ("%s (%s) " % (cat.ljust(8), tit.ljust(14)))
            for f in funcs:
                if options.vsnvtx:
                    wpstr += "%1.0f-%1.0f: %1.3f " % (f.GetXmin(), f.GetXmax(),
                                                      f.GetParameter(1))
                else:
                    wpstr += "%1.0f-%1.0f: %1.2f " % (f.GetXmin(), f.GetXmax(),
                                                      f.Eval(wpref))
            wpstr += "\n"
    wptag.txt(str(wpstr))

    if not os.path.isdir(options.outdir):
        os.mkdir(options.outdir)
    hth.dump()

    return quants, objs
コード例 #4
0
file = TFile(output + ".root")
runPileup = None
ipoint = 0
for key in file.GetListOfKeys():
    kname = key.GetName()
    if (kname.find('pileup_') < 0): continue
    runnb = int(kname.split('_')[1])
    h = file.Get(kname)
    avgpileup = h.GetMean()
    rmspileup = h.GetRMS()
    evol.SetPoint(ipoint, runnb, avgpileup)
    evol.SetPointError(ipoint, 0, 0, rmspileup, rmspileup)
    ipoint = ipoint + 1
    if (runPileup is None):
        runPileup = h.Clone('runPileup')
        formatPlot(runPileup, 1, 1, 1, 20, 0, True, True, 1, 1, 1)
file.Close()

setStyle()
c = getNewCanvas("evolc", "evolc", False)
c.SetWindowSize(1200, 600)
c.Divide(2, 1)
c.cd(1)
evol.Draw('ap')
c.cd(2)
runPileup.DrawNormalized('hist')
c.SaveAs(output + "_summary.C")
c.SaveAs(output + "_summary.root")
print "Average pileup: " + str(runPileup.GetMean()) + ' +/- ' + str(
    runPileup.GetMeanError())
コード例 #5
0
ファイル: calcWp.py プロジェクト: anantoni/CMG
def main(options, args):
    from ROOT import gROOT
    gROOT.SetBatch(options.batch)

    from lip.Tools.rootutils import loadToolsLib, getQuantilesGraphs, apply_modifs, xtitle, ytitle
    loadToolsLib()

    from ROOT import TCut, TCanvas, gDirectory, gPad, kRed, kBlue, kWhite, setStyle, gStyle, TLegend, HtmlHelper, HtmlTag, HtmlTable, HtmlPlot, TPaveText, kOpenCircle, TF1, TLine
    setStyle()
    gStyle.SetOptStat(0)
    gStyle.SetOptFit(0)
    

    print "Getting list of files"
    files = getListOfFiles(options.indir,options.filePattern)
    
    chain = mkChain(files,options.treename)
    ## chain = mkChain(files[0:100],options.treename)
    ## chain = mkChain(files[0:1],options.treename)
    
    hth = HtmlHelper(options.outdir)
    hth.header().addobj( HtmlTag("link") ).set("rel","stylesheet").set("type","text/css").set("href","../res/style.css")  
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../../res/jquery.js").txt(" ")
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../res/style.js").txt(" ")
    hth.navbar().cell( HtmlTag("a") ).firstChild().txt("..").set("href","../?C=M;O=D")
    wptag = hth.body().addobj( HtmlTag("pre") )
    tab = hth.body().add( HtmlTable() )
    
    quants = { }
    objs = []
    
    var,binning = options.variable.split(":")
    limits = [ float(i) for i in  binning.split(",")[1:] ]
    delta = 0.1*max( abs(limits[0]),  abs(limits[1]))
    limits[0] -= delta
    limits[1] += delta

    xlab = "p_{T} (GeV)"
    if options.vsnvtx:
            xlab = "N_{PV}"
    sig_style = [ ("SetLineColor",kBlue), ("SetMarkerColor",kBlue), (xtitle,xlab), (ytitle,"%s cut" % var), ("SetFillStyle",0),  ("SetMarkerColor",kOpenCircle) ]
    bkg_style = [ ("SetLineColor",kRed), ("SetMarkerColor",kRed), (xtitle,xlab), (ytitle,"%s cut" % var), ("SetFillStyle",0) ]
    lab_style = [ ("SetFillColor",kWhite), ("SetShadowColor",kWhite), ("SetLineColor",kWhite), ("SetFillStyle",0) ]

    fitl =  TF1("fitl","pol1",12,19)
    fitr =  TF1("fitl","pol1",20,35)
    fita =  TF1("fita","pol1",15,25)

    ## wps = { "loose":[0,0.05,0.1,0.1,0.1], "medium":[0,0.10,0.2,0.2,0.2], "tight":[1,0.95,0.9,0.9,0.9] }
    wps = { "loose":[0,0.05,0.05,0.05,0.05], "medium":[0,0.1,0.1,0.1,0.1], "tight":[0,0.2,0.2,0.2,0.2] }
    if options.chs:
        wps = { "loose":[0,0.02,0.1,0.1,0.1], "medium":[0,0.05,0.2,0.2,0.2], "tight":[1,0.95,0.9,0.9,0.9] }
    wpf = { }
    for a in wps.keys():
        wpf[a] = {}
    wpref = 20.

    icat = 0
    for cut,name,vars in options.categories:
        print "Making TH2 ", name

        icat += 1
        vtxbins = [  (10,20), (20,999), (1,999) ]
        if options.integrateall:
            vtxbins = [  (1,999) ]
        ivtx = 0
        for vtx in vtxbins:
            print ( name, )+vtx
            hname = "%s_%d_%d" % ( ( name, )+vtx )

            vtxcut = TCut("nvtx > %d && nvtx < %d" % vtx)

            if options.vsnvtx:
                chain.Draw("%s:nvtx>>h_sig_%s(50,0.5,50.5,%s)" % (var, hname, binning), TCut("jetPt>20")*vtxcut*TCut(cut)*TCut(options.sigcut), "colz goff")
                chain.Draw("%s:nvtx>>h_bkg_%s(50,0.5,50.5,%s)" % (var, hname, binning), TCut("jetPt>20")*vtxcut*TCut(cut)*TCut(options.bkgcut), "colz goff")
            else:
                chain.Draw("%s:jetPt>>h_sig_%s(25,10,60,%s)" % (var, hname, binning), vtxcut*TCut(cut)*TCut(options.sigcut), "colz goff")
                chain.Draw("%s:jetPt>>h_bkg_%s(25,10,60,%s)" % (var, hname, binning), vtxcut*TCut(cut)*TCut(options.bkgcut), "colz goff")

            gDirectory.ls()
            h_sig = gDirectory.Get("h_sig_%s" % hname)
            h_bkg =  gDirectory.Get("h_bkg_%s" % hname)
            
            print "Getting quantiles ", hname 
            sig_qvals = [0.1,0.2,0.3,0.5,0.02 ,0.05, 0.15]
            bkg_qvals = [0.4,0.7,0.6,0.8,0.9 , 0.95, 0.9 ]
            quants[hname] = getQuantilesGraphs(h_sig,sig_qvals), getQuantilesGraphs(h_bkg,bkg_qvals)
            
            for i in range(len(sig_qvals)):
                if options.integrateall:
                    quants[hname][0][i].SetTitle("%1.0f%% efficiency" % (((1.-sig_qvals[i])*100.) ))
                    if options.vsnvtx:
                        quants[hname][0][i].Fit(fita.Clone(),"R+")
                    else:
                        quants[hname][0][i].Fit(fitl.Clone(),"R+")
                        quants[hname][0][i].Fit(fitr.Clone(),"R+")
                    for wpn,wp in wps.iteritems():
                        if wp[0] == 0 and wp[icat] == sig_qvals[i]:
                            wpf[wpn]["%d_%s" % (icat,name)] = quants[hname][0][i].GetListOfFunctions(),quants[hname][0][i].GetTitle()
                else:
                    quants[hname][0][i].SetTitle("%1.0f%% efficiency %d<N_{PV}<%d" % (((1.-sig_qvals[i])*100.,)+vtx) )
                style = sig_style+[("SetLineColor",kBlue-2*ivtx), ("SetMarkerColor",kBlue-2*ivtx)]
                apply_modifs(quants[hname][0][i], style)
                for f in quants[hname][0][i].GetListOfFunctions():
                    apply_modifs(f,style)

            
            for i in range(len(bkg_qvals)):
                if options.integrateall:
                    quants[hname][1][i].SetTitle("%1.0f%% rejection" % ((bkg_qvals[i]*100.) ))
                    if options.vsnvtx:
                        quants[hname][1][i].Fit(fita.Clone(),"R+")
                    else:
                        quants[hname][1][i].Fit(fitl.Clone(),"R+")
                        quants[hname][1][i].Fit(fitr.Clone(),"R+")
                    for wpn,wp in wps.iteritems():
                        if wp[0] == 1 and wp[icat] == bkg_qvals[i]:
                            wpf[wpn]["%d_%s" % (icat,name)] = quants[hname][1][i].GetListOfFunctions(),quants[hname][1][i].GetTitle()
                else:
                    quants[hname][1][i].SetTitle("%1.0f%% rejection  %d<N_{PV}<%d" % ((bkg_qvals[i]*100.,)+vtx) );
                style = bkg_style+[("SetLineColor",kRed-2*ivtx), ("SetMarkerColor",kRed-2*ivtx)] 
                apply_modifs(quants[hname][1][i],style)
                for f in quants[hname][1][i].GetListOfFunctions():
                    apply_modifs(f,style)
            ivtx += 1

        chain.Draw("nvtx>>h_nvtx_%s(50,0.5,50.5)"% (hname), TCut(cut)*TCut(options.sigcut), "goff")
        canv   = TCanvas("%s_nvtx"%(name),("%s"%(name)),800,1000)
        canv.cd()
        h_nvtx = gDirectory.Get("h_nvtx_%s"%hname)
        line = TLine(h_nvtx.GetMean(),0.,h_nvtx.GetMean(),h_nvtx.GetMaximum())
        h_nvtx.Draw("hist")
        line.Draw("same")
        objs.append(line)
        objs.append(canv)
        tab.row().cell( HtmlPlot(canv,False,"",True,True,True) )

        nvals = len(sig_qvals)
        plotsperline = 4
        for i in range(nvals):
            if i % plotsperline == 0:
                row = tab.row()
            canv   = TCanvas("%s_%d"%(name,i),("%s_%d"%(name,i)),800,1000)
            canv.SetGridx(), canv.SetGridy()

            first = True
            for vtx in vtxbins:
                kname = "%s_%d_%d" % ( ( name, )+vtx )
                if first:
                    quants[kname][0][i].Draw("ap")
                else:
                    quants[kname][0][i].Draw("p")
                quants[kname][1][i].Draw("p")
                quants[kname][0][i].GetYaxis().SetLimits(limits[0],limits[1])
                quants[kname][0][i].GetYaxis().SetRangeUser(limits[0],limits[1])

                if first:
                    leg1 = TLegend(0.2,0.95,0.5,1.0)
                    apply_modifs(leg1,lab_style)
                    leg2 = TLegend(0.5,0.95,0.8,1.0)
                    apply_modifs(leg2,lab_style)
                    first = False
                    
                leg1.AddEntry(quants[kname][0][i],"","lp")
                leg2.AddEntry(quants[kname][1][i],"","lp")
                
            leg1.Draw("SAME")
            leg2.Draw("SAME")
            
            lab = TPaveText(0.1,0.95,0.2,1.0,"brNDC")
            apply_modifs(lab,lab_style)
            lab.AddText(name)
            lab.Draw("SAME")

            row.cell( HtmlPlot(canv,False,"",True,True,True) )
            objs.append(lab)
            objs.append(leg1)
            objs.append(leg2)
            objs.append(canv)
            
    wpstr  = "Working points\n"
    wpstr += "--------------\n"
    for wpn,wpfs in wpf.iteritems():
        wpstr += "\n%s\n" % wpn
        wpstr += "-------\n"
        keys = wpfs.keys()
        keys.sort()
        ## for cat,val in wpfs.iteritems():
        ##    funcs,tit = val
        for cat in keys:
            funcs,tit = wpfs[cat]
            wpstr += ("%s (%s) " % (cat.ljust(8),tit.ljust(14)))
            for f in funcs:
                if options.vsnvtx:
                    wpstr += "%1.0f-%1.0f: %1.3f " % (f.GetXmin(), f.GetXmax(), f.GetParameter(1))
                else:
                    wpstr += "%1.0f-%1.0f: %1.2f " % (f.GetXmin(), f.GetXmax(), f.Eval(wpref))
            wpstr += "\n"
    wptag.txt(str(wpstr))

    if not os.path.isdir(options.outdir):
            os.mkdir(options.outdir)
    hth.dump()

    return quants, objs 
コード例 #6
0
ファイル: runHFCMeasurement.py プロジェクト: vveckaln/LipTop
                ensembleInfo += '<tr><td></td></tr>'
            
            ensembleHandler.getTree().Delete("all")
    misMeasurement.saveMonitoringHistograms()
    inF.Close()

    #save ensemble info to file
    fout = open('ensemble_info.html', 'w')
    fout.write(ensembleInfo)
    fout.close()
                

#display results
plotF = ROOT.TFile.Open("MisassignmentMeasurement.root")
cats=['all','emu','ll']
setStyle()
cnv = getNewCanvas('misc','misc',False)
cnv.SetWindowSize(1500,500)
cnv.Divide(3,1)
cnv2 =getNewCanvas('misresc','misresc',False)
cnv2.SetWindowSize(1500,500)
cnv2.Divide(3,1)
cnv3 =getNewCanvas('fractfitc','fracfitc',False)
cnv3.SetWindowSize(1500,500)
cnv3.Divide(3,1)
fracFitter=[]
icnv=0
for c in cats:
    prefix=''
    if(c!='all') : prefix=c+'_'
    icnv = icnv+1
コード例 #7
0
def main(indir, input, outdir):

    ## initialize ROOT style and set-up the html helper
    setStyle()
    if not os.path.isdir(outdir):
        os.mkdir(outdir)
    inputs = [i.split(":") for i in input.split(",") if ":" in i]
    from binning import vtxlabels, ptbins, ptlabels, etalables

    helpers = []
    hth = HtmlHelper(outdir)
    hth.header().addobj(HtmlTag("link")).set("rel", "stylesheet").set(
        "type", "text/css").set("href", "../res/style.css")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../../res/jquery.js").txt(" ")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../res/style.js").txt(" ")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("..").set(
        "href", "../?C=M;O=D")
    for vtx in vtxlabels:
        page = hth.addPage(vtx.replace("_vtx", "Nvtx"))
        page.header().addobj(HtmlTag("link")).set("rel", "stylesheet").set(
            "type", "text/css").set("href", "../res/style.css")
        page.header().addobj(HtmlTag("script")).set(
            "language", "javascript").set("type", "text/javascript").set(
                "src", "../../res/jquery.js").txt(" ")
        page.header().addobj(HtmlTag("script")).set(
            "language", "javascript").set("type", "text/javascript").set(
                "src", "../res/style.js").txt(" ")

        helper = PlotHelper([{
            "file": "%s/%s" % (indir, file),
            "dir": var,
            "id": var,
            "cat": vtx,
            "label": "%s" % (lab),
            "nostack": 1
        } for file, var, lab in inputs])

        helper.defaultStyles = [
            [
                (setcolors, ROOT.kRed),
                ("SetMarkerStyle", ROOT.kFullCircle),
            ],
            [
                (setcolors, ROOT.kBlack),
                ("SetMarkerStyle", ROOT.kFullTriangleDown),
            ],
            [
                (setcolors, ROOT.kMagenta),
                ("SetMarkerStyle", ROOT.kOpenDiamond),
            ],
            [
                (setcolors, ROOT.kGreen),
                ("SetMarkerStyle", ROOT.kFullStar),
            ],
            [
                (setcolors, ROOT.kBlue),
                ("SetMarkerStyle", ROOT.kOpenTriangleUp),
            ],
            [
                (setcolors, ROOT.kOrange),
                ("SetMarkerStyle", ROOT.kOpenCircle),
            ],
            [
                (setcolors, ROOT.kOrange - 4),
                ("SetMarkerStyle", ROOT.kOpenStar),
            ],
            [
                (setcolors, ROOT.kOrange + 2),
                ("SetMarkerStyle", ROOT.kOpenStar),
            ],
        ]

        histos_to_read = [("%s%s%s" % (eta, "%(cat)s", pt), [],
                           "%s%s" % (eta, pt)) for eta in etalables
                          for pt in ptlabels]
        helper.read(histos_to_read)

        canvstyle = []
        lab_style = [("SetFillColor", kWhite), ("SetShadowColor", kWhite),
                     ("SetLineColor", kWhite)]

        helper.nodisc = TF1("nodisc", "1. - x", 0., 1.)
        tab = page.body().add(HtmlTable())

        page_plots = []
        for eta in etalables:
            for pt in ptlabels:
                lab = TPaveText(0.1, 0.95, 0.4, 1.0, "brNDC")
                apply_modifs(lab, lab_style)
                rng = pt.replace("_pt", "").split("_")
                lab.AddText("%s %s<p_{T}<%s" % (eta, rng[0], rng[1]))
                lab.Draw("SAME")
                page_plots += [(["%s%s" % (eta, pt)], "histo", "pe", canvstyle,
                                (0.2, 0.2, 0.5,
                                 0.5), 0.5, "%s%s%s" % (eta, pt, vtx), [lab])]
            page_plots += [()]

        plot_page(page_plots,
                  tab,
                  helper,
                  None, [helper.nodisc],
                  plots_per_row=3)
        helpers.append(helper)

    ## done: create images and html
    hth.dump()

    print outdir
コード例 #8
0
ファイル: calcEff.py プロジェクト: anantoni/CMG
def main(options, args):
    from ROOT import gROOT
    gROOT.SetBatch(options.batch)

    from lip.Tools.rootutils import loadToolsLib, getEfficiencyGraphs, apply_modifs, xtitle, ytitle
    loadToolsLib()

    from ROOT import TCut, TCanvas, gDirectory, gPad, kRed, kBlue, kWhite, setStyle, TLegend, HtmlHelper, HtmlTag, HtmlTable, HtmlPlot, TPaveText
    setStyle()


    print "Getting list of files"
    files = getListOfFiles(options.indir,options.filePattern)
    
    chain = mkChain(files,options.treename)
    ### chain = mkChain(files[0:100],options.treename)
    ### chain = mkChain(files[0:10],options.treename)
    ### chain = mkChain(files[0:1],options.treename)
    
    hth = HtmlHelper(options.outdir)
    hth.header().addobj( HtmlTag("link") ).set("rel","stylesheet").set("type","text/css").set("href","../res/style.css")  
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../../res/jquery.js").txt(" ")
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../res/style.js").txt(" ")
    hth.navbar().cell( HtmlTag("a") ).firstChild().txt("..").set("href","../?C=M;O=D")
    tab = hth.body().add( HtmlTable() )
    
    quants = { }
    objs = []
    
    var,binning = options.variable.split(":")
    limits = [ float(i) for i in  binning.split(",")[1:] ]
    delta = 0.1*max( abs(limits[0]),  abs(limits[1]))
    limits[0] -= delta
    limits[1] += delta
    
    sig_style = [ ("SetLineColor",kBlue), ("SetMarkerColor",kBlue), (xtitle,"p_{T} (GeV)"), (ytitle,"%s eff or rej" % var), ("SetFillStyle",0) ]
    bkg_style = [ ("SetLineColor",kRed), ("SetMarkerColor",kRed), (xtitle,"p_{T} (GeV)"), (ytitle,"%s eff or rej" % var), ("SetFillStyle",0) ]
    lab_style = [ ("SetFillColor",kWhite), ("SetShadowColor",kWhite), ("SetLineColor",kWhite) ]

    for cut,name,vars in options.categories:
        print "Making TH2 ", name
        
        ### chain.Draw("4*(%s & 1) + 2*( (%s & 2) / 2) + (%s & 8)/8:jetPt>>h_sig_%s(25,10,60,%s)" % (var, var, var, name, binning), TCut(cut)*TCut(options.sigcut),"goff")
        ### chain.Draw("4*(%s & 1) + 2*( (%s & 2) / 2) + (%s & 8)/8:jetPt>>h_bkg_%s(25,10,60,%s)" % (var, var, var, name, binning), TCut(cut)*TCut(options.bkgcut), "goff")

        chain.Draw("%s:jetPt>>h_sig_%s(20,20,60,%s)" % (var, name, binning),TCut("ijet==1")*TCut(cut)*TCut(options.sigcut),"goff")
        chain.Draw("%s:jetPt>>h_bkg_%s(20,20,60,%s)" % (var, name, binning),TCut(cut)*TCut(options.bkgcut), "goff")

        h_sig = gDirectory.Get("h_sig_%s" % name)
        h_bkg =  gDirectory.Get("h_bkg_%s" % name)

        print "Gatting efficiencies ", name
        names = { (0.,6.):"tight", (0.,4.):"medium", (0.,2.):"loose" }
        sig_qvals = [(0.,2.),(0.,4.),(0.,6.)]
        bkg_qvals = [(0.,2.),(0.,4.),(0.,6.)]
        quants[name] = getEfficiencyGraphs(h_sig,sig_qvals,True), getEfficiencyGraphs(h_bkg,bkg_qvals)

        for i in range(len(sig_qvals)):
            quants[name][0][i].SetTitle("sig eff %s"  % names[sig_qvals[i]] );
            apply_modifs(quants[name][0][i],sig_style)
            
        for i in range(len(bkg_qvals)):
            quants[name][1][i].SetTitle("bkg rej %s" % names[bkg_qvals[i]] );
            apply_modifs(quants[name][1][i],bkg_style)

        nvals = len(sig_qvals)
        plotsperline = 4 
        for i in range(nvals):
            if i % plotsperline == 0:
                row = tab.row()
            canv   = TCanvas("%s_%d"%(name,i),("%s_%d"%(name,i)),800,1000)
            canv.SetGridx(), canv.SetGridy()

            quants[name][0][i].Draw("ap")
            quants[name][1][i].Draw("p")
            quants[name][0][i].GetYaxis().SetLimits(0.,1.2)
            quants[name][0][i].GetYaxis().SetRangeUser(0.,1.2)

            leg1 = TLegend(0.2,0.95,0.5,1.0)
            apply_modifs(leg1,lab_style)
            leg1.AddEntry(quants[name][0][i],"","lp")
            leg1.Draw("SAME")

            leg2 = TLegend(0.5,0.95,0.8,1.0)
            apply_modifs(leg2,lab_style)
            leg2.AddEntry(quants[name][1][i],"","lp")
            leg2.Draw("SAME")
            
            lab = TPaveText(0.1,0.95,0.2,1.0,"brNDC")
            apply_modifs(lab,lab_style)
            lab.AddText(name)
            lab.Draw("SAME")

            row.cell( HtmlPlot(canv,False,"",True,True,True) )
            objs.append(lab)
            objs.append(leg1)
            objs.append(leg2)
            objs.append(canv)

    if not os.path.isdir(options.outdir):
            os.mkdir(options.outdir)
    hth.dump()
    
    return quants, objs, chain 
コード例 #9
0
def showControlPlots(stackplots=None,spimposeplots=None,dataplots=None,plottitles=None,generalLabel='CMS preliminary',outputDir='data/plots', samplehtml='',forceNormalization=True) :

    if(len(stackplots)==0 and len(spimposeplots)==0 and len(dataplots)==0) : return

    #convert to lists
    stackLists=[]
    for p in stackplots:
        for i in xrange(0,len(p)):
            if(len(stackLists)<=i):
                newlist=ROOT.TList()
                stackLists.append(newlist)
            if( p[i].IsA().InheritsFrom("TH1") ):
                if(p[i].GetEntries()==0) : continue
            stackLists[i].Add(p[i])
            
    spimposeLists=[]
    for p in spimposeplots:
        for i in xrange(0,len(p)):
            if(len(spimposeLists)<=i):
                newlist=ROOT.TList()
                spimposeLists.append(newlist)
            if( p[i].IsA().InheritsFrom("TH1") ):
                if(p[i].GetEntries()==0) : continue
            spimposeLists[i].Add(p[i])

    dataLists=[]
    for p in dataplots:
        for i in xrange(0,len(p)):
            if(len(dataLists)<=i):
                newlist=ROOT.TList()
                dataLists.append(newlist)
            if( p[i].IsA().InheritsFrom("TH1") ):
                #print p[i].GetEntries()
                if(p[i].GetEntries()==0) : continue
            dataLists[i].Add(p[i])

    #draw result
    nplots=max([len(stackLists), len(dataLists), len(spimposeLists)])
    if(nplots==0) : return

    #output dir
    import getpass
    os.system('mkdir -p ' + outputDir)

    plotsToDisplay={}
    setStyle()
    c = getNewCanvas("recolevelc","recolevelc",False)
    c.SetWindowSize(800,800)
    c.SetCanvasSize(800,800)
    for iplot in xrange(0,nplots):

        stack=ROOT.TList()
        if(len(stackLists)>iplot): stack=stackLists[iplot]
        spimpose=ROOT.TList()
        if(len(spimposeLists)>iplot): spimpose=spimposeLists[iplot]
        data=ROOT.TList()
        if(len(dataLists)>iplot): data=dataLists[iplot]
        pname=''
        if(stack.At(0) != None) :      pname=stack.At(0).GetName()
        elif(spimpose.At(0) != None) : pname=spimpose.At(0).GetName()
        elif(data.At(0) != None) :     pname=data.At(0).GetName()
        if(len(pname)<=0): continue
        tagname = pname.split('_')[0]
        #print tagname
        if(tagname.find('all')==0) :   chtag='All events'
        elif(tagname.find('mumu')==0): chtag='#mu#mu events'
        elif(tagname.find('emu')==0):  chtag='e#mu events'
        elif(tagname.find('ee')==0):   chtag='ee events'
        elif(tagname.find('etau')==0):   chtag='e#tau events'
        elif(tagname.find('mutau')==0):   chtag='#mu#tau events'
        else :                         chtag=tagname

        #add the plot
        try :
            plotsToDisplay[chtag].append(pname)
        except :
            plotsToDisplay[chtag]=[]
            plotsToDisplay[chtag].append(pname)


        isamp=0
        for iplot in stack : isamp = isamp+1
        for iplot in spimpose : isamp = isamp+1
        for iplot in data: isamp = isamp+1
            
        plotLabel = generalLabel
        c.Clear()
        leg=showPlotsAndMCtoDataComparison(c,stack,spimpose,data,True,forceNormalization)#,forceNormalization)
        formatForCmsPublic(c.cd(1),leg,plotLabel,isamp)
        c.SaveAs(outputDir+'/'+pname+'.png')
        c.SaveAs(outputDir+'/'+pname+'.C')
        
        if(pname.find('cutflow')>=0 or pname.find('eventflow')>=0 or pname.find('evtflow')>=0) :
            try :
                savePlotAsTable(stack,spimpose,data,outputDir+'/'+pname+'.tex')
            except :
                continue
        
    #build a summary for the plot browser
    categories=[]
    subcategories=[]
    finalplots=[]
    for tag in plotsToDisplay.items() :

        tagch=''
        if( tag[0]=='All events')  : tagch='all'
        elif( tag[0]=='ee events') : tagch='ee'
        elif( tag[0]=='#mu#mu events') : tagch='mumu'
        elif( tag[0]=='e#mu events') : tagch='emu'
        elif( tag[0]=='e#tau events') : tagch='etau'
        elif( tag[0]=='#mu#tau events') : tagch='mutau'
        #else : tagch=tag[0]
        categories.append(tagch)
        
        for pname in tag[1] :
            ptokens=pname.split('_')
            if(len(ptokens)>1):
                prefix=ptokens[0]
                subcat=''
                if(prefix.find('eq0jets')>=0) :     subcat='eq0jets'
                elif(prefix.find('geq1jets')>=0) :  subcat='geq1jets'
                elif(prefix.find('eq1jets')>=0) :   subcat='eq1jets'
                elif(prefix.find('geq2jets')>=0) :  subcat='geq2jets'
                elif(prefix.find('eq2jets')>=0) :   subcat='eq2jets'
                elif(prefix.find('geq3jets')>=0) :  subcat='geq3jets'
                elif(prefix.find('eq3jets')>=0) :  subcat='eq3jets'
                elif(prefix.find('eq0btags')>=0) :  subcat='eq0btags'
                elif(prefix.find('geq1btags')>=0) : subcat='geq1btags'
                elif(prefix.find('eq1btags')>=0) :  subcat='eq1btags'
                elif(prefix.find('geq2btags')>=0) : subcat='geq2btags'
                elif(prefix.find('eq2btags')>=0) : subcat='eq2btags'
                elif(prefix.find('vbf')>=0) :       subcat='vbf'
                else :
                    subcat=prefix
                    subcat=subcat.replace(tagch,'')
                subcategories.append(subcat)
                finalplots.append( ptokens[1] ) 
            
    #remove duplicates
    categories=list(set(categories))
    subcategories=list(set(subcategories))
    finalplots=list(set(finalplots))

    #write in json format
    fileObj = open(outputDir+'/plotter.json','w')
    fileObj.write(json.dumps( { 'categories':categories,
                                'subcategories':subcategories,
                                'plots':finalplots,
                                'ploturl':''},
                              sort_keys=True,
                              indent=4 ) )
    fileObj.close()
コード例 #10
0
def main(options, args):
    from ROOT import gROOT
    gROOT.SetBatch(options.batch)

    from lip.Tools.rootutils import loadToolsLib, getEfficiencyGraphs, apply_modifs, xtitle, ytitle
    loadToolsLib()

    from ROOT import TCut, TCanvas, gDirectory, gPad, kRed, kBlue, kWhite, setStyle, TLegend, HtmlHelper, HtmlTag, HtmlTable, HtmlPlot, TPaveText
    setStyle()

    print "Getting list of files"
    files = getListOfFiles(options.indir, options.filePattern)

    chain = mkChain(files, options.treename)
    ### chain = mkChain(files[0:100],options.treename)
    ### chain = mkChain(files[0:10],options.treename)
    ### chain = mkChain(files[0:1],options.treename)

    hth = HtmlHelper(options.outdir)
    hth.header().addobj(HtmlTag("link")).set("rel", "stylesheet").set(
        "type", "text/css").set("href", "../res/style.css")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../../res/jquery.js").txt(" ")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../res/style.js").txt(" ")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("..").set(
        "href", "../?C=M;O=D")
    tab = hth.body().add(HtmlTable())

    quants = {}
    objs = []

    var, binning = options.variable.split(":")
    limits = [float(i) for i in binning.split(",")[1:]]
    delta = 0.1 * max(abs(limits[0]), abs(limits[1]))
    limits[0] -= delta
    limits[1] += delta

    sig_style = [("SetLineColor", kBlue), ("SetMarkerColor", kBlue),
                 (xtitle, "p_{T} (GeV)"), (ytitle, "%s eff or rej" % var),
                 ("SetFillStyle", 0)]
    bkg_style = [("SetLineColor", kRed), ("SetMarkerColor", kRed),
                 (xtitle, "p_{T} (GeV)"), (ytitle, "%s eff or rej" % var),
                 ("SetFillStyle", 0)]
    lab_style = [("SetFillColor", kWhite), ("SetShadowColor", kWhite),
                 ("SetLineColor", kWhite)]

    for cut, name, vars in options.categories:
        print "Making TH2 ", name

        ### chain.Draw("4*(%s & 1) + 2*( (%s & 2) / 2) + (%s & 8)/8:jetPt>>h_sig_%s(25,10,60,%s)" % (var, var, var, name, binning), TCut(cut)*TCut(options.sigcut),"goff")
        ### chain.Draw("4*(%s & 1) + 2*( (%s & 2) / 2) + (%s & 8)/8:jetPt>>h_bkg_%s(25,10,60,%s)" % (var, var, var, name, binning), TCut(cut)*TCut(options.bkgcut), "goff")

        chain.Draw("%s:jetPt>>h_sig_%s(20,20,60,%s)" % (var, name, binning),
                   TCut("ijet==1") * TCut(cut) * TCut(options.sigcut), "goff")
        chain.Draw("%s:jetPt>>h_bkg_%s(20,20,60,%s)" % (var, name, binning),
                   TCut(cut) * TCut(options.bkgcut), "goff")

        h_sig = gDirectory.Get("h_sig_%s" % name)
        h_bkg = gDirectory.Get("h_bkg_%s" % name)

        print "Gatting efficiencies ", name
        names = {(0., 6.): "tight", (0., 4.): "medium", (0., 2.): "loose"}
        sig_qvals = [(0., 2.), (0., 4.), (0., 6.)]
        bkg_qvals = [(0., 2.), (0., 4.), (0., 6.)]
        quants[name] = getEfficiencyGraphs(h_sig, sig_qvals,
                                           True), getEfficiencyGraphs(
                                               h_bkg, bkg_qvals)

        for i in range(len(sig_qvals)):
            quants[name][0][i].SetTitle("sig eff %s" % names[sig_qvals[i]])
            apply_modifs(quants[name][0][i], sig_style)

        for i in range(len(bkg_qvals)):
            quants[name][1][i].SetTitle("bkg rej %s" % names[bkg_qvals[i]])
            apply_modifs(quants[name][1][i], bkg_style)

        nvals = len(sig_qvals)
        plotsperline = 4
        for i in range(nvals):
            if i % plotsperline == 0:
                row = tab.row()
            canv = TCanvas("%s_%d" % (name, i), ("%s_%d" % (name, i)), 800,
                           1000)
            canv.SetGridx(), canv.SetGridy()

            quants[name][0][i].Draw("ap")
            quants[name][1][i].Draw("p")
            quants[name][0][i].GetYaxis().SetLimits(0., 1.2)
            quants[name][0][i].GetYaxis().SetRangeUser(0., 1.2)

            leg1 = TLegend(0.2, 0.95, 0.5, 1.0)
            apply_modifs(leg1, lab_style)
            leg1.AddEntry(quants[name][0][i], "", "lp")
            leg1.Draw("SAME")

            leg2 = TLegend(0.5, 0.95, 0.8, 1.0)
            apply_modifs(leg2, lab_style)
            leg2.AddEntry(quants[name][1][i], "", "lp")
            leg2.Draw("SAME")

            lab = TPaveText(0.1, 0.95, 0.2, 1.0, "brNDC")
            apply_modifs(lab, lab_style)
            lab.AddText(name)
            lab.Draw("SAME")

            row.cell(HtmlPlot(canv, False, "", True, True, True))
            objs.append(lab)
            objs.append(leg1)
            objs.append(leg2)
            objs.append(canv)

    if not os.path.isdir(options.outdir):
        os.mkdir(options.outdir)
    hth.dump()

    return quants, objs, chain
コード例 #11
0
ファイル: plotROCs.py プロジェクト: anantoni/CMG
def main(indir,input,outdir):

    ## initialize ROOT style and set-up the html helper
    setStyle()
    if not os.path.isdir(outdir):
        os.mkdir(outdir)
    inputs = [ i.split(":") for i in input.split(",") if ":" in i  ]
    from binning import vtxlabels, ptbins, ptlabels, etalables

    helpers = []
    hth = HtmlHelper(outdir)
    hth.header().addobj( HtmlTag("link") ).set("rel","stylesheet").set("type","text/css").set("href","../res/style.css")  
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../../res/jquery.js").txt(" ")
    hth.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../res/style.js").txt(" ")
    hth.navbar().cell( HtmlTag("a") ).firstChild().txt("..").set("href","../?C=M;O=D")
    for vtx in vtxlabels:
        page = hth.addPage(vtx.replace("_vtx","Nvtx"))
        page.header().addobj( HtmlTag("link") ).set("rel","stylesheet").set("type","text/css").set("href","../res/style.css")  
        page.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../../res/jquery.js").txt(" ")
        page.header().addobj( HtmlTag("script") ).set("language","javascript").set("type","text/javascript").set("src","../res/style.js").txt(" ")


        helper = PlotHelper( [ { 
            "file":"%s/%s" % (indir,file), "dir":var, "id":var,
            "cat":vtx,   "label": "%s" % (lab), "nostack" : 1 } for file,var,lab in inputs ] )
        
        helper.defaultStyles = [
            [ (setcolors,ROOT.kRed),  ("SetMarkerStyle",ROOT.kFullCircle),       ], 
            [ (setcolors,ROOT.kBlack),  ("SetMarkerStyle",ROOT.kFullTriangleDown), ], 
            [ (setcolors,ROOT.kMagenta),  ("SetMarkerStyle",ROOT.kOpenDiamond),      ], 
            [ (setcolors,ROOT.kGreen),  ("SetMarkerStyle",ROOT.kFullStar),         ], 
            [ (setcolors,ROOT.kBlue), ("SetMarkerStyle",ROOT.kOpenTriangleUp),   ], 
            [ (setcolors,ROOT.kOrange),   ("SetMarkerStyle",ROOT.kOpenCircle),       ], 
            [ (setcolors,ROOT.kOrange-4),  ("SetMarkerStyle",ROOT.kOpenStar),         ], 
            [ (setcolors,ROOT.kOrange+2),  ("SetMarkerStyle",ROOT.kOpenStar),         ], 
            ]
        
        histos_to_read = [ ("%s%s%s" % (eta,"%(cat)s",pt), [], "%s%s" % (eta,pt))  for eta in etalables for pt in ptlabels ]
        helper.read(histos_to_read)
        
        canvstyle = []
        lab_style = [ ("SetFillColor",kWhite), ("SetShadowColor",kWhite), ("SetLineColor",kWhite) ]
        
        helper.nodisc = TF1("nodisc","1. - x",0.,1.)
        tab = page.body().add( HtmlTable() )
        
        page_plots = []
        for eta in etalables:
            for pt in ptlabels:
                lab = TPaveText(0.1,0.95,0.4,1.0,"brNDC")
                apply_modifs(lab,lab_style)
                rng = pt.replace("_pt","").split("_")
                lab.AddText("%s %s<p_{T}<%s" % ( eta, rng[0], rng[1] )  ) 
                lab.Draw("SAME")
                page_plots += [ (["%s%s" % (eta,pt)], "histo", "pe", canvstyle,  (0.2,0.2,0.5,0.5),   0.5, "%s%s%s" % (eta,pt,vtx),  [lab]) ]
            page_plots += [ () ]
            
        plot_page(page_plots,tab,helper,None,[helper.nodisc],plots_per_row=3)
        helpers.append(helper)
        
    ## done: create images and html 
    hth.dump()

    print outdir
コード例 #12
0
def main(infile, outdir, label, variables="", mvas=""):

    ## initialize ROOT style and set-up the html helper
    setStyle()
    hth = HtmlHelper(outdir)
    hth.header().addobj(HtmlTag("link")).set("rel", "stylesheet").set(
        "type", "text/css").set("href", "../res/style.css")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../../res/jquery.js").txt(" ")
    hth.header().addobj(HtmlTag("script")).set("language", "javascript").set(
        "type", "text/javascript").set("src", "../res/style.js").txt(" ")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("..").set(
        "href", "../?C=M;O=D")
    hth.navbar().cell(HtmlTag("a")).firstChild().txt("kinematics").set(
        "href", "./")

    from binning import vtxlabels, ptbins, ptlabels, etalables

    helper_inputs = [{
        "file":
        infile,
        "dir":
        "background",
        "id":
        "background",
        "cat":
        vtx,
        "label":
        "PU %s < N_{vtx} < %s" % tuple(vtx.replace("_vtx", "").split("_")),
        "nostack":
        1
    } for vtx in vtxlabels] + [{
        "file":
        infile,
        "dir":
        "signal",
        "id":
        "signal",
        "cat":
        vtx,
        "label":
        "u,d,s %s < N_{vtx} < %s" % tuple(vtx.replace("_vtx", "").split("_")),
        "nostack":
        1
    } for vtx in vtxlabels]

    if mvas == "":
        mvas = "BDT_%s" % label
    print mvas.split(',')
    variables_to_plot = [
        ("dRMean", "dR2Mean", "beta", "betaStar", "nvtx"),
        (v for v in variables.split(':')
         if v != "" and v != "dRMean" and v != "dR2Mean"),
        ## ("Fisher_%s" % label,"BDT_%s" % label)
        tuple(v for v in mvas.split(',') if v != ""),
        ## ("mva",)
    ]
    etalables = ["TK", "HEin", "HEout", "HF"]
    helper, rochelper = plot_jet_id(
        infile,
        hth,
        variables_to_plot,
        helper_inputs=helper_inputs,
        vtxlabels=vtxlabels,
        ptbins=ptbins,
        etalables=etalables,
        ## etalables = ["central","endNOtk","fwd"]
    )

    ## done: create images and html
    hth.dump()

    save_rocs(rochelper, outdir)
コード例 #13
0
def showControlPlots(stackplots=None,spimposeplots=None,dataplots=None,plottitles=None,generalLabel='CMS preliminary',outputDir='data/plots', samplehtml='',forceNormalization=True) :

    if(len(stackplots)==0 and len(spimposeplots)==0 and len(dataplots)==0) : return

    #convert to lists
    stackLists=[]
    for p in stackplots:
        for i in xrange(0,len(p)):
            if(len(stackLists)<=i):
                newlist=ROOT.TList()
                stackLists.append(newlist)
            if( p[i].IsA().InheritsFrom("TH1") ):
                if(p[i].GetEntries()==0) : continue
            stackLists[i].Add(p[i])
            
    spimposeLists=[]
    for p in spimposeplots:
        for i in xrange(0,len(p)):
            if(len(spimposeLists)<=i):
                newlist=ROOT.TList()
                spimposeLists.append(newlist)
            if( p[i].IsA().InheritsFrom("TH1") ):
                if(p[i].GetEntries()==0) : continue
            spimposeLists[i].Add(p[i])

    dataLists=[]
    for p in dataplots:
        for i in xrange(0,len(p)):
            if(len(dataLists)<=i):
                newlist=ROOT.TList()
                dataLists.append(newlist)
            if( p[i].IsA().InheritsFrom("TH1") ):
                #print p[i].GetEntries()
                if(p[i].GetEntries()==0) : continue
            dataLists[i].Add(p[i])

    #draw result
    nplots=max([len(stackLists), len(dataLists), len(spimposeLists)])
    if(nplots==0) : return

    #output dir
    import getpass
    os.system('mkdir -p ' + outputDir)

    plotsToDisplay={}
    setStyle()
    c = getNewCanvas("recolevelc","recolevelc",False)
    c.SetWindowSize(800,800)
    c.SetCanvasSize(800,800)
    for iplot in xrange(0,nplots):

        stack=ROOT.TList()
        if(len(stackLists)>iplot): stack=stackLists[iplot]
        spimpose=ROOT.TList()
        if(len(spimposeLists)>iplot): spimpose=spimposeLists[iplot]
        data=ROOT.TList()
        if(len(dataLists)>iplot): data=dataLists[iplot]
        pname=''
        if(stack.At(0) != None) :      pname=stack.At(0).GetName()
        elif(spimpose.At(0) != None) : pname=spimpose.At(0).GetName()
        elif(data.At(0) != None) :     pname=data.At(0).GetName()
        if(len(pname)<=0): continue
        tagname = pname.split('_')[0]
        #print tagname
        if(tagname.find('all')==0) :   chtag='All events'
        elif(tagname.find('mumu')==0): chtag='#mu#mu events'
        elif(tagname.find('emu')==0):  chtag='e#mu events'
        elif(tagname.find('ee')==0):   chtag='ee events'
        elif(tagname.find('etau')==0):   chtag='e#tau events'
        elif(tagname.find('mutau')==0):   chtag='#mu#tau events'
        else :                         chtag=tagname

        #add the plot
        try :
            plotsToDisplay[chtag].append(pname)
        except :
            plotsToDisplay[chtag]=[]
            plotsToDisplay[chtag].append(pname)


        isamp=0
        for iplot in stack : isamp = isamp+1
        for iplot in spimpose : isamp = isamp+1
        for iplot in data: isamp = isamp+1
            
        plotLabel = generalLabel
        c.Clear()
        leg=showPlotsAndMCtoDataComparison(c,stack,spimpose,data,True,forceNormalization)#,forceNormalization)
        formatForCmsPublic(c.cd(1),leg,plotLabel,isamp)
        c.SaveAs(outputDir+'/'+pname+'.png')
        c.SaveAs(outputDir+'/'+pname+'.C')
        
        if(pname.find('cutflow')>=0 or pname.find('eventflow')>=0 or pname.find('evtflow')>=0) :
            try :
                savePlotAsTable(stack,spimpose,data,outputDir+'/'+pname+'.tex')
            except :
                continue
        
    #build a summary for the plot browser
    categories=[]
    subcategories=[]
    finalplots=[]
    for tag in plotsToDisplay.items() :

        tagch=''
        if( tag[0]=='All events')  : tagch='all'
        elif( tag[0]=='ee events') : tagch='ee'
        elif( tag[0]=='#mu#mu events') : tagch='mumu'
        elif( tag[0]=='e#mu events') : tagch='emu'
        elif( tag[0]=='e#tau events') : tagch='etau'
        elif( tag[0]=='#mu#tau events') : tagch='mutau'
        #else : tagch=tag[0]
        categories.append(tagch)
        
        for pname in tag[1] :
            ptokens=pname.split('_')
            if(len(ptokens)>1):
                prefix=ptokens[0]
                subcat=''
                if(prefix.find('eq0jets')>=0) :     subcat='eq0jets'
                elif(prefix.find('geq1jets')>=0) :  subcat='geq1jets'
                elif(prefix.find('eq1jets')>=0) :   subcat='eq1jets'
                elif(prefix.find('geq2jets')>=0) :  subcat='geq2jets'
                elif(prefix.find('eq2jets')>=0) :   subcat='eq2jets'
                elif(prefix.find('geq3jets')>=0) :  subcat='geq3jets'
                elif(prefix.find('eq3jets')>=0) :  subcat='eq3jets'
                elif(prefix.find('eq0btags')>=0) :  subcat='eq0btags'
                elif(prefix.find('geq1btags')>=0) : subcat='geq1btags'
                elif(prefix.find('eq1btags')>=0) :  subcat='eq1btags'
                elif(prefix.find('geq2btags')>=0) : subcat='geq2btags'
                elif(prefix.find('eq2btags')>=0) : subcat='eq2btags'
                elif(prefix.find('vbf')>=0) :       subcat='vbf'
                else :
                    subcat=prefix
                    subcat=subcat.replace(tagch,'')
                subcategories.append(subcat)
                finalplots.append( ptokens[1] ) 
            
    #remove duplicates
    categories=list(set(categories))
    subcategories=list(set(subcategories))
    finalplots=list(set(finalplots))

    #write in json format
    fileObj = open(outputDir+'/plotter.json','w')
    fileObj.write(json.dumps( { 'categories':categories,
                                'subcategories':subcategories,
                                'plots':finalplots,
                                'ploturl':''},
                              sort_keys=True,
                              indent=4 ) )
    fileObj.close()