{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "fe822370",
   "metadata": {},
   "source": [
    "# rf605_profilell\n",
    "'LIKELIHOOD AND MINIMIZATION' RooFit tutorial macro #605\n",
    "\n",
    "Working with the profile likelihood estimator\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:**  Clemens Lange, Wouter Verkerke (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:33 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "76e4e671",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:08.003370Z",
     "iopub.status.busy": "2026-05-19T20:33:08.003250Z",
     "iopub.status.idle": "2026-05-19T20:33:08.963272Z",
     "shell.execute_reply": "2026-05-19T20:33:08.962712Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d652eb2a",
   "metadata": {},
   "source": [
    "Create model and dataset\n",
    "-----------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e9061e9",
   "metadata": {},
   "source": [
    "Observable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e03eea61",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:08.973457Z",
     "iopub.status.busy": "2026-05-19T20:33:08.973310Z",
     "iopub.status.idle": "2026-05-19T20:33:09.130175Z",
     "shell.execute_reply": "2026-05-19T20:33:09.129643Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", -20, 20)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d7f8cb3",
   "metadata": {},
   "source": [
    "Model (intentional strong correlations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3fd0ad32",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:09.131979Z",
     "iopub.status.busy": "2026-05-19T20:33:09.131849Z",
     "iopub.status.idle": "2026-05-19T20:33:09.335058Z",
     "shell.execute_reply": "2026-05-19T20:33:09.334341Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:InputArguments -- The parameter 'sigma_g1' with range [-inf, inf] of the RooGaussian 'g1' exceeds the safe range of (0, inf). Advise to limit its range.\n"
     ]
    }
   ],
   "source": [
    "mean = ROOT.RooRealVar(\"mean\", \"mean of g1 and g2\", 0, -10, 10)\n",
    "sigma_g1 = ROOT.RooRealVar(\"sigma_g1\", \"width of g1\", 3)\n",
    "g1 = ROOT.RooGaussian(\"g1\", \"g1\", x, mean, sigma_g1)\n",
    "\n",
    "sigma_g2 = ROOT.RooRealVar(\"sigma_g2\", \"width of g2\", 4, 3.0, 6.0)\n",
    "g2 = ROOT.RooGaussian(\"g2\", \"g2\", x, mean, sigma_g2)\n",
    "\n",
    "frac = ROOT.RooRealVar(\"frac\", \"frac\", 0.5, 0.0, 1.0)\n",
    "model = ROOT.RooAddPdf(\"model\", \"model\", [g1, g2], [frac])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc4e7064",
   "metadata": {},
   "source": [
    "Generate 1000 events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "feafbfa8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:09.337233Z",
     "iopub.status.busy": "2026-05-19T20:33:09.337101Z",
     "iopub.status.idle": "2026-05-19T20:33:09.470179Z",
     "shell.execute_reply": "2026-05-19T20:33:09.469458Z"
    }
   },
   "outputs": [],
   "source": [
    "data = model.generate({x}, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3560464",
   "metadata": {},
   "source": [
    "Construct plain likelihood\n",
    "---------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65f8209f",
   "metadata": {},
   "source": [
    "Construct unbinned likelihood"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "53b6de00",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:09.472214Z",
     "iopub.status.busy": "2026-05-19T20:33:09.472084Z",
     "iopub.status.idle": "2026-05-19T20:33:09.629206Z",
     "shell.execute_reply": "2026-05-19T20:33:09.628632Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(model) 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 6.65124 ms\n"
     ]
    }
   ],
   "source": [
    "nll = model.createNLL(data, NumCPU=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75f6f0f6",
   "metadata": {},
   "source": [
    "Minimize likelihood w.r.t all parameters before making plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c2caeffe",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:09.630903Z",
     "iopub.status.busy": "2026-05-19T20:33:09.630777Z",
     "iopub.status.idle": "2026-05-19T20:33:09.789161Z",
     "shell.execute_reply": "2026-05-19T20:33:09.788630Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model_modelData) Summation contains a RooNLLVar, using its error level\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "Minuit2Minimizer: Minimize with max-calls 1500 convergence for edm < 1 strategy 1\n",
      "Minuit2Minimizer : Valid minimum - status = 0\n",
      "FVAL  = 2659.73712858695399\n",
      "Edm   = 0.00019039576622347743\n",
      "Nfcn  = 60\n",
      "frac\t  = 0.62118\t +/-  0.165788\t(limited)\n",
      "mean\t  = 0.00442366\t +/-  0.109372\t(limited)\n",
      "sigma_g2\t  = 4.10789\t +/-  0.405468\t(limited)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <Minuit2>: MnSeedGenerator Computing seed using NumericalGradient calculator\n",
      "Info in <Minuit2>: MnSeedGenerator Evaluated function and gradient in 333.082 μs\n",
      "Info in <Minuit2>: MnSeedGenerator Initial state: FCN =       2660.220684 Edm =      0.7531396215 NCalls =     11\n",
      "Info in <Minuit2>: MnSeedGenerator Initial state  \n",
      "  Minimum value : 2660.220684\n",
      "  Edm           : 0.7531396215\n",
      "  Internal parameters:\t[                0                0    -0.3398369095]\t\n",
      "  Internal gradient  :\t[      -5.61967122     -7.167795698      7.285345928]\t\n",
      "  Internal covariance matrix:\n",
      "[[    0.058086658              0              0]\n",
      " [              0  0.00024709807              0]\n",
      " [              0              0    0.021957944]]]\n",
      "Info in <Minuit2>: VariableMetricBuilder Start iterating until Edm is < 0.001 with call limit = 1500\n",
      "Info in <Minuit2>: VariableMetricBuilder    0 - FCN =       2660.220684 Edm =      0.7531396215 NCalls =     11\n",
      "Info in <Minuit2>: VariableMetricBuilder    1 - FCN =       2659.835559 Edm =       0.009272903 NCalls =     19\n",
      "Info in <Minuit2>: VariableMetricBuilder    2 - FCN =       2659.794737 Edm =     0.02189621324 NCalls =     27\n",
      "Info in <Minuit2>: VariableMetricBuilder    3 - FCN =       2659.740114 Edm =    0.003524585195 NCalls =     36\n",
      "Info in <Minuit2>: VariableMetricBuilder    4 - FCN =       2659.737129 Edm =   0.0001630642121 NCalls =     44\n",
      "Info in <Minuit2>: MnHesse Done after 306.182 μs\n",
      "Info in <Minuit2>: VariableMetricBuilder After Hessian\n",
      "Info in <Minuit2>: VariableMetricBuilder    5 - FCN =       2659.737129 Edm =   0.0001903957662 NCalls =     60\n",
      "Info in <Minuit2>: VariableMetricBuilder Stop iterating after 1.00185 ms\n"
     ]
    }
   ],
   "source": [
    "ROOT.RooMinimizer(nll).migrad()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71c92502",
   "metadata": {},
   "source": [
    "Plot likelihood scan frac"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9d9c1343",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:09.790806Z",
     "iopub.status.busy": "2026-05-19T20:33:09.790680Z",
     "iopub.status.idle": "2026-05-19T20:33:09.956586Z",
     "shell.execute_reply": "2026-05-19T20:33:09.956028Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55814904a040>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame1 = frac.frame(Bins=10, Range=(0.01, 0.95), Title=\"LL and profileLL in frac\")\n",
    "nll.plotOn(frame1, ShiftToZero=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f647777f",
   "metadata": {},
   "source": [
    "Plot likelihood scan in sigma_g2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "70c75239",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:09.958572Z",
     "iopub.status.busy": "2026-05-19T20:33:09.958447Z",
     "iopub.status.idle": "2026-05-19T20:33:10.064348Z",
     "shell.execute_reply": "2026-05-19T20:33:10.063776Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5581490f01b0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame2 = sigma_g2.frame(Bins=10, Range=(3.3, 5.0), Title=\"LL and profileLL in sigma_g2\")\n",
    "nll.plotOn(frame2, ShiftToZero=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19a5272b",
   "metadata": {},
   "source": [
    "Construct profile likelihood in frac\n",
    "-----------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "505f2f58",
   "metadata": {},
   "source": [
    "The profile likelihood estimator on nll for frac will minimize nll w.r.t\n",
    "all floating parameters except frac for each evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "4ef9cfa8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.066316Z",
     "iopub.status.busy": "2026-05-19T20:33:10.066191Z",
     "iopub.status.idle": "2026-05-19T20:33:10.175663Z",
     "shell.execute_reply": "2026-05-19T20:33:10.175070Z"
    }
   },
   "outputs": [],
   "source": [
    "pll_frac = nll.createProfile({frac})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52d6f1ef",
   "metadata": {},
   "source": [
    "Plot the profile likelihood in frac"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "79490252",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.177645Z",
     "iopub.status.busy": "2026-05-19T20:33:10.177507Z",
     "iopub.status.idle": "2026-05-19T20:33:10.341779Z",
     "shell.execute_reply": "2026-05-19T20:33:10.341174Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[frac]) Creating instance of MINUIT\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model_modelData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[frac]) determining minimum likelihood for current configurations w.r.t all observable\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[frac]) minimum found at (frac=0.62104)\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55814904a040>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pll_frac.plotOn(frame1, LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7db2cb6",
   "metadata": {},
   "source": [
    "Adjust frame maximum for visual clarity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6cb148be",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.343862Z",
     "iopub.status.busy": "2026-05-19T20:33:10.343727Z",
     "iopub.status.idle": "2026-05-19T20:33:10.453212Z",
     "shell.execute_reply": "2026-05-19T20:33:10.452654Z"
    }
   },
   "outputs": [],
   "source": [
    "frame1.SetMinimum(0)\n",
    "frame1.SetMaximum(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58ea1da7",
   "metadata": {},
   "source": [
    "Construct profile likelihood in sigma_g2\n",
    "-------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f8f7172",
   "metadata": {},
   "source": [
    "The profile likelihood estimator on nll for sigma_g2 will minimize nll\n",
    "w.r.t all floating parameters except sigma_g2 for each evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6515b2d1",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.455260Z",
     "iopub.status.busy": "2026-05-19T20:33:10.455134Z",
     "iopub.status.idle": "2026-05-19T20:33:10.558714Z",
     "shell.execute_reply": "2026-05-19T20:33:10.558175Z"
    }
   },
   "outputs": [],
   "source": [
    "pll_sigmag2 = nll.createProfile({sigma_g2})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ae2c6f3",
   "metadata": {},
   "source": [
    "Plot the profile likelihood in sigma_g2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d3b2d17e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.560929Z",
     "iopub.status.busy": "2026-05-19T20:33:10.560802Z",
     "iopub.status.idle": "2026-05-19T20:33:10.711766Z",
     "shell.execute_reply": "2026-05-19T20:33:10.711215Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[sigma_g2]) Creating instance of MINUIT\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model_modelData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[sigma_g2]) determining minimum likelihood for current configurations w.r.t all observable\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[sigma_g2]) minimum found at (sigma_g2=4.11258)\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5581490f01b0>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pll_sigmag2.plotOn(frame2, LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8642a7e",
   "metadata": {},
   "source": [
    "Adjust frame maximum for visual clarity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2d59e87d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.714006Z",
     "iopub.status.busy": "2026-05-19T20:33:10.713873Z",
     "iopub.status.idle": "2026-05-19T20:33:10.817163Z",
     "shell.execute_reply": "2026-05-19T20:33:10.816602Z"
    }
   },
   "outputs": [],
   "source": [
    "frame2.SetMinimum(0)\n",
    "frame2.SetMaximum(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d467754",
   "metadata": {},
   "source": [
    "Make canvas and draw ROOT.RooPlots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "a44b5ea4",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:10.819233Z",
     "iopub.status.busy": "2026-05-19T20:33:10.819104Z",
     "iopub.status.idle": "2026-05-19T20:33:11.023948Z",
     "shell.execute_reply": "2026-05-19T20:33:11.023316Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf605_profilell.png has been created\n"
     ]
    }
   ],
   "source": [
    "c = ROOT.TCanvas(\"rf605_profilell\", \"rf605_profilell\", 800, 400)\n",
    "c.Divide(2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame1.GetYaxis().SetTitleOffset(1.4)\n",
    "frame1.Draw()\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame2.GetYaxis().SetTitleOffset(1.4)\n",
    "frame2.Draw()\n",
    "\n",
    "c.SaveAs(\"rf605_profilell.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c3ba50f",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2c844f9b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:11.025615Z",
     "iopub.status.busy": "2026-05-19T20:33:11.025475Z",
     "iopub.status.idle": "2026-05-19T20:33:11.206775Z",
     "shell.execute_reply": "2026-05-19T20:33:11.206291Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222791197\" style=\"width: 800px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222791197() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(34735,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222791197', 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_1779222791197();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "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
}
