Exemplo n.º 1
0
    def ensembleTest(self) :
        qqFracs = sorted([0.10, 0.12, 0.15, 0.20, 0.25, 0.30, 0.40, 0.60, 1.0])
        dists = ['lHadtDeltaY',
                 'ttbarDeltaAbsY',
                 'leptonRelativeY',
                 'ttbarSignedDeltaY'
                ]
        args = sum([[(iStep, dist, qqFrac) for iStep in list(self.orgMelded.indicesOfStepsWithKey(dist))[:None] for qqFrac in qqFracs] for dist in dists],[])
        utils.operateOnListUsingQueue(6, utils.qWorker(self.pickleEnsemble), args)
        ensembles = dict([(arg,utils.readPickle(self.ensembleFileName(*arg))) for arg in args])

        for iStep in sorted(set([iStep for iStep,dist,qqFrac in ensembles])) :
            canvas = r.TCanvas()
            dists = sorted(set([dist for jStep,dist,qqFrac in ensembles if jStep==iStep]))
            legend = r.TLegend(0.7,0.5,0.9,0.9)
            graphs = {}
            for iDist,dist in enumerate(dists) :
                points = sorted([(qqFrac,ensemble.sensitivity) for (jStep, jDist, qqFrac),ensemble in ensembles.iteritems() if jStep==iStep and jDist==dist])
                qqs,sens = zip(*points)
                graphs[dist] = r.TGraph(len(points),np.array(qqs),np.array(sens))
                graphs[dist].SetLineColor(iDist+1)
                graphs[dist].Draw('' if iDist else "AL")
                graphs[dist].SetMinimum(0)
                graphs[dist].SetTitle("Sensitivity @ step %d;fraction of t#bar{t} from q#bar{q};expected uncertainty on R"%iStep)
                legend.AddEntry(graphs[dist],dist,'l')
            legend.Draw()
            utils.tCanvasPrintPdf(canvas, '%s/sensitivity_%d'%(self.globalStem,iStep))
Exemplo n.º 2
0
 def PEcurves(self) :
     if not hasattr(self, 'orgMelded') : return
     specs = ([{'var' : "ak5JetPFNTrkHiEffPat[i[%d]]:xcak5JetPFIndicesBtaggedPat"%bIndex, 'left':True, 'right':False} for bIndex in [0,1,2]] +
              [{'var' : "TopRatherThanWProbability",                                      'left':True, 'right':False},
               {'var' : "TriDiscriminant",                                                'left':True, 'right':True}])
     pes = {}
     for spec in specs :
         dists = dict(zip([ss['name'] for ss in self.orgMelded.samples ],
                          self.orgMelded.steps[next(self.orgMelded.indicesOfStepsWithKey(spec['var']))][spec['var']] ) )
         contours = utils.optimizationContours( [dists['top.t#bar{t}']],
                                                [dists[s] for s in ['QCD.Data 2011','top.w_jets']],
                                                **spec
                                                )
         utils.tCanvasPrintPdf(contours[0], "%s/PE_%s"%(self.globalStem,spec['var']))
         if spec['left']^spec['right'] : pes[spec['var']] = contours[1]
     c = r.TCanvas()
     leg = r.TLegend(0.5,0.8,1.0,1.0)
     graphs = []
     for i,(var,pe) in enumerate(pes.iteritems()) :
         pur,eff = zip(*pe)
         g = r.TGraph(len(pe), np.array(eff), np.array(pur))
         g.SetTitle(";efficiency;purity")
         g.SetLineColor(i+2)
         leg.AddEntry(g,var,'l')
         graphs.append(g)
         g.Draw('' if i else 'AL')
     leg.Draw()
     c.Update()
     utils.tCanvasPrintPdf(c, "%s/purity_v_efficiency"%self.globalStem)
     return
Exemplo n.º 3
0
        def measureFractions(dist) :
            before = next(self.orgMelded.indicesOfStep("label","selection complete"))
            distTup = self.orgMelded.steps[next(iter(filter(lambda i: before<i, self.orgMelded.indicesOfStepsWithKey(dist))))][dist]
            #distTup = self.orgMelded.steps[next(self.orgMelded.indicesOfStepsWithKey(dist))][dist]

            templateSamples = ['top.t#bar{t}','top.w_jets','QCD.Data 2011']
            templates = [None] * len(templateSamples)
            for ss,hist in zip(self.orgMelded.samples,distTup) :
                contents = [hist.GetBinContent(i) for i in range(hist.GetNbinsX()+2)]
                if ss['name'] == "top.Data 2011" :
                    observed = contents
                    nEventsObserved = sum(observed)
                elif ss['name'] in templateSamples :
                    templates[templateSamples.index(ss['name'])] = contents
                else : pass
        
            from core.fractions import componentSolver,drawComponentSolver
            cs = componentSolver(observed, templates, 1e4)
            csCanvas = drawComponentSolver(cs)
            name = "measuredFractions_%s"%dist
            utils.tCanvasPrintPdf(csCanvas[0], "%s/%s"%(self.globalStem,name))
            with open(self.globalStem+"/%s.txt"%name,"w") as file :
                print >> file, cs
                print >> file, cs.components
            return distTup,cs
Exemplo n.º 4
0
    def measureQQbarComponent(self) :
        dist = "DiscriminantTopQqQg"
        dists = dict(zip([ss['name'] for ss in self.orgMelded.samples ],
                         self.orgMelded.steps[next(self.orgMelded.indicesOfStepsWithKey(dist))][dist] ) )
        def contents(name) : return np.array([dists[name].GetBinContent(i) for i in range(dists[name].GetNbinsX()+2)])

        from core.fractions import componentSolver, drawComponentSolver
        cs = componentSolver(observed = contents('top.Data 2011'),
                             components = [ contents('top.tt_tauola_fj.wTopAsymP00.tw.nvr'), contents('top.tt_tauola_fj.wNonQQbar.tw.nvr')],
                             ensembleSize = 1e4,
                             base = contents('top.w_jets') + contents('QCD.Data 2011')
                             )
        csCanvas = drawComponentSolver(cs)
        utils.tCanvasPrintPdf(csCanvas[0], "%s/measuredQQFractions"%self.globalStem)
        with open(self.globalStem+"/measuredQQFractions.txt","w") as file :  print >> file, cs
Exemplo n.º 5
0
Arquivo: Gen.py Projeto: aharel/supy
    def setup(self,*_) :
        import numpy as np
        orig = self.fromCache( [self.sample], [self.dist], tag = self.tag)[self.sample][self.dist]
        if not orig : return

        edges = utils.edgesRebinned(orig, targetUncRel = 0.065)
        hist = orig.Rebin(len(edges)-1, "tmp", edges)
        vals  = [hist.GetBinContent(i) for i in range(1,len(edges))]
        del hist
        iZero = edges.index(0)
        R = np.array(vals[iZero:])
        L = np.array(vals[:iZero])[::-1]
        p = R / ( R + L )

        self.p = r.TH1D(self.name, ";|%s|;p of correct qDir"%self.var, len(edges[iZero:])-1, edges[iZero:])
        for i in range(len(p)) : self.p.SetBinContent(i+1,p[i])
        self.p.SetBinContent(len(edges[iZero:])+2, edges[-1])

        if self.path is not None :
            c = r.TCanvas()
            self.p.Draw('hist')
            utils.tCanvasPrintPdf(c,'%s/%s'%(self.path,'.'.join([self.name,self.sample,self.tag])))
            del c