{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8a5192fc",
   "metadata": {},
   "source": [
    "# rf709_BarlowBeeston\n",
    "Implementing the Barlow-Beeston method for taking into account the statistical\n",
    "uncertainty of a Monte-Carlo fit template.\n",
    "\n",
    "\n",
    "Based on a demo by Wouter Verkerke\n",
    "\n",
    "\n",
    "**Author:** Harshal Shende, Stephan Hageboeck (C++ version)  \n",
    "<i><small>This notebook tutorial was automatically generated with <a href= \"https://github.com/root-project/root/blob/master/documentation/doxygen/converttonotebook.py\">ROOTBOOK-izer</a> from the macro found in the ROOT repository  on Tuesday, May 19, 2026 at 08:34 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "92701bc5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.908076Z",
     "iopub.status.busy": "2026-05-19T20:34:56.907954Z",
     "iopub.status.idle": "2026-05-19T20:34:57.864755Z",
     "shell.execute_reply": "2026-05-19T20:34:57.864142Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a515edb",
   "metadata": {},
   "source": [
    "First, construct a likelihood model with a Gaussian signal on top of a uniform background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9a663a52",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:57.872645Z",
     "iopub.status.busy": "2026-05-19T20:34:57.872481Z",
     "iopub.status.idle": "2026-05-19T20:34:58.074272Z",
     "shell.execute_reply": "2026-05-19T20:34:58.073638Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:InputArguments -- The parameter 'sigG' with range [-10, 10] of the RooGaussian 'g' exceeds the safe range of (0, inf). Advise to limit its range.\n"
     ]
    }
   ],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", -20, 20)\n",
    "x.setBins(25)\n",
    "\n",
    "meanG = ROOT.RooRealVar(\"meanG\", \"meanG\", 1, -10, 10)\n",
    "sigG = ROOT.RooRealVar(\"sigG\", \"sigG\", 1.5, -10, 10)\n",
    "g = ROOT.RooGaussian(\"g\", \"Gauss\", x, meanG, sigG)\n",
    "u = ROOT.RooUniform(\"u\", \"Uniform\", x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ceec8e8",
   "metadata": {},
   "source": [
    "Generate the data to be fitted"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3950ab6c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.076221Z",
     "iopub.status.busy": "2026-05-19T20:34:58.076083Z",
     "iopub.status.idle": "2026-05-19T20:34:58.265363Z",
     "shell.execute_reply": "2026-05-19T20:34:58.264780Z"
    }
   },
   "outputs": [],
   "source": [
    "sigData = g.generate(x, 50)\n",
    "bkgData = u.generate(x, 1000)\n",
    "\n",
    "sumData = ROOT.RooDataSet(\"sumData\", \"Gauss + Uniform\", x)\n",
    "sumData.append(sigData)\n",
    "sumData.append(bkgData)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87540901",
   "metadata": {},
   "source": [
    "Make histogram templates for signal and background.\n",
    "Let's take a signal distribution with low statistics and a more accurate\n",
    "background distribution.\n",
    "Normally, these come from Monte Carlo simulations, but we will just generate them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1e7a2b4f",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.267423Z",
     "iopub.status.busy": "2026-05-19T20:34:58.267292Z",
     "iopub.status.idle": "2026-05-19T20:34:58.391809Z",
     "shell.execute_reply": "2026-05-19T20:34:58.391134Z"
    }
   },
   "outputs": [],
   "source": [
    "dh_sig = g.generateBinned(x, 50)\n",
    "dh_bkg = u.generateBinned(x, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ec647f80",
   "metadata": {},
   "source": [
    " Case 0 - 'Rigid templates'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dcb0d126",
   "metadata": {},
   "source": [
    "Construct histogram shapes for signal and background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "975a09ba",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.393679Z",
     "iopub.status.busy": "2026-05-19T20:34:58.393530Z",
     "iopub.status.idle": "2026-05-19T20:34:58.508152Z",
     "shell.execute_reply": "2026-05-19T20:34:58.507628Z"
    }
   },
   "outputs": [],
   "source": [
    "p_h_sig = ROOT.RooHistFunc(\"p_h_sig\", \"p_h_sig\", x, dh_sig)\n",
    "p_h_bkg = ROOT.RooHistFunc(\"p_h_bkg\", \"p_h_bkg\", x, dh_bkg)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a6d73129",
   "metadata": {},
   "source": [
    "Construct scale factors for adding the two distributions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ca323e36",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.510284Z",
     "iopub.status.busy": "2026-05-19T20:34:58.510155Z",
     "iopub.status.idle": "2026-05-19T20:34:58.613742Z",
     "shell.execute_reply": "2026-05-19T20:34:58.613096Z"
    }
   },
   "outputs": [],
   "source": [
    "Asig0 = ROOT.RooRealVar(\"Asig\", \"Asig\", 1, 0.01, 5000)\n",
    "Abkg0 = ROOT.RooRealVar(\"Abkg\", \"Abkg\", 1, 0.01, 5000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08866bb7",
   "metadata": {},
   "source": [
    "Construct the sum model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "bd7a6a29",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.615620Z",
     "iopub.status.busy": "2026-05-19T20:34:58.615483Z",
     "iopub.status.idle": "2026-05-19T20:34:58.808764Z",
     "shell.execute_reply": "2026-05-19T20:34:58.808056Z"
    }
   },
   "outputs": [],
   "source": [
    "model0 = ROOT.RooRealSumPdf(\"model0\", \"model0\", [p_h_sig, p_h_bkg], [Asig0, Abkg0], True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9603dca",
   "metadata": {},
   "source": [
    " Case 1 - 'Barlow Beeston'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e34bf8b5",
   "metadata": {},
   "source": [
    "Construct parameterized histogram shapes for signal and background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bb15ff1b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.810592Z",
     "iopub.status.busy": "2026-05-19T20:34:58.810460Z",
     "iopub.status.idle": "2026-05-19T20:34:58.923765Z",
     "shell.execute_reply": "2026-05-19T20:34:58.923110Z"
    }
   },
   "outputs": [],
   "source": [
    "p_ph_sig1 = ROOT.RooParamHistFunc(\"p_ph_sig\", \"p_ph_sig\", dh_sig, x)\n",
    "p_ph_bkg1 = ROOT.RooParamHistFunc(\"p_ph_bkg\", \"p_ph_bkg\", dh_bkg, x)\n",
    "\n",
    "Asig1 = ROOT.RooRealVar(\"Asig\", \"Asig\", 1, 0.01, 5000)\n",
    "Abkg1 = ROOT.RooRealVar(\"Abkg\", \"Abkg\", 1, 0.01, 5000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c74a898",
   "metadata": {},
   "source": [
    "Construct the sum of these"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "4ac1c1fc",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:58.926025Z",
     "iopub.status.busy": "2026-05-19T20:34:58.925891Z",
     "iopub.status.idle": "2026-05-19T20:34:59.029665Z",
     "shell.execute_reply": "2026-05-19T20:34:59.028976Z"
    }
   },
   "outputs": [],
   "source": [
    "model_tmp = ROOT.RooRealSumPdf(\"sp_ph\", \"sp_ph\", [p_ph_sig1, p_ph_bkg1], [Asig1, Abkg1], True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5cf3e35c",
   "metadata": {},
   "source": [
    "Construct the subsidiary poisson measurements constraining the histogram parameters\n",
    "These ensure that the bin contents of the histograms are only allowed to vary within\n",
    "the statistical uncertainty of the Monte Carlo."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b844d4ce",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.031938Z",
     "iopub.status.busy": "2026-05-19T20:34:59.031804Z",
     "iopub.status.idle": "2026-05-19T20:34:59.144268Z",
     "shell.execute_reply": "2026-05-19T20:34:59.143535Z"
    }
   },
   "outputs": [],
   "source": [
    "hc_sig = ROOT.RooHistConstraint(\"hc_sig\", \"hc_sig\", p_ph_sig1)\n",
    "hc_bkg = ROOT.RooHistConstraint(\"hc_bkg\", \"hc_bkg\", p_ph_bkg1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "61eabac5",
   "metadata": {},
   "source": [
    "Construct the joint model with template PDFs and constraints"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f95f1530",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.146144Z",
     "iopub.status.busy": "2026-05-19T20:34:59.146009Z",
     "iopub.status.idle": "2026-05-19T20:34:59.292381Z",
     "shell.execute_reply": "2026-05-19T20:34:59.291728Z"
    }
   },
   "outputs": [],
   "source": [
    "model1 = ROOT.RooProdPdf(\"model1\", \"model1\", {hc_sig, hc_bkg}, Conditional=(model_tmp, x))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f2d97d8",
   "metadata": {},
   "source": [
    " Case 2 - 'Barlow Beeston' light (one parameter per bin for all samples)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c708a66",
   "metadata": {},
   "source": [
    "Construct the histogram shapes, using the same parameters for signal and background\n",
    "This requires passing the first histogram to the second, so that their common parameters\n",
    "can be re-used.\n",
    "The first ParamHistFunc will create one parameter per bin, such as `p_ph_sig2_gamma_bin_0`.\n",
    "This allows bin 0 to fluctuate up and down.\n",
    "Then, the SAME parameters are connected to the background histogram, so the bins fluctuate\n",
    "synchronously. This reduces the number of parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "28b186b4",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.294696Z",
     "iopub.status.busy": "2026-05-19T20:34:59.294550Z",
     "iopub.status.idle": "2026-05-19T20:34:59.398229Z",
     "shell.execute_reply": "2026-05-19T20:34:59.397807Z"
    }
   },
   "outputs": [],
   "source": [
    "p_ph_sig2 = ROOT.RooParamHistFunc(\"p_ph_sig2\", \"p_ph_sig2\", dh_sig, x)\n",
    "p_ph_bkg2 = ROOT.RooParamHistFunc(\"p_ph_bkg2\", \"p_ph_bkg2\", dh_bkg, x, p_ph_sig2, True)\n",
    "\n",
    "Asig2 = ROOT.RooRealVar(\"Asig\", \"Asig\", 1, 0.01, 5000)\n",
    "Abkg2 = ROOT.RooRealVar(\"Abkg\", \"Abkg\", 1, 0.01, 5000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "626a0950",
   "metadata": {},
   "source": [
    "As before, construct the sum of signal2 and background2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "fd85402a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.416573Z",
     "iopub.status.busy": "2026-05-19T20:34:59.416430Z",
     "iopub.status.idle": "2026-05-19T20:34:59.520045Z",
     "shell.execute_reply": "2026-05-19T20:34:59.519486Z"
    }
   },
   "outputs": [],
   "source": [
    "model2_tmp = ROOT.RooRealSumPdf(\"sp_ph\", \"sp_ph\", [p_ph_sig2, p_ph_bkg2], [Asig2, Abkg2], True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "377cbaf8",
   "metadata": {},
   "source": [
    "Construct the subsidiary poisson measurements constraining the statistical fluctuations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c7cae29c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.522190Z",
     "iopub.status.busy": "2026-05-19T20:34:59.522066Z",
     "iopub.status.idle": "2026-05-19T20:34:59.635764Z",
     "shell.execute_reply": "2026-05-19T20:34:59.635118Z"
    }
   },
   "outputs": [],
   "source": [
    "hc_sigbkg = ROOT.RooHistConstraint(\"hc_sigbkg\", \"hc_sigbkg\", {p_ph_sig2, p_ph_bkg2})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2932e91",
   "metadata": {},
   "source": [
    "Construct the joint model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "1cfd3362",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.637523Z",
     "iopub.status.busy": "2026-05-19T20:34:59.637395Z",
     "iopub.status.idle": "2026-05-19T20:34:59.741283Z",
     "shell.execute_reply": "2026-05-19T20:34:59.740763Z"
    }
   },
   "outputs": [],
   "source": [
    "model2 = ROOT.RooProdPdf(\"model2\", \"model2\", hc_sigbkg, Conditional=(model2_tmp, x))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea844132",
   "metadata": {},
   "source": [
    "************ Fit all models to data and plot *********************"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ad207c0b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:59.743002Z",
     "iopub.status.busy": "2026-05-19T20:34:59.742874Z",
     "iopub.status.idle": "2026-05-19T20:35:00.335202Z",
     "shell.execute_reply": "2026-05-19T20:35:00.334653Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(model0_over_model0_Int[x]) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- using generic CPU library compiled with no vectorizations\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 807.675 μs\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model0_over_model0_Int[x]_sumData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "Minuit2Minimizer: Minimize with max-calls 1000 convergence for edm < 1 strategy 1\n",
      "Minuit2Minimizer : Valid minimum - status = 0\n",
      "FVAL  = -2388.31039421315609\n",
      "Edm   = 3.25299602361765145e-06\n",
      "Nfcn  = 60\n",
      "Abkg\t  = 0.0614547\t +/-  0.00211669\t(limited)\n",
      "Asig\t  = 0.833778\t +/-  0.1898\t(limited)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.\n",
      "[#1] INFO:Minimization --  Including the following constraint terms in minimization: (hc_sig,hc_bkg)\n",
      "[#1] INFO:Minimization -- The global observables are not defined , normalize constraints with respect to the parameters (Abkg,Asig,p_ph_bkg_gamma_bin_0,p_ph_bkg_gamma_bin_1,p_ph_bkg_gamma_bin_10,p_ph_bkg_gamma_bin_11,p_ph_bkg_gamma_bin_12,p_ph_bkg_gamma_bin_13,p_ph_bkg_gamma_bin_14,p_ph_bkg_gamma_bin_15,p_ph_bkg_gamma_bin_16,p_ph_bkg_gamma_bin_17,p_ph_bkg_gamma_bin_18,p_ph_bkg_gamma_bin_19,p_ph_bkg_gamma_bin_2,p_ph_bkg_gamma_bin_20,p_ph_bkg_gamma_bin_21,p_ph_bkg_gamma_bin_22,p_ph_bkg_gamma_bin_23,p_ph_bkg_gamma_bin_24,p_ph_bkg_gamma_bin_3,p_ph_bkg_gamma_bin_4,p_ph_bkg_gamma_bin_5,p_ph_bkg_gamma_bin_6,p_ph_bkg_gamma_bin_7,p_ph_bkg_gamma_bin_8,p_ph_bkg_gamma_bin_9,p_ph_sig_gamma_bin_0,p_ph_sig_gamma_bin_1,p_ph_sig_gamma_bin_10,p_ph_sig_gamma_bin_11,p_ph_sig_gamma_bin_12,p_ph_sig_gamma_bin_13,p_ph_sig_gamma_bin_14,p_ph_sig_gamma_bin_15,p_ph_sig_gamma_bin_16,p_ph_sig_gamma_bin_17,p_ph_sig_gamma_bin_18,p_ph_sig_gamma_bin_19,p_ph_sig_gamma_bin_2,p_ph_sig_gamma_bin_20,p_ph_sig_gamma_bin_21,p_ph_sig_gamma_bin_22,p_ph_sig_gamma_bin_23,p_ph_sig_gamma_bin_24,p_ph_sig_gamma_bin_3,p_ph_sig_gamma_bin_4,p_ph_sig_gamma_bin_5,p_ph_sig_gamma_bin_6,p_ph_sig_gamma_bin_7,p_ph_sig_gamma_bin_8,p_ph_sig_gamma_bin_9)\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(model1) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 1.6126 ms\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model1_sumData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "Minuit2Minimizer: Minimize with max-calls 16000 convergence for edm < 1 strategy 1\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10425.6) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=0.024352\tAsig=0.0100451\tp_ph_bkg_gamma_bin_0=0.351482\tp_ph_bkg_gamma_bin_1=0.352595\tp_ph_bkg_gamma_bin_10=0.342683\tp_ph_bkg_gamma_bin_11=0.368891\tp_ph_bkg_gamma_bin_12=0.38197\tp_ph_bkg_gamma_bin_13=0.365529\tp_ph_bkg_gamma_bin_14=0.358098\tp_ph_bkg_gamma_bin_15=0.358584\tp_ph_bkg_gamma_bin_16=0.367344\tp_ph_bkg_gamma_bin_17=0.356263\tp_ph_bkg_gamma_bin_18=0.362211\tp_ph_bkg_gamma_bin_19=0.340063\tp_ph_bkg_gamma_bin_2=0.35054\tp_ph_bkg_gamma_bin_20=0.352376\tp_ph_bkg_gamma_bin_21=0.351589\tp_ph_bkg_gamma_bin_22=0.351615\tp_ph_bkg_gamma_bin_23=0.344488\tp_ph_bkg_gamma_bin_24=0.365687\tp_ph_bkg_gamma_bin_3=0.355197\tp_ph_bkg_gamma_bin_4=0.347776\tp_ph_bkg_gamma_bin_5=0.348629\tp_ph_bkg_gamma_bin_6=0.357616\tp_ph_bkg_gamma_bin_7=0.351061\tp_ph_bkg_gamma_bin_8=0.342678\tp_ph_bkg_gamma_bin_9=0.357292\tp_ph_sig_gamma_bin_11=0.3339\tp_ph_sig_gamma_bin_12=0.341347\tp_ph_sig_gamma_bin_13=0.333434\tp_ph_sig_gamma_bin_14=0.328932\tp_ph_sig_gamma_bin_15=0.328666\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10425.6) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=0.327409\tAsig=0.26768\tp_ph_bkg_gamma_bin_0=0.63877\tp_ph_bkg_gamma_bin_1=0.639509\tp_ph_bkg_gamma_bin_10=0.632897\tp_ph_bkg_gamma_bin_11=0.650254\tp_ph_bkg_gamma_bin_12=0.658769\tp_ph_bkg_gamma_bin_13=0.648049\tp_ph_bkg_gamma_bin_14=0.643155\tp_ph_bkg_gamma_bin_15=0.643476\tp_ph_bkg_gamma_bin_16=0.64924\tp_ph_bkg_gamma_bin_17=0.641941\tp_ph_bkg_gamma_bin_18=0.645868\tp_ph_bkg_gamma_bin_19=0.63114\tp_ph_bkg_gamma_bin_2=0.638144\tp_ph_bkg_gamma_bin_20=0.639364\tp_ph_bkg_gamma_bin_21=0.638841\tp_ph_bkg_gamma_bin_22=0.638858\tp_ph_bkg_gamma_bin_23=0.634106\tp_ph_bkg_gamma_bin_24=0.648153\tp_ph_bkg_gamma_bin_3=0.641235\tp_ph_bkg_gamma_bin_4=0.636302\tp_ph_bkg_gamma_bin_5=0.636871\tp_ph_bkg_gamma_bin_6=0.642836\tp_ph_bkg_gamma_bin_7=0.63849\tp_ph_bkg_gamma_bin_8=0.632894\tp_ph_bkg_gamma_bin_9=0.642622\tp_ph_sig_gamma_bin_11=0.626988\tp_ph_sig_gamma_bin_12=0.632002\tp_ph_sig_gamma_bin_13=0.626672\tp_ph_sig_gamma_bin_14=0.623623\tp_ph_sig_gamma_bin_15=0.623442\n",
      "\n",
      "Minuit2Minimizer : Valid minimum - status = 0\n",
      "FVAL  = -2282.22793579973768\n",
      "Edm   = 6.50103677974530594e-05\n",
      "Nfcn  = 730\n",
      "Abkg\t  = 0.0613644\t +/-  0.00219573\t(limited)\n",
      "Asig\t  = 0.850329\t +/-  0.233134\t(limited)\n",
      "p_ph_bkg_gamma_bin_0\t  = 0.998158\t +/-  0.0370021\t(limited)\n",
      "p_ph_bkg_gamma_bin_1\t  = 1.0004\t +/-  0.0370335\t(limited)\n",
      "p_ph_bkg_gamma_bin_10\t  = 0.980402\t +/-  0.0356998\t(limited)\n",
      "p_ph_bkg_gamma_bin_11\t  = 1.00613\t +/-  0.0401139\t(limited)\n",
      "p_ph_bkg_gamma_bin_12\t  = 1.00446\t +/-  0.0453421\t(limited)\n",
      "p_ph_bkg_gamma_bin_13\t  = 0.991203\t +/-  0.0395193\t(limited)\n",
      "p_ph_bkg_gamma_bin_14\t  = 0.996054\t +/-  0.0385246\t(limited)\n",
      "p_ph_bkg_gamma_bin_15\t  = 1.00908\t +/-  0.0369959\t(limited)\n",
      "p_ph_bkg_gamma_bin_16\t  = 1.03008\t +/-  0.0382325\t(limited)\n",
      "p_ph_bkg_gamma_bin_17\t  = 1.00779\t +/-  0.0364465\t(limited)\n",
      "p_ph_bkg_gamma_bin_18\t  = 1.01976\t +/-  0.0396035\t(limited)\n",
      "p_ph_bkg_gamma_bin_19\t  = 0.975108\t +/-  0.0359113\t(limited)\n",
      "p_ph_bkg_gamma_bin_2\t  = 0.996261\t +/-  0.0365836\t(limited)\n",
      "p_ph_bkg_gamma_bin_20\t  = 0.999962\t +/-  0.0369391\t(limited)\n",
      "p_ph_bkg_gamma_bin_21\t  = 0.998374\t +/-  0.0370495\t(limited)\n",
      "p_ph_bkg_gamma_bin_22\t  = 0.998427\t +/-  0.0380223\t(limited)\n",
      "p_ph_bkg_gamma_bin_23\t  = 0.984048\t +/-  0.0361184\t(limited)\n",
      "p_ph_bkg_gamma_bin_24\t  = 1.02675\t +/-  0.0373117\t(limited)\n",
      "p_ph_bkg_gamma_bin_3\t  = 1.00565\t +/-  0.0386186\t(limited)\n",
      "p_ph_bkg_gamma_bin_4\t  = 0.990685\t +/-  0.0377676\t(limited)\n",
      "p_ph_bkg_gamma_bin_5\t  = 0.992405\t +/-  0.0376505\t(limited)\n",
      "p_ph_bkg_gamma_bin_6\t  = 1.01052\t +/-  0.038689\t(limited)\n",
      "p_ph_bkg_gamma_bin_7\t  = 0.99731\t +/-  0.0359322\t(limited)\n",
      "p_ph_bkg_gamma_bin_8\t  = 0.980392\t +/-  0.0362349\t(limited)\n",
      "p_ph_bkg_gamma_bin_9\t  = 1.00987\t +/-  0.0372551\t(limited)\n",
      "p_ph_sig_gamma_bin_11\t  = 1.09457\t +/-  0.29733\t(limited)\n",
      "p_ph_sig_gamma_bin_12\t  = 1.07037\t +/-  0.213545\t(limited)\n",
      "p_ph_sig_gamma_bin_13\t  = 0.890724\t +/-  0.195929\t(limited)\n",
      "p_ph_sig_gamma_bin_14\t  = 0.947374\t +/-  0.309135\t(limited)\n",
      "p_ph_sig_gamma_bin_15\t  = 1.14132\t +/-  0.81204\t(limited)\n",
      "[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.\n",
      "[#1] INFO:Minimization --  Including the following constraint terms in minimization: (hc_sigbkg)\n",
      "[#1] INFO:Minimization -- The global observables are not defined , normalize constraints with respect to the parameters (Abkg,Asig,p_ph_sig2_gamma_bin_0,p_ph_sig2_gamma_bin_1,p_ph_sig2_gamma_bin_10,p_ph_sig2_gamma_bin_11,p_ph_sig2_gamma_bin_12,p_ph_sig2_gamma_bin_13,p_ph_sig2_gamma_bin_14,p_ph_sig2_gamma_bin_15,p_ph_sig2_gamma_bin_16,p_ph_sig2_gamma_bin_17,p_ph_sig2_gamma_bin_18,p_ph_sig2_gamma_bin_19,p_ph_sig2_gamma_bin_2,p_ph_sig2_gamma_bin_20,p_ph_sig2_gamma_bin_21,p_ph_sig2_gamma_bin_22,p_ph_sig2_gamma_bin_23,p_ph_sig2_gamma_bin_24,p_ph_sig2_gamma_bin_3,p_ph_sig2_gamma_bin_4,p_ph_sig2_gamma_bin_5,p_ph_sig2_gamma_bin_6,p_ph_sig2_gamma_bin_7,p_ph_sig2_gamma_bin_8,p_ph_sig2_gamma_bin_9)\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(model2) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 741.894 μs\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model2_sumData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "Minuit2Minimizer: Minimize with max-calls 13500 convergence for edm < 1 strategy 1\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=7.28945\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=7.28945\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=7.28945\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=7.28945\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=7.28945\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=7.28945\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=7.28945\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=7.28945\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=7.28945\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=7.28945\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=7.28945\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=7.28945\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=7.28945\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=7.28945\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=7.28945\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=7.28945\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=7.28945\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=7.28945\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=7.28945\tp_ph_sig2_gamma_bin_9=1\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=1\tAsig=1\tp_ph_sig2_gamma_bin_0=1\tp_ph_sig2_gamma_bin_1=1\tp_ph_sig2_gamma_bin_10=1\tp_ph_sig2_gamma_bin_11=1\tp_ph_sig2_gamma_bin_12=1\tp_ph_sig2_gamma_bin_13=1\tp_ph_sig2_gamma_bin_14=1\tp_ph_sig2_gamma_bin_15=1\tp_ph_sig2_gamma_bin_16=1\tp_ph_sig2_gamma_bin_17=1\tp_ph_sig2_gamma_bin_18=1\tp_ph_sig2_gamma_bin_19=1\tp_ph_sig2_gamma_bin_2=1\tp_ph_sig2_gamma_bin_20=1\tp_ph_sig2_gamma_bin_21=1\tp_ph_sig2_gamma_bin_22=1\tp_ph_sig2_gamma_bin_23=1\tp_ph_sig2_gamma_bin_24=1\tp_ph_sig2_gamma_bin_3=1\tp_ph_sig2_gamma_bin_4=1\tp_ph_sig2_gamma_bin_5=1\tp_ph_sig2_gamma_bin_6=1\tp_ph_sig2_gamma_bin_7=1\tp_ph_sig2_gamma_bin_8=1\tp_ph_sig2_gamma_bin_9=7.28945\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=0.024352\tAsig=0.0100451\tp_ph_sig2_gamma_bin_0=0.351536\tp_ph_sig2_gamma_bin_1=0.352649\tp_ph_sig2_gamma_bin_10=0.342736\tp_ph_sig2_gamma_bin_11=0.36962\tp_ph_sig2_gamma_bin_12=0.383863\tp_ph_sig2_gamma_bin_13=0.366897\tp_ph_sig2_gamma_bin_14=0.358549\tp_ph_sig2_gamma_bin_15=0.358659\tp_ph_sig2_gamma_bin_16=0.3674\tp_ph_sig2_gamma_bin_17=0.356318\tp_ph_sig2_gamma_bin_18=0.362267\tp_ph_sig2_gamma_bin_19=0.340116\tp_ph_sig2_gamma_bin_2=0.350595\tp_ph_sig2_gamma_bin_20=0.352431\tp_ph_sig2_gamma_bin_21=0.351643\tp_ph_sig2_gamma_bin_22=0.35167\tp_ph_sig2_gamma_bin_23=0.344542\tp_ph_sig2_gamma_bin_24=0.365744\tp_ph_sig2_gamma_bin_3=0.355252\tp_ph_sig2_gamma_bin_4=0.34783\tp_ph_sig2_gamma_bin_5=0.348683\tp_ph_sig2_gamma_bin_6=0.357671\tp_ph_sig2_gamma_bin_7=0.351115\tp_ph_sig2_gamma_bin_8=0.342731\tp_ph_sig2_gamma_bin_9=0.357348\n",
      "\n",
      "RooAbsMinimizerFcn: Minimized function has error status.\n",
      "Returning maximum FCN so far (10415.9) to force MIGRAD to back out of this region. Error log follows.\n",
      "Parameter values: \tAbkg=0.327407\tAsig=0.267678\tp_ph_sig2_gamma_bin_0=0.638805\tp_ph_sig2_gamma_bin_1=0.639545\tp_ph_sig2_gamma_bin_10=0.632932\tp_ph_sig2_gamma_bin_11=0.650729\tp_ph_sig2_gamma_bin_12=0.659993\tp_ph_sig2_gamma_bin_13=0.648946\tp_ph_sig2_gamma_bin_14=0.643452\tp_ph_sig2_gamma_bin_15=0.643524\tp_ph_sig2_gamma_bin_16=0.649276\tp_ph_sig2_gamma_bin_17=0.641977\tp_ph_sig2_gamma_bin_18=0.645904\tp_ph_sig2_gamma_bin_19=0.631174\tp_ph_sig2_gamma_bin_2=0.638179\tp_ph_sig2_gamma_bin_20=0.6394\tp_ph_sig2_gamma_bin_21=0.638876\tp_ph_sig2_gamma_bin_22=0.638894\tp_ph_sig2_gamma_bin_23=0.634141\tp_ph_sig2_gamma_bin_24=0.648189\tp_ph_sig2_gamma_bin_3=0.641271\tp_ph_sig2_gamma_bin_4=0.636338\tp_ph_sig2_gamma_bin_5=0.636906\tp_ph_sig2_gamma_bin_6=0.642872\tp_ph_sig2_gamma_bin_7=0.638525\tp_ph_sig2_gamma_bin_8=0.632929\tp_ph_sig2_gamma_bin_9=0.642658\n",
      "\n",
      "Minuit2Minimizer : Valid minimum - status = 0\n",
      "FVAL  = -2291.45108203063864\n",
      "Edm   = 0.00021711856797120699\n",
      "Nfcn  = 1108\n",
      "Abkg\t  = 0.0614871\t +/-  0.00221998\t(limited)\n",
      "Asig\t  = 0.834474\t +/-  0.202991\t(limited)\n",
      "p_ph_sig2_gamma_bin_0\t  = 0.997805\t +/-  0.0474115\t(limited)\n",
      "p_ph_sig2_gamma_bin_1\t  = 1.00004\t +/-  0.0474649\t(limited)\n",
      "p_ph_sig2_gamma_bin_10\t  = 0.980078\t +/-  0.0456101\t(limited)\n",
      "p_ph_sig2_gamma_bin_11\t  = 1.01069\t +/-  0.0488754\t(limited)\n",
      "p_ph_sig2_gamma_bin_12\t  = 1.01199\t +/-  0.0483997\t(limited)\n",
      "p_ph_sig2_gamma_bin_13\t  = 0.983813\t +/-  0.0467055\t(limited)\n",
      "p_ph_sig2_gamma_bin_14\t  = 0.994769\t +/-  0.0483032\t(limited)\n",
      "p_ph_sig2_gamma_bin_15\t  = 1.0095\t +/-  0.0473249\t(limited)\n",
      "p_ph_sig2_gamma_bin_16\t  = 1.02967\t +/-  0.049202\t(limited)\n",
      "p_ph_sig2_gamma_bin_17\t  = 1.00742\t +/-  0.0467328\t(limited)\n",
      "p_ph_sig2_gamma_bin_18\t  = 1.01937\t +/-  0.0509499\t(limited)\n",
      "p_ph_sig2_gamma_bin_19\t  = 0.974793\t +/-  0.0458586\t(limited)\n",
      "p_ph_sig2_gamma_bin_2\t  = 0.99591\t +/-  0.0468523\t(limited)\n",
      "p_ph_sig2_gamma_bin_20\t  = 0.999605\t +/-  0.0473385\t(limited)\n",
      "p_ph_sig2_gamma_bin_21\t  = 0.99802\t +/-  0.0474749\t(limited)\n",
      "p_ph_sig2_gamma_bin_22\t  = 0.998073\t +/-  0.0487512\t(limited)\n",
      "p_ph_sig2_gamma_bin_23\t  = 0.983718\t +/-  0.0461774\t(limited)\n",
      "p_ph_sig2_gamma_bin_24\t  = 1.02635\t +/-  0.0479702\t(limited)\n",
      "p_ph_sig2_gamma_bin_3\t  = 1.00528\t +/-  0.0495745\t(limited)\n",
      "p_ph_sig2_gamma_bin_4\t  = 0.990344\t +/-  0.0483736\t(limited)\n",
      "p_ph_sig2_gamma_bin_5\t  = 0.992062\t +/-  0.0482299\t(limited)\n",
      "p_ph_sig2_gamma_bin_6\t  = 1.01014\t +/-  0.0496947\t(limited)\n",
      "p_ph_sig2_gamma_bin_7\t  = 0.996957\t +/-  0.0460029\t(limited)\n",
      "p_ph_sig2_gamma_bin_8\t  = 0.980068\t +/-  0.0463103\t(limited)\n",
      "p_ph_sig2_gamma_bin_9\t  = 1.00949\t +/-  0.0478068\t(limited)\n"
     ]
    }
   ],
   "source": [
    "result0 = model0.fitTo(sumData, PrintLevel=0, Save=True)\n",
    "result1 = model1.fitTo(sumData, PrintLevel=0, Save=True)\n",
    "result2 = model2.fitTo(sumData, PrintLevel=0, Save=True)\n",
    "\n",
    "\n",
    "can = ROOT.TCanvas(\"can\", \"\", 1500, 600)\n",
    "can.Divide(3, 1)\n",
    "\n",
    "pt = ROOT.TPaveText(-19.5, 1, -2, 25)\n",
    "pt.SetFillStyle(0)\n",
    "pt.SetBorderSize(0)\n",
    "\n",
    "\n",
    "can.cd(1)\n",
    "frame = x.frame(Title=\"No template uncertainties\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f3d3b93",
   "metadata": {},
   "source": [
    "Plot data to enable automatic determination of model0 normalisation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "28ac45a5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:00.336981Z",
     "iopub.status.busy": "2026-05-19T20:35:00.336854Z",
     "iopub.status.idle": "2026-05-19T20:35:00.504419Z",
     "shell.execute_reply": "2026-05-19T20:35:00.503878Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model0) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model0) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model0) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model0) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model0) WARNING: argument CurveNameSuffix is duplicated\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55bc386ffee0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sumData.plotOn(frame)\n",
    "model0.plotOn(frame, LineColor=\"b\", VisualizeError=result0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38db0072",
   "metadata": {},
   "source": [
    "Plot data again to show it on top of model0 error bands:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "b7014d7c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:00.506240Z",
     "iopub.status.busy": "2026-05-19T20:35:00.506105Z",
     "iopub.status.idle": "2026-05-19T20:35:00.610582Z",
     "shell.execute_reply": "2026-05-19T20:35:00.610040Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55bc386ffee0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sumData.plotOn(frame)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a507073",
   "metadata": {},
   "source": [
    "Plot model components"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d63b299c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:00.612290Z",
     "iopub.status.busy": "2026-05-19T20:35:00.612166Z",
     "iopub.status.idle": "2026-05-19T20:35:00.809051Z",
     "shell.execute_reply": "2026-05-19T20:35:00.808516Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) directly selected PDF components: (p_h_sig)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) indirectly selected PDF components: ()\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) directly selected PDF components: (p_h_bkg)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model0) indirectly selected PDF components: ()\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 50 will supersede previous event count of 1050 for normalization of PDF projections\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model1) WARNING: argument CurveNameSuffix is duplicated\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55bc3772d0e0>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model0.plotOn(frame, LineColor=\"b\")\n",
    "p_ph_sig_set = {p_h_sig}\n",
    "p_ph_bkg_set = {p_h_bkg}\n",
    "model0.plotOn(frame, Components=p_ph_sig_set, LineColor=\"kAzure\")\n",
    "model0.plotOn(frame, Components=p_ph_bkg_set, LineColor=\"r\")\n",
    "model0.paramOn(frame)\n",
    "\n",
    "sigData.plotOn(frame, MarkerColor=\"b\")\n",
    "frame.Draw()\n",
    "\n",
    "pt_text1 = [\n",
    "    \"No template uncertainties\",\n",
    "    \"are taken into account.\",\n",
    "    \"This leads to low errors\",\n",
    "    \"for the parameters A, since\",\n",
    "    \"the only source of errors\",\n",
    "    \"are the data statistics.\",\n",
    "]\n",
    "for text in pt_text1:\n",
    "    pt.AddText(text)\n",
    "\n",
    "pt.DrawClone()\n",
    "\n",
    "\n",
    "can.cd(2)\n",
    "frame = x.frame(Title=\"Barlow Beeston for Sig & Bkg separately\")\n",
    "sumData.plotOn(frame)\n",
    "model1.plotOn(frame, LineColor=\"b\", VisualizeError=result1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74b3d971",
   "metadata": {},
   "source": [
    "Plot data again to show it on top of error bands:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "546d7806",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:00.810761Z",
     "iopub.status.busy": "2026-05-19T20:35:00.810629Z",
     "iopub.status.idle": "2026-05-19T20:35:00.970722Z",
     "shell.execute_reply": "2026-05-19T20:35:00.970198Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) directly selected PDF components: (p_ph_sig)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) indirectly selected PDF components: (sp_ph)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) directly selected PDF components: (p_ph_bkg)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model1) indirectly selected PDF components: (sp_ph)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55bc38a6d770>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 50 will supersede previous event count of 1050 for normalization of PDF projections\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n",
      "[#0] WARNING:InputArguments -- RooAbsReal::plotOn(model2) WARNING: argument CurveNameSuffix is duplicated\n"
     ]
    }
   ],
   "source": [
    "sumData.plotOn(frame)\n",
    "model1.plotOn(frame, LineColor=\"b\")\n",
    "p_ph_sig1_set = {p_ph_sig1}\n",
    "p_ph_bkg1_set = {p_ph_bkg1}\n",
    "model1.plotOn(frame, Components=p_ph_sig1_set, LineColor=\"kAzure\")\n",
    "model1.plotOn(frame, Components=p_ph_bkg1_set, LineColor=\"r\")\n",
    "model1.paramOn(frame, Parameters={Asig1, Abkg1})\n",
    "\n",
    "sigData.plotOn(frame, MarkerColor=\"b\")\n",
    "frame.Draw()\n",
    "\n",
    "pt.Clear()\n",
    "pt_text2 = [\n",
    "    \"With gamma parameters, the\",\n",
    "    \"signal & background templates\",\n",
    "    \"can adapt to the data.\",\n",
    "    \"Note how the blue signal\",\n",
    "    \"template changes its shape.\",\n",
    "    \"This leads to higher errors\",\n",
    "    \"of the scale parameters A.\",\n",
    "]\n",
    "\n",
    "for text in pt_text2:\n",
    "    pt.AddText(text)\n",
    "\n",
    "pt.DrawClone()\n",
    "\n",
    "can.cd(3)\n",
    "frame = x.frame(Title=\"Barlow Beeston light for (Sig+Bkg)\")\n",
    "sumData.plotOn(frame)\n",
    "model2.plotOn(frame, LineColor=\"b\", VisualizeError=result2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71e63ef7",
   "metadata": {},
   "source": [
    "Plot data again to show it on top of model0 error bands:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "593ed241",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:00.972203Z",
     "iopub.status.busy": "2026-05-19T20:35:00.972081Z",
     "iopub.status.idle": "2026-05-19T20:35:01.233358Z",
     "shell.execute_reply": "2026-05-19T20:35:01.232839Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Asig [normal ] = 0.8337778710558245 +/- 0.18981418763032815\n",
      "Asig [BB     ] = 0.8503293171822359 +/- 0.2357828123142156\n",
      "Asig [BBlight] = 0.8344736023878351 +/- 0.20295518584642697\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) directly selected PDF components: (p_ph_sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) indirectly selected PDF components: (sp_ph)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) directly selected PDF components: (p_ph_bkg2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model2) indirectly selected PDF components: (sp_ph)\n",
      "[#1] INFO:Plotting -- RooPlot::updateFitRangeNorm: New event count of 50 will supersede previous event count of 1050 for normalization of PDF projections\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf709_BarlowBeeston.png has been created\n"
     ]
    }
   ],
   "source": [
    "sumData.plotOn(frame)\n",
    "model2.plotOn(frame, LineColor=\"b\")\n",
    "p_ph_sig2_set = {p_ph_sig2}\n",
    "p_ph_bkg2_set = {p_ph_bkg2}\n",
    "model2.plotOn(frame, Components=p_ph_sig2_set, LineColor=\"kAzure\")\n",
    "model2.plotOn(frame, Components=p_ph_bkg2_set, LineColor=\"r\")\n",
    "model2.paramOn(frame, Parameters={Asig2, Abkg2})\n",
    "\n",
    "sigData.plotOn(frame, MarkerColor=\"b\")\n",
    "frame.Draw()\n",
    "\n",
    "pt.Clear()\n",
    "pt_text3 = [\n",
    "    \"When signal and background\",\n",
    "    \"template share one gamma para-\",\n",
    "    \"meter per bin, they adapt less.\",\n",
    "    \"The errors of the A parameters\",\n",
    "    \"also shrink slightly.\",\n",
    "]\n",
    "for text in pt_text3:\n",
    "    pt.AddText(text)\n",
    "pt.DrawClone()\n",
    "\n",
    "\n",
    "print(\"Asig [normal ] = {} +/- {}\".format(Asig0.getVal(), Asig0.getError()))\n",
    "print(\"Asig [BB     ] = {} +/- {}\".format(Asig1.getVal(), Asig1.getError()))\n",
    "print(\"Asig [BBlight] = {} +/- {}\".format(Asig2.getVal(), Asig2.getError()))\n",
    "\n",
    "can.SaveAs(\"rf709_BarlowBeeston.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7165fbeb",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "bc999203",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:01.235079Z",
     "iopub.status.busy": "2026-05-19T20:35:01.234954Z",
     "iopub.status.idle": "2026-05-19T20:35:01.421896Z",
     "shell.execute_reply": "2026-05-19T20:35:01.421454Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222901413\" style=\"width: 1500px; height: 600px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222901413() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(91400,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222901413', obj, '');\n",
       "});\n",
       "\n",
       "      }\n",
       "      const servers = ['/static/', 'https://root.cern/js/7.11.0/', 'https://jsroot.gsi.de/7.11.0/'],\n",
       "            path = 'build/jsroot';\n",
       "      if (typeof JSROOT !== 'undefined')\n",
       "         execCode(JSROOT);\n",
       "      else if (typeof requirejs !== 'undefined') {\n",
       "         servers.forEach((s,i) => { servers[i] = s + path; });\n",
       "         requirejs.config({ paths: { 'jsroot' : servers } })(['jsroot'],  execCode);\n",
       "      } else {\n",
       "         const config = document.getElementById('jupyter-config-data');\n",
       "         if (config)\n",
       "            servers[0] = (JSON.parse(config.innerHTML || '{}')?.baseUrl || '/') + 'static/';\n",
       "         else\n",
       "            servers.shift();\n",
       "         function loadJsroot() {\n",
       "            return !servers.length ? 0 : import(servers.shift() + path + '.js').catch(loadJsroot).then(() => execCode(JSROOT));\n",
       "         }\n",
       "         loadJsroot();\n",
       "      }\n",
       "   }\n",
       "   process_root_plot_1779222901413();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%jsroot on\n",
    "from ROOT import gROOT \n",
    "gROOT.GetListOfCanvases().Draw()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.12.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
