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 ################## ########################################### methods = [('Data', gmets), ('MC', mcmets)] scanvas = SimpleCanvas(lumi=lumi) tfacts = [] for method, hists in methods: tname = 'tfact' + method tfact = hists[1].Clone(tname) tfact.Divide(hists[0])
yaxis.SetY1(simple.canvas.GetBottomMargin()) yaxis.SetY2(1. - simple.canvas.GetTopMargin()) simple.canvas.IsA().Destructor(simple.canvas) simple.canvas = cnv simple._needUpdate = False simple.printWeb(plotDir, vardef.name) if addLinear: simple.ylimits = (0., -1.) simple.minimum = -1. vardef.ymax = -1. simple._needUpdate = True simple.printWeb(plotDir, vardef.name + 'Linear', logy = False) # cleanup the mess for obj in garbage: obj.IsA().Destructor(obj) cnv.IsA().Destructor(cnv) else: canvas.printWeb(plotDir, vardef.name) if addLinear: canvas.ylimits = (0., -1.) canvas.minimum = -1. vardef.ymax = -1. canvas._needUpdate = True canvas.printWeb(plotDir, vardef.name + 'Linear', logy = False)
for probeEtaCut in probeEtaCuts: finalCuts = allCuts + [probeEtaCut[0]] cutString = ' && '.join(['(%s)' % c for c in finalCuts]) print cutString label = recoilCut[1] + '_' + probeEtaCut[1] canvas.Clear() canvas.legend.Clear() canvas.legend.setPosition(0.6, 0.7, 0.9, 0.9) dataName = 'dataHist_' + label dataHist = r.TH1D(dataName, '', 20, 0., 2.) dataHist.Sumw2() dataTree.Draw(varString + '>>' + dataName, 'weight * (' + cutString + ')', 'goff') canvas.addObs(dataHist, title='Data') for sample, color, mcTree in mcTrees: mcName = sample + '_' + label mcHist = r.TH1D(mcName, '', 20, 0., 2.) mcHist.Sumw2() mcTree.Draw(varString + '>>' + mcName, str(lumi) + ' * weight * (' + cutString + ')', 'goff') canvas.addStacked(mcHist, title=sample, color=color) canvas.ylimits = (0.001, -1.) canvas.printWeb('monophoton/phoMet', 'ratio_' + label, logy=True)
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)
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")
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 ################## ########################################### methods = [ ('Data', gmets), ('MC', mcmets) ] scanvas = SimpleCanvas(lumi = lumi) tfacts = [] for method, hists in methods: tname = 'tfact'+method tfact = hists[1].Clone(tname) tfact.Divide(hists[0])
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' if varDef.logy is None: logy = False else: logy = varDef.logy canvas.printWeb('monophoton/zjets/'+skim, skimm[:3]+'_'+jetsCut[0]+'_Met'+metValue+'_'+varDef.name, logy = logy)
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)
for recoilCut in recoilCuts: allCuts = cuts + [recoilCut[0]] for probeEtaCut in probeEtaCuts: finalCuts = allCuts + [probeEtaCut[0]] cutString = " && ".join(["(%s)" % c for c in finalCuts]) print cutString label = recoilCut[1] + "_" + probeEtaCut[1] canvas.Clear() canvas.legend.Clear() canvas.legend.setPosition(0.6, 0.7, 0.9, 0.9) dataName = "dataHist_" + label dataHist = r.TH1D(dataName, "", 20, 0.0, 2.0) dataHist.Sumw2() dataTree.Draw(varString + ">>" + dataName, "weight * (" + cutString + ")", "goff") canvas.addObs(dataHist, title="Data") for sample, color, mcTree in mcTrees: mcName = sample + "_" + label mcHist = r.TH1D(mcName, "", 20, 0.0, 2.0) mcHist.Sumw2() mcTree.Draw(varString + ">>" + mcName, str(lumi) + " * weight * (" + cutString + ")", "goff") canvas.addStacked(mcHist, title=sample, color=color) canvas.ylimits = (0.001, -1.0) canvas.printWeb("monophoton/phoMet", "ratio_" + label, logy=True)
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, title='True Fake E_{T}^{miss}', color=ROOT.kRed + 2, drawOpt='HIST') canvas.addSignal(sigTrue, title='True H(125)', color=ROOT.kBlue + 2, drawOpt='HIST') canvas.addObs(data, drawOpt='EP') canvas.title = '#sigma#timesBR = %.2f, N_{fake} = %.0f' % (originalMu * sigScale, fakeNorm) canvas.xtitle = 'm_{T} (GeV)' canvas.ytitle = 'Events / GeV' canvas.printWeb('monophoton/fakemet', name, logy=False)
dataHist.GetXaxis().SetTitle(varDef.title) 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(smuLumi) + ' * weight * (' + cutString + ')', 'goff') canvas.addStacked(mcHist, title=sample, color=color) # canvas.ylimits = (0.001, -1.) canvas.xtitle = varDef.title canvas.ytitle = 'Events' if varDef.logy is None: logy = False else: logy = varDef.logy canvas.printWeb('monophoton/zjets/' + skim, skimm[:3] + '_' + jetsCut[0] + '_Met' + metValue + '_' + varDef.name, logy=logy)