{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Welcome to JupyROOT 6.26/10\n" ] } ], "source": [ "from matplotlib import pyplot as plt\n", "import numpy as np\n", "from scipy import stats\n", "import pandas as pd\n", "from IPython.display import HTML, IFrame, Image, SVG, Latex\n", "import re\n", "import ROOT\n", "from ROOT import RooFit, RooStats\n", "%matplotlib inline\n", "#%matplotlib nbagg\n", "#%matplotlib notebook\n", "from ipywidgets import interact, interactive, fixed" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "ROOT.RooMsgService.instance().getStream(1).removeTopic(ROOT.RooFit.NumIntegration)\n", "ROOT.RooMsgService.instance().getStream(1).removeTopic(ROOT.RooFit.Fitting)\n", "ROOT.RooMsgService.instance().getStream(1).removeTopic(ROOT.RooFit.Minimization)\n", "ROOT.RooMsgService.instance().getStream(1).removeTopic(ROOT.RooFit.InputArguments)\n", "ROOT.RooMsgService.instance().getStream(1).removeTopic(ROOT.RooFit.Eval)\n", "ROOT.RooMsgService.instance().getStream(1).removeTopic(ROOT.RooFit.DataHandling)\n", "ROOT.RooMsgService.instance().setGlobalKillBelow(ROOT.RooFit.ERROR)\n", "ROOT.RooMsgService.instance().setSilentMode(True)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "HTML('')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "#from notebook.services.config import ConfigManager\n", "#cm = ConfigManager()\n", "#cm.update('livereveal', {\n", "# 'theme': 'sans',\n", "# 'transition': 'zoom',\n", "#})" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "def iter_collection(rooAbsCollection):\n", " iterator = rooAbsCollection.createIterator()\n", " object = iterator.Next()\n", " while object:\n", " yield object\n", " object = iterator.Next()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Lecture 3\n", "\n", "

ruggero.turra@mi.infn.it

\n", "
\n", "\n", "## Content of the lecture\n", "\n", " * Systematics\n", " * Shape analysis\n", " * Test statistic for discovery and exclusions" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Restart from the on/off problem.\n", "\n", "We observe the number of events in the signal region $n_{SR}$ and in the control region $n_{CR}$. $\\alpha$ is the ratio of the expected background in the CR with respect to the SR. We can write the likelihood as:\n", "\n", "$$L(s, b|n_{SR}, n_{CR}) = \\text{Pois}(n_{SR}|s + b) \\text{Pois}(n_{CR}|\\alpha b)$$\n", "\n", "The test statistics is based on the profiled likelihood ratio:\n", "\n", "$$-2\\log\\lambda = -2\\log\\frac{\\sup_{b \\in [0, \\infty], s\\in\\{0\\}}{L(s, b)}}{\\sup_{b\\in [0, \\infty], s\\in [0, \\infty]}{L(s, b)}} = -2\\log\\frac{L(0, \\hat{\\hat{b}}(s=0))}{L(\\hat{s}, \\hat{b})}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Systematics\n", "\n", "How we can incorporate systematics inside our model? Suppose we know the parameter $\\alpha$ with a relative uncertainty $\\sigma_\\alpha$. We can imagine that there is another measurement (auxiliary measurement), that measured $\\alpha$ (the parameter of the model of the auxiliary measurement) and observed $a$. We can write the likelihood of the auxiliary measurement as $L(a|\\alpha) = N(a|\\alpha, \\delta_\\alpha)$, if assume that $a$ is normally distributed aroud the true value $\\alpha$ and $\\delta\\alpha$ is the absolute error on $\\alpha$ ($\\delta\\alpha=\\sigma_\\alpha a$)\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "We can join the auxiliary measurement with our on/off model:\n", "\n", "$$L(s, b, a|N_{SR}, N_{CR}, \\alpha) = L(s, b|N_{SR}, N_{CR}) L(a|\\alpha)$$\n", "\n", "or more explicitely:\n", "\n", "$$\\text{Pois}(N_{SR}|s + b) \\text{Pois}(N_{CR}|\\alpha b) \\times N(a|\\alpha, \\delta_\\alpha)$$\n", "\n", "Usually this is written as:\n", "\n", "$$\\text{Pois}(N_{SR}|s + b) \\text{Pois}(N_{CR}|a (1 + \\sigma_\\alpha\\theta_\\alpha) b) \\times N(0|\\theta_\\alpha, 1)$$\n", "\n", "The first term is called the \"physical\" pdf, while the second is called the \"constraints\".\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "#ws = ws_onoff_withsys = ws_onoff.Clone(\"ws_onoff_withsys\")\n", "f = ROOT.TFile.Open(\"onoff.root\")\n", "ws_onoff = f.Get(\"ws_onoff\")\n", "\n", "# create the term kalpha = (1 + sigma * theta) with a relative error of 20%\n", "ws_onoff.factory('expr:kalpha(\"1 + @0 * @1\", {sigma_alpha[0.2], theta_alpha[0, -5, 5]})')\n", "ws_onoff.factory('prod:alpha_x_kappa(alpha, kalpha)')\n", "# create new pdf model replacing alpha -> alpha_x_kalpha\n", "ws_onoff.factory('EDIT:model_with_sys(model, alpha=alpha_x_kappa)')\n", " \n", "# create new workspace\n", "ws_onoff_sys = ROOT.RooWorkspace('ws_onoff_sys')\n", "getattr(ws_onoff_sys, 'import')(ws_onoff.pdf('model_with_sys'))\n", "# create the constraint\n", "ws_onoff_sys.factory(\"Gaussian:constraint_alpha(global_alpha[0, -5, 5], theta_alpha, 1)\")\n", "ws_onoff_sys.var(\"global_alpha\").setConstant(True)\n", "# final pdf\n", "model = ws_onoff_sys.factory(\"PROD:model_constrained(model_with_sys, constraint_alpha)\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RooWorkspace(ws_onoff_sys) ws_onoff_sys contents\n", "\n", "variables\n", "---------\n", "(alpha,b,global_alpha,n_cr,n_sr,s,sigma_alpha,theta_alpha)\n", "\n", "p.d.f.s\n", "-------\n", "RooPoisson::N_CR_model_with_sys[ x=n_cr mean=alpha_x_b_model_with_sys ] = 0\n", "RooPoisson::N_SR[ x=n_sr mean=s_plus_b ] = 0\n", "RooGaussian::constraint_alpha[ x=global_alpha mean=theta_alpha sigma=1 ] = 1\n", "RooProdPdf::model_constrained[ model_with_sys * constraint_alpha ] = 0\n", "RooProdPdf::model_with_sys[ N_SR * N_CR_model_with_sys ] = 0\n", "\n", "functions\n", "--------\n", "RooProduct::alpha_x_b_model_with_sys[ alpha_x_kappa * b ] = 500\n", "RooProduct::alpha_x_kappa[ alpha * kalpha ] = 10\n", "RooFormulaVar::kalpha[ actualVars=(sigma_alpha,theta_alpha) formula=\"1+@0*@1\" ] = 1\n", "RooAddition::s_plus_b[ s + b ] = 50\n", "\n" ] } ], "source": [ "ws_onoff_sys.Print()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "model_constrained\n", "\n", "\n", "\n", "model_constrained\n", "\n", "RooProdPdf\n", "model_constrained\n", "0.000000\n", "\n", "\n", "\n", "model_with_sys\n", "\n", "RooProdPdf\n", "model_with_sys\n", "0.000000\n", "\n", "\n", "\n", "model_constrained->model_with_sys\n", "\n", "\n", "\n", "\n", "\n", "constraint_alpha\n", "\n", "RooGaussian\n", "constraint_alpha\n", "1.000000\n", "\n", "\n", "\n", "model_constrained->constraint_alpha\n", "\n", "\n", "\n", "\n", "\n", "N_CR_model_with_sys\n", "\n", "RooPoisson\n", "N_CR_model_with_sys\n", "0.000000\n", "\n", "\n", "\n", "model_with_sys->N_CR_model_with_sys\n", "\n", "\n", "\n", "\n", "\n", "N_SR\n", "\n", "RooPoisson\n", "N_SR\n", "0.000000\n", "\n", "\n", "\n", "model_with_sys->N_SR\n", "\n", "\n", "\n", "\n", "\n", "alpha_x_b_model_with_sys\n", "\n", "RooProduct\n", "alpha_x_b_model_with_sys\n", "500.000000\n", "\n", "\n", "\n", "N_CR_model_with_sys->alpha_x_b_model_with_sys\n", "\n", "\n", "\n", "\n", "\n", "n_cr\n", "\n", "RooRealVar\n", "n_cr\n", "2500.000000\n", "\n", "\n", "\n", "N_CR_model_with_sys->n_cr\n", "\n", "\n", "\n", "\n", "\n", "b\n", "\n", "RooRealVar\n", "b\n", "50.000000\n", "\n", "\n", "\n", "alpha_x_b_model_with_sys->b\n", "\n", "\n", "\n", "\n", "\n", "alpha_x_kappa\n", "\n", "RooProduct\n", "alpha_x_kappa\n", "10.000000\n", "\n", "\n", "\n", "alpha_x_b_model_with_sys->alpha_x_kappa\n", "\n", "\n", "\n", "\n", "\n", "alpha\n", "\n", "RooRealVar\n", "alpha\n", "10.000000\n", "\n", "\n", "\n", "alpha_x_kappa->alpha\n", "\n", "\n", "\n", "\n", "\n", "kalpha\n", "\n", "RooFormulaVar\n", "kalpha\n", "1.000000\n", "\n", "\n", "\n", "alpha_x_kappa->kalpha\n", "\n", "\n", "\n", "\n", "\n", "sigma_alpha\n", "\n", "RooRealVar\n", "sigma_alpha\n", "0.200000\n", "\n", "\n", "\n", "kalpha->sigma_alpha\n", "\n", "\n", "\n", "\n", "\n", "theta_alpha\n", "\n", "RooRealVar\n", "theta_alpha\n", "0.000000\n", "\n", "\n", "\n", "kalpha->theta_alpha\n", "\n", "\n", "\n", "\n", "\n", "n_sr\n", "\n", "RooRealVar\n", "n_sr\n", "2500.000000\n", "\n", "\n", "\n", "N_SR->n_sr\n", "\n", "\n", "\n", "\n", "\n", "s_plus_b\n", "\n", "RooAddition\n", "s_plus_b\n", "50.000000\n", "\n", "\n", "\n", "N_SR->s_plus_b\n", "\n", "\n", "\n", "\n", "\n", "s_plus_b->b\n", "\n", "\n", "\n", "\n", "\n", "s\n", "\n", "RooRealVar\n", "s\n", "0.000000\n", "\n", "\n", "\n", "s_plus_b->s\n", "\n", "\n", "\n", "\n", "\n", "constraint_alpha->theta_alpha\n", "\n", "\n", "\n", "\n", "\n", "1\n", "\n", "RooConstVar\n", "1\n", "1.000000\n", "\n", "\n", "\n", "constraint_alpha->1\n", "\n", "\n", "\n", "\n", "\n", "global_alpha\n", "\n", "RooRealVar\n", "global_alpha\n", "0.000000\n", "\n", "\n", "\n", "constraint_alpha->global_alpha\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.graphVizTree(\"on_off_with_sys_graph.dot\")\n", "!dot -Tsvg on_off_with_sys_graph.dot > on_off_with_sys_graph.svg; rm on_off_with_sys_graph.dot\n", "s = SVG(\"on_off_with_sys_graph.svg\")\n", "s.data = re.sub(r'width=\"[0-9]+pt\"', r'width=\"90%\"', s.data)\n", "s.data = re.sub(r'height=\"[0-9]+pt\"', r'height=\"\"', s.data); s" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sbModel = ROOT.RooStats.ModelConfig('sbModel_sys', ws_onoff_sys)\n", "sbModel.SetPdf('model_constrained')\n", "sbModel.SetParametersOfInterest('s')\n", "sbModel.SetObservables('n_sr,n_cr')\n", "sbModel.SetNuisanceParameters('theta_alpha')\n", "ws_onoff_sys.var('s').setVal(30)\n", "sbModel.SetSnapshot(ROOT.RooArgSet(ws_onoff_sys.var('s')))\n", "getattr(ws_onoff_sys, 'import')(sbModel)\n", "\n", "bModel = sbModel.Clone(\"bModel_sys\")\n", "ws_onoff_sys.var('s').setVal(0)\n", "bModel.SetSnapshot(bModel.GetParametersOfInterest())\n", "getattr(ws_onoff_sys, 'import')(bModel)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "observed N_SR = 79, N_CR = 528\n", "best fit\n", "SR 26.2 52.8\n", "CR 528.0\n" ] }, { "data": { "text/plain": [ "False" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "RooRealVar::s = 30 L(0 - 100) \n" ] } ], "source": [ "sbModel.LoadSnapshot()\n", "ws_onoff_sys.var('s').Print()\n", "data = model.generate(bModel.GetObservables(), 1)\n", "data.SetName('obsData')\n", "print(\"observed N_SR = %.f, N_CR = %.f\" % tuple([x.getVal() for x in iter_collection(data.get(0))]))\n", "model.fitTo(data)\n", "print(\"best fit\")\n", "print(\"SR {:>8.1f} {:>8.1f}\".format(ws_onoff_sys.var('s').getVal(), ws_onoff_sys.var('b').getVal()))\n", "print(\"CR {:>8.1f}\".format(ws_onoff_sys.function('alpha_x_b_model_with_sys').getVal()))\n", "getattr(ws_onoff_sys, 'import')(data)\n", "ws_onoff_sys.writeToFile('onoff_sys.root')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# create profiled log-likelihood as a function of s\n", "ws_onoff_sys.var('theta_alpha').setConstant(False)\n", "prof = model.createNLL(data).createProfile(ROOT.RooArgSet(ws_onoff_sys.var('s')))\n", "# multiply by 2\n", "minus2LL = ROOT.RooFormulaVar(\"minus2LL\", \"2 * @0\", ROOT.RooArgList(prof))\n", "frame = ws_onoff.var('s').frame(0, 60)\n", "minus2LL.plotOn(frame)\n", "\n", "ws_onoff_sys.var('theta_alpha').setConstant(True)\n", "minus2LL.plotOn(frame, ROOT.RooFit.LineColor(ROOT.kRed))\n", "frame.SetYTitle(\"-2 log#Lambda(s)\")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "canvas = ROOT.TCanvas()\n", "frame.Draw()\n", "canvas.Draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Excercize\n", "Explain why the profile likelihood curve is larger when adding systematics" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Compute the significance with systematics" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pvalue = 0.06329824778313191 significance = 1.5276619353657743\n", "AsymptoticCalculator::EvaluateNLL ........ using Minuit / Migrad with strategy 1 and tolerance 1\n", " **********\n", " ** 1 **SET PRINT 0\n", " **********\n", " **********\n", " ** 2 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 b 5.27871e+01 1.07195e+01 0.00000e+00 1.00000e+02\n", " 2 s 2.62162e+01 1.00000e+01 0.00000e+00 1.00000e+02\n", " 3 theta_alpha 1.25567e-03 9.93509e-01 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 3 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 4 **SET PRINT 0\n", " **********\n", " **********\n", " ** 5 **SET STR 1\n", " **********\n", " **********\n", " ** 6 **MIGRAD 1500 1\n", " **********\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n", " FCN=7.15836 FROM MIGRAD STATUS=CONVERGED 36 CALLS 37 TOTAL\n", " EDM=1.51146e-06 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 b 5.27868e+01 1.07122e+01 8.51390e-05 -4.60061e-03\n", " 2 s 2.62142e+01 1.37484e+01 3.86198e-04 5.20892e-04\n", " 3 theta_alpha 1.20206e-03 9.92839e-01 8.12820e-05 5.21834e-04\n", " ERR DEF= 0.5\n", "AsymptoticCalculator::EvaluateNLL - value = 7.15836\tfit time : Real time 0:00:00, CP time 0.000\n", "MakeAsimov: Setting poi s to a constant value = 30\n", "MakeAsimov: doing a conditional fit for finding best nuisance values \n", " **********\n", " ** 1 **SET PRINT 0\n", " **********\n", " **********\n", " ** 2 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 b 5.27868e+01 1.07122e+01 0.00000e+00 1.00000e+02\n", " 2 theta_alpha 1.20206e-03 9.92839e-01 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 3 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 4 **SET PRINT 0\n", " **********\n", " **********\n", " ** 5 **SET STR 1\n", " **********\n", " **********\n", " ** 6 **MIGRAD 1000 1\n", " **********\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n", " FCN=7.19678 FROM MIGRAD STATUS=CONVERGED 36 CALLS 37 TOTAL\n", " EDM=1.16159e-05 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 b 5.06842e+01 6.58908e+00 8.20697e-05 3.67289e-02\n", " 2 theta_alpha 1.98655e-01 6.78239e-01 8.45724e-05 1.15268e-02\n", " ERR DEF= 0.5\n", "fit time Real time 0:00:00, CP time 0.000\n", "Generated Asimov data for observables RooArgSet:: = (n_sr,n_cr)\n", "AsymptoticCalculator::EvaluateNLL ........ using Minuit / Migrad with strategy 1 and tolerance 1\n", " **********\n", " ** 7 **SET PRINT 0\n", " **********\n", " **********\n", " ** 8 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 b 5.06842e+01 6.58908e+00 0.00000e+00 1.00000e+02\n", " 2 theta_alpha 1.98655e-01 6.78239e-01 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 9 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 10 **SET PRINT 0\n", " **********\n", " **********\n", " ** 11 **SET STR 1\n", " **********\n", " **********\n", " ** 12 **MIGRAD 1000 1\n", " **********\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n", " FCN=7.17845 FROM MIGRAD STATUS=CONVERGED 31 CALLS 32 TOTAL\n", " EDM=2.81441e-05 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 b 5.15361e+01 6.72618e+00 8.20587e-05 -1.21293e-01\n", " 2 theta_alpha 1.06282e-01 6.70159e-01 8.44355e-05 -1.18292e-01\n", " ERR DEF= 0.5\n", "AsymptoticCalculator::EvaluateNLL - value = 7.17845 for poi fixed at = 30\tfit time : Real time 0:00:00, CP time 0.000\n", "\n", "AsymptoticCalculator::EvaluateNLL ........ using Minuit / Migrad with strategy 1 and tolerance 1\n", " **********\n", " ** 13 **SET PRINT 0\n", " **********\n", " **********\n", " ** 14 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 b 5.27868e+01 1.07122e+01 0.00000e+00 1.00000e+02\n", " 2 theta_alpha 1.20206e-03 9.92839e-01 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 15 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 16 **SET PRINT 0\n", " **********\n", " **********\n", " ** 17 **SET STR 1\n", " **********\n", " **********\n", " ** 18 **MIGRAD 1000 1\n", " **********\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n", " FCN=8.32524 FROM MIGRAD STATUS=CONVERGED 54 CALLS 55 TOTAL\n", " EDM=2.56179e-05 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 b 7.39272e+01 8.12634e+00 1.39671e-04 -7.11453e-03\n", " 2 theta_alpha -1.39469e+00 4.21679e-01 6.62130e-05 4.32817e-02\n", " ERR DEF= 0.5\n", "AsymptoticCalculator::EvaluateNLL - value = 8.32524 for poi fixed at = 0\tfit time : Real time 0:00:00, CP time 0.000\n", "AsymptoticCalculator::EvaluateNLL ........ using Minuit / Migrad with strategy 1 and tolerance 1\n", " **********\n", " ** 19 **SET PRINT 0\n", " **********\n", " **********\n", " ** 20 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 b 7.39272e+01 8.12634e+00 0.00000e+00 1.00000e+02\n", " 2 theta_alpha -1.39469e+00 4.21679e-01 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 21 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 22 **SET PRINT 0\n", " **********\n", " **********\n", " ** 23 **SET STR 1\n", " **********\n", " **********\n", " ** 24 **MIGRAD 1000 1\n", " **********\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n", " FCN=8.4562 FROM MIGRAD STATUS=CONVERGED 37 CALLS 38 TOTAL\n", " EDM=9.87506e-07 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 b 7.54833e+01 8.24830e+00 1.46763e-04 -1.37377e-02\n", " 2 theta_alpha -1.47501e+00 4.10882e-01 6.57177e-05 -3.06639e-02\n", " ERR DEF= 0.5\n", "AsymptoticCalculator::EvaluateNLL - value = 8.4562 for poi fixed at = 0\tfit time : Real time 0:00:00, CP time 0.000\n" ] } ], "source": [ "f = ROOT.TFile.Open(\"onoff_sys.root\")\n", "ws_onoff_sys = f.Get(\"ws_onoff_sys\")\n", "ws_onoff_sys.var('theta_alpha').setConstant(False)\n", "data = ws_onoff_sys.data('obsData')\n", "sbModel = ws_onoff_sys.obj('sbModel_sys')\n", "bModel = ws_onoff_sys.obj('bModel_sys')\n", "hypoCalc = RooStats.AsymptoticCalculator(data, sbModel, bModel)\n", "hypoCalc.SetOneSidedDiscovery(True)\n", "htr = hypoCalc.GetHypoTest()\n", "print(\"pvalue =\", htr.NullPValue(), \" significance =\", htr.Significance())" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### (Big) exercize\n", "\n", "Suppose you are looking for a signal in a SR. There are two main background on the signal region, due to two different physical processes, B1 and B2. You also have two CRs. The simulation predicts the following countings for an equivalent luminosity of 1/fb.\n", "\n", "\n", "| `` | SR | CR1 | CR2 |\n", "|-----|-----|-----|-----|\n", "| B1 | 10 | 100 | 20 |\n", "| B2 | 20 | 30 | 500 |\n", "\n", "You don't trust the cross section of the background, so you assume a degree of freedom for every process. For example:\n", "\n", "$$n_{B1}^{SR,exp} = L\\times k_{B1}\\times n_{B1}^{SR,mc}$$\n", "$$n_{B1}^{CR1,exp} = L\\times k_{B1}\\times n_{B1}^{CR1,mc}$$\n", "\n", "where $L$ is the observed luminosity. Note that we are using the correlation between SR/CR1/CR2 of the simulation. Assume L=10/fb +/- 5%. \n", "\n", "Suppose you analysis is blinded (you haven't look to the signal region) and you observe: CR1=1509, CR2=5017 events.\n", "\n", "How many events do you have to observe in the signal region to claim a discovery at 3 sigma (what is the acceptance region)? What is the impact of the systematics? Bonus: take into account the MC statistical uncertainty of 3% for every prediction.\n", "\n", "For this kind of analyses usually [HistFactory](https://twiki.cern.ch/twiki/bin/view/RooStats/HistFactory) is used to produce the workspace." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Costraints can be gaussian:\n", " \n", " $$m\\to m(1 + \\sigma\\theta) \\qquad L \\to L \\times G(0, \\theta, 1)$$\n", " \n", "or log-normal, for example for quantity that cannot be negative (e.g. efficiencies):\n", "\n", " $$\\varepsilon\\to \\varepsilon\\exp(\\sigma\\theta)\\qquad L \\to L \\times G(0, \\theta, 1)$$\n", " \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Exercize (big)\n", "\n", "Find a better constrain for log-normal variable. Suppose you have a random variable $Y$ that is log-normal distributed. Do a change of variable and write it as $Y = a\\exp(b \\Theta)$. How is distributed $\\Theta$? How can I constrain $\\Theta$? Suppose I know the median of $Y$ ($=Y_0$) and the standard deviation $\\sigma\\times Y_0$. What are the values of $a$ and $b$ if I want to conserve the median and the standard deviation? What is the value of $y$ if $\\theta=1$? Is it $Y_0 + \\sigma Y_0$? If not, give an approximation in terms of $O(\\sigma)$ for small $\\sigma$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Shape analysis\n", "\n", "In more complicate analysis you don't look just to the number of events in specific region but you look to the distribution of the events as a function of a continuos variable (e.g. invariant mass).\n", "\n", "$$L(\\alpha|\\{m_i\\}_{i=1}^n) = \\text{Pois}[n|N_s(\\alpha) + N_b(\\alpha)] \\prod_{i=1}^n\\left(\\frac{N_s(\\alpha) f_s[m_i|\\alpha] + N_b(\\alpha) f_b[m_i|\\alpha]}{N_s(\\alpha)+N_b(\\alpha)}\\right)\\times\\prod_j L(a_j|\\alpha_j)$$\n", "\n", "Where $\\alpha$ is a set of nuisance parameters, $\\{m_i\\}_{i=1}^n$ are the data, $N_s$ and $N_b$ the predicted number of signal and background events, $f_s$ and $f_b$ the pdf describing the continuos observable.\n", "\n", "The last term is the product of all the constraints of the nuisance parameters (not all the nuisance parameters need to be constrained by auxiliary measurements). The other term is the extended likelihood of the s+b model.\n", "\n", "If the signal is localised the background shape can be fully data-driven. This means that the nuisance parameters for the background shape are completely free." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Example model\n", "\n", "Suppose we observe the invariant mass distribution and we are searching for a narrow resonance in the spectrum. Our signal + background model is (after many careful studies) an exponential plus a gaussian. We also know the expected number of events for the signal under a particular theory. We want to be able to parametrize also similar model, where the number of signal events is multiplied by the \"signal strength\", $\\mu$. So we will write the number of signal events as $\\mu \\times n_{exp}$ where $n_{exp}$ are the one from the nominal theory. In this way we can also write the background-only model as the special case for $\\mu=0$. The number of background events are not well know by the theory, so we can estimate them from data, which means that $n_b$ is a nuisance parameters in the model.\n", "\n", "Consider systematic on the luminosity, scale and resolution of the signal (location and width)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "ws = ROOT.RooWorkspace(\"ws_shape\")\n", "mH = ws.factory(\"mH[125, 90, 150]\") # true mass of the resonance\n", "mass = ws.factory(\"mass[80, 160]\") # observed invariant mass\n", "ws.factory('expr:kpeak(\"1 + @0 * @1\", {sigma_mH[0.01], theta_mH[0, -5, 5]})')\n", "peak = ws.factory('expr:peak(\"@0 * @1\", {mH, kpeak})') # peak position for signal\n", "ws.factory('expr:kwidth(\"1 + @0 * @1\", {sigma_width[0.05], theta_width[0, -5, 5]})')\n", "width = ws.factory('expr:width(\"@0 * @1\", {nominal_width[5], kwidth})')\n", "signal = ws.factory(\"RooGaussian:signal(mass, peak, width)\")\n", "ws.factory(\"RooExponential:background(mass, tau[-0.03, -0.5, -0.001])\")\n", "ws.factory(\"nbkg[400, 0, 1000]\")\n", "ws.factory('expr:klumi(\"(1 + exp(@0 * @1))\", {sigma_lumi[0.02], theta_lumi[0, -5, 5]})')\n", "ws.factory('expr:efficiency(\"@0 * (1 + exp(@1 * @2))\", {nominal_efficiency[0.6], sigma_efficiency[0.05], theta_efficiency[0, -5, 5]})')\n", "ws.factory('expr:nsignal_theory(\"7 + @0 * 0.2\", {mH})')\n", "ws.factory('prod:nsignal(nsignal_theory, mu[1, -2, 5], efficiency, klumi)')\n", "ws.factory(\"SUM:phys_pdf(nsignal * signal, nbkg * background)\")\n", "ws.factory(\"RooGaussian:constrain_peak(global_peak[0, -5, 5], theta_mH, 1)\")\n", "ws.factory(\"RooGaussian:constrain_width(global_width[0, -5, 5], theta_width, 1)\")\n", "ws.factory(\"RooGaussian:constrain_lumi(global_lumi[0, -5, 5], theta_lumi, 1)\")\n", "ws.factory(\"RooGaussian:constrain_eff(global_efficiency[0, -5, 5], theta_efficiency, 1)\")\n", "ws.factory(\"PROD:constraints(constrain_peak, constrain_lumi, constrain_width, constrain_eff)\")\n", "model = ws.factory(\"PROD:model(phys_pdf, constraints)\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "model\n", "\n", "\n", "\n", "model\n", "\n", "RooProdPdf\n", "model\n", "0.120619\n", "\n", "\n", "\n", "phys_pdf\n", "\n", "RooAddPdf\n", "phys_pdf\n", "0.120619\n", "\n", "\n", "\n", "model->phys_pdf\n", "\n", "\n", "\n", "\n", "\n", "constraints\n", "\n", "RooProdPdf\n", "constraints\n", "1.000000\n", "\n", "\n", "\n", "model->constraints\n", "\n", "\n", "\n", "\n", "\n", "signal\n", "\n", "RooGaussian\n", "signal\n", "0.606531\n", "\n", "\n", "\n", "phys_pdf->signal\n", "\n", "\n", "\n", "\n", "\n", "nsignal\n", "\n", "RooProduct\n", "nsignal\n", "76.800000\n", "\n", "\n", "\n", "phys_pdf->nsignal\n", "\n", "\n", "\n", "\n", "\n", "background\n", "\n", "RooExponential\n", "background\n", "0.027324\n", "\n", "\n", "\n", "phys_pdf->background\n", "\n", "\n", "\n", "\n", "\n", "nbkg\n", "\n", "RooRealVar\n", "nbkg\n", "400.000000\n", "\n", "\n", "\n", "phys_pdf->nbkg\n", "\n", "\n", "\n", "\n", "\n", "mass\n", "\n", "RooRealVar\n", "mass\n", "120.000000\n", "\n", "\n", "\n", "signal->mass\n", "\n", "\n", "\n", "\n", "\n", "peak\n", "\n", "RooFormulaVar\n", "peak\n", "125.000000\n", "\n", "\n", "\n", "signal->peak\n", "\n", "\n", "\n", "\n", "\n", "width\n", "\n", "RooFormulaVar\n", "width\n", "5.000000\n", "\n", "\n", "\n", "signal->width\n", "\n", "\n", "\n", "\n", "\n", "mH\n", "\n", "RooRealVar\n", "mH\n", "125.000000\n", "\n", "\n", "\n", "peak->mH\n", "\n", "\n", "\n", "\n", "\n", "kpeak\n", "\n", "RooFormulaVar\n", "kpeak\n", "1.000000\n", "\n", "\n", "\n", "peak->kpeak\n", "\n", "\n", "\n", "\n", "\n", "sigma_mH\n", "\n", "RooRealVar\n", "sigma_mH\n", "0.010000\n", "\n", "\n", "\n", "kpeak->sigma_mH\n", "\n", "\n", "\n", "\n", "\n", "theta_mH\n", "\n", "RooRealVar\n", "theta_mH\n", "0.000000\n", "\n", "\n", "\n", "kpeak->theta_mH\n", "\n", "\n", "\n", "\n", "\n", "nominal_width\n", "\n", "RooRealVar\n", "nominal_width\n", "5.000000\n", "\n", "\n", "\n", "width->nominal_width\n", "\n", "\n", "\n", "\n", "\n", "kwidth\n", "\n", "RooFormulaVar\n", "kwidth\n", "1.000000\n", "\n", "\n", "\n", "width->kwidth\n", "\n", "\n", "\n", "\n", "\n", "sigma_width\n", "\n", "RooRealVar\n", "sigma_width\n", "0.050000\n", "\n", "\n", "\n", "kwidth->sigma_width\n", "\n", "\n", "\n", "\n", "\n", "theta_width\n", "\n", "RooRealVar\n", "theta_width\n", "0.000000\n", "\n", "\n", "\n", "kwidth->theta_width\n", "\n", "\n", "\n", "\n", "\n", "nsignal_theory\n", "\n", "RooFormulaVar\n", "nsignal_theory\n", "32.000000\n", "\n", "\n", "\n", "nsignal->nsignal_theory\n", "\n", "\n", "\n", "\n", "\n", "mu\n", "\n", "RooRealVar\n", "mu\n", "1.000000\n", "\n", "\n", "\n", "nsignal->mu\n", "\n", "\n", "\n", "\n", "\n", "efficiency\n", "\n", "RooFormulaVar\n", "efficiency\n", "1.200000\n", "\n", "\n", "\n", "nsignal->efficiency\n", "\n", "\n", "\n", "\n", "\n", "klumi\n", "\n", "RooFormulaVar\n", "klumi\n", "2.000000\n", "\n", "\n", "\n", "nsignal->klumi\n", "\n", "\n", "\n", "\n", "\n", "nsignal_theory->mH\n", "\n", "\n", "\n", "\n", "\n", "nominal_efficiency\n", "\n", "RooRealVar\n", "nominal_efficiency\n", "0.600000\n", "\n", "\n", "\n", "efficiency->nominal_efficiency\n", "\n", "\n", "\n", "\n", "\n", "sigma_efficiency\n", "\n", "RooRealVar\n", "sigma_efficiency\n", "0.050000\n", "\n", "\n", "\n", "efficiency->sigma_efficiency\n", "\n", "\n", "\n", "\n", "\n", "theta_efficiency\n", "\n", "RooRealVar\n", "theta_efficiency\n", "0.000000\n", "\n", "\n", "\n", "efficiency->theta_efficiency\n", "\n", "\n", "\n", "\n", "\n", "sigma_lumi\n", "\n", "RooRealVar\n", "sigma_lumi\n", "0.020000\n", "\n", "\n", "\n", "klumi->sigma_lumi\n", "\n", "\n", "\n", "\n", "\n", "theta_lumi\n", "\n", "RooRealVar\n", "theta_lumi\n", "0.000000\n", "\n", "\n", "\n", "klumi->theta_lumi\n", "\n", "\n", "\n", "\n", "\n", "background->mass\n", "\n", "\n", "\n", "\n", "\n", "tau\n", "\n", "RooRealVar\n", "tau\n", "-0.030000\n", "\n", "\n", "\n", "background->tau\n", "\n", "\n", "\n", "\n", "\n", "constrain_peak\n", "\n", "RooGaussian\n", "constrain_peak\n", "1.000000\n", "\n", "\n", "\n", "constraints->constrain_peak\n", "\n", "\n", "\n", "\n", "\n", "constrain_lumi\n", "\n", "RooGaussian\n", "constrain_lumi\n", "1.000000\n", "\n", "\n", "\n", "constraints->constrain_lumi\n", "\n", "\n", "\n", "\n", "\n", "constrain_width\n", "\n", "RooGaussian\n", "constrain_width\n", "1.000000\n", "\n", "\n", "\n", "constraints->constrain_width\n", "\n", "\n", "\n", "\n", "\n", "constrain_eff\n", "\n", "RooGaussian\n", "constrain_eff\n", "1.000000\n", "\n", "\n", "\n", "constraints->constrain_eff\n", "\n", "\n", "\n", "\n", "\n", "constrain_peak->theta_mH\n", "\n", "\n", "\n", "\n", "\n", "1\n", "\n", "RooConstVar\n", "1\n", "1.000000\n", "\n", "\n", "\n", "constrain_peak->1\n", "\n", "\n", "\n", "\n", "\n", "global_peak\n", "\n", "RooRealVar\n", "global_peak\n", "0.000000\n", "\n", "\n", "\n", "constrain_peak->global_peak\n", "\n", "\n", "\n", "\n", "\n", "constrain_lumi->theta_lumi\n", "\n", "\n", "\n", "\n", "\n", "constrain_lumi->1\n", "\n", "\n", "\n", "\n", "\n", "global_lumi\n", "\n", "RooRealVar\n", "global_lumi\n", "0.000000\n", "\n", "\n", "\n", "constrain_lumi->global_lumi\n", "\n", "\n", "\n", "\n", "\n", "constrain_width->theta_width\n", "\n", "\n", "\n", "\n", "\n", "constrain_width->1\n", "\n", "\n", "\n", "\n", "\n", "global_width\n", "\n", "RooRealVar\n", "global_width\n", "0.000000\n", "\n", "\n", "\n", "constrain_width->global_width\n", "\n", "\n", "\n", "\n", "\n", "constrain_eff->theta_efficiency\n", "\n", "\n", "\n", "\n", "\n", "constrain_eff->1\n", "\n", "\n", "\n", "\n", "\n", "global_efficiency\n", "\n", "RooRealVar\n", "global_efficiency\n", "0.000000\n", "\n", "\n", "\n", "constrain_eff->global_efficiency\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.graphVizTree(\"shape_graph.dot\")\n", "!dot -Tsvg shape_graph.dot > shape_graph.svg; rm shape_graph.dot\n", "s = SVG(\"shape_graph.svg\")\n", "s.data = re.sub(r'width=\"[0-9]+pt\"', r'width=\"90%\"', s.data)\n", "s.data = re.sub(r'height=\"[0-9]+pt\"', r'height=\"\"', s.data)\n", "s" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "RooStats.SetAllConstant(ws.allVars().selectByName('global*'))\n", "\n", "data = model.generate(ROOT.RooArgSet(mass))\n", "data.SetName('obsData')\n", "getattr(ws, 'import')(data)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " **********\n", " ** 1 **SET PRINT 0\n", " **********\n", " **********\n", " ** 2 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 mH 1.25000e+02 6.00000e+00 9.00000e+01 1.50000e+02\n", " 2 mu 1.00000e+00 7.00000e-01 -2.00000e+00 5.00000e+00\n", " 3 nbkg 4.00000e+02 1.00000e+02 0.00000e+00 1.00000e+03\n", " 4 tau -3.00000e-02 1.45000e-02 -5.00000e-01 -1.00000e-03\n", " 5 theta_efficiency 0.00000e+00 1.00000e+00 -5.00000e+00 5.00000e+00\n", " 6 theta_lumi 0.00000e+00 1.00000e+00 -5.00000e+00 5.00000e+00\n", " 7 theta_mH 0.00000e+00 1.00000e+00 -5.00000e+00 5.00000e+00\n", " 8 theta_width 0.00000e+00 1.00000e+00 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 3 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 4 **SET PRINT 0\n", " **********\n", " **********\n", " ** 5 **SET STR 1\n", " **********\n", " **********\n", " ** 6 **MIGRAD 4000 1\n", " **********\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n", " FCN=-432.306 FROM MIGRAD STATUS=CONVERGED 197 CALLS 198 TOTAL\n", " EDM=1.00728e-07 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 mH 1.24016e+02 1.78099e+00 6.07882e-04 5.09816e-03\n", " 2 mu 8.73254e-01 1.81123e-01 6.61390e-04 -1.00931e-03\n", " 3 nbkg 4.10348e+02 2.30470e+01 6.19653e-04 1.44279e-03\n", " 4 tau -2.44693e-02 2.57891e-03 3.28008e-04 -2.43511e-03\n", " 5 theta_efficiency -1.18309e-04 9.93384e-01 2.84645e-03 -6.23520e-04\n", " 6 theta_lumi -1.30614e-04 9.93353e-01 2.86885e-03 -6.65866e-04\n", " 7 theta_mH 8.79067e-05 9.93034e-01 2.04781e-03 1.51303e-03\n", " 8 theta_width 1.68217e-01 9.82342e-01 2.78729e-03 -1.17561e-04\n", " ERR DEF= 0.5\n", " **********\n", " ** 7 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 8 **SET PRINT 0\n", " **********\n", " **********\n", " ** 9 **HESSE 4000\n", " **********\n", " FCN=-432.306 FROM HESSE STATUS=OK 61 CALLS 259 TOTAL\n", " EDM=1.00746e-07 STRATEGY= 1 ERROR MATRIX ACCURATE \n", " EXT PARAMETER INTERNAL INTERNAL \n", " NO. NAME VALUE ERROR STEP SIZE VALUE \n", " 1 mH 1.24016e+02 1.78144e+00 1.21576e-04 1.34262e-01\n", " 2 mu 8.73254e-01 1.81186e-01 2.64556e-05 -1.80041e-01\n", " 3 nbkg 4.10348e+02 2.30536e+01 1.23931e-04 -1.80279e-01\n", " 4 tau -2.44693e-02 2.57973e-03 1.31203e-05 1.13358e+00\n", " 5 theta_efficiency -1.18309e-04 9.93350e-01 5.69289e-04 -2.36619e-05\n", " 6 theta_lumi -1.30614e-04 9.93347e-01 5.73770e-04 -2.61229e-05\n", " 7 theta_mH 8.79067e-05 9.93287e-01 4.09561e-04 1.75813e-05\n", " 8 theta_width 1.68217e-01 9.82367e-01 5.57458e-04 3.36497e-02\n", " ERR DEF= 0.5\n" ] } ], "source": [ "ROOT.RooMsgService.instance().setGlobalKillBelow(5)\n", "fit_result = model.fitTo(data, ROOT.RooFit.Save(), RooFit.PrintLevel(0))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " RooFitResult: minimized FCN value: -432.306, estimated distance to minimum: 1.00746e-07\n", " covariance matrix quality: Full, accurate covariance matrix\n", " Status : MINIMIZE=0 HESSE=0 \n", "\n", " Floating Parameter FinalValue +/- Error \n", " -------------------- --------------------------\n", " mH 1.2402e+02 +/- 1.78e+00\n", " mu 8.7325e-01 +/- 1.81e-01\n", " nbkg 4.1035e+02 +/- 2.31e+01\n", " tau -2.4469e-02 +/- 2.58e-03\n", " theta_efficiency -1.1831e-04 +/- 9.93e-01\n", " theta_lumi -1.3061e-04 +/- 9.93e-01\n", " theta_mH 8.7907e-05 +/- 9.93e-01\n", " theta_width 1.6822e-01 +/- 9.82e-01\n", "\n" ] } ], "source": [ "fit_result.Print()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArgAAAHYCAIAAAApvgy/AAAABmJLR0QAAAAAAAD5Q7t/AAAgAElEQVR4nO3dQZKcNtvAcemrbF09s3dcPkhSwPLNQZLx+AKvvWl689o+gD0pHyRZNl25RypV8d7TJ+BbyIPVgIAGAdLD/1cuVw/NgARM87SQ9OiyLBUAAECb/1u7AAAAIFwECgAAwIlAAQAAOBEoAAAAJwIFAADgRKAAAACcCBQAAIDTD2sXAAhCURR5npsXw1e2pWlq/jcvPMrzvFYqs4taGcyPzYLNqigKU7bW/RZFYYpq1vF+ZLywCxlmCYF1aSZcApRSWmvz4ng89t4tiqLIssz1bpIkQ6KN4dI0PZ1OrW/t9/vqDm2qMPwv2svNuzpurfvVWpujcW3ZFmNOZeCFBNbFowfgohVh+Dfy/X5fXjoej0qp0+k0x9f64/Fo72u/3yulDofD6KAkz/OOcGfgFqqCTdkOgJARKADfb3hKKdd39yHSNDX3b78tCtXG7R/zPDf7WvhZgzDVAyPzY5IkKxYGCBOBAvAtOEjT1NwnptzmXS35eZ6b7guu+3rvCq59dUc2rs3meW5+sdkBomMLtaaXqndCR5lNIZMkqe7BVQ+PZtk6DoLpQFBpltleofvXXf1LkiShjwLQogS2zTQkJElSe937K81HD61bMEtq7OcIvSuYW2zvvmp/0d2btRd21Le5harWQz5J9vu92ePxeKx2bapj/6+sSML+Tm9vp6MkrhWGv1srLQAbgQK2ztyZanfQ7l9xBQrVvdm+39SWVOsMX8EVKLTeuadvtraCXc3WG/C1N9cqFKhttrnE9WPvCrWSd78LoBuBArZuxF2k9ct6xb5xmltpbWt2aNIac9R+q+PBud0YYFekd79lX6DQ2rhSK+2UQKHZZNI8bnZRa3uxC99aVLsxo+NdAL3oo4BNM4+r7abp4bMpqKcG84pZaP9u6xwD9i5axygOKUOSJPv93rVO7357tW7BnhRhIrvKQ8aj2usURWH3zKj6atilNd0det8F0ItAAZtm7nmHw0E/MSMGh4x9MPdpW1mW6nLIYut27Nvt8MkMajF+66RP3Xzd5qcMDOnQfRDMrd0+RzbTbFCdx1pvx+53AXQjUMCmmXtea8PAuGGHteGRrU8NQp6mMExa68PhoJSqHhnUDmyapmVZHo9Hc/xPp1OWZdUZ7H4XQDcCBWxX9dyh1jBQfQEdsc1rb/+t3/J9RRJTNtvR/LDwZAP2aep+ZGCGPpZP/RJqZ7D7XQAuBArYLnOrcI2q98JsvLULgv0EvbUzwZRitOZ9uGqzZrXa3XR6wUZo7S1hP/7I81xrba9gl7D7XQC9CBSAFhMnPay+iNs96UxzRZqmp9OpmtsnTdMkSU6nk3lw3lxhnN79DmEOQvVEP89zV2g1q+pAVb06qgQThilP1TWk6vloWj663wXQb9lBFkAoWgcQVpqzDjTfdf2u+cXm8L9Kc4Kj7hV6Jzyw9zt8s9VYj44Jl5pTFTXfHTc8srmdji3XKrLf76uCmXWa5bQr1f0ugG5kjwSWUH2t7/hCP2Qdv/sduMc5CnatZhnMErt5o1pHtT1f6H4XgAuBAgAAcKKPAgAAcCJQAAAATgQKAADAiUABAAA4ESgAAAAnAgUAAOBEoAAAAJwIFAAAgBOBAgAAcCJQAAAATgQKAADAiUABAAA4ESgAAAAnAgUAAOBEoAAAAJwIFAAAgBOBAgAAcCJQAAAATgQKAADAiUABAAA4ESgAAAAnAgUAAOD0g9/NFUVh/k/TNE1TvxsfQmu9/E4BAKiUZbl2EXzSXupTFEWe56fTqfnWfr/P83z6LgbS2k+NAAAYQd5taOqjh6IotNZZluV5XjYcj0ezwpKxAgAA8GVqoJDn+fF4LMuy9UFDmqZFUQiLrQAA2A5pLSTy2nwAABGRdxti1AMAAHAiUAAAAE4ECgAAwIlAAQAAOPkJFMw8S0ae52a2JXshAACIkYeZGc1kiKaTp3mdJIlSKsuyhWdbAgAAfk0NFEwcYKIE+7VSqigKMxHTxF0AAIC1eJiZ0bQfGPZrMwUTDyAAAIjX1EAhTdPWFA/2ChN3cS3tsHAxAAAQwMMEUuYefDwe1VO/BBMcZFmmFk+iJW9KLABAROTdhvzUp7VdIUmS5Z87yDtDAICIyLsN+ayPHRYs/8TBkHeGAAARkXcbElcfcWcIABARebehGWdmzPN83S6EdGYEAGAiDxMudbBHSy6vmgNKWHAHAMBipN1Em2EBgQIAYDHybjokhQIAAE4ECgAAwIlAAQAAOHlICtU9qxK5HgAAiNfUFgWTHLI73QMAAIiUh+GRRVFordM0JaM0AADC+JlHYb/fe9mOF825lcwSYeNVAABYgLThnsyjAABYkbybDqMeAACAE4ECAABwIlAAAABOBAoAAMBp3uyR4tVGWMTbgUVMRQAAfvmZcMnXatEpy9LcU6sXkRJTEQCAXx4ePZjZllqnai6KIs/z5sQGQ5jfbc7jlF5iimgAAObjoUWhLMs0TbMs01qboCFNU/M6y7KiKMqyvLZFIc9z87tKqcPhUIUaRVEwXTQAAIvxPC+EHRCYiGHcdrTW+/2+2lr1Y1EUWZZ1lHmVCZfETK8hpiIAsBZ5H6SeOzN67ItgBxlJkpjWBR40AACwpECHR5rHGdWPp9PJ/GgCBf1Eah9JAAACEfrwSPOsQV22Vez3e9ON8XA4qEYzhispVAdhzUQAAPgS9KOUNE1Pp1P13MG1gl0F+ihMIaYiALAWeR+kgT56UE/NAMfjsaNfAo8eAACY1dRAwYyENOMRfJTnG621aUiojZuoTZxA30YAAGblp4XETI5kHhOYWZImbi3LMtMRwV5ughJldSmojaJUPHqYRkxFAGAt8j5IPdfHS8SQ57nppWireirYPROb3RcIFKYQUxEAWIu8D9K56lMUhRmVcDweJzYwtG5cXU60UCFQmEJMRQBgLfI+SMXVh0BhAjEVAYC1yPsgDXfUAwAAWB2BAgAAcCJQAAAATnMFCsxwAACAAN4ChaIotNbVeIQsy0jaBABA7Lx1zqymQjLTJR2PR6VUlmULd/5k1MMUYioCAGuR90HqM3ukCQ5qkxw0p2Gemyt7pLAzBwDAAvynmT4cDvv93vtmh1u+RQEAAKm8BQpJkmRZliSJempOsP8HAAAx8tmZMUmS0+lkkjkVRXE6nczDCAAAEClpzfJ0ZpxCTEUAYC3yPki9tSg0uxCahUyoAABAvDz0UahChNZYAQAAxMtDoGDGOLQOdkjTlM6MAADEy0OgUE2/yDyMAAAII63PBZ0ZpxBTEQBYi7wPUm+dGfM81218bR8AACzPZ66HJElWH+NAi8IUYioCAGuR90HqM1AI4dAQKEwhpiIAsBZ5H6TeHj2op3RQq2s+++AhCAAA43gLFI7HY5ZleZ6vHi6Ul6ol65YKAIAY+Xz00Lp84Ts0jx6mEFMRAFiLvA9Sb9kjhR0XAACg/PZRAAAAwvgMFKqpFPI8z/OcyZsBAIidt0cPaZqeTqfj8Wgmcq6CBh5JAAAQL28tCiZKsLNAmRBh9UEQAABgNJ+PHnjWAACAMJ77KNg/mrYEogcAAOLlrY+CmXCpKIrT6ZQkiemysN/vfW0fAAAsz1uLQpqmVb/F0+mklKo6NsaLTJjycE4B4CrSRiXMMTNj7xbEDO4QU5Fe26kpgIXJ+3jx1qJQzaDga4MTS0JSKAAApvOZFCpJksPhoLVO03TFUZEkhQIAwBeffRSKoijL8ng8KqWyLAukgQEAAIw216OUPM8Ph4MSkT2SPgrybKemABYm7+PF2/BII89zM0JSKZUkCS0KAABEzXOuB6VUkiRmLmdfWwYAAGvx2aJAfAAAgDDzPkopimLh0IE+ClOIqUiv7dQUwMLkfbxMHfWgta5GQhZFYU9XUBRFlmUTtw8AAFbkMykUAAAQRmyg8OXLl7dv397e3iqlbm9v37x58+XLl7ULBQBAZGQGCl++fPntt9++fv36+PiolHp8fDyfz7/++iuxAgAAV5EZKHz69OnFixe///57teTh4eHly5cfP34k6QMAAMN5nnApEA8PD6YtobZwt9utUh4BagGWsD69GIerAtgCD0MHu1dYfgrn3nWuLRLDI4evEAsxFQkBBxOwyfuLmNqisN/vvZTDo7Isb29vmy0KSqndbnc+n5cvEgAAkZIW+JhQ7s2bN+fz+eHhwX7r/v7+2bNnHz58oEXBhZpiBA4mYJP3FyGzM+Pr16//+eefV69eVUvu7+///vvv169fCzt/AADMSmag8Pz588+fP+92O9N7cbfbPXv27PPnzz/++OPaRQMAICbSWkjI9TAFNcUIHEzAJu8vQmaLAgAA8IJAAQAAOAUdKBRFked5mqZ5ntfeMsurxJUAAGAO4QYKeZ5nWWZCgcPhYM+kpLU+HA5KqSzL0jRdqYBy8k6JqQgAwLtwA4XD4bDf74uiKIrCdAwx7Qrm/7IszfLT6bRKu4KYvFNiKgIAmEO4nTO11sfjsWowMC+KotBaJ0lSBQfV8uq3Fhj1oLV+8+bN169f7bxTSqlXr17tdrt3795F0evVFPLt27euirx//977wQyEmIqEgIMJ2OT9RURTH631fr/P87x6YZbneX44HKpaLBYo3NzcuGaJfnx8jOJCMYXsnu6aQAG9OJiATd5fRLiPHiqmFUE9PXTopS81lzSNKFXrzVUpdT6fI8pkrbXuqMjChQEABCj0QCFN0yzLkiQZHqCVl5pLmkYU7ObmpnX5breLKJYsy7KjIgsXBgvrDZenx9MABAg6UDCfTcfjMcBhkHd3d3YuCeP+/v7u7m6V8owmpiK4Vi2SHrECgC0IN1CoOi3WBkDaPRmVUkVRJEmycNnKsuzIO2VWWLhII5hCkkALANAh0EDBhAJmSiWbUirP82pIZFEUp9NpYN8Fv8TknRJTEQDAHALtnGnGMtQWVm0J9rv2CAhFUqhpqOkGTT/pHEzAJu8vIuL6NJ9KKAKFaajpBhEoAH7J+4sQVx8ChQmo6QYRKAB+yfuLCLSPAgAACAGBAgAAcCJQAAAATgQKAADAiUABAAA4ESgAAACnH9YugH/N7DVmibDxKgAALEBgoOB9HgUAADZLYKCwQbVGFAIjBMLLlcnlDaxLVKBgPk+0Vlv7JDEfnbSdIDRerkwub2BdMjszNnopAACAMWQGCopYAQAAH0QFCrWGSWIFAAAmEhUoNBErAAAwhcBAodHhqSRcAABgHIGBgmqJFWhaAABgDJmBgiJWAADAB7GBglKqLOneCADAJJIDhScX0QGxAgAAw4mamdFoJoV6ihXKpxU2N3UjAADjCAwUXEmh7PiBWAEAgCG28Ojhm2Z/BR5DAADQbUOBgmIoBAAAV9pWoKCIFQAAuIbAPgq9TKxQ67Kg1DpJbGtdL0mk2y2EwxVCGQBgMVsMFIyyrLUlrPNx/9TRcp0wJTohHK4QygAAi9ncowcb3RsBAOi26UBB0WUBAIBOWw8UlFK1qRsVsQIAAE8IFJRyZIXQWr19+/b29lYpdXt7++bNmy9fvqxTPnjy5csXzikAXIVA4bvmY4h37/73+PiolHp8fDyfz7/++iv3lXh9+fLlt99++/r1K+cUAIYjULjQ1o3926KHh4eXL19+/PhRtaeTQLjM+fr06dOLFy9+//33anl1TjmhAOAibYhXc9Ba7zC22grmx7Ybh1ZK7Xa7x8fH1l/xW+xVNnLtsVrLtcUw69/e3pq2hJrdbnc+n6+tVyCHYrrpJ32Zy0bMAYd48q5VcfVxfzV01bR5169+o7lu69YIFBY2IlDoXYdAYcUVhhBzwCGevGtV4KOH8lK15Kot3NzcNEdDKFXudjthV8BGPJ3TFrvdbuHCAEBEBAYKXtzd3b169UopXQsXzudHHmdH6umcXri/v7+7u1ulPAAQBQKFOtNg8Pr163/++efpvtLStLBwqTBF2zlVSqn7+/u///779evXtBIBgAuBQrvnz59//vx5t9uZdundrt5qTbtCdBrndPfs2bPPnz//+OOPaxcNAMIlrc/F9FEP3Ss044OypDPj0kI44IEciunozAj4Je9a3W72yHEaOSd7mhZISYyZcGkBWIbkQKH6JDUvfH2SNmOFji4LpCTGTLi0ACxDcqAw3weo2bAdLpjXfGIDAIShM+N420lRTS4lNHFVABtBoDDJFmIFcimhiasC2A4ChanMk2J7iUlRLUBvLiXV6FKHLdBac1UA2yGtJ9SIvl2+Rn+1jpz0tYshvA/5682l1MyPtYwQBjcG0otwlTGxWuubm5vhV0UglzewDHnXqrj6TE4KNWUFV6wQb6Aw5LcIFFa0VqDQu1kCBWyWvGtV4KOH0mGRXdd7LcT+GKI7l5KwPwYMx1UBbIfk4ZFruWqihfDd3d2dz+eHhwd74f39/bNnz9YqElbHVQFsh8AWhRDIGA3Rm0tJMSHgJpVlyVUBbAeBwlxaH0PEiFxKaOKqALZDWp+LFUc9uN+9+LF1xUB6e5EUaskteBHCSY+lry6wDHnXKn0UJhmSTqLWZSHMyZ5nyosBAIgdgcIkg2+outafUeuwYgUiAwBAKwKFhbTmp+bu7B3Jl+PC+QLCF3qgkOd5nuf2kjRNayvUlgSLnJMLIPlyXDhfQPiCHvVQFMXhcCiKwl5yOp3WK5EHMkZOIna9uR9JDgnACDRQKIoiTdMsy1zvVmJpTrC1dnlcvhjYrN7cjySHBFAJNFBQSqVput/vawvt1oWoyZvsGVEYmBGU5JAAKqE/GtRaH4/HqtkgTVP70cN+v6/1YFhlHoUpu+jIOelxL74E8iw5hJH9sRyK1vV7M4L6TQ7p5XQEcsCBXvKu1dA7M7ba7/dpmpoeDEqpZqywTrFGYTQEFtbxB3I+n827rVGCvQKA7Qg98Km1KNSYBoaJCW1D+PapdX2iBXV90wItCh5XmF6GZYTWotARRXQUkxYFSCLvWo2yRaGS57mrw2N0aFrAYnpzP45IDtnb0MBgYCBS4XZmbGWeOFQ/iunbaLSOnKShFx4NzAh6ZXLIcvhVyiUNRCeyQOF0OtlNCIfDoTkyImrN0RCKiRbgW2/ux+HJIVsvTnMZV/+aCBeAiIT+KKXZR8HuS5UkSa1RId4+CrUVXJ+/U/YyXSDP3uij4LEYo4/V8EvUbKFjffooQBJ512rofRSah7ssSxMcxDjV0nDN+Z4VT3kRjBHDel2XNNczEDhpgY+YFgXrrZaFHd/bxpRvsEAiZVoUPBbDS3PXtW1djS3QogA55F2rkfVR2CBXrwUe8SIEJqnTqN+6WOCnNABmQKAQh45OjiTvwZLsCLX7W1P3lTnwGxeXN7A6AoXQaUvzq5vW6scfn/cm79GXliv9NWUIoZDoNvy0DEkrZccKrVsemJuKKweYlbRHKfL6KLSu0HqfrV69evVqt9u9f/++8WB4/QfzXo42fRQ8FmP4sapdddUvtXVB0G/evPn69audVko9XZnv3r0buM23b9+6NjLH5Q14Ie9SFFefbQQKqi9W2O125/OZQGHKXiaWYRmLnRHXHb11C/qaSaBbn2Xovqmm57i8AS/kXYri6uNueHQPK1j/pjIqUDA1bf7W9yNAoDBlLxPLsIxlzkjtMqut7r44u7hayKqZFa7aQmsxgFXIuxQF9lEoHdYul39lWd7c3DYXK6XMhHqAD11RgsvNzU3r8t1u1xeXVDsqOzYyqBAAfBAYKGzK3d3dq1f3jcXl3d3dCqWBOB1PHLrd3d3ZqSKM+/t7x5V5sZtqp1duBMAsCBRiZb6WPSXvua991H748J6x6ZhodJRQXp1Wqr7xy8u7ZSMi2wiBMBEoxO0yeU/L4EnAi2vvy8PTSrXuwly6IzYCwDtpfS62M+rBtc7E1DtDdjHrFujMuHAxXFsYPrGSx9Nx1diKa/cCLEPepUiLgjQdczgCgWuMp1ipHAAsBAoyOWIFUUEu5nN5h170di3rmxggAYGCWGSTQqR6p3YGsCQCBeFav5/x4YsOw3snANiC7QYKIWSlW6YMYpoWtnPKQKMCEI6NBgoDs9JJKoPpVF5bGNFH8AZP2SpoTgBQs7lAwcwh/+nTpxcvXthZ6R4eHl6+fPnx48dl0tRqrTvKUJXTuxibFjZ+ykYbkXw5qBoE1ajQezBHHG0gFtKGew4cbL1wVrqJ6fUGluGqgebNj7IhVVxlHoU5Ttm4+TauOmXL8DulREcix8XKcLn84qfV51FgLgcMIe8yEFefvuyRq2Sl85Fez/80RB1TM43eRa8JeTK7LBMoXFuMBcw02ZHfmY6mrOBx3qfpCBQwhLzLQOCjh97skcOz0lWtiHM0J45Or+dLRJ0cPSYSnHJOVz9l8wnwpAMIxA9rF2Add3d35/P54eHBXnh/f//s2bMPHz5US2b99O8ow3w7bSrLlpuE1sF1ZBt4ynpNOaeBnDLvRid/WoB9fQZ4WQJbILBFoVsgWelGpNebszBBNy1wypYkohIAfNpcoGCEkJUuhDLYAg8XQjhcIZRhBvZTuRWL4RTU8Adgg6T1uRjXSS38PlBzdGZ0r9a+vCzlZI+cLpD+ShMPxZCHDut2ZmyW07ViCCc9kKsC65J3GWy0RQEdWpsWFGmlpAv5k41GBWBFBApo1xEu8EktA5MwAhiCQAFdCBekivD0fS9xhIUHIkagMCMxCYQIF0Lj99KiOQFABwKFuchLINSaVkrx9W5x0y+t2tTI/os4D3oqAKsgUJiFji2B0HCBj6KUTfvIj8WZAnAVaaM4Ahke6T3nUyCDBnuzRfRuPpaa9loxBdSU/FjN8ZBhjH684qSPzkkxXQgXHsIn7zIQV5++pFCtvzJHoNC7TlyBQq1G1XauzSwVfk0HWitQ6F1neKBgFk/L2NR+VQzfwsAVFIEC4iHvMhD46KE3KdQyhCUQcmfY4knELPSlavmU/Fjex0Ou8ic2x35cRxuA2mxSqAVITSDUKpbMUhF5+vbc8tVkXH4skbc/X9dYx9EGILBFIQTlNhII2WhaWEDpKT+WuKsPwIwIFOYiNIFQL90aLsCjEZeWsEkYGScJLElaU1sgox6u3YW8Ln6uTo7yarruXgau0BEoLD9YZtwupvfKXKCcPLyAkngZ0KKAWbieRJBWannCmhMMGhWAxRAoYEZM/AwAsSNQwLzIE7G2i7GsktCoACyDQAFLIFwAgEgRKGA5HWmlvIQLYtJ1+hJ474Tp5yvASgHyEChgaTO1LshL1zlR4E01M5wvogZgFgQKWIcrXFCqvPYO5yWnojDN5E9t63ybrtg1b3HvChOKJza9KiCPtOGezKMwcSMTjSuD66bg2lJjSP3VORWnC3wehaAeOjQLqa9Mr9q6Eeut76+nVJZ5FOCFvMtAXH3CyB557S42Hig8vdX+K23zMdQDhd6CbSpQuDwe6/+Nt971e3+LQAGRkncZCHz00Jo6UthpE2lK34UpORWFiaXN3mN6VcZJArMieyRCU59y+NtSrVTn98VxORWFaXZNCPbGuan0qkDUBLYoQICrWhd85VR82sWFEYXv3cL0XQwRciOa9/Sq3asvc8AXIKYiiAuBAsJ11cgIX+k6qwdVo59Y9W5h+i5aBdWBsdd86VVbQ8k5DvjyxFQEcZHW54JRDxM3MtF8Nb1qZMT0mi5wyvyeU9d4yBD6VS11KL6/HndVxNKZMYRzig7yThAtCogDk0APJ+szarjv1wGXBOARgQJiQrjQKq6HDgDiEkGgkOd568I0TYuiWLo0CIImXKhssMoujJME5hB6oFAUxeFwqAUEWuvD4aCUyrIsTdNVCraMgVlzqi7QrX2hQ0iV1FuGEYXsaF3Y0rT/FzUNrTmh+8r0spHalTOtvABahBsoFEWRpmmWZbXlpoGhLMuiKMqyPJ1OUtsVhmfN6ZhaKoRUSb1lmFJIHkZUQosSVOeV6WUjzSvn1av76t2tXQDATMINFJRSaZru9/vawsPhkCRJ9WOSJK3PJmKnJ2fN0WGkShpSken5gbYZLmy5a0LH5b1eoQCZIhjFobU+Ho/VIwat9X6/r4KDPM8Ph0NVCzHDI/X1WXNat7l6qqQhFfGYH0h1fo8cXt1AhtJ1rDMkP+TAvaxu9J+t6/Kunshc9loI4pxOF8U53TJ5J0jgFM5iJixzfAKq8/k8sI4dq53P55HFul5vRabX1FaWpuLOyRhi/xNum1BojXKsbci1ofVGDw7gUdCPHsYpr7R2eZ2mZ80pw0iV1FsRj/mBKu5ZHeN+HkGUUOm4vAF4JLBFQQwvWXNCSJXUW5H58gNZExTW34qxdaE1ccSWhnjUua+c/3748N78SKMCMFF8LQpJktjDHIqisPs2ilFOzppTek2VNNqQivjND+QoRvS9HZudErZ8/+u9vNcrGiBNfIFCnufVkMiiKE6nk8hRD8pT1pz5Uu94LMNihewOF0KOGAZ2XdyajiuHyZcAXyLonFkb9aCeRjqY1/YICCVo1MO1K3gpxnSrjwW4ZiM974fQQ761V6bfnvwhmOnyrg0fZdQDliHvBEVcHzMjU20hgcLcG5m4i3AChac1e1YYPexwpmim9huB3Lommu/yvjyAawYKtTEaU+obxTndMnknSFx9CBRm3sjEXYQWKFi/0rOC9zv0iNkgmqsTKHRvJJxAYeAKQ0RxTrdM3gna9KiHKsY3L1Y5tSGUISLzHa6O8RGN5fOesoEhAoYoS/t4chCBMTYdKIRwVw6hDBFZ4HCZPbimbDKr1Fb2xRWjcI0AWFF8ox6AZZghEt036Wq4xMR+9e4ttCfU7hVCytBATB/+MEfuUyAiBApAjyERgxoVNHSsP2WahBBShooxa+5TIAoECsBQVcQwJGhQqrRDh+Y/16ONKSFCIClDQzO6UWGZ3KdA4KR1zgyzu+n0UsXSWVpMt/CrtuDrXjB9UMMqKUOnW+CkD0nJvUDu00Aub8xK3gkSVx/3Z/aKNSVQ8LiCl2LMt4URQUPHfkYECgN2F8f7QkQAABMNSURBVNyf/DInvTdWaA0UJpZKXR7wQC5vzEreCRL46KF0WLtc2ATr2YS2H1U0/1Ur+C5AEClDxVgl9ykQlE0PjwRECiFlaJC+D3kdnlJyxdynQCAEtigAm2W+wq6eMlSMMozcp8C6CBQAaUJIGRqmEcMfwsl9CqxFWp+L0HqR+MoEE0sfKDozDt/CxKwWAy+t0P4iWi3VmVGXZdnRpZFcD/BC3gmij8K8hF0uCAeX1jh29ofhPRWALePRAwAAcKJFAcC2BNuo4OtJJRQH0ytaFOABSXH84nguKZyjXc34wtQv03EwPSJQwFQkxfGL47kA+8bx44/POdpAB2mdM+V1NzWC7SyttX7z5s3Xr1/tpDhKqVevXu12u3fv3l07130gNV1l1INZ8vbtW9fxfP/+/bWliuIvYslRD9aPF2/aP8x39U4c6jJ8IzBWOVbyTpC4+og7Q0Ygt8/WbfpNihNITVcMFPymdIriL2KlQOH7RI1mgb3yTFcvgcLCCBS8EFefIJNCTRfI7bN1m73rECgMXGGOlE5RfGaFESioWqxgEChEjUDBC4F9FEqHtcslFklxPCpJ6bSgjsuTqxeoMDwSU5EUxy9SOi3pv/998/79u6efStOowNUL2AS2KGBJJUlx/ClJ6bSg6mjXlnP1AjUECpgqqKQ4WmvzpL96EZ2gjufcVj9fz58///dfeyRkKfhoA+NI63MhrxeJEUgXv+m7iKWjVvhJoXwVQ4wpB7wWorg2Q2fG6NCZ0QtaFABsnaxPdcAzAgUAuIgV4nxmBcyFQAEA6ogVgAqBAgAYRAdACwIF4LvpiQR7txBOrsKNuOqAh/wAgisHayFQAL6ZnraxdwtkhlzYxAMeTqzAlYMVESgA35IsfPr06cWLF3baxoeHh5cvX378+LFap3sjvVuYuAsM13tOXUc7tBEQoyuyFn1pxY3AF2nDPeUNYDWYR2FWvWkbm4kEWzfSm0jzqkybysfRkPoX0dSa6fGqVJz2Fux7U7XWKvMozJFTdAGBfGQxj4IX4upD9siZNzJxF8EGCkNW6y359JIQKIzWlhyyx8BAQT3FCmsFCt3rqyA/3AL5yCJQ8ELgowdh2SO9zHG7+kS5Q8qwbiG70zYOvH56t0CmzTm4rpwpqTiDOhvkFMW6yB4ZOi/3jxBuQr1lWL2Q09Ng9m6BTJtz6LhypqTiLMvv7Qparxw6kFMUKxLYogBcqzdtoxoW6PRugUybixGTilNMRRAvAgXgm+lpG3u3sKnMkCGYeMDDmVaBKwcrktbnQl4vkriIOf4L9KIa0a9tjmJsx7gzMjCx5JRdzLGR1dGZceGdzooWBQBwkvWBD4xBoAAAXcJ5AAGsgkABAK5ArICtIVAAgB61BxDXxgrkc0LUCBQAoN/oWIF8TogdgQIADHQRHQyJFTSZwBA/aaM45I1LiYuY48/wSHl8ZWroGDDZmtbLeyawKM4pwyMX3umsxNVHaFKoWIj5CxEQKNT+FmSclymmnJHGB8vFamXpPNoTc1NdW85wECgsvNNZCcz1IOwMAePwh+BR90RMWncd7d4WBU9lNCXpiQ6nr+BFFFFsFIVchsBAAQDmZqeMUp1Zo5bMBGZuZh3faKev4MUye5koikIug86MADDGkHEQZAKDAAQKADDSkFiBfE6InbRGFZqJ1iXm+AvozIia+ToJDk8ctUxSqAVW6BVI+qtVtiDvz5YWBQCYpNmuwOQIkIRAAQCman6BJFaAGAQKAOBBa6xAuAAB4hseWRRFnue1JesUBQAsJlaoBQcdIyeBKMTXolAUxel0WrsUANBu3GMIMkx6xMH0K8pAIUmSwrJ2iaCUUlprM5FZ9QJTcDyX5P1ol+V1PRzJMOkRB9O7+AKF0+mUpunapUBdeWnt4kSP47mkmY5225bap0zuyDBJmDgcB3Mm8Q331FonSWKePiRJkue5HTfIG8CKVQQyjwI8WuuAO2ZsrN7VZVne3t668kGcz2fvWaMCmcDAezFGHMyB25z7VwIXX4uCcTwej8ejUirLstpb+npr1ADAJjQfQ6jLJxFa69Ybm1LqfD7PWTSBOJhziD7w0Vrv9/tqHIS8UA6roEVBntUPuOsrSVkqWhS8FIMWhZnE2qJQMR0b1y4FAPQwyQiby7VWj49f7axRxv39/d3d3RIlk+Xu7o6D6VdkgUJRFLWejPRtBBCR1icRSqmHh09KlVVvxyrDpLDvprMyx6ojXScHc5zIAoU0TU+nU/WgwbwgUAAQF1e4YN5UqiTD5Gik6/QuvkcpRVHYHRjtDgpK4sMhrII+CvKEcMBby9DdnbqtI+SafRRqvb87ViN7pBix1sf0S2i2Jcg7Q1gFgYI8IRzw7jIMjBhC6Mzo5fImUIiFuPqIO0NYBYGCPCEc8GG3z/7tdG8jhDiAQGHKTkMTX1IoYFZVy6p5MeIPvncL03eBq8R2wL/dZjoiBvut0GuD+EXWmRGY2/TZfHu3MH0XuEqkB9x0eOwtr5m7KZCU1l6yMZHSKTQECgAQtCpiGBg0KFWuEjp4ycZESqcAESgAQDSGBw2G3d4wa9ygte7IxqQawyVat6BI6RQkaX0u5PUiASCGly5+jt+6ujAdOxnRzVBrfXNz45o7+fHxsfVX7CWBTMA8fQvybkPi6uP+cxFWUwDRmS9QaG7hqtChtsNxgcKAvfQECtduoReBghcCHz2UDmuXCwCWYz+kWKZH5M3NTevy3W438BO4LMuOjYwvGaZheCQAyGffqbujgao7ZOvvdri7uzufzw8PD/bC+/v7Z8+eDS9nx0Y+fPgwfDvwSGCLAgCgk/beI7Isy45sTGrAU4OSlE6hIlAAgO26dhiFspocaqGDl2xMpHQKkLQ+F/J6kQAQYGAuJRXG9OHVChMHJM491XQvOjN6QR8FAJhdpHeOxmiI637d/ZxiZHmwCgIFAMAgzQyW45ocnn7re5dJQoeQESgAAEZy3eAntj0QNwSFQAEA4F37c/qBAQRNDkFh1AMASNCbdHH6CtOVpfr33y9v3ry9ublVSt/c3A78xdoQTX1pREm6tzDkUEwvQywIFAAger1JF6evMFM5X726/89/fvn33y9XDdFUqrT/jUp18W3G3ubUvQMPRccWhCFQAICIDUy62JvacWLuR1/lvJzXQV81u0Pzn1Ij0mvNfiiiI224p7wBrAA25doPsYFJFztWMKkdr8r9OC5r1LXJIVv34vE2XZYe0mD2ZsUUQFx9yB4JIGYjAoX5CmObHihctYvhe/EeOgxYbVuBgsBHD2SPBLApvUkXu1cwH4/Tcz9OL+fYzbb/G+HpaUXz37dCbvNWwvBIAAhC9V326Wn9Ffek3qSLvakdveR+nF5OX7rnzL6+EaJUSp3P9dSaGwkbBLYoAECMxjWCDky62JvacWLuR1/l9KX7YNb6S47esys/ljAECgAQvd6ki9NXWKaca6k9tvj33y///e+b3a79QUmHWpODDNL6XMjrRQIAV/GYPXK+FRbby0xl6A0FJN2I6KMAAMB1fOXHigKBAgAAUzVDBzHoowAAAJwIFAAAgyyQNQoBIlAAAPRbJmsUAkSgAADoQaqkLZPW50JeLxIAuMocww6Hp0rqnhJxYDEGbmTF4ZEdK8i7DYmrD0mhAGzbTDe/3v1e+xm7wG1++hYIFJTIRw8khQIA7xbIGoUwMY8CAKDfMlmjECCBLQoAAL8WyBqFYBEoAAD6BZvPCXOT1udCXi8SALhKIDmfetGZMRa0KAAAACcCBQAA4ESgAAAAnBgeCQBCVNMimRfNJ+XTV1imnCGIopDLoEUBAITonWVu+grLlLPb9CSWQ7bQXchNJdIkUAAARGN6EssQthAXAgUAQATMI4COJJa9CSl6t6AGZLXoTaQpj7ThnvIGsAJAaFb5pDU7vb29dSWxPJ/PQ+Y86NiCnQazYyMDE2mKIa4+ZI8EgJmtFSj0rtN7jx+yo+kbEXa7EfjogeyRACBSWZYdSSynb2HgnWJriTQZHhk6Ya1YwqqjqFHwhFVHiavRtdXpSGL54cOHiVuYXoaBW4iLwBYFAIA8Jp7oSGLZG3D0bkENeGpQ9iXSlIdAAQAwlNbaPKSvXixsehLLELYQF1FNWEpco5wSVyNh1VHUKHjCqqPE1WhKdcLMPynsBClaFAAAQAcCBQAA4BTrqIe3b98qpX7++ef//Oc/47YwvHVo3TWH8753YdWZac3hhNVIWHVm2ruwGgmrzkx7lye+FoU///xTa/3XX3/99ddfv/zyi4kYAADAHOILkbTWP/30019//aWUevv27bt37+wqxPKdIIo1oygka3J5sOZia4ZWSNfvLllOOjMGqmpF+N///qeU+vPPP1ctDgBgUdNHaYawhVhEFiiYmKDWL8G0LgAANmL6DP3VL07cwpQyxCLWzoy2WqAwPLJjzZB3zZrhrxlFIVnT75pRFHL1NYWRECj8/PPP1WvZYR0AAAuL7NEDAABYUmSBgumdUOu9aLcoAAAAjyILFJRSP/300y+//GJem+EPo+dcAgAA3eILFEzXRTMc5d27d3/88UeapkVR1FbL87x1eeCKosjzPM/zqGuU53nrwtbyF0WRpmnrr4TDVbyiKCTVyJyj5lvh10hYdZT7kjNv1a668GvULFt6ya5R+NVRjhPkKnkUNepSxumPP/74448/lFJJkiRJYl5U75qqNZcHbr/f2zXa7/fVWxHV6Hg8KqWOx6O90FX+WpVrvxWI1hoZtdNUxlwj+xzZ74Zfo2Z1zJKqzPYHXfjVKTsvOfOWfdWFX6PuE2REdL2VjhNUfb7FeMl1izVQKC8/o+3TZs6KvVosJ8YuqqmReR1LjY7HY/M2U3aW335t/pCWKuwgrhqVTx8KzUAh0hqZha0/hlyjjurUvjlUpynk6pSdl5zRvOpCrpGrOvbnW03I1SkH18j+RhR4jYaI79GDLU3T2gul1OFwqE6kUipJkigafEzLW61GpuQR1ShNUxMW2FzlN/9XVc7z/HQ6LVLMK7TWyLU83hqdTid7oV0FFXaNOk5Qc2H41VHuGpm37GYSFUONWqvjeoQafnWU+2/fPi9lWZo6RlGjfmtHKuNVzThViGeWq7Z2uXWKeI1miF1VJLoaqctY21X+2rfY5i+Gw1WwWtUE1MioKhJLjTpKZTc3xlKdsq1g9h9OddXFUiPV1oJVia46peNT7ng87vf7SD8TOkTcomDitSzLsiw7nU7m4yBedhNC9SKKrotT1D4vBBBQozRN7T+oeGtUFIXWOsuy/X5ffaWLtzqHw6H1Uy7eGlV31sPhUH30xVudw+GQZVlRFIfDQWtdfXrHW6NKxDMzaq2TJKmad7IsOx6Pre2NsTgej1mWHQ4HJeLaQnTyPDeXX+x/SkaapmVZFkWRZZnqHEcQPq21He7Ezv4KZIY82LFCvMqnTiRpmmZZVv0Yu1hbFMx1Vl1tMr5/m8818zCl1mVBJPPNtfpRQJWjrlGapofDwbSa2n1l4q2RYZ4omwAo0upUH3dmJOHpdDocDqbYkdaopgoRoq5Oay+fqGtUiTVQaKpaF6oXRlEUsXw7r7q91Lo0xlsjw1X+2l9L7HGeirlGpo9VWZa1b3WR1shu+LVFWh0T66RPlFJJklSBgr1mRDWqfSZUy+3VYqmOcrcBx1ujCyv2j5hIOYZHul6HT1kjauwuMNHVSLUNHGotv7octxbswCHXMVdtwyNjrJEp6vFS9Vb4NWqtTuuPUVSn7OzyZndmLCOpUfMEqcvBhHYVwq9O2fkpV8Z5yXWIOFCo9etp9qtvLg9crUb2W3HVqPkZ5yp/R5WDMjxQiLRGHd8ioqhR66d2xf5ojqI65TWBQhQ1alZH3gmqDQKvlsdSow66jLy3RccjH/NIb9nieCCvRhVX+SN9bteBGoWg+0/J9VakYqyRyBPkKnm8NVJKRR8oAACA+cjpzAgAALwjUAAAAE4ECgAAwIlAAQAAOBEoAAAAJwIFAADgRKAAAJDPTOytnxRFkee5eW1Pb1At7Fhuz3Sepqm9zcWqs6i1Z3wCAGB25pZnplM0r838iWbeWFcGADMJpv3aXt/MxmimPBd8S6VFAQCwCVWqbnOzNw0AteTDVY715iyKZs08z6t1TqeTSdBV5f6dvxIr+GHtAgAAsITeGZTNCsWT2nKtdZIkeZ5X2zEZzLXWVXrPGUq9PloUAABQSinTiSHLMvXUflApnx46ZFlWdUcwrQsmXMiyTGqgQIsCAABKKZVlWZIkzT6J9kMKpVSapnmem1YH05BgfsyyLPbUfa1oUQAAoM4OF0wQUP14Op3MC7sVIer8kN0IFAAAUEqp/X5/Op2qMZBJkhwOBzOQUilVDYNUT2GBvf7hcDDPJuQhzTQAAN/ZbQP2o4SqjaHWbCC4LcEgUAAAAE48egAAAE4ECgAAwIlAAQAAOBEoAAAAJwIFAADgRKAAAACcCBQAAIATgQIAAHAiUAAAAE4ECgAAwIlAAQAAOBEoAAAAJwIFAADgRKAAAACc/h/92O6+2BqczQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "frame = mass.frame(50)\n", "data.plotOn(frame)\n", "model.plotOn(frame)\n", "frame.Draw()\n", "ROOT.gPad.Draw()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sbModel = RooStats.ModelConfig('sbModel', ws)\n", "sbModel.SetPdf('model')\n", "nps = ws.allVars().selectByName('theta*')\n", "nps.add(ws.var('tau'))\n", "nps.add(ws.var('nbkg'))\n", "sbModel.SetNuisanceParameters(nps)\n", "sbModel.SetObservables('mass')\n", "sbModel.SetParametersOfInterest('mu')\n", "sbModel.SetGlobalObservables(ws.allVars().selectByName('global*'))\n", "sbModel.SetSnapshot(ROOT.RooArgSet(ws.var('mu')))\n", "\n", "bModel = sbModel.Clone('bModel')\n", "ws.var('mu').setVal(0)\n", "bModel.SetSnapshot(ROOT.RooArgSet(ws.var('mu')))\n", "\n", "getattr(ws, 'import')(sbModel)\n", "getattr(ws, 'import')(bModel)\n", "\n", "ws.writeToFile('ws_shape.root')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Test statistics $t_\\mu$ and $\\tilde{t}_\\mu$\n", "\n", "$$ t_\\mu = -2\\log\\lambda (\\mu) = -2\\log \\frac{L(\\mu, \\hat{\\hat{\\theta}}(\\mu))}{L(\\hat{\\mu}, \\hat{\\theta})}$$\n", "\n", "High value means incompatiblity with data. If we want to test a specific $\\mu$ we can compute the p-value $= \\int_{t_{\\mu, obs}}^\\infty f(t_\\mu|\\mu) dt_\\mu$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Usually we can assume that $\\mu\\geq 0$, so we need a new test statistic:\n", "\n", "$$ \\tilde{t}_\\mu = -2\\log \\tilde\\lambda(\\mu)$$\n", "\n", "$$ \\tilde\\lambda(\\mu) = \\begin{cases} \n", " \\hfill \\frac{L(\\mu, \\hat{\\hat{\\theta}}(\\mu))}{L(0, \\hat{\\theta}(0))} \\hfill & \\hat{\\mu} < 0 \\\\\n", " \\hfill \\frac{L(\\mu, \\hat{\\hat{\\theta}}(\\mu))}{L(\\hat{\\mu}, \\hat{\\theta})} \\hfill & \\hat{\\mu} \\geq 0 \\\\\n", " \\end{cases}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## $q_0$ statistics for discovery of positive signal\n", "\n", "For discovery we want to exclude the hypothesis $s=0$ (background-only), assuming $\\mu\\geq 0$. Defining $q_0 = \\tilde{t}_0$:\n", "\n", "$$ q_0 = \n", "\\begin{cases} \n", "-2\\log\\lambda(0)\\qquad &\\hat \\mu\\geq 0 \\\\\n", "0\\qquad &\\hat \\mu < 0\n", "\\end{cases}\n", "$$\n", "\n", "If $\\hat \\mu<0$ it means that we are observing less events than the one predicted by the background-only model. Since we are truncating the definition of test statistics we are not considering downward fluctuation as discrepancies with the model. High value of $\\hat\\mu$ means high value of $q_0$ and large discrepancy with the background-only model." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " The p-value is computed as usual:\n", "\n", "$$ \\text{p-value} = p_0 = \\int_{q_{0, obs}}^\\infty f(q_0|\\mu=0)\\, dq_0$$\n", "\n", "### Exercize\n", "If we assume that the background model is true, how many times we will get $\\hat \\mu<0$? If $f(t_0|\\mu=0)$ is a $\\chi^2$ distribution what about $f(q_0|\\mu=0)$?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## $q_\\mu$ statistic for exclusion\n", "Suppose we want to put an upper limit, so we define as null hypothesis to exclude the hypotesis signal+background with $\\mu$ as signal multiplier.\n", "\n", "$$\n", "q_\\mu=\\begin{cases}\n", "-2\\log\\lambda(\\mu)\\qquad & \\hat\\mu \\leq \\mu\\\\\n", "0 \\qquad & \\hat\\mu > \\mu\n", "\\end{cases}\n", "$$\n", "\n", "we set $q_\\mu=0$ when observing a value of $\\mu$ greater than the one we are observing since we don't want it to enter in the rejection region when doing an upper limit; we don't want that upper fluctuation count as bad agreement with data." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " The p-value is computed in the usual way, assuming the null-hypothesis ($\\mu$) true:\n", "\n", "$$ \\text{p-value} = p_\\mu = \\int_{q_{\\mu, obs}}^\\infty f(q_\\mu|\\mu)\\, dq_\\mu$$\n", "\n", "\n", "### Questions\n", "What is the relation between $q_\\mu$ and $q_0$? Are you looking in the same tail of $\\mu$?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Let's try to write the profiled likelihood ratio for the shape model:\n", "\n", "$$\\frac{\\sup L(0, m_H, \\theta)}{\\sup L(\\mu, m_H, \\theta)}$$\n", "\n", "Is $m_H$ playing a role in the numerator? No! The numerator is not a special case of the numerator! $m_H$ is not a nuisance parameter that can be profiled.\n", "\n", "The commont solution is to repeat the test for fixed value of $m_H$: in that case $m_H$ is considered to be a constant." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mH = 90.0 pvalue = 0.5 significance = -0.0\n", "mH = 93.15789473684211 pvalue = 0.5 significance = -0.0\n", "mH = 96.3157894736842 pvalue = 0.5 significance = -0.0\n", "mH = 99.47368421052632 pvalue = 0.5 significance = -0.0\n", "mH = 102.63157894736842 pvalue = 0.5 significance = -0.0\n", "mH = 105.78947368421052 pvalue = 0.5 significance = -0.0\n", "mH = 108.94736842105263 pvalue = 0.5 significance = -0.0\n", "mH = 112.10526315789474 pvalue = 0.32401875402616814 significance = 0.45649021159963166\n", "mH = 115.26315789473685 pvalue = 0.0022882359758567366 significance = 2.8354252768926704\n", "mH = 118.42105263157895 pvalue = 2.0904408881680056e-06 significance = 4.602181718136187\n", "mH = 121.57894736842105 pvalue = 3.004127529498947e-08 significance = 5.418555315581337\n", "mH = 124.73684210526315 pvalue = 1.2210300884842286e-08 significance = 5.577352983425476\n", "mH = 127.89473684210526 pvalue = 1.1319235530722378e-07 significance = 5.1762544091435325\n", "mH = 131.05263157894737 pvalue = 1.392703182775458e-05 significance = 4.190336848352099\n", "mH = 134.21052631578948 pvalue = 0.0074267354650348 significance = 2.435932135827435\n", "mH = 137.3684210526316 pvalue = 0.4957263154498457 significance = 0.010712743430943401\n", "mH = 140.5263157894737 pvalue = 0.5 significance = -0.0\n", "mH = 143.68421052631578 pvalue = 0.5 significance = -0.0\n", "mH = 146.8421052631579 pvalue = 0.5 significance = -0.0\n", "mH = 150.0 pvalue = 0.5 significance = -0.0\n" ] } ], "source": [ "RooStats.AsymptoticCalculator.SetPrintLevel(-1)\n", "mH_values = np.linspace(mH.getMin(), mH.getMax(), 20)\n", "pvalues, pvalues_exp, zs, qvalues = [], [], [], []\n", "for mH_value in mH_values:\n", " f = ROOT.TFile('ws_shape.root')\n", " ws = f.Get('ws_shape')\n", " mH = ws.var('mH')\n", " mH.setVal(mH_value)\n", " mH.setConstant(True)\n", " data = ws.data('obsData')\n", " #ws.pdf('model').fitTo(data) # better to do a fit before\n", " sbModel = ws.obj('sbModel')\n", " bModel = ws.obj('bModel')\n", " hypoCalc = RooStats.AsymptoticCalculator(data, sbModel, bModel)\n", " hypoCalc.SetOneSidedDiscovery(True)\n", " htr = hypoCalc.GetHypoTest()\n", " print(\"mH = \", mH.getVal(), \"pvalue =\", htr.NullPValue(), \" significance =\", htr.Significance())\n", " pval_exp = RooStats.AsymptoticCalculator.GetExpectedPValues(htr.NullPValue(), htr.AlternatePValue(), 0, False)\n", " pvalues.append(htr.NullPValue()); zs.append(htr.Significance()); pvalues_exp.append(pval_exp)\n", " del hypoCalc\n", " del htr" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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mr51/qZ55p/BgQMHzI4dO5qbN282u3TpYv7pT39yv+ZLP4PTnf+dd95pXnvttWd8jy+dvz/x52u9aep6r+u9rvf+fL3Xtd7zrvUaoW9hdXV12O12QkNDG2wPCwtjxYoVZGVlkZeXx4QJE9yvhYSEcNlll/Htt9+2dbitqjHnmpGRQW1tbYN9UlJSGDBggM/9PE7H386/uLgYwzCIjY0F/Ov8a2pqmDdvHjExMaSlpQH+cf4Oh4M77riDX/ziF/Tv3/+U1/3hZ7B06VISEhLo3bs3P/zhD8nPz3e/5g/n74t0rW9I1/tz87fz1/Xev673utZbe61XQt/CoqKiGDlyJL///e85dOgQdrudN954g1WrVpGbm0teXh4AiYmJDd6XmJjofs1XNOZc8/LyCA4Opl27dmfcx5f50/lXVVXx61//mltvvZXo6GjAP87/k08+ITIyktDQUP70pz+xaNEi4uPjAf84///5n/8hMDCQBx988LSv+/rPYOLEibz55pt89dVX/PGPf2TNmjWMGzeO6upqwPfP31fpWt+Qrvfn5k/nr+u9/13vda239lof2OwjyCn++c9/cs8999CxY0dsNhsXXnght956K+vWrXPvYxhGg/eYpnnKNl/RlHP15Z9HY/ja+dfW1nLzzTfjcDiYO3fuOff3pfMfO3YsmZmZFBYWMn/+fG666SZWrVpFQkLCGd/jK+efkZHBCy+8wLp16877fHzlZzB16lT31wMGDGDo0KF06dKFTz/9lClTppzxfb5y/r5M1/pT6Xp//nzt/HW997/rva711l/rNULfCnr06MGyZcsoKysjJyeH1atXU1tbS7du3UhKSgI45W5Mfn7+KXe2vV1jzjUpKYmamhqOHTt2xn18mT+cf21tLTfddBNZWVksWrTIfbce/OP8IyIi6NmzJyNGjODVV18lMDCQV199FfD98//666/Jz8+nc+fOBAYGEhgYyP79+/n5z39O165dAd//GZwsOTmZLl26sGvXLsD/zt+X6Fp/nK735+YP56/rvX9e73WtP1VbX+uV0LeiiIgIkpOTOXbsGJ9//jnXXnut+0K/aNEi9341NTUsW7aMUaNGWRhty2vMuaanpxMUFNRgn9zcXDZv3uxzP4/T8fXzd13cd+3axeLFi2nfvn2D1339/E/HNE13CZavn/8dd9zBxo0byczMdD9SUlL4xS9+weeffw74/s/gZEeOHCEnJ4fk5GTA/87fF/n7tR50vW8MXz9/Xe9P5S/Xe13rT9XW13qV3LeCzz//HNM06dOnD7t37+YXv/gFffr04e6778YwDGbMmMEzzzxDr1696NWrF8888wzh4eHceuutVod+3srKyti9e7f7eVZWFpmZmcTFxdG5c+dznmtMTAz33nsvP//5z2nfvj1xcXE8/PDDDBw4kPHjx1t1Wo12rvM/evQo2dnZ7rVYd+zYATjv1CUlJfn0+aekpHDjjTeybt06PvnkE+x2u3v0Ji4ujuDgYJ8+//bt2/P0008zefJkkpOTOXLkCHPnzuXAgQN8//vfB7z/3z+c+//AyR/qgoKCSEpKok+fPoD3/wzOdv5xcXE8/vjj3HDDDSQnJ7Nv3z4eeeQR4uPjuf766wHvP39/5k/XetD1Xtd7Xe/9+Xqva72HX+ub3SdfTrFgwQKze/fuZnBwsJmUlGT+5Cc/MYuKityvOxwO83e/+52ZlJRkhoSEmJdeeqm5adMmCyNuuiVLlpjAKY8777zTNM3GnWtlZaX505/+1IyLizPDwsLMa665xszOzrbgbM7fuc7/tddeO+3rv/vd79zH8NXzdy3dc7rHkiVL3Mfw1fOvrKw0r7/+ejMlJcUMDg42k5OTzcmTJ5urV69ucAxvPn/TPPf/gZOdvJSNaXr3z+Bs519RUWFOmDDB7NChgxkUFGR27tzZvPPOO085N28+f3/mT9d609T1Xtd7Xe/9+Xqva71nX+sN0zTN870JICIiIiIiIiLW0hx6ERERERERES+khF5ERERERETECymhFxEREREREfFCSuhFREREREREvJASehEREREREREvpIReRERERERExAspoRcRERERERHxQkroRURERERERLyQEnoRERERERERL6SEXkTa1L59+zAMg8zMzFNeGzNmDDNmzGjzmERERKRl6Xov0jaU0IuIiIiIiIh4ISX0ItIsY8aM4YEHHmDGjBm0a9eOxMRE5s2bR3l5OXfffTdRUVH06NGD//73v1aHKiIiIk2k672IZ1JCLyLN9ve//534+HhWr17NAw88wI9//GO+//3vM2rUKNatW8eVV17JHXfcQUVFhdWhioiISBPpei/ieQzTNE2rgxAR7zVmzBjsdjtff/01AHa7nZiYGKZMmcI//vEPAPLy8khOTua7774jKSmJbt26ERYWRkBAw3uKlZWVPPDAA8yZM6etT0NERETOQtd7Ec8UaHUAIuL9Bg0a5P7aZrPRvn17Bg4c6N6WmJgIQH5+PklJSQAsWLCAfv36NTjObbfd1gbRioiISFPoei/ieZTQi0izBQUFNXhuGEaDbYZhAOBwONzbUlNT6dmzZ4P3hYWFtWKUIiIi0hy63ot4Hs2hFxEREREREfFCSuhFREREREREvJASehEREREREREvpC73IiIiIiIiIl5II/QiIiIiIiIiXkgJvYiIiIiIiIgXUkIvIiIiIiIi4oWU0IuIiIiIiIh4ISX0IiIiIiIiIl5ICb2IiIiIiIiIF1JCLyIiIiIiIuKFlNCLiIiIiIiIeCEl9CIiIiIiIiJeSAm9iIiIiIiIiBdSQi8iIiIiIiLihf4f+2vbPzWJ6rYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 2, figsize=(12, 4))\n", "axs[0].semilogy(mH_values, pvalues, '.-')\n", "axs[0].semilogy(mH_values, pvalues_exp, '--')\n", "axs[1].plot(mH_values, zs, '.-')\n", "axs[0].set_xlabel('mH'); axs[1].set_xlabel('mH')\n", "axs[0].set_ylabel('pvalue'); axs[1].set_ylabel('significance'); plt.show()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Question\n", "Explain why p-value is never bigger than 0.5 (we have used $q_0$ as test statistic)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Look elsewhere effect\n", "\n", "The maximum significance we have found is 5 around 125. Usually this is called \"local significace\", since it is computed for a particular $m_H$. The problem is that we have repeated the test many times and we have to consider that we are taking into account the maximum discrepancy. This is also know as \"problem of multiple comparisons\".\n", "\n", "One can solve this problem redefining the test statistic as:\n", "\n", "$$q_0^{global} = \\max_{m_H} q_0(m_H)$$\n", "\n", "But the distribution of $q_0^{global}$ is unknown. The other solution is to introduce a \"trial factor\" to correct the local-$p_0$ to obtain the global-$p_0$." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "IFrame(\"http://xkcd.com/882/\", 900, 500)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Exclusions\n", "\n", "We are also interested to know what is the minimum $\\mu$ that we can exclude. This is done as hypothesis inversion. We have to find a $\\mu_{95}$ that is exluded at 5%. As before this is done with a simple scan. Let's do it for $m_H=110 GeV$." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = ROOT.TFile('ws_shape.root')\n", "ws = f.Get(\"ws_shape\")\n", "ws.var('mH').setVal(110)\n", "ws.var('mH').setConstant(True)\n", "ws.var('mu').setRange(0, 1)\n", "ws.writeToFile(\"ws_shape_110.root\")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0x5647fca651c0\tws_shape_110.root\n", "Running HypoTestInverter on the workspace ws_shape\n", "\n", "RooWorkspace(ws_shape) ws_shape contents\n", "\n", "variables\n", "---------\n", "(global_efficiency,global_lumi,global_peak,global_width,mH,mass,mu,nbkg,nominal_efficiency,nominal_width,sigma_efficiency,sigma_lumi,sigma_mH,sigma_width,tau,theta_efficiency,theta_lumi,theta_mH,theta_width)\n", "\n", "p.d.f.s\n", "-------\n", "RooExponential::background[ x=mass c=tau ] = 0.0530606\n", "RooGaussian::constrain_eff[ x=global_efficiency mean=theta_efficiency sigma=1 ] = 1\n", "RooGaussian::constrain_lumi[ x=global_lumi mean=theta_lumi sigma=1 ] = 1\n", "RooGaussian::constrain_peak[ x=global_peak mean=theta_mH sigma=1 ] = 1\n", "RooGaussian::constrain_width[ x=global_width mean=theta_width sigma=1 ] = 0.985951\n", "RooProdPdf::constraints[ constrain_peak * constrain_lumi * constrain_width * constrain_eff ] = 0.985951\n", "RooProdPdf::model[ phys_pdf * constraints ] = 0.0523151\n", "RooAddPdf::phys_pdf[ nsignal * signal + nbkg * background ] = 0.0530606/1\n", "RooGaussian::signal[ x=mass mean=peak sigma=width ] = 0.139912\n", "\n", "functions\n", "--------\n", "RooFormulaVar::efficiency[ actualVars=(nominal_efficiency,sigma_efficiency,theta_efficiency) formula=\"x[0]*(1+exp(x[1]*x[2]))\" ] = 1.2\n", "RooFormulaVar::klumi[ actualVars=(sigma_lumi,theta_lumi) formula=\"(1+exp(x[0]*x[1]))\" ] = 2\n", "RooFormulaVar::kpeak[ actualVars=(sigma_mH,theta_mH) formula=\"1+x[0]*x[1]\" ] = 1\n", "RooFormulaVar::kwidth[ actualVars=(sigma_width,theta_width) formula=\"1+x[0]*x[1]\" ] = 1.00841\n", "RooProduct::nsignal[ nsignal_theory * mu * efficiency * klumi ] = 0\n", "RooFormulaVar::nsignal_theory[ actualVars=(mH) formula=\"7+x[0]*0.2\" ] = 29\n", "RooFormulaVar::peak[ actualVars=(mH,kpeak) formula=\"x[0]*x[1]\" ] = 110\n", "RooFormulaVar::width[ actualVars=(nominal_width,kwidth) formula=\"x[0]*x[1]\" ] = 5.04205\n", "\n", "datasets\n", "--------\n", "RooDataSet::obsData(mass)\n", "\n", "parameter snapshots\n", "-------------------\n", "sbModel__snapshot = (mu=0.873254 +/- 0.181186)\n", "bModel__snapshot = (mu=0 +/- 0.181186)\n", "\n", "named sets\n", "----------\n", "bModel__snapshot:(mu)\n", "sbModel_GlobalObservables:(global_peak,global_width,global_lumi,global_efficiency)\n", "sbModel_NuisParams:(theta_mH,theta_width,theta_lumi,theta_efficiency,tau,nbkg)\n", "sbModel_Observables:(mass)\n", "sbModel_POI:(mu)\n", "sbModel__snapshot:(mu)\n", "\n", "generic objects\n", "---------------\n", "RooStats::ModelConfig::sbModel\n", "RooStats::ModelConfig::bModel\n", "\n", "Using data set obsData\n", "StandardHypoTestInvDemo : POI initial value: mu = 0\n", " **********\n", " ** 1 **SET PRINT 0\n", " **********\n", " **********\n", " ** 2 **SET NOGRAD\n", " **********\n", " PARAMETER DEFINITIONS:\n", " NO. NAME VALUE STEP SIZE LIMITS\n", " 1 mu 0.00000e+00 1.81186e-01 0.00000e+00 1.00000e+00\n", " MINUIT WARNING IN PARAM DEF\n", " ============== STARTING VALUE IS AT LIMIT.\n", " MINUIT WARNING IN PARAMETR\n", " ============== VARIABLE1 IS AT ITS LOWER ALLOWED LIMIT.\n", " MINUIT WARNING IN PARAMETR\n", " ============== VARIABLE1 BROUGHT BACK INSIDE LIMITS.\n", " 2 nbkg 4.10348e+02 2.30536e+01 0.00000e+00 1.00000e+03\n", " 3 tau -2.44693e-02 2.57973e-03 -5.00000e-01 -1.00000e-03\n", " 4 theta_efficiency -1.18309e-04 9.93350e-01 -5.00000e+00 5.00000e+00\n", " 5 theta_lumi -1.30614e-04 9.93347e-01 -5.00000e+00 5.00000e+00\n", " 6 theta_mH 8.79067e-05 9.93287e-01 -5.00000e+00 5.00000e+00\n", " 7 theta_width 1.68217e-01 9.82367e-01 -5.00000e+00 5.00000e+00\n", " **********\n", " ** 3 **SET ERR 0.5\n", " **********\n", " **********\n", " ** 4 **SET PRINT 0\n", " **********\n", " **********\n", " ** 5 **SET STR 0\n", " **********\n", " **********\n", " ** 6 **MIGRAD 3500 1\n", " **********\n", " MINUIT WARNING IN MIGrad \n", " ============== VARIABLE1 IS AT ITS LOWER ALLOWED LIMIT.\n", " MIGRAD MINIMIZATION HAS CONVERGED.\n", " FCN=-416.671 FROM MIGRAD STATUS=CONVERGED 152 CALLS 153 TOTAL\n", " EDM=2.29992e-05 STRATEGY= 0 ERROR MATRIX UNCERTAINTY 19.0 per cent\n", " EXT PARAMETER APPROXIMATE STEP FIRST \n", " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", " 1 mu 2.51183e-06 8.00418e-01 -4.43341e-02 9.84311e-04\n", " 2 nbkg 4.77088e+02 2.21312e+01 3.19896e-04 9.17268e-02\n", " 3 tau -1.95183e-02 2.08491e-03 -6.71999e-06 -7.44129e-02\n", " 4 theta_efficiency 7.02347e-05 9.92239e-01 -7.86810e-04 3.51365e-04\n", " 5 theta_lumi 2.08818e-05 9.93156e-01 -3.18490e-04 1.04486e-04\n", " 6 theta_mH -2.18335e-03 9.78387e-01 -1.40182e-03 -1.09281e-02\n", " 7 theta_width -1.73515e-03 1.01189e+00 1.04788e-03 -8.68211e-03\n", " ERR DEF= 0.5\n", "StandardHypoTestInvDemo - Best Fit value : mu = 2.51183e-06 +/- 0.800418\n", "Time for fitting : Real time 0:00:00, CP time 0.010\n", "StandardHypoTestInvo: snapshot of S+B Model sbModel is set to the best fit value\n", "Doing a fixed scan in interval : 0 , 5\n", "Time to perform limit scan \n", "Real time 0:00:00, CP time 0.160\n", "The computed upper limit is: 0.369278 +/- 0\n", "Expected upper limits, using the B (alternate) model : \n", " expected limit (median) 0.369227\n", " expected limit (-1 sig) 0.262796\n", " expected limit (+1 sig) 0.524426\n", " expected limit (-2 sig) 0.194767\n", " expected limit (+2 sig) 0.722169\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Info in : Using Minuit as minimizer for computing the test statistic\n", "Info in : Doing a first fit to the observed data \n", "Info in : HypoTestInverterResult has been written in the file Asym_CLs_grid_ts3_ws_shape_110.root\n" ] } ], "source": [ "ROOT.gROOT.LoadMacro('StandardHypoTestInvDemo.C')\n", "ROOT.StandardHypoTestInvDemo(\"ws_shape_110.root\", \"ws_shape\", \"sbModel\", \"bModel\", \"obsData\", 2, 3, True, 30)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fresult = ROOT.TFile(\"Asym_CLs_grid_ts3_ws_shape_110.root\")\n", "result = fresult.Get(\"result_mu\")\n", "plot = RooStats.HypoTestInverterPlot(\"result\", \"result\", result)\n", "plot.Draw()\n", "ROOT.gPad.Draw()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Example of result you can find around" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Topic not coverted, but important if you want to do hypothesis test in HEP\n", "\n", " * Look elesewhere effect\n", " * CLs\n", " * Asimov dataset" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Last (big) exercize\n", "Redo one of the example where we have use the frequentist calculator, without using it, reimplementing the toy generation and the computation of the test statistic by hand" ] } ], "metadata": { "celltoolbar": "Slideshow", "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 } }, "nbformat": 4, "nbformat_minor": 1 }