bmets.append(bmet) gmets.append(gmet) mcmets.append(mcmet) canvas.cd() canvas.Clear() canvas.legend.Clear() canvas.ylimits = (0.002, 2500) canvas.SetLogy(True) canvas.legend.setPosition(0.6, 0.7, 0.95, 0.9) canvas.addStacked(bmet, title='Background', color=r.TColor.GetColor(0x55, 0x44, 0xff), idx=-1) canvas.addStacked(mcmet, title='#gamma + jet MC', color=r.TColor.GetColor(0xff, 0xaa, 0xcc), idx=-1) canvas.addObs(dmet, title='Data') canvas.xtitle = canvas.obsHistogram().GetXaxis().GetTitle() canvas.ytitle = canvas.obsHistogram().GetYaxis().GetTitle() canvas.Update(logy=True) canvas.printWeb('monophoton/gjetsTFactor', 'distributions' + region)
postscale = 1. # make background histograms # loop over groups with actual distributions bkgTotal = vardef.makeHist('bkgtotal') for group in [g for g in plotConfig.bkgGroups if len(g.samples) != 0]: hist = groupHist(group, vardef, plotConfig, args.skimDir, lumi = lumi, postscale = postscale, outFile = outFile) if not args.saveTrees: bkgTotal.Add(hist) if vardef.name == 'count' or vardef.name == args.bbb or vardef.name == args.chi2: counters[group.name] = hist elif plotDir: canvas.addStacked(hist, title = group.title, color = group.color, drawOpt = drawOpt) # formatted histograms added to bkgTotal unformatHist(bkgTotal, vardef) # then over groups without distributions (no samples but count set) # probably doesn't work in trees for group in [g for g in plotConfig.bkgGroups if len(g.samples) == 0]: # cannot use lumi because cross section is not set hist = groupHist(group, vardef, plotConfig, template = bkgTotal, postscale = postscale, outFile = outFile) if vardef.name == 'count' or vardef.name == args.bbb or vardef.name == args.chi2: counters[group.name] = hist # plot signal distributions for sensitive variables if isSensitive or outFile:
dmets.append(dmet) bmets.append(bmet) gmets.append(gmet) mcmets.append(mcmet) canvas.cd() canvas.Clear() canvas.legend.Clear() canvas.ylimits = (0.002, 2500) canvas.SetLogy(True) canvas.legend.setPosition(0.6, 0.7, 0.95, 0.9) canvas.addStacked(bmet, title = 'Background', color = r.TColor.GetColor(0x55, 0x44, 0xff), idx = -1) canvas.addStacked(mcmet, title = '#gamma + jet MC', color = r.TColor.GetColor(0xff, 0xaa, 0xcc), idx = -1) canvas.addObs(dmet, title = 'Data') canvas.xtitle = canvas.obsHistogram().GetXaxis().GetTitle() canvas.ytitle = canvas.obsHistogram().GetYaxis().GetTitle() canvas.Update(logy = True) canvas.printWeb('monophoton/gjetsTFactor', 'distributions'+region) ########################################### ####### Transfer Factors ################## ###########################################
canvas.Clear() canvas.legend.Clear() canvas.legend.setPosition(0.6, 0.7, 0.9, 0.9) dataName = 'dataHist'+skim dataHist = varDef.makeHist(dataName) if varDef.unit != '': dataHist.GetXaxis().SetTitle(varDef.title + ' (' + varDef.unit +')') else: dataHist.GetXaxis().SetTitle(varDef.title) dataCutString = cutString + ' && !(run > %s)' % config.runCutOff dataTree.Draw(varDef.expr+'>>'+varDef.name+'-'+dataName, 'weight * ('+cutString+')', 'goff') print dataHist.Integral() canvas.addObs(dataHist, title = 'Data '+skimm) for sample, color, mcTree in mcTrees: mcName = sample+skimm mcHist = varDef.makeHist(mcName) mcTree.Draw(varDef.expr+'>>'+varDef.name+'-'+mcName, str(lumi)+' * weight * ('+cutString+')', 'goff') canvas.addStacked(mcHist, title = sample, color = color) # canvas.ylimits = (0.001, -1.) canvas.xtitle = varDef.title canvas.ytitle = 'Events' canvas.printWeb('monophoton/phoMet/'+skim, skimm[:3]+'_'+jetsCut[0]+'_'+sign+'_'+varDef.name, logy = False)
for group in plotConfig.bkgGroups: ghist = inDir.Get(group.name + '_syst') if group.scale == 'data': # special case - scaling this group to data (for shape comparison) ghist.Scale(fillToDataScale) if graphic: formatHist(ghist, plotdef) title = group.title if group.scale == 'data': title += ' (norm. to obs)' elif group.scale != 1.: title += (' #times %.1f' % group.scale) canvas.addStacked(ghist, title=title, color=group.color, drawOpt=drawOpt) else: counters[group.name] = ghist # background total used for uncertainty display bkgTotal = inDir.Get('bkgtotal_syst') if graphic: formatHist(bkgTotal, plotdef) # plot signal distributions for sensitive plots if isSensitive: for sspec in plotConfig.signalPoints: shist = inDir.Get('samples/' + sspec.name + '_' + plotConfig.name)
prescale = 1 postscale = 1. # make background histograms # loop over groups with actual distributions bkgTotal = vardef.makeHist('bkgtotal') for group in [g for g in plotConfig.bkgGroups if len(g.samples) != 0]: hist = groupHist(group, vardef, plotConfig, args.skimDir, postscale = postscale, outFile = outFile) bkgTotal.Add(hist) if vardef.name == 'count' or vardef.name == args.bbb: counters[group.name] = hist elif plotDir: canvas.addStacked(hist, title = group.title, color = group.color) # formatted histograms added to bkgTotal unformatHist(bkgTotal, vardef) # then over groups without distributions (no samples but count set) for group in [g for g in plotConfig.bkgGroups if len(g.samples) == 0]: hist = groupHist(group, vardef, plotConfig, template = bkgTotal, postscale = postscale, outFile = outFile) if vardef.name == 'count' or vardef.name == args.bbb: counters[group.name] = hist # plot signal distributions for sensitive variables if isSensitive or outFile: usedPoints = []
print dataHist.Integral() canvas.addObs(dataHist, title='Data') for region, cut, color, bkgTree in bkgTrees: bkgHist = varDef.makeHist(varDef.name + '-' + region) print bkgHist.GetName() fullCut = cutString + ' && ' + cut bkgTree.Draw(varDef.expr + '>>' + varDef.name + '-' + region, 'weight * (' + cutString + ')', 'goff') if region == 'offtimeIso': bkgHist.Scale(23.9 / bkgHist.Integral()) elif region == 'halo': bkgHist.Scale(1. / 3000.) print bkgHist.Integral() canvas.addStacked(bkgHist, title=region, color=color) for sample, color, mcTree in mcTrees: mcHist = varDef.makeHist(varDef.name + '-' + sample) print mcHist.GetName() mcTree.Draw("1.02 * " + varDef.expr + '>>' + varDef.name + '-' + sample, str(lumi) + ' * weight * (' + cutString + ')', 'goff') print mcHist.Integral() canvas.addStacked(mcHist, title=sample, color=color) # canvas.ylimits = (0.001, -1.) canvas.xtitle = varDef.title canvas.ytitle = 'Events' canvas.printWeb('monophoton/pes/', varDef.name + "02")
data.Add('/mnt/hadoop/scratch/yiiyama/monophoton/skim/sph-16*-m_tpeg.root') outputFile.cd() data.Draw('probes.sieie>>hdata', selection, 'goff') hmc.Scale(hdata.GetSumOfWeights() / hmc.GetSumOfWeights()) ratio = hdata.Clone('ratio') ratio.Divide(hmc) line = ROOT.TF1('line', '[0] + [1] * x', 0.0085, 0.0105) line.SetParameters(1.5, -100.) ratio.Fit(line) outputFile.cd() hmc.Write() hdata.Write() ratio.Write() line.Write('fit') # visualize canvas = DataMCCanvas(lumi=sum(s.lumi for s in allsamples.getmany('sph-16*-m'))) canvas.legend.setPosition(0.7, 0.7, 0.9, 0.9) canvas.addStacked(hmc, title='MC', color=ROOT.kBlue, style=3003) canvas.addObs(hdata, title='Data') canvas.printWeb('purity', 'sieie_ratio', logy=False)
bkg = source.Get('shapes_fit_s/gghg/total_background') fake = source.Get('shapes_fit_s/gghg/fakemet') sig = source.Get('shapes_fit_s/gghg/total_signal') data = source.Get('shapes_fit_s/gghg/data') bkg.Add(fake, -1.) plotsSource = ROOT.TFile.Open(plots) bkgTrue = plotsSource.Get(dist + '/bkgtotal') fakeTrue = plotsSource.Get(dist + '/fakemet') sigTrue = plotsSource.Get(dist + '/samples/' + signal + '_' + region) canvas.legend.setPosition(0.4, 0.6, 0.9, 0.9) canvas.addStacked(bkg, title='SM Bkgd.', color=ROOT.kGray, drawOpt='HIST') canvas.addStacked(fake, title='Fake E_{T}^{miss}', color=ROOT.kRed, drawOpt='HIST') canvas.addStacked(sig, title='H(125)', color=ROOT.kBlue, drawOpt='HIST') bkgTrue.Scale(1., 'width') fakeTrue.Scale(fakeNorm / fakeTrue.GetSumOfWeights(), 'width') sigTrue.Scale(sigScale, 'width') canvas.addSignal(bkgTrue, title='True SM Bkgd.', color=ROOT.kGreen + 2, drawOpt='HIST') canvas.addSignal(fakeTrue,