In [1]:
import ROOT
ROOT.RooMsgService.instance().setGlobalKillBelow(5)
%jsroot on

from matplotlib import pyplot
%matplotlib inline
Welcome to JupyROOT 6.07/07

Reading Workspaces and Recreating Models

First we read in the signal region model from the workspace building notebook.

In [2]:
infile = ROOT.TFile.Open("output/mH_BinModel.root")
w = infile.Get("w")
mc = w.obj("ModelConfig")
data = w.data("data")
mc.LoadSnapshot()
x = w.var("x")

95% Upper Limit Using Counting Model

In [3]:
pl = ROOT.RooStats.ProfileLikelihoodCalculator(data,mc)
pl.SetConfidenceLevel(0.95)
interval = pl.GetInterval()
firstPOI = mc.GetParametersOfInterest().first()
lowerLimit = interval.LowerLimit(firstPOI)
upperLimit = interval.UpperLimit(firstPOI)
print "95% interval on {0} is [{1},{2}]".format(firstPOI.GetName(),lowerLimit,upperLimit)
95% interval on s is [0.0,249.432951723]
In [4]:
nuisPar = mc.GetNuisanceParameters()
nuis_iter = nuisPar.createIterator()
var = nuis_iter.Next()
while var:
    var.setRange(var.getVal()-10*var.getError(), var.getVal()+10*var.getError())
    var = nuis_iter.Next()

bayesianCalc = ROOT.RooStats.BayesianCalculator(data,mc)
bayesianCalc.SetConfidenceLevel(0.95)
bayesianCalc.SetLeftSideTailFraction(0.) # get the upperlimit
bayesianCalc.SetNumIters(1000)
bayesianCalc.SetIntegrationType("") 
bayesianCalc.SetScanOfPosterior(500)
    
interval = bayesianCalc.GetInterval()
firstPOI = mc.GetParametersOfInterest().first()
lowerLimit = interval.LowerLimit()
upperLimit = interval.UpperLimit()
print "95% interval on {0} is [{1},{2}]".format(firstPOI.GetName(),lowerLimit,upperLimit)
95% interval on s is [0.0,231.04605467]
In [5]:
c = ROOT.TCanvas()
plot = bayesianCalc.GetPosteriorPlot()
ROOT.gPad.SetLogy(False)
plot.Draw()
c.Draw()