{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "b138f6d9",
   "metadata": {},
   "source": [
    "# rf503_wspaceread\n",
    "'ORGANIZATION AND SIMULTANEOUS FITS' RooFit tutorial macro #503\n",
    "\n",
    "Reading and using a workspace\n",
    "\n",
    "The input file for self macro is generated by rf502_wspaceread.py\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:**  Clemens Lange, Wouter Verkerke (C version)  \n",
    "<i><small>This notebook tutorial was automatically generated with <a href= \"https://github.com/root-project/root/blob/master/documentation/doxygen/converttonotebook.py\">ROOTBOOK-izer</a> from the macro found in the ROOT repository  on Tuesday, May 19, 2026 at 08:32 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1e7f3925",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:13.263234Z",
     "iopub.status.busy": "2026-05-19T20:32:13.263118Z",
     "iopub.status.idle": "2026-05-19T20:32:14.216531Z",
     "shell.execute_reply": "2026-05-19T20:32:14.216039Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50b72896",
   "metadata": {},
   "source": [
    "Read workspace from file\n",
    "-----------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d74fb114",
   "metadata": {},
   "source": [
    "Open input file with workspace (generated by rf503_wspacewrite)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e82f853d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:14.218753Z",
     "iopub.status.busy": "2026-05-19T20:32:14.218595Z",
     "iopub.status.idle": "2026-05-19T20:32:14.414417Z",
     "shell.execute_reply": "2026-05-19T20:32:14.413724Z"
    }
   },
   "outputs": [],
   "source": [
    "f = ROOT.TFile(\"rf502_workspace_py.root\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "35ce05ad",
   "metadata": {},
   "source": [
    "Retrieve workspace from file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4eefa2a9",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:14.416096Z",
     "iopub.status.busy": "2026-05-19T20:32:14.415969Z",
     "iopub.status.idle": "2026-05-19T20:32:14.610661Z",
     "shell.execute_reply": "2026-05-19T20:32:14.610099Z"
    }
   },
   "outputs": [],
   "source": [
    "w = f.Get(\"w\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c21f62a",
   "metadata": {},
   "source": [
    "Retrieve pdf, data from workspace\n",
    "-----------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c1e9928",
   "metadata": {},
   "source": [
    "Retrieve x, and data from workspace"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c14b491c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:14.618636Z",
     "iopub.status.busy": "2026-05-19T20:32:14.618486Z",
     "iopub.status.idle": "2026-05-19T20:32:14.791072Z",
     "shell.execute_reply": "2026-05-19T20:32:14.790518Z"
    }
   },
   "outputs": [],
   "source": [
    "x = w[\"x\"]\n",
    "model = w[\"model\"]\n",
    "data = w[\"modelData\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d6b3cd9",
   "metadata": {},
   "source": [
    "Print structure of composite p.d.f."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c6a7cfcb",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:14.792884Z",
     "iopub.status.busy": "2026-05-19T20:32:14.792756Z",
     "iopub.status.idle": "2026-05-19T20:32:14.902728Z",
     "shell.execute_reply": "2026-05-19T20:32:14.902038Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0x563ffe70b010 RooAddPdf::model = 1/1 [Auto,Clean] \n",
      "  0x563ffe8ae1e0/V- RooChebychev::bkg = 1 [Auto,Dirty] \n",
      "    0x563ffe10a1b0/V- RooRealVar::x = 5\n",
      "    0x563ff5706f40/V- RooRealVar::a0 = 0.5\n",
      "    0x563ff56ff780/V- RooRealVar::a1 = 0\n",
      "  0x563ffe9543b0/V- RooRealVar::bkgfrac = 0.5\n",
      "  0x563ffe947260/V- RooAddPdf::sig = 1/1 [Auto,Clean] \n",
      "    0x563ffe8ce0e0/V- RooGaussian::sig1 = 1 [Auto,Dirty] \n",
      "      0x563ffe10a1b0/V- RooRealVar::x = 5\n",
      "      0x563ffe0a9870/V- RooRealVar::mean = 5\n",
      "      0x563ff5d716a0/V- RooRealVar::sigma1 = 0.5\n",
      "    0x563ff5d70490/V- RooRealVar::sig1frac = 0.8\n",
      "    0x563ffe8db850/V- RooGaussian::sig2 = 1 [Auto,Dirty] \n",
      "      0x563ffe10a1b0/V- RooRealVar::x = 5\n",
      "      0x563ffe0a9870/V- RooRealVar::mean = 5\n",
      "      0x563ffdf996b0/V- RooRealVar::sigma2 = 1\n"
     ]
    }
   ],
   "source": [
    "model.Print(\"t\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce340b80",
   "metadata": {},
   "source": [
    "Fit model to data, plot model\n",
    "---------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7bcd17a8",
   "metadata": {},
   "source": [
    "Fit model to data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "f23eb51e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:14.904383Z",
     "iopub.status.busy": "2026-05-19T20:32:14.904252Z",
     "iopub.status.idle": "2026-05-19T20:32:15.105981Z",
     "shell.execute_reply": "2026-05-19T20:32:15.105421Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(model) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- using generic CPU library compiled with no vectorizations\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 7.09194 ms\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model_modelData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooFitResult object at 0x(nil)>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fitTo(data, PrintLevel=-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7124a7ab",
   "metadata": {},
   "source": [
    "Plot data and PDF overlaid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "33e363bf",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:15.107799Z",
     "iopub.status.busy": "2026-05-19T20:32:15.107660Z",
     "iopub.status.idle": "2026-05-19T20:32:15.287613Z",
     "shell.execute_reply": "2026-05-19T20:32:15.287071Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x563fff43e680>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xframe = x.frame(Title=\"Model and data read from workspace\")\n",
    "data.plotOn(xframe)\n",
    "model.plotOn(xframe)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fa74600",
   "metadata": {},
   "source": [
    "Overlay the background component of model with a dashed line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c1ef8d4e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:15.289550Z",
     "iopub.status.busy": "2026-05-19T20:32:15.289421Z",
     "iopub.status.idle": "2026-05-19T20:32:15.404117Z",
     "shell.execute_reply": "2026-05-19T20:32:15.403584Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x563fff43e680>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: ()\n"
     ]
    }
   ],
   "source": [
    "model.plotOn(xframe, Components=\"bkg\", LineStyle=\"--\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f535d1f3",
   "metadata": {},
   "source": [
    "Overlay the background+sig2 components of model with a dotted line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8fd3caf7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:15.405630Z",
     "iopub.status.busy": "2026-05-19T20:32:15.405489Z",
     "iopub.status.idle": "2026-05-19T20:32:15.510589Z",
     "shell.execute_reply": "2026-05-19T20:32:15.510075Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (sig)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x563fff43e680>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.plotOn(xframe, Components=\"bkg,sig2\", LineStyle=\":\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56adf8c3",
   "metadata": {},
   "source": [
    "Draw the frame on the canvas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "67d77935",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:15.512665Z",
     "iopub.status.busy": "2026-05-19T20:32:15.512518Z",
     "iopub.status.idle": "2026-05-19T20:32:15.726125Z",
     "shell.execute_reply": "2026-05-19T20:32:15.725584Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf503_wspaceread.png has been created\n"
     ]
    }
   ],
   "source": [
    "c = ROOT.TCanvas(\"rf503_wspaceread\", \"rf503_wspaceread\", 600, 600)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "xframe.GetYaxis().SetTitleOffset(1.4)\n",
    "xframe.Draw()\n",
    "\n",
    "c.SaveAs(\"rf503_wspaceread.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c3f8cfe",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d09a08b6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:32:15.727865Z",
     "iopub.status.busy": "2026-05-19T20:32:15.727734Z",
     "iopub.status.idle": "2026-05-19T20:32:15.908977Z",
     "shell.execute_reply": "2026-05-19T20:32:15.908358Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222735899\" style=\"width: 600px; height: 600px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222735899() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(34518,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222735899', 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_1779222735899();\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
}
