gSF.SetPoint(iB, center, sf) gSF.SetPointError(iB, exl, exh, sfErrLow, sfErrHigh) print sf, sfErrLow, sfErrLow / sf rcanvas.legend.add("mc", title = "MC", mcolor = r.kRed, lcolor = r.kRed, lwidth = 2) rcanvas.legend.apply("mc", mcEff) rcanvas.addHistogram(mcEff, drawOpt = 'EP') rcanvas.legend.add("data", title = "Data", lcolor = r.kBlack, lwidth = 2) rcanvas.legend.apply("data", dataEff) rcanvas.addHistogram(dataEff, drawOpt = 'EP') rcanvas.ylimits = (0.0, 1.1) rcanvas.ytitle = 'Photon Efficiency' rcanvas.xtitle = 'E_{T}^{#gamma} (GeV)' plotName = "efficiency_"+str(loc)+"_"+str(pid) rcanvas.printWeb('purity/'+s.Version+'/ScaleFactors', plotName, logy = False) canvas.legend.add(loc+'-'+pid, title = loc+'-'+pid, color = r.kBlack, lwidth = 2) canvas.legend.apply(loc+'-'+pid, gSF) canvas.addHistogram(gSF, drawOpt = 'EP') canvas.ylimits = (0.0, 2.0) canvas.ytitle = 'Photon Scale Factor' canvas.xtitle = 'E_{T}^{#gamma} (GeV)' plotName = "scalefactor_"+str(loc)+"_"+str(pid) canvas.printWeb('purity/'+s.Version+'/ScaleFactors', plotName, logy = False)
model.fitTo(ddata) frame = met.frame() ddata.plotOn(frame) model.plotOn(frame) model.plotOn(frame, ROOT.RooFit.Components('gjets'), ROOT.RooFit.LineColor(ROOT.kGreen), ROOT.RooFit.LineStyle(ROOT.kDashed)) mcpdf.plotOn(frame, ROOT.RooFit.LineColor(ROOT.kRed), ROOT.RooFit.LineStyle(ROOT.kDotted)) frame.SetTitle('min#Delta#phi(j, E_{T}^{miss}) < 0.5') #frame.GetXaxis().SetTitle('E_{T}^{miss} (GeV)') frame.GetXaxis().SetTitle('') frame.GetXaxis().SetTitleSize(0.) frame.GetXaxis().SetLabelSize(0.) frame.GetYaxis().SetLabelSize(0.) frame.GetYaxis().SetTickSize(0.) canvas.xtitle = 'E_{T}^{miss} (GeV)' canvas.legend.add('data', title = 'Data', mstyle = 8, color = ROOT.kBlack, opt = 'LP') canvas.legend.add('fit', title = 'Fit', color = ROOT.kBlue, lwidth = 2, opt = 'L') canvas.legend.add('gjets', title = '#gamma+jets', color = ROOT.kGreen, lstyle = ROOT.kDashed, lwidth = 2, opt = 'L') canvas.legend.add('mcpdf', title = '#gamma+jets raw', color = ROOT.kRed, lstyle = ROOT.kDotted, lwidth = 2, opt = 'L') canvas.addHistogram(frame, clone = False, drawOpt = '') canvas.Update() fitcurve = frame.findObject('model_Norm[met]') rawcurve = frame.findObject('mcpdf_Norm[met]') rdata = ROOT.TGraphErrors(dmet.GetNbinsX()) for iP in range(rdata.GetN()): x = dmet.GetXaxis().GetBinCenter(iP + 1)
frame = met.frame() ddata.plotOn(frame) model.plotOn(frame) model.plotOn( frame, ROOT.RooFit.Components("gjets"), ROOT.RooFit.LineColor(ROOT.kGreen), ROOT.RooFit.LineStyle(ROOT.kDashed) ) mcpdf.plotOn(frame, ROOT.RooFit.LineColor(ROOT.kRed), ROOT.RooFit.LineStyle(ROOT.kDotted)) frame.SetTitle("min#Delta#phi(j, E_{T}^{miss}) < 0.5") # frame.GetXaxis().SetTitle('E_{T}^{miss} (GeV)') frame.GetXaxis().SetTitle("") frame.GetXaxis().SetTitleSize(0.0) frame.GetXaxis().SetLabelSize(0.0) frame.GetYaxis().SetLabelSize(0.0) frame.GetYaxis().SetTickSize(0.0) canvas.xtitle = "E_{T}^{miss} (GeV)" canvas.legend.add("data", title="Data", mstyle=8, color=ROOT.kBlack, opt="LP") canvas.legend.add("fit", title="Fit", color=ROOT.kBlue, lwidth=2, opt="L") canvas.legend.add("gjets", title="#gamma+jets", color=ROOT.kGreen, lstyle=ROOT.kDashed, lwidth=2, opt="L") canvas.legend.add("mcpdf", title="#gamma+jets raw", color=ROOT.kRed, lstyle=ROOT.kDotted, lwidth=2, opt="L") canvas.addHistogram(frame, clone=False, drawOpt="") canvas.Update() fitcurve = frame.findObject("model_Norm[met]") rawcurve = frame.findObject("mcpdf_Norm[met]") rdata = ROOT.TGraphErrors(dmet.GetNbinsX()) for iP in range(rdata.GetN()): x = dmet.GetXaxis().GetBinCenter(iP + 1)
iObs = canvas.addHistogram(obs) iPreUnc = canvas.addHistogram(prefitUnc, drawOpt = 'E2') iPre = canvas.addHistogram(prefitTotal, drawOpt = 'HIST') iPostUnc = canvas.addHistogram(postfitUnc, drawOpt = 'E2') iPost = canvas.addHistogram(postfitTotal, drawOpt = 'HIST') iLine = canvas.addHistogram(dataHist, drawOpt = 'HIST') iPreUncRatio = canvas.addHistogram(prefitUncRatio, drawOpt = 'E2') iPreRatio = canvas.addHistogram(prefitRatio, drawOpt = 'LP') iPostUncRatio = canvas.addHistogram(postfitUncRatio, drawOpt = 'E2') iPostRatio = canvas.addHistogram(postfitRatio, drawOpt = 'LP') if postfitSub: iSub = canvas.addHistogram(postfitSub) hList = [iSub, iPreUnc, iPre, iPostUnc, iPost, iObs] else: hList = [iPreUnc, iPre, iPostUnc, iPost, iObs] canvas.rlimits = (0.0, 2.0) canvas.xtitle = 'E_{T}^{#gamma} (GeV)' canvas.ytitle = 'Events / GeV' canvas.printWeb('monophoton/fit', region, hList = hList, rList = [iLine, iPreUncRatio, iPostUncRatio, iPreRatio, iPostRatio]) canvas.Clear() dataHist.Delete() if postfitSub: postfitSub.Delete()
elif 'el' in region: rlabel = 'ee#gamma' canvas.cmsPave.SetTextSize(0.04) canvas.addText(rlabel, 0.185, 0.82, 0.35, 0.86, size=0.04, align=12) resultLegend.setPosition(0.4, 0.88 - 0.04 * len(resultLegend.entries), 0.63, 0.88) canvas.legend.setPosition(0.63, 0.88 - 0.04 * len(canvas.legend.entries), 0.9, 0.88) resultLegend.SetTextSize(0.04) canvas.legend.SetTextSize(0.04) if config == 'monoph': canvas.xtitle = 'E_{T}^{#gamma} [GeV]' else: canvas.xtitle = 'M_{T}(#gamma, E_{T}^{miss}) [GeV]' canvas.ytitle = 'Events / GeV' canvas.rtitle = 'Data / Pred.' if pdir == 'p': outname = 'prefit_' + region elif pdir == 'c': outname = 'CRonly_' + region elif pdir == 'b': outname = 'bonly_' + region elif pdir == 's': outname = 'splusb_' + region resultLegend.construct()
nominal.GetXaxis().SetBinLabel(ibin + 1, binlabels[ibin]) measured.SetPoint(ibin, (binning[ibin] + binning[ibin + 1]) * 0.5, dsigma * cent[0]) measured.SetPointEYhigh(ibin, dsigma * up[0]) measured.SetPointEYlow(ibin, dsigma * down[0]) nominalLine = nominal.Clone('line') canvas.legend.apply('nominal', nominalLine) nominalLine.SetFillStyle(0) canvas.legend.apply('nominal', nominal) nominal.SetMaximum(nominal.GetMaximum() * 1.2) canvas.legend.apply('obs', measured) measured.SetTitle('') canvas.addHistogram(nominal, drawOpt='E2') canvas.addHistogram(nominalLine, drawOpt='HIST') canvas.addHistogram(measured, drawOpt='EP') canvas.xtitle = nominal.GetXaxis().GetTitle() canvas.ytitle = nominal.GetYaxis().GetTitle() canvas.rtitle = 'Fit / prediction' canvas.printWeb('hww/20190205', 'sigma_%s' % observable, logy=False) canvas.Clear() nominalLine.Delete() nominal.Delete()
frame = met.frame() ddata.plotOn(frame) model.plotOn(frame) model.plotOn(frame, ROOT.RooFit.Components('gjets'), ROOT.RooFit.LineColor(ROOT.kGreen), ROOT.RooFit.LineStyle(ROOT.kDashed)) mcpdf.plotOn(frame, ROOT.RooFit.LineColor(ROOT.kRed), ROOT.RooFit.LineStyle(ROOT.kDotted)) # frame.SetTitle('min#Delta#phi(j, E_{T}^{miss}) < 0.5') #frame.GetXaxis().SetTitle('E_{T}^{miss} (GeV)') frame.GetXaxis().SetTitle('') frame.GetXaxis().SetTitleSize(0.) frame.GetXaxis().SetLabelSize(0.) frame.GetYaxis().SetLabelSize(0.) frame.GetYaxis().SetTickSize(0.) canvas.Clear() canvas.xtitle = 'E_{T}^{miss} (GeV)' canvas.ylimits = (0.1, 1000000.) canvas.addHistogram(frame, clone = True, drawOpt = '') canvas.Update(rList = []) fitcurve = frame.findObject('model_Norm[met]') rawcurve = frame.findObject('mcpdf_Norm[met]') rdata = ROOT.TGraphErrors(dmet.GetNbinsX()) for iP in range(rdata.GetN()): x = dmet.GetXaxis().GetBinCenter(iP + 1) norm = fitcurve.interpolate(x) rdata.SetPoint(iP, x, dmet.GetBinContent(iP + 1) / norm) rdata.SetPointError(iP, 0., dmet.GetBinError(iP + 1) / norm)
pass hList = groupList + [iPreUnc, iPre, iPostUnc, iPost, iObs] canvas.rlimits = (0.0, 2.5) if 'monoph' in region or 'horizontal' in region or 'vertical' in region: canvas.ylimits = (0.0003, 200.) elif 'mono' in region: canvas.ylimits = (0.0003, 20.) elif 'di' in region: canvas.ylimits = (0.0003, 5.) canvas.legend.setPosition(0.65, 0.92 - 0.04 * len(canvas.legend.entries), 0.9, 0.92) if config == 'monoph': canvas.xtitle = 'E_{T}^{#gamma} (GeV)' else: canvas.xtitle = 'M_{T}(#gamma, E_{T}^{miss}) (GeV)' canvas.ytitle = 'Events / GeV' canvas.rtitle = 'Data / Pred.' if pdir == 'p': outname = 'prefit_' + region elif pdir == 'c': outname = 'CRonly_' + region elif pdir == 'b': outname = 'bonly_' + region elif pdir == 's': outname = 'splusb_' + region canvas.Update(hList = hList, rList = [iLine, iPreUncRatio, iPostUncRatio, iPreRatio, iPostRatio], logy = True)