{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f0318298",
   "metadata": {},
   "source": [
    "# rf710_roopoly\n",
    "Taylor expansion of RooFit functions using the taylorExpand function\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:** Rahul Balasubramanian  \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": "fc5ec2db",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:03.349573Z",
     "iopub.status.busy": "2026-05-19T20:35:03.349445Z",
     "iopub.status.idle": "2026-05-19T20:35:04.330716Z",
     "shell.execute_reply": "2026-05-19T20:35:04.330016Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9927c41e",
   "metadata": {},
   "source": [
    "Create functions\n",
    "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c23a3304",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:04.333026Z",
     "iopub.status.busy": "2026-05-19T20:35:04.332892Z",
     "iopub.status.idle": "2026-05-19T20:35:04.491428Z",
     "shell.execute_reply": "2026-05-19T20:35:04.490705Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", 0.0, -3, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4940e3d5",
   "metadata": {},
   "source": [
    "RooPolyFunc polynomial\n",
    "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -\n",
    "x ^ 4 - 5x ^ 3 + 5x ^ 2 + 5x - 6\n",
    "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "57031527",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:04.493794Z",
     "iopub.status.busy": "2026-05-19T20:35:04.493646Z",
     "iopub.status.idle": "2026-05-19T20:35:04.691425Z",
     "shell.execute_reply": "2026-05-19T20:35:04.690729Z"
    }
   },
   "outputs": [],
   "source": [
    "f = ROOT.RooPolyFunc(\"f\", \"f\", ROOT.RooArgList(x))\n",
    "f.addTerm(+1, x, 4)\n",
    "f.addTerm(-5, x, 3)\n",
    "f.addTerm(+5, x, 2)\n",
    "f.addTerm(+5, x, 1)\n",
    "f.addTerm(-6, x, 0)\n",
    "\n",
    "f = ROOT.RooFormulaVar(\"f\", \"f\", \"pow(@0,4) -5 * pow(@0,3) +5 * pow(@0,2) + 5 * pow(@0,1) - 6\", [x])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3bdd060c",
   "metadata": {},
   "source": [
    "taylor expand around x0 = 0\n",
    "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "597e0f95",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:04.693630Z",
     "iopub.status.busy": "2026-05-19T20:35:04.693493Z",
     "iopub.status.idle": "2026-05-19T20:35:05.144967Z",
     "shell.execute_reply": "2026-05-19T20:35:05.144316Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(ELineStyle) (kDashed) : (unsigned int) 2\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(ELineStyle) (kDotted) : (unsigned int) 3\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf710_roopoly.png has been created\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222905134\" style=\"width: 400px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222905134() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(30475,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222905134', 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_1779222905134();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x0 = 2.0\n",
    "taylor_o1 = ROOT.RooPolyFunc.taylorExpand(\"taylorfunc_o1\", \"taylor expansion order 1\", f, [x], 1, [x0])\n",
    "ROOT.SetOwnership(taylor_o1, True)\n",
    "taylor_o2 = ROOT.RooPolyFunc.taylorExpand(\"taylorfunc_o2\", \"taylor expansion order 2\", f, [x], 2, [x0])\n",
    "ROOT.SetOwnership(taylor_o2, True)\n",
    "frame = x.frame(Title=\"x^{4} - 5x^{3} + 5x^{2} + 5x - 6\")\n",
    "c = ROOT.TCanvas(\"c\", \"c\", 400, 400)\n",
    "\n",
    "f.plotOn(frame, Name=\"f\")\n",
    "taylor_o1.plotOn(frame, Name=\"taylor_o1\", LineColor=\"kRed\", LineStyle=\"kDashed\")\n",
    "taylor_o2.plotOn(frame, Name=\"taylor_o2\", LineColor=\"kRed-9\", LineStyle=\"kDotted\")\n",
    "\n",
    "c.cd()\n",
    "frame.SetMinimum(-8.0)\n",
    "frame.SetMaximum(+8.0)\n",
    "frame.SetYTitle(\"function value\")\n",
    "frame.Draw()\n",
    "\n",
    "legend = ROOT.TLegend(0.53, 0.73, 0.86, 0.87)\n",
    "legend.SetFillColor(\"w\")\n",
    "legend.SetLineColor(\"w\")\n",
    "legend.SetTextSize(0.02)\n",
    "legend.AddEntry(\"taylor_o1\", \"Taylor expansion upto first order\", \"L\")\n",
    "legend.AddEntry(\"taylor_o2\", \"Taylor expansion upto second order\", \"L\")\n",
    "legend.AddEntry(\"f\", \"Polynomial of fourth order\", \"L\")\n",
    "legend.Draw()\n",
    "\n",
    "c.Draw()\n",
    "c.SaveAs(\"rf710_roopoly.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7d064be",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "3a59e4f5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:35:05.146535Z",
     "iopub.status.busy": "2026-05-19T20:35:05.146404Z",
     "iopub.status.idle": "2026-05-19T20:35:05.261731Z",
     "shell.execute_reply": "2026-05-19T20:35:05.261024Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222905259\" style=\"width: 400px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222905259() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(30475,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222905259', 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_1779222905259();\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
}
