Skip to content

Instantly share code, notes, and snippets.

@wiso
Created April 28, 2016 14:47
Show Gist options
  • Save wiso/d84a71b8cb927ae1a3bfbda4f9177113 to your computer and use it in GitHub Desktop.
Save wiso/d84a71b8cb927ae1a3bfbda4f9177113 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import ROOT\n",
"from scipy import stats\n",
"import numpy as np\n",
"from IPython.display import SVG\n",
"import re\n",
"from matplotlib import pylab as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define three categories with different fraction of signal and background"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ksigs = ksig1, ksig2, ksig3 = 0.7, 0.2, 0.1 # signal partitioning in 3 categories\n",
"kbkgs = kbkg1, kbkg2, kbkg3 = 0.3, 0.3, 0.4 # background partitioning in 3 categories"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<ROOT.RooRealVar object (\"kbkg3\") at 0x62dea30>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"signal_xsec_inc = 20 # inclusive signal xsection\n",
"bkg_xsec_inc = 4000 # inclusive bkg xsection\n",
"lumi = 3 # luminosity\n",
"\n",
"# load constants into ws\n",
"ws = ROOT.RooWorkspace('ws')\n",
"ws.factory('M[750, 300, 3400]')\n",
"ws.var(\"M\").setVal(750)\n",
"ws.var(\"M\").setConstant(True)\n",
"mgg = ws.factory('mgg[200, 3500]')\n",
"ws.factory(\"lumi[%f]\" % lumi)\n",
"ws.factory(\"signal_xsec[%f]\" % (signal_xsec_inc))\n",
"ws.factory(\"bkg_xsec[%f]\" % (bkg_xsec_inc))\n",
"ws.factory(\"ksig1[%f]\" % ksig1)\n",
"ws.factory(\"ksig2[%f]\" % ksig2)\n",
"ws.factory(\"ksig3[%f]\" % ksig3)\n",
"ws.factory(\"kbkg1[%f]\" % kbkg1)\n",
"ws.factory(\"kbkg2[%f]\" % kbkg2)\n",
"ws.factory(\"kbkg3[%f]\" % kbkg3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## $s / \\sqrt{b}$ in the whole range"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"s/sqrt(b) inclusive\n",
"0.547722557505\n",
"s/sqrt(b) per categories\n",
"[ 0.7 0.2 0.08660254]\n"
]
}
],
"source": [
"s = np.array([ksig1, ksig2, ksig3]) * signal_xsec_inc * lumi\n",
"b = np.array([kbkg1, kbkg2, kbkg3]) * bkg_xsec_inc * lumi\n",
"s_over_sqrtb = s / np.sqrt(b)\n",
"\n",
"print \"s/sqrt(b) inclusive\"\n",
"print np.sum(s) / np.sqrt(np.sum(b))\n",
"print \"s/sqrt(b) per categories\"\n",
"print s_over_sqrtb"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create the model for one category (inclusive)\n",
"\n",
"$$\\text{Pois}(n_s+n_b|N_s+N_b)\\frac{N_s f_s + N_b f_b}{N_s + N_b}$$\n",
"\n",
"$$N_s = L\\sigma_s$$\n",
"$$N_b = L\\sigma_b$$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bkg = ws.factory(\"RooChebychev:bkg(mgg, {a[-0.5, -10, 10], b[0.1, -10, 10]})\")\n",
"sig = ws.factory(\"RooGaussian:sig(mgg, M, sigma[50])\")\n",
"ws.factory(\"prod:Nsig(lumi, signal_xsec)\")\n",
"ws.factory(\"prod:Nbkg(lumi, bkg_xsec)\")\n",
"model = ws.factory(\"SUM:model(Nsig * sig, Nbkg * bkg)\")\n",
"ws.saveSnapshot('prefit', ws.allVars())"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg height=\"\" viewBox=\"0.00 0.00 1085.00 242.00\" width=\"90%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 238)\">\n",
"<title>model</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-238 1081,-238 1081,4 -4,4\" stroke=\"white\"/>\n",
"<!-- model -->\n",
"<g class=\"node\" id=\"node1\"><title>model</title>\n",
"<ellipse cx=\"645\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"645\" y=\"-210.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"645\" y=\"-195.8\">model</text>\n",
"</g>\n",
"<!-- sig -->\n",
"<g class=\"node\" id=\"node2\"><title>sig</title>\n",
"<ellipse cx=\"295\" cy=\"-117\" fill=\"none\" rx=\"62.3993\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"295\" y=\"-120.8\">RooGaussian</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"295\" y=\"-105.8\">sig</text>\n",
"</g>\n",
"<!-- model&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge8\"><title>model-&gt;sig</title>\n",
"<path d=\"M595.225,-193.485C532.806,-177.791 425.753,-150.875 357.775,-133.784\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"358.591,-130.38 348.039,-131.336 356.884,-137.168 358.591,-130.38\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig -->\n",
"<g class=\"node\" id=\"node6\"><title>Nsig</title>\n",
"<ellipse cx=\"744\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"744\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"744\" y=\"-105.8\">Nsig</text>\n",
"</g>\n",
"<!-- model&#45;&gt;Nsig -->\n",
"<g class=\"edge\" id=\"edge10\"><title>model-&gt;Nsig</title>\n",
"<path d=\"M671.011,-182.879C683.061,-172.168 697.53,-159.307 710.395,-147.871\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"713.014,-150.226 718.163,-140.967 708.363,-144.994 713.014,-150.226\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg -->\n",
"<g class=\"node\" id=\"node9\"><title>bkg</title>\n",
"<ellipse cx=\"508\" cy=\"-117\" fill=\"none\" rx=\"70.5656\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"508\" y=\"-120.8\">RooChebychev</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"508\" y=\"-105.8\">bkg</text>\n",
"</g>\n",
"<!-- model&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge7\"><title>model-&gt;bkg</title>\n",
"<path d=\"M612.185,-184.922C593.981,-173.228 571.111,-158.538 551.439,-145.903\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"553.247,-142.904 542.942,-140.444 549.464,-148.794 553.247,-142.904\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg -->\n",
"<g class=\"node\" id=\"node12\"><title>Nbkg</title>\n",
"<ellipse cx=\"881\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"881\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"881\" y=\"-105.8\">Nbkg</text>\n",
"</g>\n",
"<!-- model&#45;&gt;Nbkg -->\n",
"<g class=\"edge\" id=\"edge9\"><title>model-&gt;Nbkg</title>\n",
"<path d=\"M688.837,-189.654C728.039,-175.036 785.607,-153.57 827.508,-137.946\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"828.851,-141.181 836.998,-134.407 826.406,-134.622 828.851,-141.181\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- mgg -->\n",
"<g class=\"node\" id=\"node3\"><title>mgg</title>\n",
"<ellipse cx=\"333\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"333\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"333\" y=\"-15.8\">mgg</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;mgg -->\n",
"<g class=\"edge\" id=\"edge5\"><title>sig-&gt;mgg</title>\n",
"<path d=\"M305.991,-90.5468C309.7,-81.957 313.908,-72.2129 317.88,-63.0159\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"321.151,-64.2691 321.902,-53.7009 314.724,-61.494 321.151,-64.2691\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- M -->\n",
"<g class=\"node\" id=\"node4\"><title>M</title>\n",
"<ellipse cx=\"59\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"59\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"59\" y=\"-15.8\">M</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;M -->\n",
"<g class=\"edge\" id=\"edge4\"><title>sig-&gt;M</title>\n",
"<path d=\"M248.546,-98.8225C215.026,-86.4111 168.698,-69.2225 128,-54 123.178,-52.1963 118.168,-50.3176 113.148,-48.432\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"114.121,-45.0588 103.529,-44.8153 111.657,-51.6109 114.121,-45.0588\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- sigma -->\n",
"<g class=\"node\" id=\"node5\"><title>sigma</title>\n",
"<ellipse cx=\"196\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"196\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"196\" y=\"-15.8\">sigma</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;sigma -->\n",
"<g class=\"edge\" id=\"edge6\"><title>sig-&gt;sigma</title>\n",
"<path d=\"M268.47,-92.4176C256.612,-81.8774 242.495,-69.3285 229.884,-58.1189\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"232.06,-55.3701 222.26,-51.3423 227.409,-60.6019 232.06,-55.3701\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- lumi -->\n",
"<g class=\"node\" id=\"node7\"><title>lumi</title>\n",
"<ellipse cx=\"881\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"881\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"881\" y=\"-15.8\">lumi</text>\n",
"</g>\n",
"<!-- Nsig&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge14\"><title>Nsig-&gt;lumi</title>\n",
"<path d=\"M776.815,-94.9218C795.433,-82.9627 818.931,-67.8691 838.897,-55.0444\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"840.979,-57.8669 847.501,-49.5175 837.196,-51.9772 840.979,-57.8669\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec -->\n",
"<g class=\"node\" id=\"node8\"><title>signal_xsec</title>\n",
"<ellipse cx=\"744\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"744\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"744\" y=\"-15.8\">signal_xsec</text>\n",
"</g>\n",
"<!-- Nsig&#45;&gt;signal_xsec -->\n",
"<g class=\"edge\" id=\"edge13\"><title>Nsig-&gt;signal_xsec</title>\n",
"<path d=\"M744,-90.0731C744,-81.9993 744,-72.9428 744,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"747.5,-64.0457 744,-54.0457 740.5,-64.0458 747.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg&#45;&gt;mgg -->\n",
"<g class=\"edge\" id=\"edge1\"><title>bkg-&gt;mgg</title>\n",
"<path d=\"M466.527,-95.1452C440.85,-82.2331 407.78,-65.6034 380.975,-52.1244\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"382.284,-48.865 371.777,-47.4993 379.139,-55.1189 382.284,-48.865\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- a -->\n",
"<g class=\"node\" id=\"node10\"><title>a</title>\n",
"<ellipse cx=\"607\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"607\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"607\" y=\"-15.8\">a</text>\n",
"</g>\n",
"<!-- bkg&#45;&gt;a -->\n",
"<g class=\"edge\" id=\"edge3\"><title>bkg-&gt;a</title>\n",
"<path d=\"M535.052,-91.9536C546.81,-81.5023 560.711,-69.1454 573.145,-58.0932\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"575.516,-60.6687 580.665,-51.409 570.865,-55.4368 575.516,-60.6687\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- b -->\n",
"<g class=\"node\" id=\"node11\"><title>b</title>\n",
"<ellipse cx=\"470\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"470\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"470\" y=\"-15.8\">b</text>\n",
"</g>\n",
"<!-- bkg&#45;&gt;b -->\n",
"<g class=\"edge\" id=\"edge2\"><title>bkg-&gt;b</title>\n",
"<path d=\"M496.804,-90.0731C493.1,-81.4939 488.916,-71.8051 484.974,-62.6774\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"488.162,-61.2316 480.985,-53.4385 481.736,-64.0067 488.162,-61.2316\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge11\"><title>Nbkg-&gt;lumi</title>\n",
"<path d=\"M881,-90.0731C881,-81.9993 881,-72.9428 881,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"884.5,-64.0457 881,-54.0457 877.5,-64.0458 884.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec -->\n",
"<g class=\"node\" id=\"node13\"><title>bkg_xsec</title>\n",
"<ellipse cx=\"1018\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1018\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1018\" y=\"-15.8\">bkg_xsec</text>\n",
"</g>\n",
"<!-- Nbkg&#45;&gt;bkg_xsec -->\n",
"<g class=\"edge\" id=\"edge12\"><title>Nbkg-&gt;bkg_xsec</title>\n",
"<path d=\"M913.815,-94.9218C932.433,-82.9627 955.931,-67.8691 975.897,-55.0444\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"977.979,-57.8669 984.501,-49.5175 974.196,-51.9772 977.979,-57.8669\" stroke=\"black\"/>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.graphVizTree(\"model.dot\")\n",
"!dot -Tsvg model.dot > model.svg; rm model.dot\n",
"s = SVG(\"model.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": "markdown",
"metadata": {},
"source": [
"## Expected significances"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def compute_qvalue(ws, model, pois, data):\n",
" frame = mgg.frame()\n",
" data.plotOn(frame)\n",
" \n",
" old_values = {k: ws.var(k).getVal() for k in pois}\n",
" set_pois = ROOT.RooArgSet(*(ws.var(k) for k in pois))\n",
" # compute alternative qvalue\n",
" r_alt = model.fitTo(data, ROOT.RooFit.Save())\n",
" nll_alt = r_alt.minNll()\n",
"\n",
" model.plotOn(frame, ROOT.RooFit.LineColor(ROOT.kRed))\n",
" \n",
" for k, v in pois.iteritems():\n",
" ws.var(k).setVal(v)\n",
" ws.var(k).setConstant(True)\n",
" \n",
" r_null = model.fitTo(data, ROOT.RooFit.Save())\n",
" nll_zero = r_null.minNll()\n",
" \n",
" model.plotOn(frame, ROOT.RooFit.LineColor(ROOT.kBlue))\n",
" \n",
" for k, v in old_values.iteritems():\n",
" ws.var(k).setVal(v)\n",
" ws.var(k).setConstant(False) \n",
" \n",
" t = 2 * (nll_zero - nll_alt)\n",
" frame.Draw()\n",
" return t"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Inclusive Asimov dataset"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"12059.9172414\n"
]
}
],
"source": [
"ws.loadSnapshot('prefit')\n",
"data_inclusive = model.generate(ROOT.RooArgSet(mgg), ROOT.RooFit.ExpectedData())\n",
"print data_inclusive.sumEntries()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Inclusive expected significance\n",
"\n",
"Null hypothesis: $\\sigma = 0$\n",
"\n",
"$$q = -2\\log \\frac{L(\\sigma=0)}{L(\\hat\\sigma)}\\quad \\text{with } \\hat\\sigma \\geq 0$$\n",
"$$f(q) = \\frac{1}{2}\\delta(q) + \\frac{1}{2}\\chi^2(q)$$\n",
"$$\\text{p-value} = \\int_{q_{obs}}^\\infty f(q) dq = \\frac{1}{2}\\int_{q_{obs}}^\\infty \\chi^2(q) dq$$\n",
"$$z = 1 - \\phi^{-1}(p)$$"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.93095194839\n"
]
}
],
"source": [
"qvalue = compute_qvalue(ws, model, {'signal_xsec': 0}, data_inclusive)\n",
"pvalue = stats.chi2(1).sf(qvalue) / 2. # sf -> survival function\n",
"zvalue_inclusive = stats.norm().isf(pvalue) # inverse survival function\n",
"print zvalue_inclusive"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Per categories"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2.4252775819727441, 0.70848868283284172, 0.30916495429276014]\n"
]
}
],
"source": [
"zvalues_cat = []\n",
"for icat in range(1, 3 + 1):\n",
" ws.loadSnapshot('prefit')\n",
" ws.var(\"signal_xsec\").setVal(signal_xsec_inc * ksigs[icat - 1])\n",
" ws.var(\"bkg_xsec\").setVal(bkg_xsec_inc * kbkgs[icat - 1])\n",
" data_cat = model.generate(ROOT.RooArgSet(mgg), ROOT.RooFit.ExpectedData())\n",
" qvalue = compute_qvalue(ws, model, {'signal_xsec': 0}, data_cat)\n",
" pvalue = stats.chi2(1).sf(qvalue) / 2.\n",
" zvalue_cat = stats.norm(0, 1).isf(pvalue) \n",
" zvalues_cat += [zvalue_cat]\n",
"print zvalues_cat"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The first category alone has a better expected significance than the inclusive one"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create model with categories\n",
"### Uncorrelated background and signal yield\n",
"\n",
"$$\\sigma_{s,1}, \\sigma_{s,2}, \\sigma_{s,3}$$\n",
"$$\\sigma_{b,1}, \\sigma_{b,2}, \\sigma_{b,3}$$"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"cat = ws.factory(\"cat[cat1=1, cat2=2, cat3=3]\")\n",
"model_sim_uncorr = ws.factory(\"SIMCLONE:model_sim_uncorr(model, $SplitParam({signal_xsec, bkg_xsec}, cat))\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg height=\"\" viewBox=\"0.00 0.00 1794.00 332.00\" width=\"90%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 328)\">\n",
"<title>model_sim_uncorr</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-328 1790,-328 1790,4 -4,4\" stroke=\"white\"/>\n",
"<!-- model_sim_uncorr -->\n",
"<g class=\"node\" id=\"node1\"><title>model_sim_uncorr</title>\n",
"<ellipse cx=\"1039\" cy=\"-297\" fill=\"none\" rx=\"84.2802\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1039\" y=\"-300.8\">RooSimultaneous</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1039\" y=\"-285.8\">model_sim_uncorr</text>\n",
"</g>\n",
"<!-- model_cat1 -->\n",
"<g class=\"node\" id=\"node2\"><title>model_cat1</title>\n",
"<ellipse cx=\"840\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"840\" y=\"-210.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"840\" y=\"-195.8\">model_cat1</text>\n",
"</g>\n",
"<!-- model_sim_uncorr&#45;&gt;model_cat1 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>model_sim_uncorr-&gt;model_cat1</title>\n",
"<path d=\"M991.081,-274.81C960.543,-261.306 921.045,-243.839 890.094,-230.152\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"891.344,-226.878 880.782,-226.034 888.512,-233.28 891.344,-226.878\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat2 -->\n",
"<g class=\"node\" id=\"node15\"><title>model_cat2</title>\n",
"<ellipse cx=\"973\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"973\" y=\"-210.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"973\" y=\"-195.8\">model_cat2</text>\n",
"</g>\n",
"<!-- model_sim_uncorr&#45;&gt;model_cat2 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>model_sim_uncorr-&gt;model_cat2</title>\n",
"<path d=\"M1019.91,-270.547C1012.89,-261.188 1004.84,-250.458 997.419,-240.559\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1000.17,-238.387 991.365,-232.487 994.566,-242.587 1000.17,-238.387\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat3 -->\n",
"<g class=\"node\" id=\"node20\"><title>model_cat3</title>\n",
"<ellipse cx=\"1106\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1106\" y=\"-210.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1106\" y=\"-195.8\">model_cat3</text>\n",
"</g>\n",
"<!-- model_sim_uncorr&#45;&gt;model_cat3 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>model_sim_uncorr-&gt;model_cat3</title>\n",
"<path d=\"M1058.38,-270.547C1065.5,-261.188 1073.67,-250.458 1081.21,-240.559\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1084.08,-242.564 1087.36,-232.487 1078.51,-238.324 1084.08,-242.564\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- cat -->\n",
"<g class=\"node\" id=\"node25\"><title>cat</title>\n",
"<ellipse cx=\"1244\" cy=\"-207\" fill=\"none\" rx=\"62.3993\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1244\" y=\"-210.8\">RooCategory</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1244\" y=\"-195.8\">cat</text>\n",
"</g>\n",
"<!-- model_sim_uncorr&#45;&gt;cat -->\n",
"<g class=\"edge\" id=\"edge7\"><title>model_sim_uncorr-&gt;cat</title>\n",
"<path d=\"M1087.84,-275.034C1118.97,-261.673 1159.28,-244.366 1191.15,-230.685\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1192.95,-233.725 1200.75,-226.564 1190.18,-227.292 1192.95,-233.725\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat1 -->\n",
"<g class=\"node\" id=\"node3\"><title>Nsig_cat1</title>\n",
"<ellipse cx=\"322\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"322\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"322\" y=\"-105.8\">Nsig_cat1</text>\n",
"</g>\n",
"<!-- model_cat1&#45;&gt;Nsig_cat1 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>model_cat1-&gt;Nsig_cat1</title>\n",
"<path d=\"M783.64,-202.493C697.454,-196.184 528.25,-180.06 389,-144 383.716,-142.632 378.281,-140.971 372.901,-139.159\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"373.916,-135.806 363.321,-135.764 371.577,-142.404 373.916,-135.806\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat1 -->\n",
"<g class=\"node\" id=\"node6\"><title>Nbkg_cat1</title>\n",
"<ellipse cx=\"455\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"455\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"455\" y=\"-105.8\">Nbkg_cat1</text>\n",
"</g>\n",
"<!-- model_cat1&#45;&gt;Nbkg_cat1 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>model_cat1-&gt;Nbkg_cat1</title>\n",
"<path d=\"M785.571,-198.402C721.686,-188.795 612.916,-170.277 522,-144 516.831,-142.506 511.502,-140.777 506.214,-138.936\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"507.377,-135.635 496.782,-135.525 504.996,-142.217 507.377,-135.635\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- sig -->\n",
"<g class=\"node\" id=\"node8\"><title>sig</title>\n",
"<ellipse cx=\"1392\" cy=\"-117\" fill=\"none\" rx=\"62.3993\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1392\" y=\"-120.8\">RooGaussian</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1392\" y=\"-105.8\">sig</text>\n",
"</g>\n",
"<!-- model_cat1&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge12\"><title>model_cat1-&gt;sig</title>\n",
"<path d=\"M880.904,-188.138C889.398,-184.996 898.387,-182.073 907,-180 1059.46,-143.305 1102.87,-166.958 1258,-144 1280.57,-140.66 1305.11,-136.156 1326.95,-131.836\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1327.66,-135.263 1336.77,-129.868 1326.28,-128.399 1327.66,-135.263\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg -->\n",
"<g class=\"node\" id=\"node12\"><title>bkg</title>\n",
"<ellipse cx=\"1179\" cy=\"-117\" fill=\"none\" rx=\"70.5656\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1179\" y=\"-120.8\">RooChebychev</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1179\" y=\"-105.8\">bkg</text>\n",
"</g>\n",
"<!-- model_cat1&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge11\"><title>model_cat1-&gt;bkg</title>\n",
"<path d=\"M881.769,-188.427C890.037,-185.338 898.721,-182.361 907,-180 990.493,-156.194 1014.87,-165.462 1099,-144 1105.22,-142.413 1111.67,-140.604 1118.07,-138.696\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1119.54,-141.908 1128.07,-135.634 1117.49,-135.215 1119.54,-141.908\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cat1 -->\n",
"<g class=\"node\" id=\"node4\"><title>signal_xsec_cat1</title>\n",
"<ellipse cx=\"77\" cy=\"-27\" fill=\"none\" rx=\"77.112\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"77\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"77\" y=\"-15.8\">signal_xsec_cat1</text>\n",
"</g>\n",
"<!-- Nsig_cat1&#45;&gt;signal_xsec_cat1 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>Nsig_cat1-&gt;signal_xsec_cat1</title>\n",
"<path d=\"M277.632,-100.064C238.916,-86.1576 182.329,-65.8326 139.114,-50.3103\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"140.146,-46.9622 129.552,-46.8757 137.78,-53.5501 140.146,-46.9622\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- lumi -->\n",
"<g class=\"node\" id=\"node5\"><title>lumi</title>\n",
"<ellipse cx=\"559\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"559\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"559\" y=\"-15.8\">lumi</text>\n",
"</g>\n",
"<!-- Nsig_cat1&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge15\"><title>Nsig_cat1-&gt;lumi</title>\n",
"<path d=\"M364.816,-99.1585C372.836,-96.0683 381.161,-92.9036 389,-90 434.081,-73.302 445.878,-70.5859 491,-54 495.578,-52.3171 500.322,-50.5507 505.076,-48.7642\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"506.685,-51.898 514.802,-45.0893 504.211,-45.3498 506.685,-51.898\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat1&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge17\"><title>Nbkg_cat1-&gt;lumi</title>\n",
"<path d=\"M482.053,-93.1088C494.832,-82.2958 510.245,-69.2538 523.91,-57.6912\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"526.348,-60.2136 531.721,-51.0823 521.826,-54.8699 526.348,-60.2136\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec_cat1 -->\n",
"<g class=\"node\" id=\"node7\"><title>bkg_xsec_cat1</title>\n",
"<ellipse cx=\"241\" cy=\"-27\" fill=\"none\" rx=\"68.3838\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"241\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"241\" y=\"-15.8\">bkg_xsec_cat1</text>\n",
"</g>\n",
"<!-- Nbkg_cat1&#45;&gt;bkg_xsec_cat1 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>Nbkg_cat1-&gt;bkg_xsec_cat1</title>\n",
"<path d=\"M412.976,-98.719C379.678,-85.0264 332.869,-65.7777 296.491,-50.8188\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"297.586,-47.4845 287.006,-46.9183 294.923,-53.9585 297.586,-47.4845\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- mgg -->\n",
"<g class=\"node\" id=\"node9\"><title>mgg</title>\n",
"<ellipse cx=\"1453\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1453\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1453\" y=\"-15.8\">mgg</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;mgg -->\n",
"<g class=\"edge\" id=\"edge5\"><title>sig-&gt;mgg</title>\n",
"<path d=\"M1409.32,-91.0181C1415.75,-81.743 1423.14,-71.0718 1430,-61.1787\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1433.03,-62.9523 1435.85,-52.7398 1427.28,-58.9644 1433.03,-62.9523\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- M -->\n",
"<g class=\"node\" id=\"node10\"><title>M</title>\n",
"<ellipse cx=\"1590\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1590\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1590\" y=\"-15.8\">M</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;M -->\n",
"<g class=\"edge\" id=\"edge4\"><title>sig-&gt;M</title>\n",
"<path d=\"M1434.48,-97.1218C1465.19,-83.4701 1506.83,-64.9663 1539.29,-50.5392\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1540.9,-53.6543 1548.61,-46.3945 1538.05,-47.2576 1540.9,-53.6543\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- sigma -->\n",
"<g class=\"node\" id=\"node11\"><title>sigma</title>\n",
"<ellipse cx=\"1727\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1727\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1727\" y=\"-15.8\">sigma</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;sigma -->\n",
"<g class=\"edge\" id=\"edge6\"><title>sig-&gt;sigma</title>\n",
"<path d=\"M1448.1,-105.161C1502.32,-94.1593 1586.54,-75.6905 1658,-54 1663.21,-52.4199 1668.59,-50.6478 1673.94,-48.7911\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1675.25,-52.0375 1683.5,-45.3808 1672.9,-45.4446 1675.25,-52.0375\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg&#45;&gt;mgg -->\n",
"<g class=\"edge\" id=\"edge1\"><title>bkg-&gt;mgg</title>\n",
"<path d=\"M1234.57,-100.282C1275.99,-88.3028 1333.82,-71.0202 1384,-54 1389.08,-52.278 1394.34,-50.4237 1399.59,-48.5265\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1400.8,-51.8103 1408.99,-45.0843 1398.39,-45.2374 1400.8,-51.8103\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- a -->\n",
"<g class=\"node\" id=\"node13\"><title>a</title>\n",
"<ellipse cx=\"1179\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1179\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1179\" y=\"-15.8\">a</text>\n",
"</g>\n",
"<!-- bkg&#45;&gt;a -->\n",
"<g class=\"edge\" id=\"edge3\"><title>bkg-&gt;a</title>\n",
"<path d=\"M1179,-90.0731C1179,-81.9993 1179,-72.9428 1179,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1182.5,-64.0457 1179,-54.0457 1175.5,-64.0458 1182.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- b -->\n",
"<g class=\"node\" id=\"node14\"><title>b</title>\n",
"<ellipse cx=\"1316\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1316\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1316\" y=\"-15.8\">b</text>\n",
"</g>\n",
"<!-- bkg&#45;&gt;b -->\n",
"<g class=\"edge\" id=\"edge2\"><title>bkg-&gt;b</title>\n",
"<path d=\"M1213.93,-93.5662C1232.21,-81.8199 1254.74,-67.3492 1273.98,-54.9932\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1276.03,-57.8317 1282.56,-49.4824 1272.25,-51.9421 1276.03,-57.8317\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat2&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge20\"><title>model_cat2-&gt;sig</title>\n",
"<path d=\"M1014.37,-188.417C1022.75,-185.291 1031.58,-182.304 1040,-180 1134.72,-154.099 1161.34,-161.354 1258,-144 1280.15,-140.023 1304.3,-135.419 1325.93,-131.2\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1326.86,-134.586 1336,-129.229 1325.51,-127.716 1326.86,-134.586\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat2&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge19\"><title>model_cat2-&gt;bkg</title>\n",
"<path d=\"M1014.69,-188.192C1046.07,-174.787 1089.38,-156.283 1123.66,-141.639\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1125.25,-144.766 1133.07,-137.619 1122.5,-138.329 1125.25,-144.766\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat2 -->\n",
"<g class=\"node\" id=\"node16\"><title>Nsig_cat2</title>\n",
"<ellipse cx=\"588\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"588\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"588\" y=\"-105.8\">Nsig_cat2</text>\n",
"</g>\n",
"<!-- model_cat2&#45;&gt;Nsig_cat2 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>model_cat2-&gt;Nsig_cat2</title>\n",
"<path d=\"M931.669,-188.275C923.286,-185.161 914.449,-182.214 906,-180 796.985,-151.43 764.015,-172.57 655,-144 649.72,-142.616 644.287,-140.946 638.909,-139.128\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"639.926,-135.775 629.331,-135.725 637.582,-142.371 639.926,-135.775\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat2 -->\n",
"<g class=\"node\" id=\"node18\"><title>Nbkg_cat2</title>\n",
"<ellipse cx=\"721\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"721\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"721\" y=\"-105.8\">Nbkg_cat2</text>\n",
"</g>\n",
"<!-- model_cat2&#45;&gt;Nbkg_cat2 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>model_cat2-&gt;Nbkg_cat2</title>\n",
"<path d=\"M930.221,-189.056C922.198,-185.976 913.862,-182.841 906,-180 862.865,-164.412 813.606,-147.969 776.768,-135.936\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"777.796,-132.59 767.204,-132.82 775.627,-139.246 777.796,-132.59\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat2&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge23\"><title>Nsig_cat2-&gt;lumi</title>\n",
"<path d=\"M579.456,-90.0731C576.712,-81.7481 573.625,-72.3785 570.696,-63.4905\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"573.937,-62.1437 567.483,-53.7416 567.289,-64.3347 573.937,-62.1437\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cat2 -->\n",
"<g class=\"node\" id=\"node17\"><title>signal_xsec_cat2</title>\n",
"<ellipse cx=\"405\" cy=\"-27\" fill=\"none\" rx=\"77.112\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"405\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"405\" y=\"-15.8\">signal_xsec_cat2</text>\n",
"</g>\n",
"<!-- Nsig_cat2&#45;&gt;signal_xsec_cat2 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>Nsig_cat2-&gt;signal_xsec_cat2</title>\n",
"<path d=\"M548.742,-97.1218C522.302,-84.4076 487.11,-67.4847 458.166,-53.5661\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"459.536,-50.3412 449.007,-49.1617 456.502,-56.6498 459.536,-50.3412\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat2&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge25\"><title>Nbkg_cat2-&gt;lumi</title>\n",
"<path d=\"M684.644,-96.2511C661.131,-83.4787 630.32,-66.7416 605.094,-53.0385\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"606.534,-49.8381 596.076,-48.1403 603.193,-55.9892 606.534,-49.8381\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec_cat2 -->\n",
"<g class=\"node\" id=\"node19\"><title>bkg_xsec_cat2</title>\n",
"<ellipse cx=\"705\" cy=\"-27\" fill=\"none\" rx=\"68.3838\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"705\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"705\" y=\"-15.8\">bkg_xsec_cat2</text>\n",
"</g>\n",
"<!-- Nbkg_cat2&#45;&gt;bkg_xsec_cat2 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>Nbkg_cat2-&gt;bkg_xsec_cat2</title>\n",
"<path d=\"M716.286,-90.0731C714.802,-81.9105 713.135,-72.7436 711.547,-64.0112\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"714.968,-63.2583 709.736,-54.0457 708.081,-64.5105 714.968,-63.2583\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat3&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge28\"><title>model_cat3-&gt;sig</title>\n",
"<path d=\"M1148.02,-188.719C1155.93,-185.671 1164.18,-182.635 1172,-180 1224.44,-162.331 1285.03,-145.514 1329.33,-133.864\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1330.3,-137.228 1339.09,-131.311 1328.53,-130.455 1330.3,-137.228\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat3&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge27\"><title>model_cat3-&gt;bkg</title>\n",
"<path d=\"M1126.33,-181.487C1134.19,-172.017 1143.3,-161.037 1151.71,-150.898\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1154.58,-152.924 1158.27,-142.993 1149.19,-148.455 1154.58,-152.924\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat3 -->\n",
"<g class=\"node\" id=\"node21\"><title>Nsig_cat3</title>\n",
"<ellipse cx=\"869\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"869\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"869\" y=\"-105.8\">Nsig_cat3</text>\n",
"</g>\n",
"<!-- model_cat3&#45;&gt;Nsig_cat3 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>model_cat3-&gt;Nsig_cat3</title>\n",
"<path d=\"M1062.8,-189.087C1054.89,-186.034 1046.71,-182.9 1039,-180 1000.33,-165.447 956.526,-149.484 923.067,-137.4\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"924.071,-134.041 913.476,-133.94 921.695,-140.625 924.071,-134.041\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat3 -->\n",
"<g class=\"node\" id=\"node23\"><title>Nbkg_cat3</title>\n",
"<ellipse cx=\"1033\" cy=\"-117\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1033\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1033\" y=\"-105.8\">Nbkg_cat3</text>\n",
"</g>\n",
"<!-- model_cat3&#45;&gt;Nbkg_cat3 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>model_cat3-&gt;Nbkg_cat3</title>\n",
"<path d=\"M1085.67,-181.487C1077.6,-171.761 1068.21,-160.442 1059.61,-150.079\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1062.3,-147.843 1053.23,-142.381 1056.92,-152.313 1062.3,-147.843\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat3&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge31\"><title>Nsig_cat3-&gt;lumi</title>\n",
"<path d=\"M823.234,-100.726C811.483,-97.0145 798.822,-93.1977 787,-90 716.64,-70.9674 696.777,-75.0702 627,-54 622.06,-52.5083 616.966,-50.8311 611.893,-49.0655\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"612.803,-45.6736 602.209,-45.5867 610.437,-52.2614 612.803,-45.6736\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cat3 -->\n",
"<g class=\"node\" id=\"node22\"><title>signal_xsec_cat3</title>\n",
"<ellipse cx=\"869\" cy=\"-27\" fill=\"none\" rx=\"77.112\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"869\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"869\" y=\"-15.8\">signal_xsec_cat3</text>\n",
"</g>\n",
"<!-- Nsig_cat3&#45;&gt;signal_xsec_cat3 -->\n",
"<g class=\"edge\" id=\"edge32\"><title>Nsig_cat3-&gt;signal_xsec_cat3</title>\n",
"<path d=\"M869,-90.0731C869,-81.9993 869,-72.9428 869,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"872.5,-64.0457 869,-54.0457 865.5,-64.0458 872.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat3&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge33\"><title>Nbkg_cat3-&gt;lumi</title>\n",
"<path d=\"M985.462,-101.925C969.533,-97.6008 951.601,-93.1556 935,-90 799.604,-64.2632 760.845,-86.8645 627,-54 621.707,-52.7003 616.267,-51.1006 610.881,-49.3389\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"611.88,-45.9814 601.286,-46.0228 609.594,-52.5974 611.88,-45.9814\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec_cat3 -->\n",
"<g class=\"node\" id=\"node24\"><title>bkg_xsec_cat3</title>\n",
"<ellipse cx=\"1033\" cy=\"-27\" fill=\"none\" rx=\"68.3838\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1033\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1033\" y=\"-15.8\">bkg_xsec_cat3</text>\n",
"</g>\n",
"<!-- Nbkg_cat3&#45;&gt;bkg_xsec_cat3 -->\n",
"<g class=\"edge\" id=\"edge34\"><title>Nbkg_cat3-&gt;bkg_xsec_cat3</title>\n",
"<path d=\"M1033,-90.0731C1033,-81.9993 1033,-72.9428 1033,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1036.5,-64.0457 1033,-54.0457 1029.5,-64.0458 1036.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_sim_uncorr.graphVizTree(\"model_sim_uncorr.dot\")\n",
"!dot -Tsvg model_sim_uncorr.dot > model_sim_uncorr.svg; rm model_sim_uncorr.dot\n",
"s = SVG(\"model_sim_uncorr.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": "markdown",
"metadata": {},
"source": [
"### Correlate signal, uncorrelate background"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\\sigma_{s,1} = \\sigma_s k_{s,1}\\qquad\\sigma_{s,2} = \\sigma_s k_{s,2}\\qquad\\sigma_{s,3} = \\sigma_s k_{s,3}$$\n",
"$$\\sigma_{b,1}, \\sigma_{b,2}, \\sigma_{b,3}$$\n",
"with $k_{s, 1}, k_{s, 2}, k_{s, 3}$ fixed"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"model_sim_corr = ws.factory(\"EDIT:model_sim_corr(model_sim_uncorr, signal_xsec_cat1=prod:signal_xsec_cor1(signal_xsec, ksig1), \\\n",
" signal_xsec_cat2=prod:signal_xsec_cor2(signal_xsec, ksig2), \\\n",
" signal_xsec_cat3=prod:signal_xsec_cor3(signal_xsec, ksig3))\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg height=\"\" viewBox=\"0.00 0.00 1801.00 422.00\" width=\"90%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 418)\">\n",
"<title>model_sim_corr</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-418 1797,-418 1797,4 -4,4\" stroke=\"white\"/>\n",
"<!-- model_sim_corr -->\n",
"<g class=\"node\" id=\"node1\"><title>model_sim_corr</title>\n",
"<ellipse cx=\"771\" cy=\"-387\" fill=\"none\" rx=\"79.3553\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"771\" y=\"-390.8\">RooSimultaneous</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"771\" y=\"-375.8\">model_sim_corr</text>\n",
"</g>\n",
"<!-- cat -->\n",
"<g class=\"node\" id=\"node2\"><title>cat</title>\n",
"<ellipse cx=\"431\" cy=\"-297\" fill=\"none\" rx=\"62.3993\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"431\" y=\"-300.8\">RooCategory</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"431\" y=\"-285.8\">cat</text>\n",
"</g>\n",
"<!-- model_sim_corr&#45;&gt;cat -->\n",
"<g class=\"edge\" id=\"edge22\"><title>model_sim_corr-&gt;cat</title>\n",
"<path d=\"M703.515,-372.715C648.971,-361.422 570.446,-343.902 503,-324 497.662,-322.425 492.144,-320.669 486.648,-318.835\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"487.416,-315.398 476.821,-315.469 485.147,-322.02 487.416,-315.398\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat1_model_sim_corr -->\n",
"<g class=\"node\" id=\"node3\"><title>model_cat1_model_sim_corr</title>\n",
"<ellipse cx=\"637\" cy=\"-297\" fill=\"none\" rx=\"125.237\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"637\" y=\"-300.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"637\" y=\"-285.8\">model_cat1_model_sim_corr</text>\n",
"</g>\n",
"<!-- model_sim_corr&#45;&gt;model_cat1_model_sim_corr -->\n",
"<g class=\"edge\" id=\"edge24\"><title>model_sim_corr-&gt;model_cat1_model_sim_corr</title>\n",
"<path d=\"M735.793,-362.879C719.813,-352.385 700.692,-339.828 683.547,-328.568\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"685.069,-325.381 674.789,-322.817 681.227,-331.232 685.069,-325.381\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat2_model_sim_corr -->\n",
"<g class=\"node\" id=\"node18\"><title>model_cat2_model_sim_corr</title>\n",
"<ellipse cx=\"905\" cy=\"-297\" fill=\"none\" rx=\"125.237\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"905\" y=\"-300.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"905\" y=\"-285.8\">model_cat2_model_sim_corr</text>\n",
"</g>\n",
"<!-- model_sim_corr&#45;&gt;model_cat2_model_sim_corr -->\n",
"<g class=\"edge\" id=\"edge23\"><title>model_sim_corr-&gt;model_cat2_model_sim_corr</title>\n",
"<path d=\"M806.207,-362.879C822.187,-352.385 841.308,-339.828 858.453,-328.568\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"860.773,-331.232 867.211,-322.817 856.931,-325.381 860.773,-331.232\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat3_model_sim_corr -->\n",
"<g class=\"node\" id=\"node24\"><title>model_cat3_model_sim_corr</title>\n",
"<ellipse cx=\"1173\" cy=\"-297\" fill=\"none\" rx=\"125.237\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1173\" y=\"-300.8\">RooAddPdf</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1173\" y=\"-285.8\">model_cat3_model_sim_corr</text>\n",
"</g>\n",
"<!-- model_sim_corr&#45;&gt;model_cat3_model_sim_corr -->\n",
"<g class=\"edge\" id=\"edge21\"><title>model_sim_corr-&gt;model_cat3_model_sim_corr</title>\n",
"<path d=\"M836.483,-371.665C901.957,-357.333 1003.34,-335.139 1077.72,-318.857\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1078.55,-322.258 1087.57,-316.701 1077.06,-315.42 1078.55,-322.258\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat1 -->\n",
"<g class=\"node\" id=\"node4\"><title>Nbkg_cat1</title>\n",
"<ellipse cx=\"68\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"68\" y=\"-210.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"68\" y=\"-195.8\">Nbkg_cat1</text>\n",
"</g>\n",
"<!-- model_cat1_model_sim_corr&#45;&gt;Nbkg_cat1 -->\n",
"<g class=\"edge\" id=\"edge39\"><title>model_cat1_model_sim_corr-&gt;Nbkg_cat1</title>\n",
"<path d=\"M548.968,-277.826C533.364,-274.953 517.236,-272.208 502,-270 339.362,-246.435 293.766,-272.487 134,-234 128.762,-232.738 123.386,-231.148 118.074,-229.379\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"119.217,-226.071 108.622,-226.034 116.881,-232.67 119.217,-226.071\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- sig -->\n",
"<g class=\"node\" id=\"node7\"><title>sig</title>\n",
"<ellipse cx=\"1429\" cy=\"-207\" fill=\"none\" rx=\"62.3993\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1429\" y=\"-210.8\">RooGaussian</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1429\" y=\"-195.8\">sig</text>\n",
"</g>\n",
"<!-- model_cat1_model_sim_corr&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge38\"><title>model_cat1_model_sim_corr-&gt;sig</title>\n",
"<path d=\"M723.598,-277.534C739.316,-274.657 755.605,-271.986 771,-270 1015.71,-238.437 1081.21,-272.076 1325,-234 1339.06,-231.804 1353.99,-228.602 1368.03,-225.189\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1369.21,-228.501 1378.06,-222.679 1367.51,-221.71 1369.21,-228.501\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg -->\n",
"<g class=\"node\" id=\"node11\"><title>bkg</title>\n",
"<ellipse cx=\"1246\" cy=\"-207\" fill=\"none\" rx=\"70.5656\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1246\" y=\"-210.8\">RooChebychev</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1246\" y=\"-195.8\">bkg</text>\n",
"</g>\n",
"<!-- model_cat1_model_sim_corr&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge37\"><title>model_cat1_model_sim_corr-&gt;bkg</title>\n",
"<path d=\"M724.364,-277.733C739.854,-274.87 755.867,-272.152 771,-270 945.527,-245.18 993.321,-269.464 1166,-234 1172.63,-232.638 1179.49,-230.917 1186.26,-229.011\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1187.5,-232.294 1196.1,-226.107 1185.52,-225.58 1187.5,-232.294\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat1_model_sim_corr -->\n",
"<g class=\"node\" id=\"node14\"><title>Nsig_cat1_model_sim_corr</title>\n",
"<ellipse cx=\"262\" cy=\"-207\" fill=\"none\" rx=\"118.192\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"262\" y=\"-210.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"262\" y=\"-195.8\">Nsig_cat1_model_sim_corr</text>\n",
"</g>\n",
"<!-- model_cat1_model_sim_corr&#45;&gt;Nsig_cat1_model_sim_corr -->\n",
"<g class=\"edge\" id=\"edge40\"><title>model_cat1_model_sim_corr-&gt;Nsig_cat1_model_sim_corr</title>\n",
"<path d=\"M554.705,-276.688C494.865,-262.646 413.888,-243.643 352.275,-229.185\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"352.707,-225.691 342.172,-226.814 351.108,-232.506 352.707,-225.691\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec_cat1 -->\n",
"<g class=\"node\" id=\"node5\"><title>bkg_xsec_cat1</title>\n",
"<ellipse cx=\"68\" cy=\"-117\" fill=\"none\" rx=\"68.3838\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"68\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"68\" y=\"-105.8\">bkg_xsec_cat1</text>\n",
"</g>\n",
"<!-- Nbkg_cat1&#45;&gt;bkg_xsec_cat1 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>Nbkg_cat1-&gt;bkg_xsec_cat1</title>\n",
"<path d=\"M68,-180.073C68,-171.999 68,-162.943 68,-154.296\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"71.5001,-154.046 68,-144.046 64.5001,-154.046 71.5001,-154.046\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- lumi -->\n",
"<g class=\"node\" id=\"node6\"><title>lumi</title>\n",
"<ellipse cx=\"566\" cy=\"-117\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"566\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"566\" y=\"-105.8\">lumi</text>\n",
"</g>\n",
"<!-- Nbkg_cat1&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge13\"><title>Nbkg_cat1-&gt;lumi</title>\n",
"<path d=\"M108.624,-187.975C116.889,-184.886 125.62,-182.025 134,-180 291.591,-141.926 339.13,-180.898 497,-144 502.67,-142.675 508.503,-141 514.263,-139.141\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"515.512,-142.413 523.844,-135.869 513.25,-135.789 515.512,-142.413\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- mgg -->\n",
"<g class=\"node\" id=\"node8\"><title>mgg</title>\n",
"<ellipse cx=\"1460\" cy=\"-117\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1460\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1460\" y=\"-105.8\">mgg</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;mgg -->\n",
"<g class=\"edge\" id=\"edge5\"><title>sig-&gt;mgg</title>\n",
"<path d=\"M1438.13,-180.073C1441.1,-171.659 1444.44,-162.177 1447.6,-153.204\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1450.91,-154.336 1450.93,-143.742 1444.31,-152.011 1450.91,-154.336\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- M -->\n",
"<g class=\"node\" id=\"node9\"><title>M</title>\n",
"<ellipse cx=\"1597\" cy=\"-117\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1597\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1597\" y=\"-105.8\">M</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;M -->\n",
"<g class=\"edge\" id=\"edge4\"><title>sig-&gt;M</title>\n",
"<path d=\"M1467.54,-185.811C1492.15,-172.92 1524.21,-156.126 1550.27,-142.477\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1551.98,-145.532 1559.22,-137.792 1548.73,-139.331 1551.98,-145.532\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- sigma -->\n",
"<g class=\"node\" id=\"node10\"><title>sigma</title>\n",
"<ellipse cx=\"1734\" cy=\"-117\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1734\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1734\" y=\"-105.8\">sigma</text>\n",
"</g>\n",
"<!-- sig&#45;&gt;sigma -->\n",
"<g class=\"edge\" id=\"edge6\"><title>sig-&gt;sigma</title>\n",
"<path d=\"M1483.35,-193.414C1531.48,-181.869 1603.45,-163.623 1665,-144 1670.11,-142.372 1675.39,-140.58 1680.65,-138.723\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1681.85,-142.014 1690.07,-135.329 1679.47,-135.428 1681.85,-142.014\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg&#45;&gt;mgg -->\n",
"<g class=\"edge\" id=\"edge1\"><title>bkg-&gt;mgg</title>\n",
"<path d=\"M1292.7,-186.797C1326.54,-172.883 1372.32,-154.056 1407.44,-139.615\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1409.12,-142.706 1417.04,-135.666 1406.46,-136.232 1409.12,-142.706\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- a -->\n",
"<g class=\"node\" id=\"node12\"><title>a</title>\n",
"<ellipse cx=\"1186\" cy=\"-117\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1186\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1186\" y=\"-105.8\">a</text>\n",
"</g>\n",
"<!-- bkg&#45;&gt;a -->\n",
"<g class=\"edge\" id=\"edge3\"><title>bkg-&gt;a</title>\n",
"<path d=\"M1228.65,-180.547C1222.38,-171.36 1215.22,-160.852 1208.57,-151.106\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1211.43,-149.08 1202.9,-142.789 1205.64,-153.023 1211.43,-149.08\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- b -->\n",
"<g class=\"node\" id=\"node13\"><title>b</title>\n",
"<ellipse cx=\"1323\" cy=\"-117\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1323\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1323\" y=\"-105.8\">b</text>\n",
"</g>\n",
"<!-- bkg&#45;&gt;b -->\n",
"<g class=\"edge\" id=\"edge2\"><title>bkg-&gt;b</title>\n",
"<path d=\"M1267.86,-181.018C1276.36,-171.3 1286.21,-160.049 1295.2,-149.767\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1297.93,-151.964 1301.88,-142.134 1292.66,-147.355 1297.93,-151.964\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat1_model_sim_corr&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge19\"><title>Nsig_cat1_model_sim_corr-&gt;lumi</title>\n",
"<path d=\"M341.721,-187.124C387.49,-175.751 445.853,-160.336 497,-144 502.106,-142.369 507.389,-140.576 512.652,-138.717\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"513.846,-142.008 522.065,-135.322 511.47,-135.423 513.846,-142.008\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cor1 -->\n",
"<g class=\"node\" id=\"node15\"><title>signal_xsec_cor1</title>\n",
"<ellipse cx=\"237\" cy=\"-117\" fill=\"none\" rx=\"77.1743\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"237\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"237\" y=\"-105.8\">signal_xsec_cor1</text>\n",
"</g>\n",
"<!-- Nsig_cat1_model_sim_corr&#45;&gt;signal_xsec_cor1 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>Nsig_cat1_model_sim_corr-&gt;signal_xsec_cor1</title>\n",
"<path d=\"M254.634,-180.073C252.29,-171.822 249.655,-162.544 247.15,-153.727\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"250.499,-152.709 244.399,-144.046 243.765,-154.622 250.499,-152.709\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec -->\n",
"<g class=\"node\" id=\"node16\"><title>signal_xsec</title>\n",
"<ellipse cx=\"392\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"392\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"392\" y=\"-15.8\">signal_xsec</text>\n",
"</g>\n",
"<!-- signal_xsec_cor1&#45;&gt;signal_xsec -->\n",
"<g class=\"edge\" id=\"edge11\"><title>signal_xsec_cor1-&gt;signal_xsec</title>\n",
"<path d=\"M276.113,-93.7939C297.806,-81.4776 324.868,-66.1135 347.384,-53.3304\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"349.119,-56.3703 356.087,-48.3894 345.663,-50.283 349.119,-56.3703\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- ksig1 -->\n",
"<g class=\"node\" id=\"node17\"><title>ksig1</title>\n",
"<ellipse cx=\"237\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"237\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"237\" y=\"-15.8\">ksig1</text>\n",
"</g>\n",
"<!-- signal_xsec_cor1&#45;&gt;ksig1 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>signal_xsec_cor1-&gt;ksig1</title>\n",
"<path d=\"M237,-90.0731C237,-81.9993 237,-72.9428 237,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"240.5,-64.0457 237,-54.0457 233.5,-64.0458 240.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat2_model_sim_corr&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge34\"><title>model_cat2_model_sim_corr-&gt;sig</title>\n",
"<path d=\"M993.51,-277.965C1008.66,-275.126 1024.26,-272.355 1039,-270 1165.51,-249.787 1199.07,-257.578 1325,-234 1338.84,-231.409 1353.58,-228.079 1367.48,-224.674\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1368.57,-228.008 1377.43,-222.19 1366.88,-221.216 1368.57,-228.008\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat2_model_sim_corr&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge33\"><title>model_cat2_model_sim_corr-&gt;bkg</title>\n",
"<path d=\"M990.967,-277.421C1042.08,-265.918 1108.04,-250.272 1166,-234 1172.09,-232.29 1178.41,-230.415 1184.71,-228.478\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1186.05,-231.726 1194.55,-225.401 1183.96,-225.045 1186.05,-231.726\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat2 -->\n",
"<g class=\"node\" id=\"node19\"><title>Nbkg_cat2</title>\n",
"<ellipse cx=\"712\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"712\" y=\"-210.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"712\" y=\"-195.8\">Nbkg_cat2</text>\n",
"</g>\n",
"<!-- model_cat2_model_sim_corr&#45;&gt;Nbkg_cat2 -->\n",
"<g class=\"edge\" id=\"edge35\"><title>model_cat2_model_sim_corr-&gt;Nbkg_cat2</title>\n",
"<path d=\"M853.28,-272.418C824.789,-259.427 789.608,-243.386 761.48,-230.561\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"762.782,-227.308 752.232,-226.344 759.878,-233.677 762.782,-227.308\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat2_model_sim_corr -->\n",
"<g class=\"node\" id=\"node21\"><title>Nsig_cat2_model_sim_corr</title>\n",
"<ellipse cx=\"518\" cy=\"-207\" fill=\"none\" rx=\"118.192\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"518\" y=\"-210.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"518\" y=\"-195.8\">Nsig_cat2_model_sim_corr</text>\n",
"</g>\n",
"<!-- model_cat2_model_sim_corr&#45;&gt;Nsig_cat2_model_sim_corr -->\n",
"<g class=\"edge\" id=\"edge36\"><title>model_cat2_model_sim_corr-&gt;Nsig_cat2_model_sim_corr</title>\n",
"<path d=\"M821.027,-276.905C758.672,-262.726 673.691,-243.403 609.589,-228.827\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"610.014,-225.334 599.487,-226.529 608.462,-232.16 610.014,-225.334\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat2&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge15\"><title>Nbkg_cat2-&gt;lumi</title>\n",
"<path d=\"M677.769,-185.368C657.398,-173.089 631.353,-157.391 609.53,-144.237\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"611.147,-141.125 600.776,-138.961 607.534,-147.121 611.147,-141.125\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec_cat2 -->\n",
"<g class=\"node\" id=\"node20\"><title>bkg_xsec_cat2</title>\n",
"<ellipse cx=\"712\" cy=\"-117\" fill=\"none\" rx=\"68.3838\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"712\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"712\" y=\"-105.8\">bkg_xsec_cat2</text>\n",
"</g>\n",
"<!-- Nbkg_cat2&#45;&gt;bkg_xsec_cat2 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>Nbkg_cat2-&gt;bkg_xsec_cat2</title>\n",
"<path d=\"M712,-180.073C712,-171.999 712,-162.943 712,-154.296\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"715.5,-154.046 712,-144.046 708.5,-154.046 715.5,-154.046\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat2_model_sim_corr&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge29\"><title>Nsig_cat2_model_sim_corr-&gt;lumi</title>\n",
"<path d=\"M532.142,-180.073C536.871,-171.404 542.218,-161.601 547.242,-152.389\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"550.409,-153.893 552.124,-143.438 544.263,-150.541 550.409,-153.893\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cor2 -->\n",
"<g class=\"node\" id=\"node22\"><title>signal_xsec_cor2</title>\n",
"<ellipse cx=\"411\" cy=\"-117\" fill=\"none\" rx=\"77.1743\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"411\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"411\" y=\"-105.8\">signal_xsec_cor2</text>\n",
"</g>\n",
"<!-- Nsig_cat2_model_sim_corr&#45;&gt;signal_xsec_cor2 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>Nsig_cat2_model_sim_corr-&gt;signal_xsec_cor2</title>\n",
"<path d=\"M487.624,-181.018C475.345,-170.919 461.052,-159.164 448.16,-148.562\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"450.291,-145.782 440.344,-142.134 445.845,-151.189 450.291,-145.782\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cor2&#45;&gt;signal_xsec -->\n",
"<g class=\"edge\" id=\"edge31\"><title>signal_xsec_cor2-&gt;signal_xsec</title>\n",
"<path d=\"M405.402,-90.0731C403.64,-81.9105 401.661,-72.7436 399.775,-64.0112\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"403.155,-63.0818 397.624,-54.0457 396.313,-64.5592 403.155,-63.0818\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- ksig2 -->\n",
"<g class=\"node\" id=\"node23\"><title>ksig2</title>\n",
"<ellipse cx=\"529\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"529\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"529\" y=\"-15.8\">ksig2</text>\n",
"</g>\n",
"<!-- signal_xsec_cor2&#45;&gt;ksig2 -->\n",
"<g class=\"edge\" id=\"edge32\"><title>signal_xsec_cor2-&gt;ksig2</title>\n",
"<path d=\"M442.622,-92.4176C457.368,-81.4207 475.045,-68.2375 490.556,-56.6699\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"492.994,-59.2178 498.918,-50.4338 488.81,-53.6064 492.994,-59.2178\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat3_model_sim_corr&#45;&gt;sig -->\n",
"<g class=\"edge\" id=\"edge8\"><title>model_cat3_model_sim_corr-&gt;sig</title>\n",
"<path d=\"M1237.27,-273.907C1278.59,-259.703 1331.81,-241.409 1371.69,-227.7\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1372.95,-230.968 1381.27,-224.407 1370.67,-224.348 1372.95,-230.968\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- model_cat3_model_sim_corr&#45;&gt;bkg -->\n",
"<g class=\"edge\" id=\"edge7\"><title>model_cat3_model_sim_corr-&gt;bkg</title>\n",
"<path d=\"M1194.51,-270.073C1202.13,-260.884 1210.81,-250.422 1218.84,-240.74\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1221.71,-242.766 1225.4,-232.835 1216.32,-238.297 1221.71,-242.766\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat3 -->\n",
"<g class=\"node\" id=\"node25\"><title>Nbkg_cat3</title>\n",
"<ellipse cx=\"1100\" cy=\"-207\" fill=\"none\" rx=\"56.9149\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1100\" y=\"-210.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1100\" y=\"-195.8\">Nbkg_cat3</text>\n",
"</g>\n",
"<!-- model_cat3_model_sim_corr&#45;&gt;Nbkg_cat3 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>model_cat3_model_sim_corr-&gt;Nbkg_cat3</title>\n",
"<path d=\"M1151.49,-270.073C1143.66,-260.632 1134.71,-249.847 1126.5,-239.945\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1129.18,-237.698 1120.1,-232.236 1123.8,-242.167 1129.18,-237.698\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat3_model_sim_corr -->\n",
"<g class=\"node\" id=\"node27\"><title>Nsig_cat3_model_sim_corr</title>\n",
"<ellipse cx=\"906\" cy=\"-207\" fill=\"none\" rx=\"118.192\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"906\" y=\"-210.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"906\" y=\"-195.8\">Nsig_cat3_model_sim_corr</text>\n",
"</g>\n",
"<!-- model_cat3_model_sim_corr&#45;&gt;Nsig_cat3_model_sim_corr -->\n",
"<g class=\"edge\" id=\"edge10\"><title>model_cat3_model_sim_corr-&gt;Nsig_cat3_model_sim_corr</title>\n",
"<path d=\"M1106.66,-274.134C1068.42,-261.531 1020.24,-245.652 980.678,-232.613\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"981.671,-229.255 971.078,-229.449 979.48,-235.903 981.671,-229.255\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nbkg_cat3&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge17\"><title>Nbkg_cat3-&gt;lumi</title>\n",
"<path d=\"M1059.12,-188.056C1050.62,-184.92 1041.63,-182.02 1033,-180 859.638,-139.395 807.462,-184.175 634,-144 628.613,-142.752 623.081,-141.172 617.612,-139.409\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"618.472,-136.004 607.878,-136.07 616.201,-142.625 618.472,-136.004\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- bkg_xsec_cat3 -->\n",
"<g class=\"node\" id=\"node26\"><title>bkg_xsec_cat3</title>\n",
"<ellipse cx=\"1040\" cy=\"-117\" fill=\"none\" rx=\"68.3838\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1040\" y=\"-120.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"1040\" y=\"-105.8\">bkg_xsec_cat3</text>\n",
"</g>\n",
"<!-- Nbkg_cat3&#45;&gt;bkg_xsec_cat3 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>Nbkg_cat3-&gt;bkg_xsec_cat3</title>\n",
"<path d=\"M1082.97,-181.018C1076.7,-171.822 1069.49,-161.253 1062.79,-151.43\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"1065.6,-149.335 1057.08,-143.044 1059.82,-153.278 1065.6,-149.335\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- Nsig_cat3_model_sim_corr&#45;&gt;lumi -->\n",
"<g class=\"edge\" id=\"edge25\"><title>Nsig_cat3_model_sim_corr-&gt;lumi</title>\n",
"<path d=\"M821.598,-188.124C755.296,-173.828 668.586,-154.496 634,-144 629.062,-142.501 623.97,-140.819 618.897,-139.051\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"619.809,-135.659 609.215,-135.568 617.44,-142.246 619.809,-135.659\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cor3 -->\n",
"<g class=\"node\" id=\"node28\"><title>signal_xsec_cor3</title>\n",
"<ellipse cx=\"876\" cy=\"-117\" fill=\"none\" rx=\"77.1743\" ry=\"26.7407\" stroke=\"red\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"876\" y=\"-120.8\">RooProduct</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"876\" y=\"-105.8\">signal_xsec_cor3</text>\n",
"</g>\n",
"<!-- Nsig_cat3_model_sim_corr&#45;&gt;signal_xsec_cor3 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>Nsig_cat3_model_sim_corr-&gt;signal_xsec_cor3</title>\n",
"<path d=\"M897.161,-180.073C894.323,-171.748 891.129,-162.378 888.099,-153.49\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"891.315,-152.077 884.776,-143.742 884.69,-154.336 891.315,-152.077\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- signal_xsec_cor3&#45;&gt;signal_xsec -->\n",
"<g class=\"edge\" id=\"edge27\"><title>signal_xsec_cor3-&gt;signal_xsec</title>\n",
"<path d=\"M821.153,-97.9721C810.57,-94.9603 799.506,-92.1282 789,-90 645.266,-60.8846 603.628,-88.1241 461,-54 455.553,-52.6968 449.953,-51.0797 444.41,-49.294\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"445.137,-45.8439 434.543,-45.9291 442.878,-52.4693 445.137,-45.8439\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- ksig3 -->\n",
"<g class=\"node\" id=\"node29\"><title>ksig3</title>\n",
"<ellipse cx=\"876\" cy=\"-27\" fill=\"none\" rx=\"59.096\" ry=\"26.7407\" stroke=\"blue\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"876\" y=\"-30.8\">RooRealVar</text>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"876\" y=\"-15.8\">ksig3</text>\n",
"</g>\n",
"<!-- signal_xsec_cor3&#45;&gt;ksig3 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>signal_xsec_cor3-&gt;ksig3</title>\n",
"<path d=\"M876,-90.0731C876,-81.9993 876,-72.9428 876,-64.2961\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"879.5,-64.0457 876,-54.0457 872.5,-64.0458 879.5,-64.0457\" stroke=\"black\"/>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_sim_corr.graphVizTree(\"model_sim_corr.dot\")\n",
"!dot -Tsvg model_sim_corr.dot > model_sim_corr.svg; rm model_sim_corr.dot\n",
"s = SVG(\"model_sim_corr.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": "markdown",
"metadata": {},
"source": [
"### Set prefit values"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ws.loadSnapshot('prefit')\n",
"# bkg xsection is uncorrelated for both\n",
"ws.var('bkg_xsec_cat1').setVal(ws.var('bkg_xsec').getVal() * kbkg1)\n",
"ws.var('bkg_xsec_cat2').setVal(ws.var('bkg_xsec').getVal() * kbkg2)\n",
"ws.var('bkg_xsec_cat3').setVal(ws.var('bkg_xsec').getVal() * kbkg3)\n",
"ws.saveSnapshot('prefit_sim_corr', ws.allVars())\n",
"\n",
"ws.var('signal_xsec_cat1').setVal(ws.function('signal_xsec_cor1').getVal())\n",
"ws.var('signal_xsec_cat2').setVal(ws.function('signal_xsec_cor2').getVal())\n",
"ws.var('signal_xsec_cat3').setVal(ws.function('signal_xsec_cor3').getVal())\n",
"\n",
"ws.saveSnapshot('prefit_sim_uncorr', ws.allVars())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate data, from the correlated model, use them everywhere"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"12059.9172402\n"
]
}
],
"source": [
"ws.loadSnapshot('prefit_sim_corr')\n",
"data_simul = model_sim_corr.generate(ROOT.RooArgSet(mgg, cat), ROOT.RooFit.ExpectedData())\n",
"print data_simul.sumEntries()\n",
"data_simul.table(cat).Print(\"v\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Expected significance with uncorrelated model\n",
"\n",
"Null hypothesis: $\\sigma_1 = \\sigma_2 = \\sigma_3 = 0$ (3 degrees of freedom)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.67394616802\n"
]
}
],
"source": [
"ws.loadSnapshot('prefit_sim_uncorr')\n",
"qvalue = compute_qvalue(ws, model_sim_uncorr, {'signal_xsec_cat1': 0, 'signal_xsec_cat2': 0, 'signal_xsec_cat3':0}, data_simul)\n",
"pvalue = stats.chi2(3).sf(qvalue) / 2. # 3 degree of freedom\n",
"zvalue_uncor = stats.norm(0, 1).isf(pvalue) \n",
"print zvalue_uncor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Is correct? How many degrees of freedom are there? I am using three, since the likelihood ratio is\n",
"\n",
"$$\\frac{L_1(\\sigma_{s,1}=0) L_2(\\sigma_{s,2}=0) L_3(\\sigma_{s,3}=0)}{L_1(\\hat\\sigma_{s,1}) L_2(\\hat\\sigma_{s,2}) L_3(\\hat\\sigma_{s,3})}$$\n",
"\n",
"but what if I define a model where I profile the fractions between categories:\n",
"\n",
"$$\\frac{L_1(\\sigma_S=0) L_2(\\sigma_S=0) L_3(\\sigma_S=0)}{\\max_{\\vec k_S, \\sigma_S}L_1(k_{S,1}\\sigma_S) L_2(k_{S,2}\\sigma_S) L_3(k_{S,3}\\sigma_S)}$$\n",
"\n",
"*how many degrees of freedom do I have?*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Null hypothesis: $\\sigma_i = 0$"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2.3567863960450954, 0.94975924760511654, 0.22558159309235346]\n"
]
}
],
"source": [
"zvalues_uncor_cat = []\n",
"for poi in 'signal_xsec_cat1', 'signal_xsec_cat2', 'signal_xsec_cat3':\n",
" ws.loadSnapshot('prefit_sim_uncorr')\n",
" qvalue = compute_qvalue(ws, model_sim_uncorr, {poi: 0}, data_simul)\n",
" pvalue = stats.chi2(1).sf(qvalue) / 2. \n",
" zvalue_uncor_cat = stats.norm(0, 1).isf(pvalue) \n",
" zvalues_uncor_cat += [zvalue_uncor_cat]\n",
"print zvalues_uncor_cat "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Expected significance with correlated model\n",
"Null hypothesis $\\sigma=0$"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.51273741769\n"
]
}
],
"source": [
"ws.loadSnapshot('prefit_sim_corr')\n",
"data_simul_cor = model_sim_corr.generate(ROOT.RooArgSet(mgg, cat), ROOT.RooFit.ExpectedData())\n",
"qvalue = compute_qvalue(ws, model_sim_corr, {'signal_xsec': 0}, data_simul)\n",
"pvalue = stats.chi2(1).sf(qvalue) / 2.\n",
"zvalue_corr = stats.norm(0, 1).isf(pvalue) \n",
"print zvalue_corr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Summary of significances"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"inclusive 1.93\n",
"each category separately 2.43 0.71 0.31\n",
"uncorrelated (bkg correlated) 1.67\n",
"uncorrelated (bkg correlated) each category 2.36 0.95 0.23\n",
"correlated 2.51\n"
]
}
],
"source": [
"print \"inclusive {:.2f}\".format(zvalue_inclusive)\n",
"print \"each category separately {}\".format(' '.join('%.2f' % x for x in zvalues_cat))\n",
"print \"uncorrelated (bkg correlated) {:.2f}\".format(zvalue_uncor)\n",
"print \"uncorrelated (bkg correlated) each category {}\".format(' '.join('%.2f' % x for x in zvalues_uncor_cat))\n",
"print \"correlated {:.2f}\".format(zvalue_corr)"
]
}
],
"metadata": {
"hide_input": false,
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment