예제 #1
0
    # if samp == 'Down':
    rcanvas.ylimits = (0., -1.)
    # else:
    # rcanvas.ylimits = (0., 0.05)

    rcanvas.SetLogy(False)

    rcanvas.legend.add(tname,
                       title='transfer factor',
                       lcolor=ROOT.kBlack,
                       lwidth=2)
    rcanvas.legend.add(tname + 'Syst',
                       title='impurity #pm 1#sigma',
                       lcolor=ROOT.kBlack,
                       lwidth=2,
                       lstyle=ROOT.kDashed)

    rcanvas.legend.apply(tname, tfact)
    rcanvas.legend.apply(tname + 'Syst', tfactUp)
    rcanvas.legend.apply(tname + 'Syst', tfactDown)

    iNom = rcanvas.addHistogram(tfact, drawOpt='HIST')
    iUp = rcanvas.addHistogram(tfactUp, drawOpt='HIST')
    iDown = rcanvas.addHistogram(tfactDown, drawOpt='HIST')

    rcanvas.printWeb('monophoton/hadronTFactor' + suffix,
                     'tfactor' + confName,
                     hList=[iUp, iDown, iNom],
                     rList=[iNom, iUp, iDown])
예제 #2
0
파일: puweight.py 프로젝트: yiiyama/MonoX
                  fstyle=3003,
                  lwidth=2)
canvas.legend.add('mc', '', opt='LF', color=ROOT.kBlue, fstyle=3003, lwidth=2)

canvas.legend.apply('data', dataDist)

dataClone = dataDist.Clone('points')
dataClone.SetFillStyle(0)
dataClone.SetMarkerStyle(1)
dataClone.SetMarkerColor(ROOT.kBlack)
dataClone.SetLineWidth(2)
dataClone.SetLineColor(ROOT.kBlack)

for _, scenarioName in mcConfs:
    mcDist = outputFile.Get(scenarioName)
    canvas.legend.entries['mc'].SetLabel(scenarioName)
    canvas.legend.apply('mc', mcDist)

    imc = canvas.addHistogram(mcDist)
    idata = canvas.addHistogram(dataDist)
    iclone = canvas.addHistogram(dataClone, drawOpt='P')

    canvas.printWeb('puweight',
                    scenarioName,
                    logy=False,
                    hList=[imc, idata],
                    rList=[imc, iclone])
    canvas.Clear()

outputFile.Close()
예제 #3
0
파일: calcSF.py 프로젝트: dabercro/MonoX
                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)
예제 #4
0
iP = 0
while iP <= pre:
    rraw.SetPoint(iP, rawcurve.GetX()[iP], rraw.GetY()[pre + 1])
    iP += 1

rraw.SetLineWidth(2)
rraw.SetLineColor(ROOT.kRed)
rraw.SetLineStyle(ROOT.kDotted)

canvas.ratioPad.cd()

rframe = ROOT.TH1F("rframe", "", 1, 0.0, 200.0)
rframe.GetYaxis().SetRangeUser(0.0, 2.0)
rframe.Draw()

line = ROOT.TLine(0.0, 1.0, 200.0, 1.0)
line.SetLineWidth(2)
line.SetLineColor(ROOT.kBlue)
line.Draw()

rraw.Draw("L")

rdata.Draw("EP")

canvas._needUpdate = False

canvas.printWeb("smearfit", "direct")

outputFile.cd()
space.Write()
예제 #5
0
    for vname, title, binning, cond, logy in plots:
        if type(binning) is tuple:
            hlo = ROOT.TH1D('lo', title, *binning)
            hnlo = ROOT.TH1D('nlo', title, *binning)
        else:
            hlo = ROOT.TH1D('lo', title,
                            len(binning) - 1, array.array('d', binning))
            hnlo = ROOT.TH1D('nlo', title,
                             len(binning) - 1, array.array('d', binning))

        nloTree.Draw(vname + '>>nlo',
                     'weight * ((%s) && (%s))' % (baseline, cond), 'goff')
        hnlo.Scale(nloSample.crosssection / nloSumw, 'width')
        canvas.addHistogram(hnlo)

        if lo is not None:
            loTree.Draw(vname + '>>lo', '(%s) && (%s)' % (baseline, cond),
                        'goff')
            hlo.Scale(loSample.crosssection / loSumw, 'width')
            canvas.addHistogram(hlo)

        canvas.applyStyles()

        canvas.printWeb('kfactor', name + '_' + vname, logy=logy)

        canvas.Clear()

        hnlo.Delete()
        hlo.Delete()
