Beispiel #1
0
    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)
Beispiel #2
0
            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:
Beispiel #3
0
    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 ##################
###########################################
Beispiel #4
0
                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)
Beispiel #5
0
        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)
Beispiel #6
0
            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 = []
Beispiel #7
0
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")
Beispiel #8
0
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)
Beispiel #9
0
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,