{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "89fc9a96",
   "metadata": {},
   "source": [
    "# StandardProfileInspectorDemo\n",
    "Standard demo of the ProfileInspector class\n",
    "StandardProfileInspectorDemo\n",
    "\n",
    "This is a standard demo that can be used with any ROOT file\n",
    "prepared in the standard way.  You specify:\n",
    " - name for input ROOT file\n",
    " - name of workspace inside ROOT file that holds model and data\n",
    " - name of ModelConfig that specifies details for calculator tools\n",
    " - name of dataset\n",
    "\n",
    "With the values provided below this script will attempt to run the\n",
    "standard hist2workspace example and read the ROOT file\n",
    "that it produces.\n",
    "\n",
    "The actual heart of the demo is only about 10 lines long.\n",
    "\n",
    "The ProfileInspector plots the conditional maximum likelihood estimate\n",
    "of each nuisance parameter in the model vs. the parameter of interest.\n",
    "(aka. profiled value of nuisance parameter vs. parameter of interest)\n",
    "(aka. best fit nuisance parameter with p.o.i fixed vs. parameter of interest)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:**  Akeem Hart, 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:36 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f7782176",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:28.312369Z",
     "iopub.status.busy": "2026-05-19T20:36:28.312208Z",
     "iopub.status.idle": "2026-05-19T20:36:29.283229Z",
     "shell.execute_reply": "2026-05-19T20:36:29.282635Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3078a158",
   "metadata": {},
   "source": [
    "-------------------------------------------------------\n",
    "First part is just to access a user-defined file\n",
    "or create the standard example file if it doesn't exist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b7a31751",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:29.289092Z",
     "iopub.status.busy": "2026-05-19T20:36:29.288953Z",
     "iopub.status.idle": "2026-05-19T20:36:29.401516Z",
     "shell.execute_reply": "2026-05-19T20:36:29.400410Z"
    }
   },
   "outputs": [],
   "source": [
    "workspaceName = \"combined\"\n",
    "modelConfigName = \"ModelConfig\"\n",
    "dataName = \"obsData\"\n",
    "filename = \"results/example_combined_GaussExample_model.root\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2bc87872",
   "metadata": {},
   "source": [
    "if file does not exists generate with histfactory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6cacae42",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:29.403156Z",
     "iopub.status.busy": "2026-05-19T20:36:29.403031Z",
     "iopub.status.idle": "2026-05-19T20:36:29.634878Z",
     "shell.execute_reply": "2026-05-19T20:36:29.633814Z"
    }
   },
   "outputs": [],
   "source": [
    "if ROOT.gSystem.AccessPathName(filename):\n",
    "    # Normally this would be run on the command line\n",
    "    print(\"will run standard hist2workspace example\")\n",
    "    ROOT.gROOT.ProcessLine(\".! prepareHistFactory .\")\n",
    "    ROOT.gROOT.ProcessLine(\".! hist2workspace config/example.xml\")\n",
    "    print(\"\\n\\n---------------------\")\n",
    "    print(\"Done creating example input\")\n",
    "    print(\"---------------------\\n\\n\")\n",
    "\n",
    "file = ROOT.TFile.Open(filename)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc1d21c8",
   "metadata": {},
   "source": [
    "-------------------------------------------------------\n",
    "Tutorial starts here\n",
    "-------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92144ec2",
   "metadata": {},
   "source": [
    "get the workspace out of the file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "24c1f720",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:29.637117Z",
     "iopub.status.busy": "2026-05-19T20:36:29.636989Z",
     "iopub.status.idle": "2026-05-19T20:36:29.890074Z",
     "shell.execute_reply": "2026-05-19T20:36:29.889037Z"
    }
   },
   "outputs": [],
   "source": [
    "w = file.Get(workspaceName)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89f55a90",
   "metadata": {},
   "source": [
    "get the modelConfig out of the file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "247ae897",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:29.891734Z",
     "iopub.status.busy": "2026-05-19T20:36:29.891588Z",
     "iopub.status.idle": "2026-05-19T20:36:30.042939Z",
     "shell.execute_reply": "2026-05-19T20:36:30.042514Z"
    }
   },
   "outputs": [],
   "source": [
    "mc = w[modelConfigName]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67cb50ed",
   "metadata": {},
   "source": [
    "get the modelConfig out of the file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3b742ed9",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:30.046469Z",
     "iopub.status.busy": "2026-05-19T20:36:30.046324Z",
     "iopub.status.idle": "2026-05-19T20:36:30.164139Z",
     "shell.execute_reply": "2026-05-19T20:36:30.163518Z"
    }
   },
   "outputs": [],
   "source": [
    "data = w[dataName]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3600ac1",
   "metadata": {},
   "source": [
    "-----------------------------\n",
    "now use the profile inspector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "71661c90",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:30.165710Z",
     "iopub.status.busy": "2026-05-19T20:36:30.165555Z",
     "iopub.status.idle": "2026-05-19T20:36:30.346120Z",
     "shell.execute_reply": "2026-05-19T20:36:30.345485Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization -- p.d.f. provides expected number of events, including extended term in likelihood.\n",
      "[#1] INFO:Minimization --  Including the following constraint terms in minimization: (lumiConstraint,alpha_syst1Constraint,alpha_syst2Constraint,alpha_syst3Constraint,gamma_stat_channel1_bin_0_constraint,gamma_stat_channel1_bin_1_constraint)\n",
      "[#1] INFO:Minimization -- The global observables are not defined , normalize constraints with respect to the parameters (Lumi,SigXsecOverSM,alpha_syst1,alpha_syst2,alpha_syst3,gamma_stat_channel1_bin_0,gamma_stat_channel1_bin_1)\n",
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(simPdf) 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 9.15355 ms\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[SigXsecOverSM]) Creating instance of MINUIT\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_simPdf_obsData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[SigXsecOverSM]) 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:NumericIntegration -- RooRealIntegral::init(gamma_stat_channel1_bin_1_constraint_Int[gamma_stat_channel1_bin_1]) using numeric integrator RooIntegrator1D to calculate Int(gamma_stat_channel1_bin_1)\n",
      "[#1] INFO:NumericIntegration -- RooRealIntegral::init(gamma_stat_channel1_bin_0_constraint_Int[gamma_stat_channel1_bin_0]) using numeric integrator RooIntegrator1D to calculate Int(gamma_stat_channel1_bin_0)\n",
      "[#1] INFO:Minimization -- RooProfileLL::evaluate(RooEvaluatorWrapper_Profile[SigXsecOverSM]) minimum found at (SigXsecOverSM=1.11273)\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n",
      ".[#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": [
    "p = ROOT.RooStats.ProfileInspector()\n",
    "profile_plots = p.GetListOfProfilePlots(data, mc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f02e5875",
   "metadata": {},
   "source": [
    "now make plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8cdbbb62",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:30.354337Z",
     "iopub.status.busy": "2026-05-19T20:36:30.354179Z",
     "iopub.status.idle": "2026-05-19T20:36:30.600660Z",
     "shell.execute_reply": "2026-05-19T20:36:30.600106Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222990590\" style=\"width: 800px; height: 200px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222990590() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(50183,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222990590', 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_1779222990590();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "c1 = ROOT.TCanvas(\"c1\", \"ProfileInspectorDemo\", 800, 200)\n",
    "n = len(profile_plots)\n",
    "if n > 4:\n",
    "    nx = int(n**0.5)\n",
    "    ny = ROOT.TMath.CeilNint(n / nx)\n",
    "    nx = ROOT.TMath.CeilNint(n**0.5)\n",
    "    c1.Divide(ny, nx)\n",
    "else:\n",
    "    c1.Divide(n)\n",
    "for i, plot in enumerate(profile_plots):\n",
    "    c1.cd(i + 1)\n",
    "    plot.Draw(\"al\")\n",
    "\n",
    "c1.Update()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8a59cbb",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f4cc9dfb",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:36:30.607121Z",
     "iopub.status.busy": "2026-05-19T20:36:30.606971Z",
     "iopub.status.idle": "2026-05-19T20:36:30.723644Z",
     "shell.execute_reply": "2026-05-19T20:36:30.723125Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222990721\" style=\"width: 800px; height: 200px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222990721() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(50183,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222990721', 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_1779222990721();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%jsroot on\n",
    "from ROOT import gROOT \n",
    "gROOT.GetListOfCanvases().Draw()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