예제 #6
0
    canvas.addHistogram(fptDown, drawOpt = 'HIST')
    canvas.addHistogram(hpt, drawOpt = 'HIST')

    canvas.ylimits = (1.0, 2500000.)
    canvas.SetLogy(True)

    canvas.printWeb('monophoton/hadronTFactor', 'distributions'+samp)

    rcanvas.Clear()
    rcanvas.legend.Clear()

    if samp == 'Down':
        rcanvas.ylimits = (0., -1.)
    else:
        rcanvas.ylimits = (0., 0.15)

    rcanvas.SetLogy(False)

    rcanvas.legend.add(tname, title = 'transfer factor', lcolor = ROOT.kBlack, lwidth = 2)
    rcanvas.legend.add(tname+'Syst', title = 'impurity #pm 1#sigma', lcolor = ROOT.kBlack, lwidth = 2, lstyle = ROOT.kDashed)

    rcanvas.legend.apply(tname, tfact)
    rcanvas.legend.apply(tname+'Syst', tfactUp)
    rcanvas.legend.apply(tname+'Syst', tfactDown)

    iNom = rcanvas.addHistogram(tfact, drawOpt = 'HIST')
    iUp = rcanvas.addHistogram(tfactUp, drawOpt = 'HIST')
    iDown = rcanvas.addHistogram(tfactDown, drawOpt = 'HIST')

    rcanvas.printWeb('monophoton/hadronTFactor', 'tfactor'+samp, hList = [iUp, iDown, iNom], rList = [iUp, iDown, iNom] )
예제 #7
0
파일: efake_plot.py 프로젝트: yiiyama/MonoX
def plotFit(mass,
            targHist,
            model,
            dataType,
            suffix,
            bkgModel='nombkgModel',
            hmcbkg=None,
            alt='',
            plotName=''):
    global canvas

    if canvas is None:
        canvas = RatioCanvas(lumi=lumi, sim=(dataType == 'mc'))

    canvas.Clear(full=True)
    canvas.titlePave.SetX2NDC(0.5)
    canvas.legend.setPosition(0.6, 0.7, 0.9, 0.9)
    canvas.legend.add('obs',
                      title='Observed',
                      opt='LP',
                      color=ROOT.kBlack,
                      mstyle=8)
    canvas.legend.add('fit',
                      title='Fit',
                      opt='L',
                      lcolor=ROOT.kBlue,
                      lwidth=2,
                      lstyle=ROOT.kSolid)
    canvas.legend.add('bkg',
                      title='Bkg component',
                      opt='L',
                      lcolor=ROOT.kGreen,
                      lwidth=2,
                      lstyle=ROOT.kDashed)
    if hmcbkg:
        canvas.legend.add('mcbkg',
                          title='Bkg (MC truth)',
                          opt='LF',
                          lcolor=ROOT.kRed,
                          lwidth=1,
                          fcolor=ROOT.kRed,
                          fstyle=3003)

    if targHist.sumEntries() > 500.:
        plotBinning = plotBinningT
    else:
        plotBinning = plotBinningT2

    frame = mass.frame()
    targHist.plotOn(frame, ROOT.RooFit.Binning(*plotBinning))
    model.plotOn(frame)
    model.plotOn(frame, ROOT.RooFit.Components(bkgModel + '_' + suffix),
                 ROOT.RooFit.LineStyle(ROOT.kDashed),
                 ROOT.RooFit.LineColor(ROOT.kGreen))
    frame.SetTitle('')
    frame.SetMinimum(0.)

    canvas.addHistogram(frame, clone=True, drawOpt='')
    if hmcbkg:
        htruth = hmcbkg.Rebin(hmcbkg.GetNbinsX() / plotBinning[0], 'truth')
        canvas.legend.apply('mcbkg', htruth)
        canvas.addHistogram(htruth)

    canvas.rlimits = (-2., 2.)
    canvas.Update(rList=[], logy=False)

    frame.Print()

    # adding ratio pad
    fitcurve = frame.findObject(model.GetName() + '_Norm[mass]')

    hresid = targHist.createHistogram('residual', mass,
                                      ROOT.RooFit.Binning(*plotBinning))

    rdata = ROOT.TGraphErrors(hresid.GetNbinsX())

    for iP in range(rdata.GetN()):
        x = hresid.GetXaxis().GetBinCenter(iP + 1)
        nData = hresid.GetBinContent(iP + 1)
        statErr = hresid.GetBinError(iP + 1)
        nFit = fitcurve.interpolate(x)
        if statErr > 0.:
            rdata.SetPoint(iP, x, (nData - nFit) / statErr)
        else:
            rdata.SetPoint(iP, x, (nData - nFit))
        # rdata.SetPointError(iP, 0., dmet.GetBinError(iP + 1) / norm)

    rdata.SetMarkerStyle(8)
    rdata.SetMarkerColor(ROOT.kBlack)
    rdata.SetLineColor(ROOT.kBlack)

    canvas.ratioPad.cd()
    canvas.rtitle = '(data - fit) / #sigma_{data}'

    rframe = ROOT.TH1F('rframe', '', 1, *plotBinning[1:])
    rframe.GetYaxis().SetRangeUser(-2., 2.)
    rframe.Draw()

    line = ROOT.TLine(plotBinning[1], 0., plotBinning[2], 0.)
    line.SetLineWidth(2)
    line.SetLineColor(ROOT.kBlue)
    line.Draw()

    rdata.Draw('EP')

    canvas._needUpdate = False

    if not plotName:
        plotName = 'fit_' + dataType + '_' + suffix
    if alt:
        plotName += '_' + alt

    canvas.printWeb(plotDir, plotName, logy=False)

    rframe.Delete()
    if hmcbkg:
        htruth.Delete()
    hresid.Delete()
