{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "51fa0a0b",
   "metadata": {},
   "source": [
    "# rf706_histpdf\n",
    "Special pdf's: histogram based pdfs and functions\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": "012b5841",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:43.846367Z",
     "iopub.status.busy": "2026-05-19T20:34:43.846250Z",
     "iopub.status.idle": "2026-05-19T20:34:44.807717Z",
     "shell.execute_reply": "2026-05-19T20:34:44.806915Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b69fece8",
   "metadata": {},
   "source": [
    "Create pdf for sampling\n",
    "---------------------------------------------"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b677c9c9",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:44.809551Z",
     "iopub.status.busy": "2026-05-19T20:34:44.809413Z",
     "iopub.status.idle": "2026-05-19T20:34:45.066475Z",
     "shell.execute_reply": "2026-05-19T20:34:45.065694Z"
    }
   },
   "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": "402bd9ed",
   "metadata": {},
   "source": [
    "Create low stats histogram\n",
    "---------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9b9016c",
   "metadata": {},
   "source": [
    "Sample 500 events from p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2ba65230",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.078510Z",
     "iopub.status.busy": "2026-05-19T20:34:45.078369Z",
     "iopub.status.idle": "2026-05-19T20:34:45.225616Z",
     "shell.execute_reply": "2026-05-19T20:34:45.224859Z"
    }
   },
   "outputs": [],
   "source": [
    "x.setBins(20)\n",
    "data1 = p.generate({x}, 500)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7193c75",
   "metadata": {},
   "source": [
    "Create a binned dataset with 20 bins and 500 events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c9364899",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.227245Z",
     "iopub.status.busy": "2026-05-19T20:34:45.227105Z",
     "iopub.status.idle": "2026-05-19T20:34:45.340563Z",
     "shell.execute_reply": "2026-05-19T20:34:45.339876Z"
    }
   },
   "outputs": [],
   "source": [
    "hist1 = data1.binnedClone()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90a74135",
   "metadata": {},
   "source": [
    "Represent data in dh as pdf in x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "47a6f32b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.342581Z",
     "iopub.status.busy": "2026-05-19T20:34:45.342451Z",
     "iopub.status.idle": "2026-05-19T20:34:45.457788Z",
     "shell.execute_reply": "2026-05-19T20:34:45.457060Z"
    }
   },
   "outputs": [],
   "source": [
    "histpdf1 = ROOT.RooHistPdf(\"histpdf1\", \"histpdf1\", {x}, hist1, 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab961288",
   "metadata": {},
   "source": [
    "Plot unbinned data and histogram pdf overlaid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5b807c65",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.459871Z",
     "iopub.status.busy": "2026-05-19T20:34:45.459740Z",
     "iopub.status.idle": "2026-05-19T20:34:45.644126Z",
     "shell.execute_reply": "2026-05-19T20:34:45.643542Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5578ec844340>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame1 = x.frame(Title=\"Low statistics histogram pdf\", Bins=100)\n",
    "data1.plotOn(frame1)\n",
    "histpdf1.plotOn(frame1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c22ead33",
   "metadata": {},
   "source": [
    "Create high stats histogram\n",
    "-----------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "688b607e",
   "metadata": {},
   "source": [
    "Sample 100000 events from p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "03915710",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.646321Z",
     "iopub.status.busy": "2026-05-19T20:34:45.646196Z",
     "iopub.status.idle": "2026-05-19T20:34:45.788127Z",
     "shell.execute_reply": "2026-05-19T20:34:45.787565Z"
    }
   },
   "outputs": [],
   "source": [
    "x.setBins(10)\n",
    "data2 = p.generate({x}, 100000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a0671a9",
   "metadata": {},
   "source": [
    "Create a binned dataset with 10 bins and 100K events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "de724346",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.790193Z",
     "iopub.status.busy": "2026-05-19T20:34:45.790062Z",
     "iopub.status.idle": "2026-05-19T20:34:45.896401Z",
     "shell.execute_reply": "2026-05-19T20:34:45.895856Z"
    }
   },
   "outputs": [],
   "source": [
    "hist2 = data2.binnedClone()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "586a93f4",
   "metadata": {},
   "source": [
    "Represent data in dh as pdf in x, 2nd order interpolation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "bc023ec2",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:45.898348Z",
     "iopub.status.busy": "2026-05-19T20:34:45.898219Z",
     "iopub.status.idle": "2026-05-19T20:34:46.001621Z",
     "shell.execute_reply": "2026-05-19T20:34:46.000990Z"
    }
   },
   "outputs": [],
   "source": [
    "histpdf2 = ROOT.RooHistPdf(\"histpdf2\", \"histpdf2\", {x}, hist2, 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4330e081",
   "metadata": {},
   "source": [
    "Plot unbinned data and histogram pdf overlaid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ec5cedf3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:46.003554Z",
     "iopub.status.busy": "2026-05-19T20:34:46.003427Z",
     "iopub.status.idle": "2026-05-19T20:34:46.249158Z",
     "shell.execute_reply": "2026-05-19T20:34:46.248428Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf706_histpdf.png has been created\n"
     ]
    }
   ],
   "source": [
    "frame2 = x.frame(Title=\"High stats histogram pdf with interpolation\", Bins=100)\n",
    "data2.plotOn(frame2)\n",
    "histpdf2.plotOn(frame2)\n",
    "\n",
    "c = ROOT.TCanvas(\"rf706_histpdf\", \"rf706_histpdf\", 800, 400)\n",
    "c.Divide(2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame1.GetYaxis().SetTitleOffset(1.4)\n",
    "frame1.Draw()\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame2.GetYaxis().SetTitleOffset(1.8)\n",
    "frame2.Draw()\n",
    "\n",
    "c.SaveAs(\"rf706_histpdf.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8717a963",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9ac3cd19",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:46.251171Z",
     "iopub.status.busy": "2026-05-19T20:34:46.251041Z",
     "iopub.status.idle": "2026-05-19T20:34:46.433401Z",
     "shell.execute_reply": "2026-05-19T20:34:46.432747Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222886424\" style=\"width: 800px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222886424() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(41729,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222886424', 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_1779222886424();\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
}
