C = TCanvas()
C.Print("PUWeights.pdf[")
# Loop over json content #
for name, path in dict_files.items():
    print("Looking at %s" % name)
    # Load json content #
    with open(path, "r") as handle:
        data = json.load(handle)
    # Get binning content #
    bins = data['data']  # List of dict (1 dict per bin)
    g = TGraphAsymmErrors(len(bins))
    # Loop over bins #
    for i, b in enumerate(bins):
        val = b['value']
        up = b['error_high']
        down = b['error_low']
        bincenter = (b['bin'][0] + b['bin'][1]) / 2
        g.SetPoint(i, bincenter, val)
        g.SetPointError(i, 0, 0, up, down)

    g.GetHistogram().SetMinimum(0.)
    g.GetHistogram().SetMaximum(2.)
    g.SetTitle("Sample : %s" % name)
    g.GetXaxis().SetTitle("nTrueInt")
    g.GetYaxis().SetTitle("PU weight")
    C.Clear()
    g.Draw()
    C.Print("PUWeights.pdf", "Title:%s" % name)

C.Print("PUWeights.pdf]")
def significanceSB(cutlist, labellist):

    basecut = labellist[0]
    dim = len(cutlist)
    significance = [0] * (dim + 1)

    file = {}
    tree = {}
    effs = {}
    hist = {}
    GrAsym = {}
    yErrorUp = {}
    yErrorDown = {}
    totEve = 0
    GrAsym = TGraphAsymmErrors()
    cuts = ""

    for j, c in enumerate(cutlist):
        s = 0.
        b = 0.
        cuts += cutlist[0] if j == 0 else " && " + cutlist[j]
        print "cuts = ", cuts
        for num1, v in enumerate(signals):
            #print "Signal = ", v
            for num2, filename in enumerate(samples[v]['files']):
                #print "Signal rootfile read = ",  filename
                file[filename] = TFile(NTUPLESIG + filename + ".root",
                                       "READ")  # Read TFile
                tree[filename] = file[filename].Get("Events")  # Read TTree
                nevents = float(sample[filename]['nevents'])
                xs = float(sample[filename]['xsec']) * float(
                    sample[filename]['kfactor'])
                LumiMC = nevents / xs
                Weight = float(LUMI) / float(LumiMC)

                sig_entries = tree[filename].GetEntries(cuts)
                #print "s = ", float(sig_entries) * float(Weight)
                s += float(sig_entries) * float(Weight)
            print "TOT SIG = ", s

        for num1, k in enumerate(back):
            #print "backgrounds = ", k
            for num2, filename in enumerate(samples[k]['files']):
                #print "backgrounds rootfile read = ",  filename
                file[filename] = TFile(NTUPLEDIR + filename + ".root",
                                       "READ")  # Read TFile
                tree[filename] = file[filename].Get("Events")  # Read TTree
                nevents = float(sample[filename]['nevents'])
                xs = float(sample[filename]['xsec']) * float(
                    sample[filename]['kfactor'])
                LumiMC = nevents / xs
                Weight = float(LUMI) / float(LumiMC)

                bkg_entries = tree[filename].GetEntries(cuts)
                #print "b = ", float(bkg_entries) * float(Weight)
                b += float(bkg_entries) * float(Weight)
            print "TOT BKG = ", b

        ##End of cutlist
        #COMPUTE
        #print "s = ", s
        #print "b = ", b
        #print "sqrt(b) = ",  math.sqrt(b)
        #print "significance = ",  float(s/math.sqrt(b))
        significance[j] = float(s / math.sqrt(b))
        yErrorUp[j] = float(
            TEfficiency.ClopperPearson(math.sqrt(b), s, 0.68, True) -
            significance[j])
        yErrorDown[j] = float(
            significance[j] -
            TEfficiency.ClopperPearson(math.sqrt(b), s, 0.68, False))
        GrAsym.SetPoint(j, j + 0.5, significance[j])
        GrAsym.SetPointError(j, 0, 0, yErrorUp[j], yErrorDown[j])

    for k, cs in enumerate(labellist):
        GrAsym.GetHistogram().GetXaxis().Set(dim, 0, dim)
        GrAsym.GetHistogram().GetXaxis().SetBinLabel(k + 1,
                                                     "%s" % labellist[k])

    GrAsym.SetLineColor(2)
    GrAsym.SetLineWidth(3)
    GrAsym.SetMarkerStyle(8)
    GrAsym.SetMarkerColor(2)

    c1 = TCanvas("c1", "Signals Acceptance", 800, 600)
    c1.cd()
    c1.GetPad(0).SetTopMargin(0.06)
    c1.GetPad(0).SetRightMargin(0.05)
    c1.GetPad(0).SetTicks(1, 1)

    gStyle.SetOptStat(0)

    #GrAsym.SetMaximum(1.3)
    #GrAsym.SetMinimum(0.)

    GrAsym.GetHistogram().GetXaxis().SetTitle("")
    GrAsym.GetHistogram().GetYaxis().SetTitle("Significance (S/#sqrt{B})")

    GrAsym.Draw("pa")
    drawCMS(LUMI, "Work In Progress")
    drawRegion(basecut)

    if not os.path.exists('plots/Signal/Significance/'):
        os.system('mkdir -p plots/Signal/Significance/')
    c1.Print("plots/Signal/Significance/Sigf_SB_" + basecut + ".png")
    c1.Print("plots/Signal/Significance/Sigf_SB_" + basecut + ".pdf")
    #if not options.runBash: raw_input("Press Enter to continue...")
    pass
Beispiel #3
0
print(x, x_low, x_high)
graph = TGraphAsymmErrors(x.size, x,y,x_low,x_high, y_error, y_error)
graph.SetMarkerStyle(8)
c = ROOT.TCanvas("c","c",700,600)
c.SetLeftMargin(0.17)
c.Draw()
graph.GetYaxis().SetTitle("#sigma(#Delta t) [ns]")
graph.GetXaxis().SetTitle("A_{eff}")
graph.Draw("ap")
if args.logx: 
    c.SetLogx(1)
    graph.GetXaxis().SetLimits(x[0]-2*x_low[0], x[-1]+2*x_low[-1])
if args.logy: 
    c.SetLogy(1)
    graph.GetHistogram().SetMinimum(y.min()/2)
    graph.GetHistogram().SetMaximum(y.max()*3)

graph.SetTitle("")
Frame(gPad)
yrlabel = TextAuto(gPad, args.year, align = 31)
last = histo.GetNbinsX() - 1 

func = TF1("func","sqrt(([0]/(x))^2 + 2*([1]^2))", x[0]-x_low[0], x[last]+x_high[last])
func.SetParameter(0, N)
func.SetParameter(1, C)

graph.Fit("func","R")
Nlabel = Text(gPad, 0.6, 0.7, "N = {:.3f} #pm {:.3f} ns".format(func.GetParameter(0), func.GetParError(0)))
Clabel = Text(gPad, 0.6, 0.65,"C = {:.3f} #pm {:.3f} ns".format(func.GetParameter(1), func.GetParError(1)))