示例#1
0
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
示例#4
0
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
示例#5
0
 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:
示例#6
0
    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)
示例#7
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")