def drawDsPlot(ds,catNum = 0): from ROOT import RooAbsData,TCanvas etaHist = RooAbsData.createHistogram(ds,'eta',100); theCanvas = TCanvas('dsCanvas','Eta histogram (category' + str(catNum) + ')' ) etaHist.Draw("hist PFC"); theCanvas.SaveAs("etaCat"+str(catNum)+"Hist"+TIME_NOW+".pdf"); #s = raw_input("Press Enter to continue..."); theCanvas.Close();
def saveEta(g, numBins = 100): from ROOT import TFile, RooAbsData import os if not os.path.isdir('etaHist'): os.makedirs('etaHist'); os.chdir('etaHist'); etaHist = RooAbsData.createHistogram(g,'eta',100); f = TFile('etaHist003_%04d.root' % SEED, 'recreate') etaHist.Write('etaHist') f.Close() del f
def _convert_rooabsdata_to_th1(x: RooRealVar, roofit_obj: RooAbsData) -> TH1: ''' Convert a RooDataHist into a TH1. Parameters ---------- x : RooRealVar ROOT RooRealVar observable roofit_obj : RooAbsData RooFit dataset Returns ------- TH1 ROOT histogram ''' assert (isinstance(x, RooRealVar) and isinstance(roofit_obj, RooAbsData)) return roofit_obj.createHistogram(x.GetName(), x.getBinning().numBins())
interf[-1].SetLineColor(kBlue+2) interf[-1].SetLineStyle(kDashed) interf[-1].Draw('same') qqHPdf = fitter_mWW.ws.pdf('qqH') qqHHisto = qqHPdf.createHistogram("HWW%snujj_qqH" % mode, fitter_mWW.ws.var(pars_mWW.var[0])) qqHHisto.Scale(fitter_mWW.ws.var('n_qqH').getVal()/qqHHisto.Integral()) qqHHisto.SetName("HWW%snujj_qqH" % mode) qqHHisto.SetLineColor(kRed+2) qqHHisto.Draw('same') dataHisto = RooAbsData.createHistogram(fitter_mWW.ws.data('data_obs'), 'HWW%snujj_data_obs' % mode, fitter_mWW.ws.var(pars_mWW.var[0])) dataHisto.SetMarkerStyle(20) dataHisto.SetName('HWW%snujj_data_obs' % mode) dataHisto.Draw('same') dataHisto.Print() c_bkg.Update() fitter_mWW.ws.saveSnapshot('nullFitSnapshot', fitter_mWW.ws.allVars()) fitter_mWW.ws.loadSnapshot('nullFitSnapshot') if opts.obsLimit: limit = limits.plcLimit(fitter_mWW.ws.var(pars_mWW.var[0]), fitter_mWW.ws.var('r_signal'), full_pdf, fitter_mWW.ws,
def createCategoryHistogram(ds,x,numCat,categoryList = None): from ROOT import RooAbsData, RooDataSet, RooPrintable, RooThresholdCategory, THStack, TF1 from ROOT.Math import GaussIntegrator import ROOT if categoryList==None: categoryList = [] for i in range(numCat): categoryList += ["Cat"+str(i+1)] etaHist = RooAbsData.createHistogram(ds,'eta',100); histSum = etaHist.Integral(); #print "HISTSUM",histSum, etaHist.Integral(0,50)+etaHist.Integral(51,100),etaHist.Integral(0,50),etaHist.Integral(51,100),"\n"; limList = [-1]; for i in range(1,numCat): start = limList[i-1]+1; targetVal = histSum/numCat; left = start; right = etaHist.GetNbinsX(); #print "\n\n\n",etaHist.Integral(start,start+1),"\n\n\n\n"; while abs(left-right)>1: if etaHist.Integral(start,int((left+right)/2))>targetVal: right = (left + right) / 2; else: left = (left + right) / 2; #print start, left, right, etaHist.Integral(start,int((left+right)/2)),targetVal,",", if abs(etaHist.Integral(start,left)-targetVal) > abs(etaHist.Integral(start,right)-targetVal): limList += [right]; else: limList += [left]; limList[0] = 0; print limList xRegions = RooThresholdCategory("tageffRegion", "region of tageff", x, categoryList[numCat-1]); for i in range(0,numCat-1): xRegions.addThreshold(etaHist.GetXaxis().GetBinCenter(limList[i+1]),categoryList[i]); xRegions.writeToStream(ROOT.cout,False); xRegions.writeToStream(ROOT.cout,True); ''' #etaSet = RooDataSet('etaSet','etaSet',ds,RooArgSet(ds.get().find['eta'])); #etaSet.Print(); #etaHist.SetAxisRange(0.1,0.2); #etaHist.SetAxisRange(0.1,0.3); ROOT.gStyle.SetPalette(ROOT.kOcean); #create stack to contain the chopped TH1Ds etaHistStack = THStack("etaHistStack", "Stack of TH1Ds"); limList += [etaHist.GetNbinsX()]; histCutterFunc = TF1("histCutterFunc","((x>=[0])?((x<[1])?1:0):0)*x",0.0,1.0); for i in range(len(limList)-1): etaHistClone = etaHist.Clone(); #etaHistClone.SetBins(limList[i+1]-limList[i],etaHist.GetBinContent(limList[i]),etaHist.GetBinContent(limList[i+1])); histCutterFunc.SetParameter(0,etaHist.GetXaxis().GetBinCenter(limList[i])); histCutterFunc.SetParameter(1,etaHist.GetXaxis().GetBinCenter(limList[i+1])); etaHistClone.Multiply(histCutterFunc); etaHistClone.SetFillColor(38+i); #etaHist.DrawCopy("hist PFC"); etaHistStack.Add(etaHistClone); etaHistStack.Draw("hist PFC"); s = raw_input("Press Enter to continue...");''' return xRegions#,x
#uncVZ.setRange("fitRange",mean-2*sigma,50) #result = gaussexp_pdf.fitTo(dataInRange,RooFit.Range("fitRange"),RooFit.PrintLevel(-1),RooFit.Save()) #gaussexp_params.printLatex() gaussexp_pdf.paramOn(frame) #gaussexp_pdf.plotOn(frame,RooFit.Range("fitRange"),RooFit.NormRange("fitRange")) #gaussexp_pdf.plotOn(frame,RooFit.Range("fitRange"),RooFit.NormRange("fitRange"),RooFit.LineColor(result.status()+1)) frame.SetAxisRange(-50,50) frame.SetMinimum(0.5) frame.Draw() c.Print(remainder[0]+".pdf","Title:slice_"+str(i)+"_roofit") #h1d = dataInRange.createHistogram("data_in_range",w.var("uncVZ"),"Binning(100,-50,50)") #h1d = dataInRange.createHistogram("data_in_range",w.var("uncVZ")) h1d = RooAbsData.createHistogram(dataInRange,"data_in_range",w.var("uncVZ"),RooFit.Binning(100,-50,50)) print h1d.GetEntries() #events.Draw("uncVZ>>hnew(100,-50,50)",cuts+"&&uncM>{0}&&uncM<{1}".format(lowedge,highedge),"goff") #h1d = gDirectory.Get("hnew") h1d.Sumw2() h1d.Scale(1/scale_factor) #h1d=totalH.ProjectionY("slice_{}".format(i),i,i+binning-1) #h1d=h1d.Rebin(2,"slice") integrals.append(h1d.Integral()) h1d.SetTitle(name) print name if (h1d.GetEntries()>100): fit=h1d.Fit("gaus","QS") peak=fit.Get().Parameter(0) mean=fit.Get().Parameter(1)
def createCategoryHistogram(ds, x, numCat, categoryList=None): from ROOT import RooAbsData, RooDataSet, RooPrintable, RooThresholdCategory, THStack, TF1 from ROOT.Math import GaussIntegrator import ROOT if categoryList == None: categoryList = [] for i in range(numCat): categoryList += ["Cat" + str(i + 1)] etaHist = RooAbsData.createHistogram(ds, 'eta', 100) histSum = etaHist.Integral() #print "HISTSUM",histSum, etaHist.Integral(0,50)+etaHist.Integral(51,100),etaHist.Integral(0,50),etaHist.Integral(51,100),"\n"; limList = [-1] for i in range(1, numCat): start = limList[i - 1] + 1 targetVal = histSum / numCat left = start right = etaHist.GetNbinsX() #print "\n\n\n",etaHist.Integral(start,start+1),"\n\n\n\n"; while abs(left - right) > 1: if etaHist.Integral(start, int((left + right) / 2)) > targetVal: right = (left + right) / 2 else: left = (left + right) / 2 #print start, left, right, etaHist.Integral(start,int((left+right)/2)),targetVal,",", if abs(etaHist.Integral(start, left) - targetVal) > abs(etaHist.Integral(start, right) - targetVal): limList += [right] else: limList += [left] limList[0] = 0 print limList xRegions = RooThresholdCategory("tageffRegion", "region of tageff", x, categoryList[numCat - 1]) for i in range(0, numCat - 1): xRegions.addThreshold(etaHist.GetXaxis().GetBinCenter(limList[i + 1]), categoryList[i]) xRegions.writeToStream(ROOT.cout, False) xRegions.writeToStream(ROOT.cout, True) #etaSet = RooDataSet('etaSet','etaSet',ds,RooArgSet(ds.get().find['eta'])); #etaSet.Print(); #etaHist.SetAxisRange(0.1,0.2); #etaHist.SetAxisRange(0.1,0.3); from ROOT import TCanvas histCanvas = TCanvas() ROOT.gStyle.SetPalette(ROOT.kOcean) #create stack to contain the chopped TH1Ds #etaHistStack = THStack("etaHistStack", "Distribution of #eta;#eta;number of pseudo-experiments"); limList += [etaHist.GetNbinsX()] histCutterFunc = TF1("histCutterFunc", "((x>=[0])?((x<[1])?1:0):0)", 0.0, 1.0) etaMax = etaHist.GetMaximum() print etaMax cloneList = [] etaHist.GetYaxis().SetRangeUser(0, etaMax * 1.05) etaHist.SetLineColor(ROOT.kWhite) etaHist.Draw("histSame") etaHist.SetTitle( 'Distribution of #eta (%s %s)' % ((originSuffix if originSuffix == 'MC' else 'Data'), taggerType)) etaHist.GetXaxis().SetTitle('#eta') for i in range(len(limList) - 1): cloneList = [etaHist.Clone()] #etaHistClone.SetBins(limList[i+1]-limList[i],etaHist.GetBinContent(limList[i]),etaHist.GetBinContent(limList[i+1])); histCutterFunc.SetParameter( 0, etaHist.GetXaxis().GetBinCenter(limList[i])) histCutterFunc.SetParameter( 1, etaHist.GetXaxis().GetBinCenter(limList[i + 1])) cloneList[-1].Multiply(histCutterFunc) cloneList[-1].SetFillColor(38 + i) cloneList[-1].SetLineColor(ROOT.kBlack) if i == 0: cloneList[-1].GetYaxis().SetRangeUser(0, etaMax * 1.05) cloneList[-1].Draw("histSAME") #etaHistStack.Add(etaHistClone); #etaHistStack.Draw(); histCanvas.Update() histCanvas.SaveAs('catHist-%s-%s.pdf' % (originSuffix, taggerType)) s = raw_input("Press Enter to continue...") sys.exit(0) return xRegions #,x
interf[-1].SetLineColor(kBlue+2) interf[-1].SetLineStyle(kDashed) interf[-1].Draw('same') qqHPdf = fitter_mWW.ws.pdf('qqH') qqHHisto = qqHPdf.createHistogram("HWW%snujj_qqH" % mode, fitter_mWW.ws.var(pars_mWW.var[0])) qqHHisto.Scale(fitter_mWW.ws.var('n_qqH').getVal()/qqHHisto.Integral()) qqHHisto.SetName("HWW%snujj_qqH" % mode) qqHHisto.SetLineColor(kRed+2) qqHHisto.Draw('same') dataHisto = RooAbsData.createHistogram(fitter_mWW.ws.data('data_obs'), 'HWW%snujj_data_obs' % mode, fitter_mWW.ws.var(pars_mWW.var[0])) dataHisto.SetMarkerStyle(20) dataHisto.SetName('HWW%snujj_data_obs' % mode) dataHisto.Draw('same') c_bkg.Update() fitter_mWW.ws.saveSnapshot('nullFitSnapshot', fitter_mWW.ws.allVars()) upperHist = None if opts.doLimit: (expectedLimit, toys) = \ limits.expectedPlcLimit(fitter_mWW.ws.var(pars_mWW.var[0]), fitter_mWW.ws.var('r_signal'), full_pdf, fitter_mWW.ws, ntoys = opts.doLimit,
p0FitError = fitresult.ParError(0); p0End = p0End.getValV()-etaAvg.getValV(); print 'P0FIT = ', p0Fit, '\nDSMEANVAL = ', dsMeanVal.getValV(), '\nP0END = ', p0End, '\n' p0Dev.setVal((p0Fit - p0End) / p0FitError); p0DevSet.add(RooArgSet(p0Dev)) #graphHolder.Add(mistagVsEtaGraph) #currentColor += 1 #break; currentTime = time.time(); theHistCanvas = TCanvas(); p1DevHist = RooAbsData.createHistogram(p1DevSet,"p1Dev",20); p1DevHist.Fit('gaus'); p1DevHist.Draw(); os.chdir(os.environ['B2DXFITTERSROOT']+'/tutorial'); if(not os.path.exists('p1HistPlots')): os.mkdir("p1HistPlots") os.chdir('p1HistPlots'); theHistCanvas.SaveAs("p1Hist_%f.pdf" % currentTime); raw_input("Press Enter to continue"); theHistCanvas.Close(); theHistCanvas = TCanvas(); p0DevHist = RooAbsData.createHistogram(p0DevSet,"p0Dev",20);