コード例 #1
0
ファイル: doPlotFromWS.py プロジェクト: atpathak/ATLAS
def sumPlotObjects(objs_list, weights=None):
    res = {}
    aux = {}
    if weights is None:
        weights = [1] * len(objs_list)
    if len(weights) != len(objs_list):
        logging.error("Numbers of regions and weights given do not match!")
        return

    for objs, w in zip(objs_list, weights):
        for k, v in objs.iteritems():
            if k == "error" or k == "chi2":  # meaningless to sum them
                continue
            short = getCompName(k)
            if not short in aux:
                aux[short] = k
                # pay attention not to modify the objects we are working with. They might be reused elsewhere.
                if isinstance(v, TObject):
                    res[k] = v.Clone()
                    if isinstance(v, TGraphAsymmErrors):  # data
                        scaleTGraphAsymmErrors(res[k], w)
                    else:
                        res[k].Scale(w)
                elif k == "prefit":
                    res[k] = [v[0].Clone(), v[1]]
                    res[k][0].Scale(w)
                else:
                    res[k] = v
            else:
                idx = aux[short]
                if short != k:  # that's one standard component
                    res[idx].Add(v, w)
                elif k == "prefit":
                    res[idx][0].Add(v[0], w)
                elif k == "data":
                    if w == 1:
                        res[idx] = RooHist(res[idx], v)
                    else:
                        res[idx] = RooHist(res[idx], v, 1, w, RooAbsData.SumW2)
    return res
コード例 #2
0
def addHists(hist1, hist2):
    from ROOT import RooHist
    from math import sqrt

    newHist = RooHist(hist1)

    for i in range(0, newHist.GetN()):
        newHist.SetPoint(i,
                         newHist.GetX()[i],
                         hist1.GetY()[i] + hist2.GetY()[i])
        newHist.SetPointError(i, hist1.GetErrorXlow(i), hist1.GetErrorXhigh(i),
                              sqrt(hist1.GetErrorYlow(i)**2 + \
                                   hist2.GetErrorYlow(i)**2),
                              sqrt(hist1.GetErrorYhigh(i)**2 + \
                                   hist2.GetErrorYhigh(i)**2)
                              )
    return newHist
コード例 #3
0
def invert_col(pad, fgcol=rt.kOrange - 3, bgcol=rt.kBlack):

    #set foreground and background color
    #fgcol = rt.kAzure
    #fgcol = rt.kGreen
    #fgcol = rt.kOrange-3

    pad.SetFillColor(bgcol)
    pad.SetFrameLineColor(fgcol)

    next = TIter(pad.GetListOfPrimitives())
    obj = next()
    while obj != None:
        #H1
        if obj.InheritsFrom(TH1.Class()) == True:
            if obj.GetLineColor() == rt.kBlack:
                obj.SetLineColor(fgcol)
                obj.SetFillColor(bgcol)
            if obj.GetMarkerColor() == rt.kBlack: obj.SetMarkerColor(fgcol)
            obj.SetAxisColor(fgcol, "X")
            obj.SetAxisColor(fgcol, "Y")
            obj.SetLabelColor(fgcol, "X")
            obj.SetLabelColor(fgcol, "Y")
            obj.GetXaxis().SetTitleColor(fgcol)
            obj.GetYaxis().SetTitleColor(fgcol)
        #Legend
        if obj.InheritsFrom(TLegend.Class()) == True:
            obj.SetTextColor(fgcol)
            #obj.SetFillStyle(1000)
            #obj.SetFillColor(fgcol)
            #obj.SetTextColor(bgcol)
            #ln = TIter(obj.GetListOfPrimitives())
            #lo = ln.Next()
            #while lo != None:
            #if lo.GetObject() == None:
            #lo = ln.Next()
            #continue
            #if lo.GetObject().InheritsFrom(TH1.Class()) == True:
            #hx = lo.GetObject()
            #hx.SetFillColor(bgcol)
            #if hx.GetMarkerColor() == rt.kBlack:
            #hx.SetMarkerColor(fgcol)
            #hx.SetLineColor(fgcol)
            #pass
            #lo = ln.Next()
        #RooHist
        if obj.InheritsFrom(RooHist.Class()) == True:
            if obj.GetMarkerColor() == rt.kBlack:
                obj.SetLineColor(fgcol)
                obj.SetMarkerColor(fgcol)
        #H2
        if obj.InheritsFrom(TH2.Class()) == True:
            obj.SetAxisColor(fgcol, "Z")
            obj.SetLabelColor(fgcol, "Z")
            obj.GetZaxis().SetTitleColor(fgcol)
            #obj.SetLineColor(fgcol)
            #obj.SetMarkerColor(fgcol)
        #TLatex
        if obj.InheritsFrom(TLatex.Class()) == True:
            if obj.GetTextColor() == rt.kBlack:
                obj.SetTextColor(fgcol)
        #F2
        if obj.InheritsFrom(TF2.Class()) == True:
            axes = [obj.GetXaxis(), obj.GetYaxis(), obj.GetZaxis()]
            for i in range(len(axes)):
                axes[i].SetAxisColor(fgcol)
                axes[i].SetLabelColor(fgcol)
                axes[i].SetTitleColor(fgcol)
        #F1
        if obj.InheritsFrom(TF1.Class()) == True:
            axes = [obj.GetXaxis(), obj.GetYaxis()]
            for i in range(len(axes)):
                axes[i].SetAxisColor(fgcol)
                axes[i].SetLabelColor(fgcol)
                axes[i].SetTitleColor(fgcol)
        #TGraph
        if obj.InheritsFrom(TGraph.Class()) == True:
            obj.SetFillColor(bgcol)
            ax = obj.GetXaxis()
            ay = obj.GetYaxis()
            ax.SetAxisColor(fgcol)
            ay.SetAxisColor(fgcol)
            ax.SetLabelColor(fgcol)
            ay.SetLabelColor(fgcol)
            ax.SetTitleColor(fgcol)
            ay.SetTitleColor(fgcol)
            if obj.GetLineColor() == rt.kBlack:
                obj.SetLineColor(fgcol)
                obj.SetMarkerColor(fgcol)
        #TGaxis
        if obj.InheritsFrom(TGaxis.Class()) == True:
            obj.SetLineColor(fgcol)
            obj.SetLabelColor(fgcol)
            obj.SetTitleColor(fgcol)

        #TFrame
        if obj.InheritsFrom(TFrame.Class()) == True:
            if obj.GetLineColor() == rt.kBlack:
                obj.SetLineColor(fgcol)
                obj.SetFillColor(bgcol)

        #move to next item
        obj = next()
コード例 #4
0
fit2.__class__ = ROOT.RooCurve

turnon2 = TurnOnPlot.TurnOn(Name="Stage2",
                            Histo=histo2,
                            MarkerColor=ROOT.kRed,
                            MarkerStyle=20,
                            LineColor=ROOT.kRed,
                            LineStyle=1,
                            Legend="New pedestals")

plots[0].addTurnOn(turnon)
plots[0].addTurnOn(turnon2)

#Plot the difference:
diffcurve = RooCurve("diff", "diff", fit, fit2, 1, -1)
diffhist = RooHist(histo, histo2, 1, -1, RooAbsData.SumW2)
turnondiff = TurnOnPlot.TurnOn(Name="Stage2",
                               Histo=diffhist,
                               Fit=diffcurve,
                               MarkerColor=ROOT.kBlack,
                               MarkerStyle=20,
                               LineColor=ROOT.kBlue,
                               LineStyle=1,
                               Legend="Data-New_pedestals")

plots[1].addTurnOn(turnondiff)

canvas = []
for plot in plots:
    canvas.append(plot.plot())
コード例 #5
0
        oldDataHist.Draw()
        theData.Draw("pz")
        gPad.Update()
        gPad.WaitPrimitive()

        oldDataHist = templateMorph.scaleUnwidth(oldDataHist)

        oldDataHist.Print()

    bgHist = TH1D(SignalHist)
    bgHist.Reset('ices')
    bgHist.SetName(theData.GetName())
    bgHist.SetTitle(theData.GetTitle())
    bgHist = curveToHist(bgCurve, bgHist, debug=opts.debug)

    tmpData = RooHist(bgHist, 0, 1, RooAbsData.SumW2)
    tmpHist = TH1D(bgHist)

    # if opts.debug:
    #     print 'drawing toy data bg residuals before signal addition...'
    #     resid = tmpData.makeResidHist(bfile.Get('h_total'))
    #     resid.Draw('apz')
    #     gPad.Update()
    #     gPad.WaitPrimitive()

    bgHist = templateMorph.scaleUnwidth(bgHist)
    print 'background only'
    bgHist.Print()

    bgHist.Add(SignalHist)