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
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)))