{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "aa891d77",
   "metadata": {},
   "source": [
    "# rf707_kernelestimation\n",
    "Special pdf's: using non-parametric (multi-dimensional) kernel estimation pdfs\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:34 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "68633b9a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:47.987587Z",
     "iopub.status.busy": "2026-05-19T20:34:47.987463Z",
     "iopub.status.idle": "2026-05-19T20:34:48.965056Z",
     "shell.execute_reply": "2026-05-19T20:34:48.964665Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d7f3cf6",
   "metadata": {},
   "source": [
    "Create low stats 1D dataset\n",
    "-------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebb6fde0",
   "metadata": {},
   "source": [
    "Create a toy pdf for sampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "30871089",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:48.977376Z",
     "iopub.status.busy": "2026-05-19T20:34:48.977227Z",
     "iopub.status.idle": "2026-05-19T20:34:49.224855Z",
     "shell.execute_reply": "2026-05-19T20:34:49.223956Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", 0, 20)\n",
    "p = ROOT.RooPolynomial(\"p\", \"p\", x, [0.01, -0.01, 0.0004])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79a3fe88",
   "metadata": {},
   "source": [
    "Sample 500 events from p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "730ed9b9",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:49.226768Z",
     "iopub.status.busy": "2026-05-19T20:34:49.226622Z",
     "iopub.status.idle": "2026-05-19T20:34:49.373256Z",
     "shell.execute_reply": "2026-05-19T20:34:49.372555Z"
    }
   },
   "outputs": [],
   "source": [
    "data1 = p.generate({x}, 200)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc050d7f",
   "metadata": {},
   "source": [
    "Create 1D kernel estimation pdf\n",
    "---------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "81d2fcb1",
   "metadata": {},
   "source": [
    "Create adaptive kernel estimation pdf. In self configuration the input data\n",
    "is mirrored over the boundaries to minimize edge effects in distribution\n",
    "that do not fall to zero towards the edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b0dd0bbf",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:49.375242Z",
     "iopub.status.busy": "2026-05-19T20:34:49.375083Z",
     "iopub.status.idle": "2026-05-19T20:34:49.492780Z",
     "shell.execute_reply": "2026-05-19T20:34:49.491935Z"
    }
   },
   "outputs": [],
   "source": [
    "kest1 = ROOT.RooKeysPdf(\"kest1\", \"kest1\", x, data1, ROOT.RooKeysPdf.MirrorBoth)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2df01708",
   "metadata": {},
   "source": [
    "An adaptive kernel estimation pdf on the same data without mirroring option\n",
    "for comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ff9a029d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:49.494563Z",
     "iopub.status.busy": "2026-05-19T20:34:49.494409Z",
     "iopub.status.idle": "2026-05-19T20:34:49.598372Z",
     "shell.execute_reply": "2026-05-19T20:34:49.597958Z"
    }
   },
   "outputs": [],
   "source": [
    "kest2 = ROOT.RooKeysPdf(\"kest2\", \"kest2\", x, data1, ROOT.RooKeysPdf.NoMirror)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2dbcfe09",
   "metadata": {},
   "source": [
    "Adaptive kernel estimation pdf with increased bandwidth scale factor\n",
    "(promotes smoothness over detail preservation)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "f47ae5ea",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:49.615249Z",
     "iopub.status.busy": "2026-05-19T20:34:49.615108Z",
     "iopub.status.idle": "2026-05-19T20:34:49.721476Z",
     "shell.execute_reply": "2026-05-19T20:34:49.721052Z"
    }
   },
   "outputs": [],
   "source": [
    "kest3 = ROOT.RooKeysPdf(\"kest1\", \"kest1\", x, data1, ROOT.RooKeysPdf.MirrorBoth, 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6f81c2c",
   "metadata": {},
   "source": [
    "Plot kernel estimation pdfs with and without mirroring over data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f9ebad91",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:49.728258Z",
     "iopub.status.busy": "2026-05-19T20:34:49.728124Z",
     "iopub.status.idle": "2026-05-19T20:34:49.922313Z",
     "shell.execute_reply": "2026-05-19T20:34:49.921642Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x556c1b2b3220>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame = x.frame(Title=\"Adaptive kernel estimation pdf with and w/o mirroring\", Bins=20)\n",
    "data1.plotOn(frame)\n",
    "kest1.plotOn(frame)\n",
    "kest2.plotOn(frame, LineStyle=\"--\", LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb8d55ba",
   "metadata": {},
   "source": [
    "Plot kernel estimation pdfs with regular and increased bandwidth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f15350a3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:49.924632Z",
     "iopub.status.busy": "2026-05-19T20:34:49.924495Z",
     "iopub.status.idle": "2026-05-19T20:34:50.029838Z",
     "shell.execute_reply": "2026-05-19T20:34:50.029197Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x556c1ad134e0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame2 = x.frame(Title=\"Adaptive kernel estimation pdf with regular, bandwidth\")\n",
    "kest1.plotOn(frame2)\n",
    "kest3.plotOn(frame2, LineColor=\"m\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e401d301",
   "metadata": {},
   "source": [
    "Create low status 2D dataset\n",
    "-------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "faa83fff",
   "metadata": {},
   "source": [
    "Construct a 2D toy pdf for sampleing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "40e7e423",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:50.032292Z",
     "iopub.status.busy": "2026-05-19T20:34:50.032132Z",
     "iopub.status.idle": "2026-05-19T20:34:50.171652Z",
     "shell.execute_reply": "2026-05-19T20:34:50.170949Z"
    }
   },
   "outputs": [],
   "source": [
    "y = ROOT.RooRealVar(\"y\", \"y\", 0, 20)\n",
    "py = ROOT.RooPolynomial(\n",
    "    \"py\",\n",
    "    \"py\",\n",
    "    y,\n",
    "    [0.01, 0.01, -0.0004],\n",
    ")\n",
    "pxy = ROOT.RooProdPdf(\"pxy\", \"pxy\", [p, py])\n",
    "data2 = pxy.generate({x, y}, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ab09cf2",
   "metadata": {},
   "source": [
    "Create 2D kernel estimation pdf\n",
    "---------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8149e2a4",
   "metadata": {},
   "source": [
    "Create 2D adaptive kernel estimation pdf with mirroring"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a7b18de2",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:50.173800Z",
     "iopub.status.busy": "2026-05-19T20:34:50.173499Z",
     "iopub.status.idle": "2026-05-19T20:34:50.411653Z",
     "shell.execute_reply": "2026-05-19T20:34:50.410912Z"
    }
   },
   "outputs": [],
   "source": [
    "kest4 = ROOT.RooNDKeysPdf(\"kest4\", \"kest4\", [x, y], data2, \"am\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ca8fab8",
   "metadata": {},
   "source": [
    "Create 2D adaptive kernel estimation pdf with mirroring and double\n",
    "bandwidth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "eb38599c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:50.413766Z",
     "iopub.status.busy": "2026-05-19T20:34:50.413637Z",
     "iopub.status.idle": "2026-05-19T20:34:50.733253Z",
     "shell.execute_reply": "2026-05-19T20:34:50.732818Z"
    }
   },
   "outputs": [],
   "source": [
    "kest5 = ROOT.RooNDKeysPdf(\"kest5\", \"kest5\", [x, y], data2, \"am\", 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7058cb0a",
   "metadata": {},
   "source": [
    "Create a histogram of the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5d493fc7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:50.735568Z",
     "iopub.status.busy": "2026-05-19T20:34:50.735447Z",
     "iopub.status.idle": "2026-05-19T20:34:50.874025Z",
     "shell.execute_reply": "2026-05-19T20:34:50.873592Z"
    }
   },
   "outputs": [],
   "source": [
    "hh_data = data2.createHistogram(\"hh_data\", x, Binning=10, YVar=dict(var=y, Binning=10))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b3a2963",
   "metadata": {},
   "source": [
    "Create histogram of the 2d kernel estimation pdfs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "db47effd",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:50.882433Z",
     "iopub.status.busy": "2026-05-19T20:34:50.882293Z",
     "iopub.status.idle": "2026-05-19T20:34:51.311701Z",
     "shell.execute_reply": "2026-05-19T20:34:51.311082Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf707_kernelestimation.png has been created\n"
     ]
    }
   ],
   "source": [
    "hh_pdf = kest4.createHistogram(\"hh_pdf\", x, Binning=25, YVar=dict(var=y, Binning=25))\n",
    "hh_pdf2 = kest5.createHistogram(\"hh_pdf2\", x, Binning=25, YVar=dict(var=y, Binning=25))\n",
    "hh_pdf.SetLineColor(\"kBlue\")\n",
    "hh_pdf2.SetLineColor(\"kMagenta\")\n",
    "\n",
    "c = ROOT.TCanvas(\"rf707_kernelestimation\", \"rf707_kernelestimation\", 800, 800)\n",
    "c.Divide(2, 2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame.GetYaxis().SetTitleOffset(1.4)\n",
    "frame.Draw()\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame2.GetYaxis().SetTitleOffset(1.8)\n",
    "frame2.Draw()\n",
    "c.cd(3)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "hh_data.GetZaxis().SetTitleOffset(1.4)\n",
    "hh_data.Draw(\"lego\")\n",
    "c.cd(4)\n",
    "ROOT.gPad.SetLeftMargin(0.20)\n",
    "hh_pdf.GetZaxis().SetTitleOffset(2.4)\n",
    "hh_pdf.Draw(\"surf\")\n",
    "hh_pdf2.Draw(\"surfsame\")\n",
    "\n",
    "c.SaveAs(\"rf707_kernelestimation.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a9ca9fa",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "5149a4c4",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:51.313524Z",
     "iopub.status.busy": "2026-05-19T20:34:51.313403Z",
     "iopub.status.idle": "2026-05-19T20:34:51.504926Z",
     "shell.execute_reply": "2026-05-19T20:34:51.504306Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222891494\" style=\"width: 800px; height: 800px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222891494() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(74182,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222891494', 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_1779222891494();\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
}
