def plot_and_get_sig(sig_hist, bkg_hist, input_name, total_sig, total_bkg, mva_name, prefix, out_name, lumi): out_dir = input_name if OUT_DIRECTORY: out_dir = OUT_DIRECTORY sig = get_sig_hist(sig_hist, bkg_hist, total_sig, total_bkg, lumi) set_graph_style(sig, kBlack) sig.SetTitle(";%s;significance" % mva_name) canv = TCanvas("sig", "", 800, 600) sig.Draw("a3") sig.Draw("lx") index_max = TMath.LocMax(sig.GetN(), sig.GetY()) sig_max = "%.1f #pm %.1f" % (sig.GetY()[index_max], sig.GetEY()[index_max]) leg = TLegend(0.2, 0.7, 0.5, 0.8) PlotStyle.legend(leg) leg.AddEntry(sig, "%s @%s/fb" % (sig_max, lumi), "l") #ATLASLabel(0.20,0.75,"Work in progress") #ATLASLumiLabel(0.20,0.895,str(lumi*0.001)) leg.Draw() save_canv(canv, prefix + input_name + out_name, out_dir + "_" + mva_name + out_name) return sig_max
def compare_results(tree_test, tree_train, lumi, mva_names, out_name, total_sig_events, total_bkg_events, max_lines): roc_dict = {} for name, tree in tree_test.iteritems(): mva_name = mva_names[name] roc = get_roc_curve(tree, name, mva_name) roc_dict[name] = roc rocs = roc_dict.values() canv = TCanvas("comparison_roc", "", 800, 600) leg = TLegend(0.17, 0.17, 0.62, 0.6) PlotStyle.legend(leg) sortedRocs = [] for name, roc in roc_dict.iteritems(): max_sig = get_max_sig(tree_test[name], name, mva_names[name], total_sig_events[name], total_bkg_events[name], lumi) max_sig_train = get_max_sig(tree_train[name], name, mva_names[name], total_sig_events[name], total_bkg_events[name], lumi) #sig_diff = abs(max_sig - max_sig_train) area_test = get_area(tree_test[name], name, mva_names[name]) area_train = get_area(tree_train[name], name, mva_names[name]) diff_area = abs(area_test - area_train) print name, area_test, area_train, diff_area, max_sig, max_sig_train max_sig_error_string = get_max_sig_error(tree_test[name], name, mva_names[name], total_sig_events[name], total_bkg_events[name], lumi) sortedRocs.append((roc, name, diff_area, max_sig_error_string)) sortedRocs.sort(key=get_sig_from_tuple) if max_lines > len(sortedRocs): max_lines = len(sortedRocs) set_graph_style(sortedRocs[0][0], get_color(0, max_lines)) sortedRocs[0][0].SetTitle("; sig. eff.; bkg. rej.") sortedRocs[0][0].Draw("a l") leg.AddEntry(sortedRocs[0][0], "%s: %s %s/fb" % (sortedRocs[0][1], sortedRocs[0][3], lumi), "l") index = 1 for r in sortedRocs[1:max_lines]: set_graph_style(r[0], get_color(index, max_lines)) r[0].Draw("same l") leg.AddEntry(r[0], "%s: %s %s/fb" % (r[1], r[3], lumi), "l") index += 1 leg.Draw() save_canv(canv, out_name)
def plot_and_get_sig(train_tree, test_tree, input_name, total_sig, total_bkg, nbins, min, max, mva_name, lumi, output): sig_train = get_sig(train_tree, "train", mva_name, total_sig, total_bkg, lumi, nbins, min, max) sig_test = get_sig(test_tree, "test", mva_name, total_sig, total_bkg, lumi, nbins, min, max) set_graph_style(sig_train, kRed + 1) set_graph_style(sig_test, kBlack) sig_test.SetTitle(";%s;significance" % mva_name) canv = TCanvas("sig", "", 800, 600) sig_test.Draw("a3") sig_train.Draw("3") sig_test.Draw("lx") sig_train.Draw("lx") index_max_train = TMath.LocMax(sig_train.GetN(), sig_train.GetY()) sig_train_max = (sig_train.GetY()[index_max_train], sig_train.GetEY()[index_max_train]) index_max_test = TMath.LocMax(sig_test.GetN(), sig_test.GetY()) sig_test_max = (sig_test.GetY()[index_max_test], sig_test.GetEY()[index_max_test]) leg = TLegend(0.2, 0.75, 0.6, 0.9) PlotStyle.legend(leg) leg.AddEntry( sig_train, "Train: %.1f #pm %.1f @%s/fb" % (sig_train_max[0], sig_train_max[1], lumi), "l") leg.AddEntry( sig_test, "Test: %.1f #pm %.1f @%s/fb" % (sig_test_max[0], sig_test_max[1], lumi), "l") leg.Draw() save_canv(canv, input_name, output) return sig_train_max, sig_test_max
def plot_and_get_sig(sig_hist, bkg_hist, input_name, total_sig, total_bkg, mva_name, k_fold, lumi): sig = get_sig_hist(sig_hist, bkg_hist, total_sig, total_bkg, lumi) set_graph_style(sig, kBlack) sig.SetTitle(";%s;significance" % mva_name) canv = TCanvas("sig", "", 800, 600) sig.Draw("a3") sig.Draw("lx") sig_max = TMath.MaxElement(sig.GetN(), sig.GetY()) leg = TLegend(0.2, 0.75, 0.6, 0.9) PlotStyle.legend(leg) leg.AddEntry(sig, "%.1f @%s/fb" % (sig_max, lumi), "l") leg.Draw() save_canv(canv, input_name, input_name + "_" + mva_name + "_" + str(k_fold)) return sig_max
clsexp = triwsmooth(exampleHarvest, "CLsexp", x, y, transformation=transformation, smooth=smooth, npx=npx, npy=npy) clsexp_up = triwsmooth(exampleHarvest, "clsu1s", x, y, transformation=transformation, smooth=smooth, npx=npx, npy=npy) clsexp_down = triwsmooth(exampleHarvest, "clsd1s", x, y, transformation=transformation, smooth=smooth, npx=npx, npy=npy) fixedhist = FixAndSetBorders(clsexp, "cls", "cls") fixedhist_up = FixAndSetBorders(clsexp_up, "cls_up", "cls_up") fixedhist_down = FixAndSetBorders(clsexp_down, "cls_down", "cls_down") #contours = getContours(fixedhist, level) #contours_up = getContours(fixedhist_up, level) #contours_down = getContours(fixedhist_down, level) #errorband = myOneSigmaBand(contours_up[0], contours_down[0]) contours_5 = getContours(fixedhist, 5) contours_3 = getContours(fixedhist, 3) c = ROOT.TCanvas() c.SetRightMargin(0.15) leg = ROOT.TLegend(0.18, PS.ThirdLine-0.12, 0.4, PS.ThirdLine-0.03) PS.legend(leg) numbers = drawNumbers(exampleHarvest, "CLsexp", x, y, drawOnlyDots=True) fixedhist.Draw("colz") fixedhist.SetMinimum(0.01) fixedhist.GetXaxis().SetTitle('m_{#tilde{t}_{1}}') fixedhist.GetYaxis().SetTitle('m_{#tilde{#chi}_{1}}') #errorband.SetFillStyle(3354) #errorband.SetFillColor(ROOT.kBlack) #errorband.Draw("f same") #for contour in contours_up + contours_down: for contour in contours_3: contour.SetLineColor(ROOT.kBlack) contour.SetLineStyle(7) contour.Draw("l same") #for contour in contours: for contour in contours_5:
sample["chain"].Draw(var["varStr"]+">>"+histos[sample["name"]][var["name"]].GetName(), "("+weightString+") * ("+cutString+")","goff") for var in allVariables: canv = ROOT.TCanvas(var['name']+'_Window',var['name']+'_Window',600,500) if setRatioPlot: pad1 = ROOT.TPad('pad1','pad1',0.,0.3,1.,1.) pad1.SetBottomMargin(0.018) pad1.SetRightMargin(0.08) else: pad1 = ROOT.TPad('pad1','pad1',0.,0.,1.,1.) if setLogY: pad1.SetLogy() pad1.Draw() pad1.cd() legend = ROOT.TLegend(0.6,0.9-len(allBkg)*0.06,0.88,0.9) PS.legend(legend) first = True nMax = 0. for sample in allBkg: print sample['name'] histos[sample['name']][var['name']].SetLineColor(sample['color']) histos[sample['name']][var['name']].SetLineWidth(2) #histos[sample['name']][var['name']].SetFillColor(sample['color']) histos[sample['name']][var['name']].SetMarkerStyle(20) histos[sample['name']][var['name']].SetMarkerColor(sample['color']) histos[sample['name']][var['name']].SetMarkerSize(0.85) histos[sample['name']][var['name']].GetXaxis().SetTitle(var['Xtitle']) histos[sample['name']][var['name']].GetYaxis().SetTitle(var['Ytitle'])# / '+ str( (var['binning'][2] - var['binning'][1])/var['binning'][0])+'GeV') if setRatioPlot: histos[sample['name']][var['name']].GetXaxis().SetLabelSize(0.0)
def main(): plotSig = True filename = "SR_RNN0p86-1p0" if plotSig: filename = filename + "_Significance" else: filename = filename + "_signal_contamination" wwwDir = "/project/etp5/dhandl/plots/Stop1L/FullRun2/SignifcanceScan/21.2.60/" if not os.path.exists(wwwDir): os.makedirs(wwwDir) print('Creating Directory...') bkgDir = '/project/etp3/dhandl/samples/SUSY/Stop1L/21.2.60_ML/' #sigDir = '/project/etp5/dhandl/myFork-stop1l/export/default/' sigDir = bkgDir lumi = str(140500.) cut = '(n_jet>=4) && (n_lep==1) && (lep_pt[0]>25e3) && (n_bjet>=1) && (mt>=110e3) && (met>=230e3) && (jet_pt[0]>=25e3) && (jet_pt[1]>=25e3) && (jet_pt[2]>=25e3) && (jet_pt[3]>=25e3) && (dphi_jet0_ptmiss > 0.4) && (dphi_jet1_ptmiss > 0.4) && !((mT2tauLooseTau_GeV > -0.5) && (mT2tauLooseTau_GeV < 80)) && (outputScore_RNN >= 0.86) && (outputScore_RNN<1.0)' weight = 'weight * xs_weight * lumi_weight * sf_total' sampleNames = [ { 'name': 'ttbar', 'target': [ bkgDir + 'mc16a_ttbar/*.root', bkgDir + 'mc16d_ttbar/*.root', bkgDir + 'mc16e_ttbar/*.root' ], 'chain_name': 'ttbar_Nom', 'class': 'bkg' }, { 'name': 'singletop', 'target': [ bkgDir + 'mc16a_singletop/*.root', bkgDir + 'mc16d_singletop/*.root', bkgDir + 'mc16e_singletop/*.root' ], 'chain_name': 'singletop_Nom', 'class': 'bkg' }, { 'name': 'wjets', 'target': [ bkgDir + 'mc16a_wjets/*.root', bkgDir + 'mc16d_wjets/*.root', bkgDir + 'mc16e_wjets/*.root' ], 'chain_name': 'wjets_Nom', 'class': 'bkg' }, { 'name': 'ttV', 'target': [ bkgDir + 'mc16a_ttV/*.root', bkgDir + 'mc16d_ttV/*.root', bkgDir + 'mc16e_ttV/*.root' ], 'chain_name': 'ttV_Nom', 'class': 'bkg' }, { 'name': 'multiboson', 'target': [ bkgDir + 'mc16a_multiboson/*.root', bkgDir + 'mc16d_multiboson/*.root', bkgDir + 'mc16e_multiboson/*.root' ], 'chain_name': 'multiboson_Nom', 'class': 'bkg' }, ### bWN ### { 'name': 'bWN_400_235', 'target': [ bkgDir + 'mc16a_bWN_400_235/*.root', bkgDir + 'mc16d_bWN_400_235/*.root', bkgDir + 'mc16e_bWN_400_235/*.root' ], 'chain_name': 'bWN_400_235_Nom', 'class': 'sig' }, { 'name': 'bWN_400_250', 'target': [ bkgDir + 'mc16a_bWN_400_250/*.root', bkgDir + 'mc16d_bWN_400_250/*.root', bkgDir + 'mc16e_bWN_400_250/*.root' ], 'chain_name': 'bWN_400_250_Nom', 'class': 'sig' }, { 'name': 'bWN_400_280', 'target': [ bkgDir + 'mc16a_bWN_400_280/*.root', bkgDir + 'mc16d_bWN_400_280/*.root', bkgDir + 'mc16e_bWN_400_280/*.root' ], 'chain_name': 'bWN_400_280_Nom', 'class': 'sig' }, { 'name': 'bWN_400_310', 'target': [ bkgDir + 'mc16a_bWN_400_310/*.root', bkgDir + 'mc16d_bWN_400_310/*.root', bkgDir + 'mc16e_bWN_400_310/*.root' ], 'chain_name': 'bWN_400_310_Nom', 'class': 'sig' }, { 'name': 'bWN_450_285', 'target': [ bkgDir + 'mc16a_bWN_450_285/*.root', bkgDir + 'mc16d_bWN_450_285/*.root', bkgDir + 'mc16e_bWN_450_285/*.root' ], 'chain_name': 'bWN_450_285_Nom', 'class': 'sig' }, { 'name': 'bWN_450_300', 'target': [ bkgDir + 'mc16a_bWN_450_300/*.root', bkgDir + 'mc16d_bWN_450_300/*.root', bkgDir + 'mc16e_bWN_450_300/*.root' ], 'chain_name': 'bWN_450_300_Nom', 'class': 'sig' }, { 'name': 'bWN_450_330', 'target': [ bkgDir + 'mc16a_bWN_450_330/*.root', bkgDir + 'mc16d_bWN_450_330/*.root', bkgDir + 'mc16e_bWN_450_330/*.root' ], 'chain_name': 'bWN_450_330_Nom', 'class': 'sig' }, { 'name': 'bWN_450_360', 'target': [ bkgDir + 'mc16a_bWN_450_360/*.root', bkgDir + 'mc16d_bWN_450_360/*.root', bkgDir + 'mc16e_bWN_450_360/*.root' ], 'chain_name': 'bWN_450_360_Nom', 'class': 'sig' }, { 'name': 'bWN_500_335', 'target': [ bkgDir + 'mc16a_bWN_500_335/*.root', bkgDir + 'mc16d_bWN_500_335/*.root', bkgDir + 'mc16e_bWN_500_335/*.root' ], 'chain_name': 'bWN_500_335_Nom', 'class': 'sig' }, { 'name': 'bWN_500_350', 'target': [ bkgDir + 'mc16a_bWN_500_350/*.root', bkgDir + 'mc16d_bWN_500_350/*.root', bkgDir + 'mc16e_bWN_500_350/*.root' ], 'chain_name': 'bWN_500_350_Nom', 'class': 'sig' }, { 'name': 'bWN_500_380', 'target': [ bkgDir + 'mc16a_bWN_500_380/*.root', bkgDir + 'mc16d_bWN_500_380/*.root', bkgDir + 'mc16e_bWN_500_380/*.root' ], 'chain_name': 'bWN_500_380_Nom', 'class': 'sig' }, { 'name': 'bWN_500_410', 'target': [ bkgDir + 'mc16a_bWN_500_410/*.root', bkgDir + 'mc16d_bWN_500_410/*.root', bkgDir + 'mc16e_bWN_500_410/*.root' ], 'chain_name': 'bWN_500_410_Nom', 'class': 'sig' }, { 'name': 'bWN_550_385', 'target': [ bkgDir + 'mc16a_bWN_550_385/*.root', bkgDir + 'mc16d_bWN_550_385/*.root', bkgDir + 'mc16e_bWN_550_385/*.root' ], 'chain_name': 'bWN_550_385_Nom', 'class': 'sig' }, { 'name': 'bWN_550_400', 'target': [ bkgDir + 'mc16a_bWN_550_400/*.root', bkgDir + 'mc16d_bWN_550_400/*.root', bkgDir + 'mc16e_bWN_550_400/*.root' ], 'chain_name': 'bWN_550_400_Nom', 'class': 'sig' }, { 'name': 'bWN_550_430', 'target': [ bkgDir + 'mc16a_bWN_550_430/*.root', bkgDir + 'mc16d_bWN_550_430/*.root', bkgDir + 'mc16e_bWN_550_430/*.root' ], 'chain_name': 'bWN_550_430_Nom', 'class': 'sig' }, { 'name': 'bWN_550_460', 'target': [ bkgDir + 'mc16a_bWN_550_460/*.root', bkgDir + 'mc16d_bWN_550_460/*.root', bkgDir + 'mc16e_bWN_550_460/*.root' ], 'chain_name': 'bWN_550_460_Nom', 'class': 'sig' }, { 'name': 'bWN_600_435', 'target': [ bkgDir + 'mc16a_bWN_600_435/*.root', bkgDir + 'mc16d_bWN_600_435/*.root', bkgDir + 'mc16e_bWN_600_435/*.root' ], 'chain_name': 'bWN_600_435_Nom', 'class': 'sig' }, { 'name': 'bWN_600_450', 'target': [ bkgDir + 'mc16a_bWN_600_450/*.root', bkgDir + 'mc16d_bWN_600_450/*.root', bkgDir + 'mc16e_bWN_600_450/*.root' ], 'chain_name': 'bWN_600_450_Nom', 'class': 'sig' }, { 'name': 'bWN_600_480', 'target': [ bkgDir + 'mc16a_bWN_600_480/*.root', bkgDir + 'mc16d_bWN_600_480/*.root', bkgDir + 'mc16e_bWN_600_480/*.root' ], 'chain_name': 'bWN_600_480_Nom', 'class': 'sig' }, { 'name': 'bWN_600_510', 'target': [ bkgDir + 'mc16a_bWN_600_510/*.root', bkgDir + 'mc16d_bWN_600_510/*.root', bkgDir + 'mc16e_bWN_600_510/*.root' ], 'chain_name': 'bWN_600_510_Nom', 'class': 'sig' }, { 'name': 'bWN_650_485', 'target': [ bkgDir + 'mc16a_bWN_650_485/*.root', bkgDir + 'mc16d_bWN_650_485/*.root', bkgDir + 'mc16e_bWN_650_485/*.root' ], 'chain_name': 'bWN_650_485_Nom', 'class': 'sig' }, { 'name': 'bWN_650_500', 'target': [ bkgDir + 'mc16a_bWN_650_500/*.root', bkgDir + 'mc16d_bWN_650_500/*.root', bkgDir + 'mc16e_bWN_650_500/*.root' ], 'chain_name': 'bWN_650_500_Nom', 'class': 'sig' }, { 'name': 'bWN_650_530', 'target': [ bkgDir + 'mc16a_bWN_650_530/*.root', bkgDir + 'mc16d_bWN_650_530/*.root', bkgDir + 'mc16e_bWN_650_530/*.root' ], 'chain_name': 'bWN_650_530_Nom', 'class': 'sig' }, { 'name': 'bWN_650_560', 'target': [ bkgDir + 'mc16a_bWN_650_560/*.root', bkgDir + 'mc16d_bWN_650_560/*.root', bkgDir + 'mc16e_bWN_650_560/*.root' ], 'chain_name': 'bWN_650_560_Nom', 'class': 'sig' }, { 'name': 'bWN_700_535', 'target': [ bkgDir + 'mc16a_bWN_700_535/*.root', bkgDir + 'mc16d_bWN_700_535/*.root', bkgDir + 'mc16e_bWN_700_535/*.root' ], 'chain_name': 'bWN_700_535_Nom', 'class': 'sig' }, { 'name': 'bWN_700_550', 'target': [ bkgDir + 'mc16a_bWN_700_550/*.root', bkgDir + 'mc16d_bWN_700_550/*.root', bkgDir + 'mc16e_bWN_700_550/*.root' ], 'chain_name': 'bWN_700_550_Nom', 'class': 'sig' }, { 'name': 'bWN_700_580', 'target': [ bkgDir + 'mc16a_bWN_700_580/*.root', bkgDir + 'mc16d_bWN_700_580/*.root', bkgDir + 'mc16e_bWN_700_580/*.root' ], 'chain_name': 'bWN_700_580_Nom', 'class': 'sig' }, { 'name': 'bWN_700_610', 'target': [ bkgDir + 'mc16a_bWN_700_610/*.root', bkgDir + 'mc16d_bWN_700_610/*.root', bkgDir + 'mc16e_bWN_700_610/*.root' ], 'chain_name': 'bWN_700_610_Nom', 'class': 'sig' }, { 'name': 'bWN_750_585', 'target': [ bkgDir + 'mc16a_bWN_750_585/*.root', bkgDir + 'mc16d_bWN_750_585/*.root', bkgDir + 'mc16e_bWN_750_585/*.root' ], 'chain_name': 'bWN_750_585_Nom', 'class': 'sig' }, { 'name': 'bWN_750_600', 'target': [ bkgDir + 'mc16a_bWN_750_600/*.root', bkgDir + 'mc16d_bWN_750_600/*.root', bkgDir + 'mc16e_bWN_750_600/*.root' ], 'chain_name': 'bWN_750_600_Nom', 'class': 'sig' }, { 'name': 'bWN_750_630', 'target': [ bkgDir + 'mc16a_bWN_750_630/*.root', bkgDir + 'mc16d_bWN_750_630/*.root', bkgDir + 'mc16e_bWN_750_630/*.root' ], 'chain_name': 'bWN_750_630_Nom', 'class': 'sig' }, { 'name': 'bWN_750_660', 'target': [ bkgDir + 'mc16a_bWN_750_660/*.root', bkgDir + 'mc16d_bWN_750_660/*.root', bkgDir + 'mc16e_bWN_750_660/*.root' ], 'chain_name': 'bWN_750_660_Nom', 'class': 'sig' }, ### bffN ### { 'name': 'bffN_300_220', 'target': [ bkgDir + 'mc16a_bffN_300_220/*.root', bkgDir + 'mc16d_bffN_300_220/*.root', bkgDir + 'mc16e_bffN_300_220/*.root' ], 'chain_name': 'bffN_300_220_Nom', 'class': 'sig' }, { 'name': 'bffN_300_250', 'target': [ bkgDir + 'mc16a_bffN_300_250/*.root', bkgDir + 'mc16d_bffN_300_250/*.root', bkgDir + 'mc16e_bffN_300_250/*.root' ], 'chain_name': 'bffN_300_250_Nom', 'class': 'sig' }, { 'name': 'bffN_300_280', 'target': [ bkgDir + 'mc16a_bffN_300_280/*.root', bkgDir + 'mc16d_bffN_300_280/*.root', bkgDir + 'mc16e_bffN_300_280/*.root' ], 'chain_name': 'bffN_300_280_Nom', 'class': 'sig' }, { 'name': 'bffN_300_293', 'target': [ bkgDir + 'mc16a_bffN_300_293/*.root', bkgDir + 'mc16d_bffN_300_293/*.root', bkgDir + 'mc16e_bffN_300_293/*.root' ], 'chain_name': 'bffN_300_293_Nom', 'class': 'sig' }, { 'name': 'bffN_350_270', 'target': [ bkgDir + 'mc16a_bffN_350_270/*.root', bkgDir + 'mc16d_bffN_350_270/*.root', bkgDir + 'mc16e_bffN_350_270/*.root' ], 'chain_name': 'bffN_350_270_Nom', 'class': 'sig' }, { 'name': 'bffN_350_300', 'target': [ bkgDir + 'mc16a_bffN_350_300/*.root', bkgDir + 'mc16d_bffN_350_300/*.root', bkgDir + 'mc16e_bffN_350_300/*.root' ], 'chain_name': 'bffN_350_300_Nom', 'class': 'sig' }, { 'name': 'bffN_350_330', 'target': [ bkgDir + 'mc16a_bffN_350_330/*.root', bkgDir + 'mc16d_bffN_350_330/*.root', bkgDir + 'mc16e_bffN_350_330/*.root' ], 'chain_name': 'bffN_350_330_Nom', 'class': 'sig' }, { 'name': 'bffN_350_243', 'target': [ bkgDir + 'mc16a_bffN_350_243/*.root', bkgDir + 'mc16d_bffN_350_243/*.root', bkgDir + 'mc16e_bffN_350_243/*.root' ], 'chain_name': 'bffN_350_243_Nom', 'class': 'sig' }, { 'name': 'bffN_400_320', 'target': [ bkgDir + 'mc16a_bffN_400_320/*.root', bkgDir + 'mc16d_bffN_400_320/*.root', bkgDir + 'mc16e_bffN_400_320/*.root' ], 'chain_name': 'bffN_400_320_Nom', 'class': 'sig' }, { 'name': 'bffN_400_350', 'target': [ bkgDir + 'mc16a_bffN_400_350/*.root', bkgDir + 'mc16d_bffN_400_350/*.root', bkgDir + 'mc16e_bffN_400_350/*.root' ], 'chain_name': 'bffN_400_350_Nom', 'class': 'sig' }, { 'name': 'bffN_400_380', 'target': [ bkgDir + 'mc16a_bffN_400_380/*.root', bkgDir + 'mc16d_bffN_400_380/*.root', bkgDir + 'mc16e_bffN_400_380/*.root' ], 'chain_name': 'bffN_400_380_Nom', 'class': 'sig' }, { 'name': 'bffN_400_393', 'target': [ bkgDir + 'mc16a_bffN_400_393/*.root', bkgDir + 'mc16d_bffN_400_393/*.root', bkgDir + 'mc16e_bffN_400_393/*.root' ], 'chain_name': 'bffN_400_393_Nom', 'class': 'sig' }, { 'name': 'bffN_450_370', 'target': [ bkgDir + 'mc16a_bffN_450_370/*.root', bkgDir + 'mc16d_bffN_450_370/*.root', bkgDir + 'mc16e_bffN_450_370/*.root' ], 'chain_name': 'bffN_450_370_Nom', 'class': 'sig' }, { 'name': 'bffN_450_400', 'target': [ bkgDir + 'mc16a_bffN_450_400/*.root', bkgDir + 'mc16d_bffN_450_400/*.root', bkgDir + 'mc16e_bffN_450_400/*.root' ], 'chain_name': 'bffN_450_400_Nom', 'class': 'sig' }, { 'name': 'bffN_450_430', 'target': [ bkgDir + 'mc16a_bffN_450_430/*.root', bkgDir + 'mc16d_bffN_450_430/*.root', bkgDir + 'mc16e_bffN_450_430/*.root' ], 'chain_name': 'bffN_450_430_Nom', 'class': 'sig' }, { 'name': 'bffN_450_443', 'target': [ bkgDir + 'mc16a_bffN_450_443/*.root', bkgDir + 'mc16d_bffN_450_443/*.root', bkgDir + 'mc16e_bffN_450_443/*.root' ], 'chain_name': 'bffN_450_443_Nom', 'class': 'sig' }, { 'name': 'bffN_500_420', 'target': [ bkgDir + 'mc16a_bffN_500_420/*.root', bkgDir + 'mc16d_bffN_500_420/*.root', bkgDir + 'mc16e_bffN_500_420/*.root' ], 'chain_name': 'bffN_500_420_Nom', 'class': 'sig' }, { 'name': 'bffN_500_450', 'target': [ bkgDir + 'mc16a_bffN_500_450/*.root', bkgDir + 'mc16d_bffN_500_450/*.root', bkgDir + 'mc16e_bffN_500_450/*.root' ], 'chain_name': 'bffN_500_450_Nom', 'class': 'sig' }, { 'name': 'bffN_500_480', 'target': [ bkgDir + 'mc16a_bffN_500_480/*.root', bkgDir + 'mc16d_bffN_500_480/*.root', bkgDir + 'mc16e_bffN_500_480/*.root' ], 'chain_name': 'bffN_500_480_Nom', 'class': 'sig' }, { 'name': 'bffN_500_493', 'target': [ bkgDir + 'mc16a_bffN_500_493/*.root', bkgDir + 'mc16d_bffN_500_493/*.root', bkgDir + 'mc16e_bffN_500_493/*.root' ], 'chain_name': 'bffN_500_493_Nom', 'class': 'sig' }, { 'name': 'bffN_550_470', 'target': [ bkgDir + 'mc16a_bffN_550_470/*.root', bkgDir + 'mc16d_bffN_550_470/*.root', bkgDir + 'mc16e_bffN_550_470/*.root' ], 'chain_name': 'bffN_550_470_Nom', 'class': 'sig' }, { 'name': 'bffN_550_500', 'target': [ bkgDir + 'mc16a_bffN_550_500/*.root', bkgDir + 'mc16d_bffN_550_500/*.root', bkgDir + 'mc16e_bffN_550_500/*.root' ], 'chain_name': 'bffN_550_500_Nom', 'class': 'sig' }, { 'name': 'bffN_550_530', 'target': [ bkgDir + 'mc16a_bffN_550_530/*.root', bkgDir + 'mc16d_bffN_550_530/*.root', bkgDir + 'mc16e_bffN_550_530/*.root' ], 'chain_name': 'bffN_550_530_Nom', 'class': 'sig' }, { 'name': 'bffN_550_543', 'target': [ bkgDir + 'mc16a_bffN_550_543/*.root', bkgDir + 'mc16d_bffN_550_543/*.root', bkgDir + 'mc16e_bffN_550_543/*.root' ], 'chain_name': 'bffN_550_543_Nom', 'class': 'sig' }, { 'name': 'bffN_600_520', 'target': [ bkgDir + 'mc16a_bffN_600_520/*.root', bkgDir + 'mc16d_bffN_600_520/*.root', bkgDir + 'mc16e_bffN_600_520/*.root' ], 'chain_name': 'bffN_600_520_Nom', 'class': 'sig' }, { 'name': 'bffN_600_550', 'target': [ bkgDir + 'mc16a_bffN_600_550/*.root', bkgDir + 'mc16d_bffN_600_550/*.root', bkgDir + 'mc16e_bffN_600_550/*.root' ], 'chain_name': 'bffN_600_550_Nom', 'class': 'sig' }, { 'name': 'bffN_600_580', 'target': [ bkgDir + 'mc16a_bffN_600_580/*.root', bkgDir + 'mc16d_bffN_600_580/*.root', bkgDir + 'mc16e_bffN_600_580/*.root' ], 'chain_name': 'bffN_600_580_Nom', 'class': 'sig' }, { 'name': 'bffN_600_593', 'target': [ bkgDir + 'mc16a_bffN_600_593/*.root', bkgDir + 'mc16d_bffN_600_593/*.root', bkgDir + 'mc16e_bffN_600_593/*.root' ], 'chain_name': 'bffN_600_593_Nom', 'class': 'sig' }, { 'name': 'bffN_650_570', 'target': [ bkgDir + 'mc16a_bffN_650_570/*.root', bkgDir + 'mc16d_bffN_650_570/*.root', bkgDir + 'mc16e_bffN_650_570/*.root' ], 'chain_name': 'bffN_650_570_Nom', 'class': 'sig' }, { 'name': 'bffN_650_600', 'target': [ bkgDir + 'mc16a_bffN_650_600/*.root', bkgDir + 'mc16d_bffN_650_600/*.root', bkgDir + 'mc16e_bffN_650_600/*.root' ], 'chain_name': 'bffN_650_600_Nom', 'class': 'sig' }, { 'name': 'bffN_650_630', 'target': [ bkgDir + 'mc16a_bffN_650_630/*.root', bkgDir + 'mc16d_bffN_650_630/*.root', bkgDir + 'mc16e_bffN_650_630/*.root' ], 'chain_name': 'bffN_650_630_Nom', 'class': 'sig' }, { 'name': 'bffN_650_643', 'target': [ bkgDir + 'mc16a_bffN_650_643/*.root', bkgDir + 'mc16d_bffN_650_643/*.root', bkgDir + 'mc16e_bffN_650_643/*.root' ], 'chain_name': 'bffN_650_643_Nom', 'class': 'sig' }, ### tN ### { 'name': 'tN_190_17', 'target': [ bkgDir + 'mc16a_tN_190_17/*.root', bkgDir + 'mc16d_tN_190_17/*.root', bkgDir + 'mc16e_tN_190_17/*.root' ], 'chain_name': 'tN_190_17_Nom', 'class': 'sig' }, { 'name': 'tN_400_200', 'target': [ bkgDir + 'mc16a_tN_400_200/*.root', bkgDir + 'mc16d_tN_400_200/*.root', bkgDir + 'mc16e_tN_400_200/*.root' ], 'chain_name': 'tN_400_200_Nom', 'class': 'sig' }, { 'name': 'tN_500_300', 'target': [ bkgDir + 'mc16a_tN_500_300/*.root', bkgDir + 'mc16d_tN_500_300/*.root', bkgDir + 'mc16e_tN_500_300/*.root' ], 'chain_name': 'tN_500_300_Nom', 'class': 'sig' }, { 'name': 'tN_500_312', 'target': [ bkgDir + 'mc16a_tN_500_312/*.root', bkgDir + 'mc16d_tN_500_312/*.root', bkgDir + 'mc16e_tN_500_312/*.root' ], 'chain_name': 'tN_500_312_Nom', 'class': 'sig' }, { 'name': 'tN_500_327', 'target': [ bkgDir + 'mc16a_tN_500_327/*.root', bkgDir + 'mc16d_tN_500_327/*.root', bkgDir + 'mc16e_tN_500_327/*.root' ], 'chain_name': 'tN_500_327_Nom', 'class': 'sig' }, { 'name': 'tN_550_350', 'target': [ bkgDir + 'mc16a_tN_550_350/*.root', bkgDir + 'mc16d_tN_550_350/*.root', bkgDir + 'mc16e_tN_550_350/*.root' ], 'chain_name': 'tN_550_350_Nom', 'class': 'sig' }, { 'name': 'tN_550_362', 'target': [ bkgDir + 'mc16a_tN_550_362/*.root', bkgDir + 'mc16d_tN_550_362/*.root', bkgDir + 'mc16e_tN_550_362/*.root' ], 'chain_name': 'tN_550_362_Nom', 'class': 'sig' }, { 'name': 'tN_550_377', 'target': [ bkgDir + 'mc16a_tN_550_377/*.root', bkgDir + 'mc16d_tN_550_377/*.root', bkgDir + 'mc16e_tN_550_377/*.root' ], 'chain_name': 'tN_550_377_Nom', 'class': 'sig' }, { 'name': 'tN_600_400', 'target': [ bkgDir + 'mc16a_tN_600_400/*.root', bkgDir + 'mc16d_tN_600_400/*.root', bkgDir + 'mc16e_tN_600_400/*.root' ], 'chain_name': 'tN_600_400_Nom', 'class': 'sig' }, { 'name': 'tN_600_412', 'target': [ bkgDir + 'mc16a_tN_600_412/*.root', bkgDir + 'mc16d_tN_600_412/*.root', bkgDir + 'mc16e_tN_600_412/*.root' ], 'chain_name': 'tN_600_412_Nom', 'class': 'sig' }, { 'name': 'tN_600_427', 'target': [ bkgDir + 'mc16a_tN_600_427/*.root', bkgDir + 'mc16d_tN_600_427/*.root', bkgDir + 'mc16e_tN_600_427/*.root' ], 'chain_name': 'tN_600_427_Nom', 'class': 'sig' }, { 'name': 'tN_650_450', 'target': [ bkgDir + 'mc16a_tN_650_450/*.root', bkgDir + 'mc16d_tN_650_450/*.root', bkgDir + 'mc16e_tN_650_450/*.root' ], 'chain_name': 'tN_650_450_Nom', 'class': 'sig' }, { 'name': 'tN_650_462', 'target': [ bkgDir + 'mc16a_tN_650_462/*.root', bkgDir + 'mc16d_tN_650_462/*.root', bkgDir + 'mc16e_tN_650_462/*.root' ], 'chain_name': 'tN_650_462_Nom', 'class': 'sig' }, { 'name': 'tN_650_477', 'target': [ bkgDir + 'mc16a_tN_650_477/*.root', bkgDir + 'mc16d_tN_650_477/*.root', bkgDir + 'mc16e_tN_650_477/*.root' ], 'chain_name': 'tN_650_477_Nom', 'class': 'sig' }, { 'name': 'tN_700_500', 'target': [ bkgDir + 'mc16a_tN_700_500/*.root', bkgDir + 'mc16d_tN_700_500/*.root', bkgDir + 'mc16e_tN_700_500/*.root' ], 'chain_name': 'tN_700_500_Nom', 'class': 'sig' }, ] harvest = [ ### bWN ### { 'mT': 400, 'mX': 235, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 250, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 280, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 310, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 285, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 300, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 330, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 360, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 335, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 350, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 380, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 410, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 385, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 400, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 430, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 460, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 435, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 450, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 480, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 510, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 485, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 500, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 530, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 560, 'yield': 0, 'var': 0 }, { 'mT': 700, 'mX': 535, 'yield': 0, 'var': 0 }, { 'mT': 700, 'mX': 550, 'yield': 0, 'var': 0 }, { 'mT': 700, 'mX': 580, 'yield': 0, 'var': 0 }, { 'mT': 700, 'mX': 610, 'yield': 0, 'var': 0 }, { 'mT': 750, 'mX': 585, 'yield': 0, 'var': 0 }, { 'mT': 750, 'mX': 600, 'yield': 0, 'var': 0 }, { 'mT': 750, 'mX': 630, 'yield': 0, 'var': 0 }, { 'mT': 750, 'mX': 660, 'yield': 0, 'var': 0 }, ### bffN ### { 'mT': 300, 'mX': 220, 'yield': 0, 'var': 0 }, { 'mT': 300, 'mX': 250, 'yield': 0, 'var': 0 }, { 'mT': 300, 'mX': 280, 'yield': 0, 'var': 0 }, { 'mT': 300, 'mX': 293, 'yield': 0, 'var': 0 }, { 'mT': 350, 'mX': 270, 'yield': 0, 'var': 0 }, { 'mT': 350, 'mX': 300, 'yield': 0, 'var': 0 }, { 'mT': 350, 'mX': 330, 'yield': 0, 'var': 0 }, { 'mT': 350, 'mX': 343, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 320, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 350, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 380, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 393, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 370, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 400, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 430, 'yield': 0, 'var': 0 }, { 'mT': 450, 'mX': 443, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 420, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 450, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 480, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 493, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 470, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 500, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 530, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 543, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 520, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 550, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 580, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 593, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 570, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 600, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 630, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 643, 'yield': 0, 'var': 0 }, ### tN ### { 'mT': 190, 'mX': 17, 'yield': 0, 'var': 0 }, { 'mT': 400, 'mX': 200, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 300, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 312, 'yield': 0, 'var': 0 }, { 'mT': 500, 'mX': 327, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 350, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 362, 'yield': 0, 'var': 0 }, { 'mT': 550, 'mX': 377, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 400, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 412, 'yield': 0, 'var': 0 }, { 'mT': 600, 'mX': 427, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 450, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 462, 'yield': 0, 'var': 0 }, { 'mT': 650, 'mX': 477, 'yield': 0, 'var': 0 }, { 'mT': 700, 'mX': 500, 'yield': 0, 'var': 0 }, ] for i, sample in enumerate(sampleNames): sample['chain'] = ROOT.TChain(sample['chain_name']) for target in sample['target']: sample['chain'].Add(target) totBkg = 0 totBkgVar = 0 for sample in sampleNames: sample['yield'], sample['error'] = getYieldFromChain(sample['chain'], cut, lumi, weight=weight, returnError=True) if sample['class'] == 'bkg': totBkg += sample['yield'] totBkgVar += sample['error']**2 elif sample['class'] == 'sig': for point in harvest: if (str(point['mT']) in sample['name']) and (str( point['mX']) in sample['name']): point['yield'] += sample['yield'] point['var'] += sample['error']**2 print totBkg, totBkgVar relBkg = math.sqrt(totBkgVar / (totBkg**2) + 0.25 * 0.25) xs = [] ys = [] zs = [] for point in harvest: print "Signal point: mT {}, mX {}".format(point['mT'], point['mX']) point['Z'] = ROOT.RooStats.NumberCountingUtils.BinomialExpZ( point['yield'], totBkg, relBkg) if point['Z'] < 0.: point['Z'] = 0. try: point['A'] = asimovZ(point['yield'], totBkg, math.sqrt(totBkgVar), syst=True) except ValueError: point['A'] = 0. point['C'] = point['yield'] / (point['yield'] + totBkg) xs.append(point['mT']) ys.append(point['mX']) if plotSig: zs.append(point['Z']) else: zs.append(point['C']) print("X" * 50) print(len(xs)) for x in xs: print("{:.5f},".format(x)) print("Y" * 50) print(len(ys)) for y in ys: print("{:.5f},".format(y)) print("Z" * 50) print(len(zs)) for z in zs: print("{:.5f},".format(z)) if plotSig: sig = triwsmooth(harvest, 'A', 'mT', 'mX', transformation=None, smooth=True, npx=100, npy=100) fixedhist = FixAndSetBorders(sig, "significance", "significance") contours = getContours(fixedhist, 3.) else: sig = triwsmooth(harvest, 'C', 'mT', 'mX', transformation=None, smooth=True, npx=100, npy=100) fixedhist = FixAndSetBorders(sig, "signal_contamination", "signal_contamination") contours = getContours(fixedhist, .05) #contours = getContours(fixedhist, .10) c = ROOT.TCanvas() c.SetRightMargin(0.15) leg = ROOT.TLegend(0.18, PS.ThirdLine - 0.12, 0.4, PS.ThirdLine - 0.03) PS.legend(leg) fixedhist.GetXaxis().SetTitle("m_{#tilde{t}} [GeV]") fixedhist.GetYaxis().SetTitle("m_{#tilde{#chi}} [GeV]") #if plotSig: # numbers = drawNumbers(harvest, "Z", x, y) #else: # numbers = drawNumbers(harvest, "C", x, y) fixedhist.Draw("colz") #for contour in contours + contours2: for contour in contours: contour.SetLineStyle(1) contour.SetLineColor(ROOT.kBlack) contour.Draw("l same") if plotSig: leg.AddEntry(contours[0], '3 #sigma', 'l') else: leg.AddEntry(contours[0], '5% sig. cont.', 'l') #if plotSig: # numbers = drawNumbers(exampleHarvest, "Z", x, y) #else: # numbers = drawNumbers(exampleHarvest, "Z", x, y) leg.Draw() PS.atlas('Work in progress') PS.sqrts_lumi(13, 140.5, x=0.18) PS.string(x=0.18, y=PS.ThirdLine, text="Simulation") c.SaveAs(wwwDir + filename + ".pdf") c.SaveAs(wwwDir + filename + ".png") c.SaveAs(wwwDir + filename + ".root")