예제 #8
0
파일: smearfit.py 프로젝트: DylanHsu/MonoX
iP = 0
while iP <= pre:
    rraw.SetPoint(iP, rawcurve.GetX()[iP], rraw.GetY()[pre + 1])
    iP += 1

rraw.SetLineWidth(2)
rraw.SetLineColor(ROOT.kRed)
rraw.SetLineStyle(ROOT.kDotted)

canvas.ratioPad.cd()

rframe = ROOT.TH1F('rframe', '', 1, 0., 200.)
rframe.GetYaxis().SetRangeUser(0., 2.)
rframe.Draw()

line = ROOT.TLine(0., 1., 200., 1.)
line.SetLineWidth(2)
line.SetLineColor(ROOT.kBlue)
line.Draw()

rraw.Draw('L')

rdata.Draw('EP')

canvas._needUpdate = False

canvas.printWeb('smearfit', 'direct')

outputFile.cd()
space.Write()
예제 #9
0
파일: plotFit.py 프로젝트: yiiyama/MonoX
    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()
예제 #10
0
            if 'prefit' in name:
                orig = prefitTotal
            else:
                orig = postfitTotal

            for iBin in zeroBins:
                scale = 1. / orig.GetBinContent(iBin)

                if 'Unc' in name:
                    # prim is a TH1
                    prim.SetBinContent(iBin, 1.)
                    prim.SetBinError(iBin, orig.GetBinError(iBin) * scale)
                else:
                    # prim is a TGraphAsymmErrors
                    prim.SetPoint(iBin - 1, prim.GetX()[iBin - 1], 0.)
                    prim.SetPointEYhigh(iBin - 1,
                                        obs.GetErrorYhigh(iBin - 1) * scale)

    canvas.printWeb(
        'EXO16053/fit',
        outname,
        hList=hList,
        rList=[iLine, iPreUncRatio, iPostUncRatio, iPreRatio, iPostRatio],
        logy=True)

    canvas.Clear()

    dataHist.Delete()
    if postfitSub:
        postfitSub.Delete()
예제 #11
0
            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()
예제 #12
0
파일: smearfit.py 프로젝트: yiiyama/MonoX
    rraw.SetLineWidth(2)
    rraw.SetLineColor(ROOT.kRed)
    rraw.SetLineStyle(ROOT.kDotted)

    canvas.ratioPad.cd()

    rframe = ROOT.TH1F('rframe', '', 1, 0., 400.)
    rframe.GetYaxis().SetRangeUser(0., 2.)
    rframe.Draw()

    line = ROOT.TLine(0., 1., 400., 1.)
    line.SetLineWidth(2)
    line.SetLineColor(ROOT.kBlue)
    line.Draw()

    rraw.Draw('L')

    rdata.Draw('EP')

    canvas._needUpdate = False

    canvas.printWeb('monophoton/smearfit', sname)
###

outputFile.cd()
space.Write()
outputFile.Close()

print 'done'