def getWorkingPoint(var, bkg, sig, dir, varNorm): sigHist = inFile.Get(dir + "_" + sig + "/" + var) bkgHist = inFile.Get(dir + "_" + bkg + "/" + var) sigNormHist = inFile.Get(dir + "_" + sig + "/" + varNorm) bkgNormHist = inFile.Get(dir + "_" + bkg + "/" + varNorm) rocPlot = makeRoc(sigHist, sigNormHist, bkgHist, bkgNormHist, doErr=False, bkgMode="Rej") nbins = sigHist.GetNbinsX() thisSig = sigHist.Integral(0, nbins + 1) thisSigDen = sigNormHist.Integral(0, nbins + 1) if not thisSigDen: thisSigDen = 1 sigEff = float(thisSig) / float(thisSigDen) thisBkg = bkgHist.Integral(0, nbins + 1) thisBkgDen = bkgNormHist.Integral(0, nbins + 1) if not thisBkgDen: thisBkgDen = 1 bkgEff = float(thisBkg) / float(thisBkgDen) if bkgEff: bkgRej = 1. / bkgEff else: bkgRej = 1 print bkgRej return (sigEff, bkgRej)
def makeRocPlot(inFile, name, var, bkg, sig, dir, varNorm=None, debug=False): sigHist = inFile.Get(dir + "_" + sig + "/" + var) bkgHist = inFile.Get(dir + "_" + bkg + "/" + var) if varNorm: sigNormHist = inFile.Get(dir + "_" + sig + "/" + varNorm) bkgNormHist = inFile.Get(dir + "_" + bkg + "/" + varNorm) else: sigNormHist = sigHist bkgNormHist = bkgHist rocPlots = [] for config in [("Rej", 1, 5e4), ("Eff", 5e-4, 1)]: rocPlots.append( makeRoc(sigHist, sigNormHist, bkgHist, bkgNormHist, doErr=True, bkgMode=config[0], cleanNoCut=True, debug=debug)) rocPlots[-1].SetLineWidth(5) rocPlots[-1].GetXaxis().SetTitle("B-Jet Efficiency") rocPlots[-1].GetXaxis().SetRangeUser(0.4, 1) if config[0] == "Rej": yTitle = "Light Flavor Rejection" elif config[0] == "Eff": yTitle = "Light Flavor Efficiency" rocPlots[-1].GetYaxis().SetTitle(yTitle) rocPlots[-1].GetYaxis().SetRangeUser(config[1], config[2]) return rocPlots
def getWorkingPoint(name, var, bkg, sig, dir, varNorm=None): sigHist = inFile.Get(dir+"_"+sig+"/"+var) bkgHist = inFile.Get(dir+"_"+bkg+"/"+var) if varNorm: sigNormHist = inFile.Get(dir+"_"+sig+"/"+varNorm) bkgNormHist = inFile.Get(dir+"_"+bkg+"/"+varNorm) else : sigNormHist = sigHist bkgNormHist = bkgHist rocPlot, sigEffPlot, bkgEffPlot, WPs = makeRoc(sigHist, sigNormHist, bkgHist, bkgNormHist,doErr=False,bkgMode="Eff", returnWPs = True) nbins = sigHist.GetNbinsX() thisSig = sigHist .Integral(0,nbins+1) thisSigDen = sigNormHist.Integral(0,nbins+1) if not thisSigDen: thisSigDen = 1 sigEff = float(thisSig) / float(thisSigDen) thisBkg = bkgHist .Integral(0,nbins+1) thisBkgDen = bkgNormHist.Integral(0,nbins+1) if not thisBkgDen: thisBkgDen = 1 bkgEff = float(thisBkg) / float(thisBkgDen) if bkgEff: bkgRej = 1./bkgEff else: bkgRej = 1 print name,WPs
def makeRocPlot(name, var, bkg, sig, dir, varNorm=None,debug=False, inFile=None): inFile = ROOT.TFile(inFile, "READ") sigHist = inFile.Get(dir+"_"+sig+"/"+var) bkgHist = inFile.Get(dir+"_"+bkg+"/"+var) if varNorm: sigNormHist = inFile.Get(dir+"_"+sig+"/"+varNorm) bkgNormHist = inFile.Get(dir+"_"+bkg+"/"+varNorm) else : sigNormHist = sigHist bkgNormHist = bkgHist rocPlots = [] for config in [("Rej",1,5e4),("Eff",5e-4,1)]: rocPlots.append(makeRoc(sigHist, sigNormHist, bkgHist, bkgNormHist,doErr=False,bkgMode=config[0],cleanNoCut=True,debug=debug)) can = ROOT.TCanvas(name+"_"+config[0], name+"_"+config[0]) can.cd().SetLogy(1) rocPlots[-1].SetLineWidth(5) # rocPlots[-1].SetLineWidth(2) rocPlots[-1].GetXaxis().SetTitle("B-Jet Efficiency") rocPlots[-1].GetXaxis().SetRangeUser(0.4,1) if config[0] == "Rej": yTitle ="Light Flavor Rejection" elif config[0] == "Eff": yTitle ="Light Flavor Efficiency" rocPlots[-1].GetYaxis().SetTitle(yTitle) rocPlots[-1].GetYaxis().SetRangeUser(config[1],config[2]) rocPlots[-1].Draw("AL") # can.SaveAs(o.outDir+"/roc_"+name+"_"+config[0]+"_"+label1+"_"+".pdf") # can.SaveAs(o.outDir+"/roc_"+name+"_"+config[0]+"_"+label1+"_"+".png") return rocPlots
def makeRocPlot(name, var, bkg, sig, dir, varNorm=None,debug=False): sigHist = inFile.Get(dir+"_"+sig+"/"+var) bkgHist = inFile.Get(dir+"_"+bkg+"/"+var) if varNorm: sigNormHist = inFile.Get(dir+"_"+sig+"/"+varNorm) bkgNormHist = inFile.Get(dir+"_"+bkg+"/"+varNorm) else : sigNormHist = sigHist bkgNormHist = bkgHist rocPlots = [] for config in [("Rej",1,5e4),("Eff",5e-4,1)]: # for config in [("Eff",5e-4,1)]: print (name) rocPlot__, sigEffPlot, bkgEffPlot = makeRoc(sigHist, sigNormHist, bkgHist, bkgNormHist,doErr=False,bkgMode=config[0],cleanNoCut=True,debug=debug) rocPlots.append(rocPlot__) can = ROOT.TCanvas(name+"_"+config[0], name+"_"+config[0]) can.cd().SetLogy(1) rocPlots[-1].SetLineWidth(5) rocPlots[-1].GetXaxis().SetTitle("B-Jet Efficiency") rocPlots[-1].GetXaxis().SetRangeUser(0.4,1) if config[0] == "Rej": yTitle ="Light Flavor Rejection" elif config[0] == "Eff": yTitle ="Light Flavor Efficiency" rocPlots[-1].GetYaxis().SetTitle(yTitle) rocPlots[-1].GetYaxis().SetRangeUser(config[1],config[2]) rocPlots[-1].Draw("AL") # can.SaveAs(o.outDir+"/roc_"+name+"_"+config[0]+".pdf") # can.SaveAs(o.outDir+"/roc_"+name+"_"+config[0]+".png") if config[0] == "Eff": if not os.path.exists(o.outDir+"/PureSinglePlots/"): os.makedirs(o.outDir+"/PureSinglePlots/") can.SaveAs(o.outDir+"/PureSinglePlots/roc_"+name+"_"+config[0]+".pdf") can.SaveAs(o.outDir+"/PureSinglePlots/roc_"+name+"_"+config[0]+".png") can.Clear() can.SetGrid(1) can.cd().SetLogy(1) sigEffPlot.SetLineWidth(5) sigEffPlot.GetXaxis().SetTitle("discriminator value") sigEffPlot.GetXaxis().SetRangeUser(-0.2,1) if "deepjet" in name: sigEffPlot.GetXaxis().SetRangeUser(0.,1) sigEffPlot.GetYaxis().SetTitle("signal Efficiency") sigEffPlot.GetYaxis().SetRangeUser(config[1],config[2]) sigEffPlot.Draw("AL") can.SaveAs(o.outDir+"/PureSinglePlots/sigEff_"+name+"_"+config[0]+".pdf") can.SaveAs(o.outDir+"/PureSinglePlots/sigEff_"+name+"_"+config[0]+".png") can.SetGrid(1) can.Clear() can.cd().SetLogy(1) bkgEffPlot.SetLineWidth(5) bkgEffPlot.GetXaxis().SetTitle("discriminator value") bkgEffPlot.GetXaxis().SetRangeUser(-0.2,1) if "deepjet" in name: bkgEffPlot.GetXaxis().SetRangeUser(0.,1) bkgEffPlot.GetYaxis().SetTitle("bkg Efficiency") bkgEffPlot.GetYaxis().SetRangeUser(config[1],config[2]) bkgEffPlot.Draw("AL") can.SaveAs(o.outDir+"/PureSinglePlots/bkgEff_"+name+"_"+config[0]+".pdf") can.SaveAs(o.outDir+"/PureSinglePlots/bkgEff_"+name+"_"+config[0]+".png") can.Clear() can.cd().SetLogy(1) bkgEffPlot.SetLineWidth(5) bkgEffPlot.GetXaxis().SetTitle("discriminator value") bkgEffPlot.GetXaxis().SetRangeUser(-0.2,1) if "deepjet" in name: bkgEffPlot.GetXaxis().SetRangeUser(0.,1) bkgEffPlot.GetYaxis().SetTitle("Efficiency") bkgEffPlot.GetYaxis().SetRangeUser(config[1],config[2]) bkgEffPlot.Draw("AL") sigEffPlot.SetLineColor(ROOT.kRed) sigEffPlot.Draw("L SAME") can.SaveAs(o.outDir+"/PureSinglePlots/bothEff_"+name+"_"+config[0]+".pdf") can.SaveAs(o.outDir+"/PureSinglePlots/bothEff_"+name+"_"+config[0]+".png") return rocPlots