{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "408bf8a5",
   "metadata": {},
   "source": [
    "# IntervalExamples\n",
    "Example showing confidence intervals with four techniques.\n",
    "\n",
    "An example that shows confidence intervals with four techniques.\n",
    "The model is a Normal Gaussian G(x|mu,sigma) with 100 samples of x.\n",
    "The answer is known analytically, so this is a good example to validate\n",
    "the RooStats tools.\n",
    "\n",
    " - expected interval is [-0.162917, 0.229075]\n",
    " - plc  interval is     [-0.162917, 0.229075]\n",
    " - fc   interval is     [-0.17    , 0.23]        // stepsize is 0.01\n",
    " - bc   interval is     [-0.162918, 0.229076]\n",
    " - mcmc interval is     [-0.166999, 0.230224]\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:**  Artem Busorgin, Kyle Cranmer (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:35 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ae7255ae",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:41.687582Z",
     "iopub.status.busy": "2026-05-19T20:35:41.687454Z",
     "iopub.status.idle": "2026-05-19T20:35:42.665186Z",
     "shell.execute_reply": "2026-05-19T20:35:42.664752Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d679dd9d",
   "metadata": {},
   "source": [
    "Time this macro"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "29edd301",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:42.670349Z",
     "iopub.status.busy": "2026-05-19T20:35:42.670204Z",
     "iopub.status.idle": "2026-05-19T20:35:42.789294Z",
     "shell.execute_reply": "2026-05-19T20:35:42.788626Z"
    }
   },
   "outputs": [],
   "source": [
    "t = ROOT.TStopwatch()\n",
    "t.Start()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95cf0c59",
   "metadata": {},
   "source": [
    "set RooFit random seed for reproducible results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "893138d8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:42.791296Z",
     "iopub.status.busy": "2026-05-19T20:35:42.791166Z",
     "iopub.status.idle": "2026-05-19T20:35:42.913389Z",
     "shell.execute_reply": "2026-05-19T20:35:42.912645Z"
    }
   },
   "outputs": [],
   "source": [
    "ROOT.RooRandom.randomGenerator().SetSeed(3001)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e95bc5e8",
   "metadata": {},
   "source": [
    "make a simple model via the workspace factory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5774f81b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:42.915281Z",
     "iopub.status.busy": "2026-05-19T20:35:42.915156Z",
     "iopub.status.idle": "2026-05-19T20:35:43.109178Z",
     "shell.execute_reply": "2026-05-19T20:35:43.108498Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:InputArguments -- The parameter 'sigma' with range [-inf, inf] of the RooGaussian 'normal' exceeds the safe range of (0, inf). Advise to limit its range.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wspace = ROOT.RooWorkspace()\n",
    "wspace.factory(\"Gaussian::normal(x[-10,10],mu[-1,1],sigma[1])\")\n",
    "wspace.defineSet(\"poi\", \"mu\")\n",
    "wspace.defineSet(\"obs\", \"x\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf715f7f",
   "metadata": {},
   "source": [
    "specify components of model for statistical tools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "308edcd4",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.111113Z",
     "iopub.status.busy": "2026-05-19T20:35:43.110981Z",
     "iopub.status.idle": "2026-05-19T20:35:43.287757Z",
     "shell.execute_reply": "2026-05-19T20:35:43.287108Z"
    }
   },
   "outputs": [],
   "source": [
    "modelConfig = ROOT.RooStats.ModelConfig(\"Example G(x|mu,1)\")\n",
    "modelConfig.SetWorkspace(wspace)\n",
    "modelConfig.SetPdf(wspace[\"normal\"])\n",
    "modelConfig.SetParametersOfInterest(wspace.set(\"poi\"))\n",
    "modelConfig.SetObservables(wspace.set(\"obs\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd130f62",
   "metadata": {},
   "source": [
    "create a toy dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "2113c5d7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.290725Z",
     "iopub.status.busy": "2026-05-19T20:35:43.290572Z",
     "iopub.status.idle": "2026-05-19T20:35:43.422872Z",
     "shell.execute_reply": "2026-05-19T20:35:43.422079Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RooDataSet::normalData[x] = 100 entries\n"
     ]
    }
   ],
   "source": [
    "data = wspace[\"normal\"].generate(wspace.set(\"obs\"), 100)\n",
    "data.Print()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2caf6d0d",
   "metadata": {},
   "source": [
    "for convenience later on"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "a0bbaa72",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.434306Z",
     "iopub.status.busy": "2026-05-19T20:35:43.434168Z",
     "iopub.status.idle": "2026-05-19T20:35:43.546502Z",
     "shell.execute_reply": "2026-05-19T20:35:43.544928Z"
    }
   },
   "outputs": [],
   "source": [
    "x = wspace[\"x\"]\n",
    "mu = wspace[\"mu\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5c898de",
   "metadata": {},
   "source": [
    "set confidence level"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f2ee5e12",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.558370Z",
     "iopub.status.busy": "2026-05-19T20:35:43.558233Z",
     "iopub.status.idle": "2026-05-19T20:35:43.661656Z",
     "shell.execute_reply": "2026-05-19T20:35:43.660960Z"
    }
   },
   "outputs": [],
   "source": [
    "confidenceLevel = 0.95"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d26180f",
   "metadata": {},
   "source": [
    "example use profile likelihood calculator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f2aa6268",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.671397Z",
     "iopub.status.busy": "2026-05-19T20:35:43.671265Z",
     "iopub.status.idle": "2026-05-19T20:35:43.833562Z",
     "shell.execute_reply": "2026-05-19T20:35:43.832957Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:InputArguments -- The deprecated RooFit::CloneData(1) option passed to createNLL() is ignored.\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(normal_over_normal_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 6.57013 ms\n",
      "[#0] PROGRESS:Minimization -- ProfileLikelihoodCalcultor::DoGLobalFit - find MLE \n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_normal_over_normal_Int[x]_normalData) Summation contains a RooNLLVar, using its error level\n",
      "[#0] PROGRESS:Minimization -- ProfileLikelihoodCalcultor::DoMinimizeNLL - using Minuit2 /  with strategy 1\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "[#1] INFO:Minimization -- \n",
      "  RooFitResult: minimized FCN value: 144.292, estimated distance to minimum: 1.8174e-09\n",
      "                covariance matrix quality: Full, accurate covariance matrix\n",
      "                Status : MINIMIZE=0 \n",
      "\n",
      "    Floating Parameter    FinalValue +/-  Error   \n",
      "  --------------------  --------------------------\n",
      "                    mu    3.3073e-02 +/-  9.98e-02\n",
      "\n"
     ]
    }
   ],
   "source": [
    "plc = ROOT.RooStats.ProfileLikelihoodCalculator(data, modelConfig)\n",
    "plc.SetConfidenceLevel(confidenceLevel)\n",
    "plInt = plc.GetInterval()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "191122ce",
   "metadata": {},
   "source": [
    "example use of Feldman-Cousins"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8743db05",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.850571Z",
     "iopub.status.busy": "2026-05-19T20:35:43.850431Z",
     "iopub.status.idle": "2026-05-19T20:35:43.986366Z",
     "shell.execute_reply": "2026-05-19T20:35:43.985657Z"
    }
   },
   "outputs": [],
   "source": [
    "fc = ROOT.RooStats.FeldmanCousins(data, modelConfig)\n",
    "fc.SetConfidenceLevel(confidenceLevel)\n",
    "fc.SetNBins(100)  # number of points to test per parameter\n",
    "fc.UseAdaptiveSampling(True)  # make it go faster"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70dc5a74",
   "metadata": {},
   "source": [
    "Here, we consider only ensembles with 100 events\n",
    "The PDF could be extended and this could be removed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bb415ea8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:43.988441Z",
     "iopub.status.busy": "2026-05-19T20:35:43.988308Z",
     "iopub.status.idle": "2026-05-19T20:35:45.660539Z",
     "shell.execute_reply": "2026-05-19T20:35:45.659784Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== Using the following for Example G(x|mu,1) ===\n",
      "Observables:             RooArgSet:: = (x)\n",
      "Parameters of Interest:  RooArgSet:: = (mu)\n",
      "PDF:                     RooGaussian::normal[ x=x mean=mu sigma=sigma ] = 0.999453\n",
      "\n",
      "FeldmanCousins: ntoys per point: adaptive\n",
      "FeldmanCousins: nEvents per toy will not fluctuate, will always be 100\n",
      "FeldmanCousins: Model has no nuisance parameters\n",
      "FeldmanCousins: # points to test = 100\n",
      "NeymanConstruction: Prog: 1/100 total MC = 78 this test stat = 52.3345\n",
      " mu=-0.99 [-inf, 1.44394]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 2/100 total MC = 78 this test stat = 50.3084\n",
      " mu=-0.97 [-inf, 1.79333]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 3/100 total MC = 78 this test stat = 48.3222\n",
      " mu=-0.95 [-inf, 2.15157]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 4/100 total MC = 78 this test stat = 46.3758\n",
      " mu=-0.93 [-inf, 1.35751]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 5/100 total MC = 78 this test stat = 44.4699\n",
      " mu=-0.91 [-inf, 3.34994]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 6/100 total MC = 78 this test stat = 42.6037\n",
      " mu=-0.89 [-inf, 2.51372]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 7/100 total MC = 78 this test stat = 40.7776\n",
      " mu=-0.87 [-inf, 2.23515]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 8/100 total MC = 78 this test stat = 38.9914\n",
      " mu=-0.85 [-inf, 1.58856]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 9/100 total MC = 78 this test stat = 37.2453\n",
      " mu=-0.83 [-inf, 1.815]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 10/100 total MC = 78 this test stat = 35.5391\n",
      " mu=-0.81 [-inf, 2.60213]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 11/100 total MC = 78 this test stat = 33.873\n",
      " mu=-0.79 [-inf, 1.83579]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 12/100 total MC = 78 this test stat = 32.2468\n",
      " mu=-0.77 [-inf, 1.80677]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 13/100 total MC = 78 this test stat = 30.6606\n",
      " mu=-0.75 [-inf, 2.46798]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 14/100 total MC = 78 this test stat = 29.1145\n",
      " mu=-0.73 [-inf, 1.76469]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 15/100 total MC = 78 this test stat = 27.6083\n",
      " mu=-0.71 [-inf, 2.10923]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 16/100 total MC = 78 this test stat = 26.1422\n",
      " mu=-0.69 [-inf, 1.96364]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 17/100 total MC = 78 this test stat = 24.716\n",
      " mu=-0.67 [-inf, 2.46737]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 18/100 total MC = 78 this test stat = 23.3298\n",
      " mu=-0.65 [-inf, 2.22208]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 19/100 total MC = 78 this test stat = 21.9837\n",
      " mu=-0.63 [-inf, 1.92004]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 20/100 total MC = 78 this test stat = 20.6774\n",
      " mu=-0.61 [-inf, 2.09449]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 21/100 total MC = 78 this test stat = 19.4114\n",
      " mu=-0.59 [-inf, 2.82549]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 22/100 total MC = 78 this test stat = 18.1852\n",
      " mu=-0.57 [-inf, 2.44483]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 23/100 total MC = 78 this test stat = 16.9991\n",
      " mu=-0.55 [-inf, 1.47648]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 24/100 total MC = 78 this test stat = 15.8529\n",
      " mu=-0.53 [-inf, 1.64253]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 25/100 total MC = 78 this test stat = 14.7467\n",
      " mu=-0.51 [-inf, 3.23375]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 26/100 total MC = 78 this test stat = 13.6806\n",
      " mu=-0.49 [-inf, 1.36352]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 27/100 total MC = 78 this test stat = 12.6544\n",
      " mu=-0.47 [-inf, 2.24046]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 28/100 total MC = 78 this test stat = 11.6683\n",
      " mu=-0.45 [-inf, 1.99249]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 29/100 total MC = 78 this test stat = 10.7221\n",
      " mu=-0.43 [-inf, 2.54633]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 30/100 total MC = 78 this test stat = 9.81595\n",
      " mu=-0.41 [-inf, 2.19145]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 31/100 total MC = 78 this test stat = 8.94979\n",
      " mu=-0.39 [-inf, 2.25083]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 32/100 total MC = 78 this test stat = 8.12363\n",
      " mu=-0.37 [-inf, 2.63436]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 33/100 total MC = 78 this test stat = 7.33748\n",
      " mu=-0.35 [-inf, 1.7752]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 34/100 total MC = 78 this test stat = 6.59132\n",
      " mu=-0.33 [-inf, 2.63173]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 35/100 total MC = 78 this test stat = 5.88516\n",
      " mu=-0.31 [-inf, 2.2561]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 36/100 total MC = 78 this test stat = 5.219\n",
      " mu=-0.29 [-inf, 2.0388]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 37/100 total MC = 234 this test stat = 4.59284\n",
      " mu=-0.27 [-inf, 1.92574]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 38/100 total MC = 78 this test stat = 4.00668\n",
      " mu=-0.25 [-inf, 2.51905]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 39/100 total MC = 234 this test stat = 3.46053\n",
      " mu=-0.23 [-inf, 2.20004]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 40/100 total MC = 234 this test stat = 2.95437\n",
      " mu=-0.21 [-inf, 1.49924]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 41/100 total MC = 234 this test stat = 2.48821\n",
      " mu=-0.19 [-inf, 1.88454]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 42/100 total MC = 78 this test stat = 2.06205\n",
      " mu=-0.17 [-inf, 2.92073]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 43/100 total MC = 234 this test stat = 1.6759\n",
      " mu=-0.15 [-inf, 2.19199]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 44/100 total MC = 78 this test stat = 1.32974\n",
      " mu=-0.13 [-inf, 1.94832]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 45/100 total MC = 78 this test stat = 1.02358\n",
      " mu=-0.11 [-inf, 2.16863]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 46/100 total MC = 78 this test stat = 0.757266\n",
      " mu=-0.09 [-inf, 1.46141]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 47/100 total MC = 78 this test stat = 0.531219\n",
      " mu=-0.07 [-inf, 4.11006]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 48/100 total MC = 78 this test stat = 0.345097\n",
      " mu=-0.05 [-inf, 2.11338]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 49/100 total MC = 78 this test stat = 0.198947\n",
      " mu=-0.03 [-inf, 2.38127]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 50/100 total MC = 78 this test stat = 0.09279\n",
      " mu=-0.01 [-inf, 3.0189]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 51/100 total MC = 78 this test stat = 0.026632\n",
      " mu=0.01 [-inf, 2.23423]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 52/100 total MC = 78 this test stat = 0.000474009\n",
      " mu=0.03 [-inf, 2.54313]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 53/100 total MC = 78 this test stat = 0.014316\n",
      " mu=0.05 [-inf, 1.52484]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 54/100 total MC = 78 this test stat = 0.0681571\n",
      " mu=0.07 [-inf, 2.72021]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 55/100 total MC = 78 this test stat = 0.161992\n",
      " mu=0.09 [-inf, 3.26474]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 56/100 total MC = 78 this test stat = 0.2958\n",
      " mu=0.11 [-inf, 2.81134]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 57/100 total MC = 78 this test stat = 0.469534\n",
      " mu=0.13 [-inf, 2.59127]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 58/100 total MC = 78 this test stat = 0.683526\n",
      " mu=0.15 [-inf, 2.60194]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 59/100 total MC = 78 this test stat = 0.937368\n",
      " mu=0.17 [-inf, 1.94974]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 60/100 total MC = 78 this test stat = 1.23121\n",
      " mu=0.19 [-inf, 1.73838]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 61/100 total MC = 702 this test stat = 1.56505\n",
      " mu=0.21 [-inf, 1.73023]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 62/100 total MC = 78 this test stat = 1.93888\n",
      " mu=0.23 [-inf, 3.06401]  in interval = 1\n",
      "\n",
      "NeymanConstruction: Prog: 63/100 total MC = 234 this test stat = 2.35273\n",
      " mu=0.25 [-inf, 1.63166]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 64/100 total MC = 234 this test stat = 2.80658\n",
      " mu=0.27 [-inf, 1.83441]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 65/100 total MC = 234 this test stat = 3.30042\n",
      " mu=0.29 [-inf, 2.06725]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 66/100 total MC = 78 this test stat = 3.83426\n",
      " mu=0.31 [-inf, 2.10484]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 67/100 total MC = 78 this test stat = 4.4081\n",
      " mu=0.33 [-inf, 2.1714]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 68/100 total MC = 78 this test stat = 5.02195\n",
      " mu=0.35 [-inf, 2.77418]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 69/100 total MC = 78 this test stat = 5.67579\n",
      " mu=0.37 [-inf, 2.39797]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 70/100 total MC = 78 this test stat = 6.36963\n",
      " mu=0.39 [-inf, 1.83585]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 71/100 total MC = 78 this test stat = 7.10347\n",
      " mu=0.41 [-inf, 1.92776]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 72/100 total MC = 78 this test stat = 7.87731\n",
      " mu=0.43 [-inf, 1.62512]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 73/100 total MC = 78 this test stat = 8.69116\n",
      " mu=0.45 [-inf, 1.5721]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 74/100 total MC = 78 this test stat = 9.545\n",
      " mu=0.47 [-inf, 1.9811]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 75/100 total MC = 78 this test stat = 10.4388\n",
      " mu=0.49 [-inf, 3.71619]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 76/100 total MC = 78 this test stat = 11.3727\n",
      " mu=0.51 [-inf, 2.09734]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 77/100 total MC = 78 this test stat = 12.3465\n",
      " mu=0.53 [-inf, 1.61789]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 78/100 total MC = 78 this test stat = 13.3604\n",
      " mu=0.55 [-inf, 1.75937]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 79/100 total MC = 78 this test stat = 14.4142\n",
      " mu=0.57 [-inf, 2.16051]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 80/100 total MC = 78 this test stat = 15.5081\n",
      " mu=0.59 [-inf, 2.48971]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 81/100 total MC = 78 this test stat = 16.6419\n",
      " mu=0.61 [-inf, 2.15114]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 82/100 total MC = 78 this test stat = 17.8157\n",
      " mu=0.63 [-inf, 2.63832]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 83/100 total MC = 78 this test stat = 19.0296\n",
      " mu=0.65 [-inf, 2.12006]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 84/100 total MC = 78 this test stat = 20.2834\n",
      " mu=0.67 [-inf, 1.70414]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 85/100 total MC = 78 this test stat = 21.5773\n",
      " mu=0.69 [-inf, 2.54958]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 86/100 total MC = 78 this test stat = 22.9111\n",
      " mu=0.71 [-inf, 2.27992]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 87/100 total MC = 78 this test stat = 24.2849\n",
      " mu=0.73 [-inf, 2.99068]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 88/100 total MC = 78 this test stat = 25.6988\n",
      " mu=0.75 [-inf, 1.60655]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 89/100 total MC = 78 this test stat = 27.1526\n",
      " mu=0.77 [-inf, 1.61728]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 90/100 total MC = 78 this test stat = 28.6465\n",
      " mu=0.79 [-inf, 1.92571]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 91/100 total MC = 78 this test stat = 30.1803\n",
      " mu=0.81 [-inf, 1.69221]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 92/100 total MC = 78 this test stat = 31.7542\n",
      " mu=0.83 [-inf, 3.26227]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 93/100 total MC = 78 this test stat = 33.368\n",
      " mu=0.85 [-inf, 1.75583]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 94/100 total MC = 78 this test stat = 35.0218\n",
      " mu=0.87 [-inf, 2.54103]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 95/100 total MC = 78 this test stat = 36.7157\n",
      " mu=0.89 [-inf, 2.267]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 96/100 total MC = 78 this test stat = 38.4495\n",
      " mu=0.91 [-inf, 2.31167]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 97/100 total MC = 78 this test stat = 40.2234\n",
      " mu=0.93 [-inf, 2.24794]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 98/100 total MC = 78 this test stat = 42.0372\n",
      " mu=0.95 [-inf, 1.29779]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 99/100 total MC = 78 this test stat = 43.891\n",
      " mu=0.97 [-inf, 2.00008]  in interval = 0\n",
      "\n",
      "NeymanConstruction: Prog: 100/100 total MC = 78 this test stat = 45.7849\n",
      " mu=0.99 [-inf, 1.56062]  in interval = 0\n",
      "\n",
      "[#1] INFO:Eval -- 21 points in interval\n"
     ]
    }
   ],
   "source": [
    "fc.FluctuateNumDataEntries(False)\n",
    "\n",
    "interval = fc.GetInterval()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4da74435",
   "metadata": {},
   "source": [
    "example use of BayesianCalculator\n",
    "now we also need to specify a prior in the ModelConfig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ddb2dfc7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:45.669470Z",
     "iopub.status.busy": "2026-05-19T20:35:45.669322Z",
     "iopub.status.idle": "2026-05-19T20:35:45.795213Z",
     "shell.execute_reply": "2026-05-19T20:35:45.794635Z"
    }
   },
   "outputs": [],
   "source": [
    "wspace.factory(\"Uniform::prior(mu)\")\n",
    "modelConfig.SetPriorPdf(wspace[\"prior\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36e6d3b4",
   "metadata": {},
   "source": [
    "example usage of BayesianCalculator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "125be961",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:45.814445Z",
     "iopub.status.busy": "2026-05-19T20:35:45.814276Z",
     "iopub.status.idle": "2026-05-19T20:35:45.969232Z",
     "shell.execute_reply": "2026-05-19T20:35:45.968119Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(normal_over_normal_Int[x]) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 151.721 μs\n",
      "[#1] INFO:Eval -- BayesianCalculator::GetPosteriorFunction :  nll value 190.077 poi value = 0.99\n",
      "[#0] WARNING:InputArguments -- Value 1 is slightly outside the default range [-1, 1] of the variable \"mu\"!\n",
      "The value will be clipped. To restore the dangerous old behavior of silently clipping the value to the range, call `RooRealVar::enableSilentClipping()`.\n",
      "[#1] INFO:Eval -- BayesianCalculator::GetPosteriorFunction : minimum of NLL vs POI for POI =  0.033079 min NLL = 144.292\n",
      "[#1] INFO:Minimization --  Including the following constraint terms in minimization: (prior)\n",
      "[#1] INFO:Minimization -- The following global observables have been defined and their values are taken from the model: ()\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(product_normal_prior) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 1.44233 ms\n",
      "[#1] INFO:InputArguments -- BayesianCalculator:GetInterval Compute the interval from the posterior cdf \n",
      "[#1] INFO:Eval -- BayesianCalculator::GetInterval - found a valid interval : [-0.162917 , 0.229075 ]\n"
     ]
    }
   ],
   "source": [
    "bc = ROOT.RooStats.BayesianCalculator(data, modelConfig)\n",
    "bc.SetConfidenceLevel(confidenceLevel)\n",
    "bcInt = bc.GetInterval()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2aca9d20",
   "metadata": {},
   "source": [
    "example use of MCMCInterval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e5ae0910",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:45.970893Z",
     "iopub.status.busy": "2026-05-19T20:35:45.970757Z",
     "iopub.status.idle": "2026-05-19T20:35:46.084098Z",
     "shell.execute_reply": "2026-05-19T20:35:46.083434Z"
    }
   },
   "outputs": [],
   "source": [
    "mc = ROOT.RooStats.MCMCCalculator(data, modelConfig)\n",
    "mc.SetConfidenceLevel(confidenceLevel)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd86d045",
   "metadata": {},
   "source": [
    "special options"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "df25e5a4",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:46.086279Z",
     "iopub.status.busy": "2026-05-19T20:35:46.086138Z",
     "iopub.status.idle": "2026-05-19T20:35:46.459625Z",
     "shell.execute_reply": "2026-05-19T20:35:46.459157Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization --  Including the following constraint terms in minimization: (prior)\n",
      "[#1] INFO:Minimization -- The following global observables have been defined and their values are taken from the model: ()\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(product_normal_prior) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 1.67581 ms\n",
      "Metropolis-Hastings progress: ....................................................................................................\n",
      "[#1] INFO:Eval -- Proposal acceptance rate: 16.013%\n",
      "[#1] INFO:Eval -- Number of steps in chain: 16013\n"
     ]
    }
   ],
   "source": [
    "mc.SetNumBins(200)  # bins used internally for representing posterior\n",
    "mc.SetNumBurnInSteps(500)  # first N steps to be ignored as burn-in\n",
    "mc.SetNumIters(100000)  # how long to run chain\n",
    "mc.SetLeftSideTailFraction(0.5)  # for central interval\n",
    "mcInt = mc.GetInterval()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5dcdb4b",
   "metadata": {},
   "source": [
    "for this example we know the expected intervals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2670fbaf",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:46.462841Z",
     "iopub.status.busy": "2026-05-19T20:35:46.462658Z",
     "iopub.status.idle": "2026-05-19T20:35:46.607270Z",
     "shell.execute_reply": "2026-05-19T20:35:46.606230Z"
    }
   },
   "outputs": [],
   "source": [
    "expectedLL = data.mean(x) + ROOT.Math.normal_quantile((1 - confidenceLevel) / 2, 1) / ROOT.sqrt(data.numEntries())\n",
    "expectedUL = data.mean(x) + ROOT.Math.normal_quantile_c((1 - confidenceLevel) / 2, 1) / ROOT.sqrt(data.numEntries())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d1f116d0",
   "metadata": {},
   "source": [
    "Use the intervals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "35f84729",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:46.608803Z",
     "iopub.status.busy": "2026-05-19T20:35:46.608666Z",
     "iopub.status.idle": "2026-05-19T20:35:46.747159Z",
     "shell.execute_reply": "2026-05-19T20:35:46.746336Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "expected interval is [-0.16291740856599277, 0.22907538834201804]\n",
      "plc interval is [-0.16291740856518838, 0.22907538834189767]\n",
      "fc interval is [-0.16999999999999998, 0.23000000000000004]\n",
      "bc interval is [-0.1629174101596398, 0.2290753883420101]\n",
      "mc interval is [-0.1669991221278906, 0.23022447898983955]\n",
      "is mu=0 in the interval?  True\n"
     ]
    }
   ],
   "source": [
    "print(\"expected interval is [{}, {}]\".format(expectedLL, expectedUL))\n",
    "print(\"plc interval is [{}, {}]\".format(plInt.LowerLimit(mu), plInt.UpperLimit(mu)))\n",
    "print(\"fc interval is [{}, {}]\".format(interval.LowerLimit(mu), interval.UpperLimit(mu)))\n",
    "print(\"bc interval is [{}, {}]\".format(bcInt.LowerLimit(), bcInt.UpperLimit()))\n",
    "print(\"mc interval is [{}, {}]\".format(mcInt.LowerLimit(mu), mcInt.UpperLimit(mu)))\n",
    "mu.setVal(0)\n",
    "print(\"is mu=0 in the interval? \", plInt.IsInInterval({mu}))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b008a760",
   "metadata": {},
   "source": [
    "make a reasonable style"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "5e8a85ab",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:46.748579Z",
     "iopub.status.busy": "2026-05-19T20:35:46.748448Z",
     "iopub.status.idle": "2026-05-19T20:35:46.873134Z",
     "shell.execute_reply": "2026-05-19T20:35:46.872133Z"
    }
   },
   "outputs": [],
   "source": [
    "ROOT.gStyle.SetCanvasColor(0)\n",
    "ROOT.gStyle.SetCanvasBorderMode(0)\n",
    "ROOT.gStyle.SetPadBorderMode(0)\n",
    "ROOT.gStyle.SetPadColor(0)\n",
    "ROOT.gStyle.SetCanvasColor(0)\n",
    "ROOT.gStyle.SetTitleFillColor(0)\n",
    "ROOT.gStyle.SetFillColor(0)\n",
    "ROOT.gStyle.SetFrameFillColor(0)\n",
    "ROOT.gStyle.SetStatColor(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ffd7af3",
   "metadata": {},
   "source": [
    "some plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "28e4cc84",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:46.874671Z",
     "iopub.status.busy": "2026-05-19T20:35:46.874523Z",
     "iopub.status.idle": "2026-05-19T20:35:47.017240Z",
     "shell.execute_reply": "2026-05-19T20:35:47.016039Z"
    }
   },
   "outputs": [],
   "source": [
    "canvas = ROOT.TCanvas(\"canvas\")\n",
    "canvas.Divide(2, 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa96d553",
   "metadata": {},
   "source": [
    "plot the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ad2bb134",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:47.019520Z",
     "iopub.status.busy": "2026-05-19T20:35:47.019382Z",
     "iopub.status.idle": "2026-05-19T20:35:47.181043Z",
     "shell.execute_reply": "2026-05-19T20:35:47.180335Z"
    }
   },
   "outputs": [],
   "source": [
    "canvas.cd(1)\n",
    "frame = x.frame()\n",
    "data.plotOn(frame)\n",
    "data.statOn(frame)\n",
    "frame.Draw()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f9eaf8d",
   "metadata": {},
   "source": [
    "plot the profile likelihood"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "0b1048af",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:47.188286Z",
     "iopub.status.busy": "2026-05-19T20:35:47.188149Z",
     "iopub.status.idle": "2026-05-19T20:35:47.339898Z",
     "shell.execute_reply": "2026-05-19T20:35:47.323416Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[mu]) Creating instance of MINUIT\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_normal_over_normal_Int[x]_normalData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[mu]) determining minimum likelihood for current configurations w.r.t all observable\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      "[#0] ERROR:InputArguments -- RooArgSet::checkForDup: ERROR argument with name mu is already in this set\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[mu]) minimum found at (mu=0.033079)\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",
      ".[#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",
      ".[#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"
     ]
    }
   ],
   "source": [
    "canvas.cd(2)\n",
    "plot = ROOT.RooStats.LikelihoodIntervalPlot(plInt)\n",
    "plot.Draw()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "827834cd",
   "metadata": {},
   "source": [
    "plot the MCMC interval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "7137339f",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:47.351095Z",
     "iopub.status.busy": "2026-05-19T20:35:47.350948Z",
     "iopub.status.idle": "2026-05-19T20:35:47.651286Z",
     "shell.execute_reply": "2026-05-19T20:35:47.650385Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Real time 0:00:04, CP time 2.520\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file IntervalExamples.png has been created\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222947640\" style=\"width: 700px; height: 500px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222947640() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(64958,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222947640', 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_1779222947640();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "canvas.cd(3)\n",
    "mcPlot = ROOT.RooStats.MCMCIntervalPlot(mcInt)\n",
    "mcPlot.SetLineColor(\"kGreen\")\n",
    "mcPlot.SetLineWidth(2)\n",
    "mcPlot.Draw()\n",
    "\n",
    "canvas.cd(4)\n",
    "bcPlot = bc.GetPosteriorPlot()\n",
    "bcPlot.Draw()\n",
    "\n",
    "canvas.Update()\n",
    "\n",
    "t.Stop()\n",
    "t.Print()\n",
    "\n",
    "canvas.SaveAs(\"IntervalExamples.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "165b7bb8",
   "metadata": {},
   "source": [
    "TODO: The BayesianCalculator and MCMCCalculator have to be destructed first.\n",
    "Otherwise, we can get segmentation faults depending on the destruction order,\n",
    "which is random in Python. Probably the issue is that some object has a\n",
    "non-owning pointer to another object, which it uses in its destructor. This\n",
    "should be fixed either in the design of RooStats in C++, or with\n",
    "phythonizations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "068f87f6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:47.652916Z",
     "iopub.status.busy": "2026-05-19T20:35:47.652765Z",
     "iopub.status.idle": "2026-05-19T20:35:47.762050Z",
     "shell.execute_reply": "2026-05-19T20:35:47.761400Z"
    }
   },
   "outputs": [],
   "source": [
    "del bc\n",
    "del mc"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80ae6cd7",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "0e704503",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:47.772382Z",
     "iopub.status.busy": "2026-05-19T20:35:47.772236Z",
     "iopub.status.idle": "2026-05-19T20:35:47.888492Z",
     "shell.execute_reply": "2026-05-19T20:35:47.887708Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222947885\" style=\"width: 700px; height: 500px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222947885() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(64958,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222947885', 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_1779222947885();\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
}
