def reportCache(self) : L,R = self.leftRight() fileName = '/'.join(self.outputFileName.split('/')[:-1]+[self.name]) optstat = r.gStyle.GetOptStat() r.gStyle.SetOptStat(0) c = r.TCanvas() c.Print(fileName+'.pdf[') with open(fileName+'.txt', "w") as file : print >> file, "L:", self.left print >> file, "R:", self.right print >> file for dilution,key in sorted([(round(utils.dilution(utils.binValues(L[key]),utils.binValues(R[key])),3),key) for key in set.intersection(set(L),set(R))], reverse=True) : if not (L[key] and R[key]) : continue if issubclass(type(L[key]),r.TH2) : continue print >> file, key, "\t", dilution h = 1.1*max(L[key].GetMaximum(),R[key].GetMaximum()) L[key].SetLineColor(r.kRed); L[key].SetMaximum(h) ; L[key].SetMinimum(0) R[key].SetMaximum(h) ; R[key].SetMinimum(0) L[key].GetYaxis().SetTitle("pdf") R[key].GetYaxis().SetTitle("pdf") L[key].Draw("hist") R[key].Draw("histsame") l = r.TLegend(0.75,0.85,0.91,0.95) l.SetHeader("Dilution : %.3f"%dilution) l.AddEntry(L[key], self.left['pre'],'l') l.AddEntry(R[key], self.right['pre'], 'l') l.Draw() c.Print(fileName+'.pdf') c.Print(fileName+'.pdf]') r.gStyle.SetOptStat(optstat) print "Wrote file: %s.txt"%fileName print "Wrote file: %s.pdf"%fileName
def reportCache(self) : likes = self.likelihoods() fileName = '/'.join(self.outputFileName.split('/')[:-1]+[self.name]) optstat = r.gStyle.GetOptStat() r.gStyle.SetOptStat(0) c = r.TCanvas() utils.tCanvasPrintPdf(c, fileName, False, '[') with open(fileName+'.txt', "w") as file : print >> file, '\n'.join(str(d) for d in self.populations) print >> file for key in sorted((set(likes[0]) & set(likes[1]) & set(likes[2])), key = lambda k: -1 if self.name==k else k) : if not all(item[key] for item in likes) : continue dilutions = [utils.dilution(bins1,bins2) for bins1,bins2 in itertools.combinations([utils.binValues(item[key]) for item in likes],2)] print >> file, "\t".join([key.ljust(25)]+["%.4f"%d for d in dilutions]) h = 1.1*max(item[key].GetMaximum() for item in likes) l = r.TLegend(0.75,0.85,0.98,0.98) l.SetHeader("Dilutions : %.3f %.3f %.3f"%tuple(dilutions)) for i,(item,color,pop) in enumerate(zip(likes,[r.kBlack,r.kRed,r.kBlue],self.populations)) : item[key].SetLineColor(color) item[key].SetMaximum(h) item[key].SetMinimum(0) item[key].GetYaxis().SetTitle("pdf") item[key].Draw("hist" + ('same' if i else '')) l.AddEntry(item[key], pop['pre'],'l') l.Draw() utils.tCanvasPrintPdf(c, fileName, False) c.Clear() c.Divide(3,2) covs = [self.fromCache([item['pre']], ["_cov_%s_%s"%pair for pair in itertools.combinations(self.dists.keys(),2)], tag = item['tag'])[item['pre']] for item in self.populations] for key in (set(covs[0]) & set(covs[1]) & set(covs[2])) : if not all(item[key] for item in covs) : continue hists = [item[key] for item in covs] deps = [utils.dependence(h,limit=1,inSigma=False) for h in hists] for i,(h,d,pop) in enumerate(zip(hists,deps,self.populations)) : d.SetTitle(pop['pre']) c.cd(i+1); h.Draw('colz') c.cd(i+4); d.Draw('colz') utils.tCanvasPrintPdf(c, fileName, False) c.Clear() for key in sorted((set(likes[0]) & set(likes[1]) & set(likes[2])), key = lambda k: -1 if self.name==k else k) : if not all(item[key] for item in likes) : continue for i,j in itertools.combinations(range(3),2) : k = next(k for k in range(3) if k not in [i,j]) templates = [ utils.binValues(likes[ii][key]) for ii in [i,j] ] observed = utils.binValues(likes[k][key]) try: cs = utils.fractions.componentSolver(observed,templates) except: cs = None if not cs : continue notK = likes[k][key].Clone('bf_not_'+likes[k][key].GetName()) notK.Reset() notK.Add(likes[i][key],likes[j][key],cs.fractions[0],cs.fractions[1]) dil = utils.dilution(utils.binValues(likes[k][key]),utils.binValues(notK)) l = r.TLegend(0.75,0.85,0.98,0.98) l.SetHeader("Dilution : %.3f"%dil) l.AddEntry(likes[k][key], self.populations[k]['pre'], 'l') l.AddEntry(notK, 'not '+self.populations[k]['pre'], 'l') notK.SetLineStyle(2) likes[k][key].Draw('hist') notK.Draw('hist same') l.Draw() utils.tCanvasPrintPdf(c, fileName, False) utils.tCanvasPrintPdf(c, fileName, True, ']') r.gStyle.SetOptStat(optstat)