{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ea053c62",
   "metadata": {},
   "source": [
    "# rf107_plotstyles\n",
    "Basic functionality: demonstration of various plotting styles of data, functions in a RooPlot\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:29 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0101b482",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:09.960995Z",
     "iopub.status.busy": "2026-05-19T20:29:09.960853Z",
     "iopub.status.idle": "2026-05-19T20:29:10.961223Z",
     "shell.execute_reply": "2026-05-19T20:29:10.960650Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e083a88c",
   "metadata": {},
   "source": [
    "Set up model\n",
    "---------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bf041821",
   "metadata": {},
   "source": [
    "Create observables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b02ae5d7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:10.963444Z",
     "iopub.status.busy": "2026-05-19T20:29:10.963304Z",
     "iopub.status.idle": "2026-05-19T20:29:11.128799Z",
     "shell.execute_reply": "2026-05-19T20:29:11.128226Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", -10, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "057e3830",
   "metadata": {},
   "source": [
    "Create Gaussian"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "dd279aba",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.130923Z",
     "iopub.status.busy": "2026-05-19T20:29:11.130798Z",
     "iopub.status.idle": "2026-05-19T20:29:11.258684Z",
     "shell.execute_reply": "2026-05-19T20:29:11.258065Z"
    }
   },
   "outputs": [],
   "source": [
    "sigma = ROOT.RooRealVar(\"sigma\", \"sigma\", 3, 0.1, 10)\n",
    "mean = ROOT.RooRealVar(\"mean\", \"mean\", -3, -10, 10)\n",
    "gauss = ROOT.RooGaussian(\"gauss\", \"gauss\", x, mean, sigma)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62d3e868",
   "metadata": {},
   "source": [
    "Generate a sample of 100 events with sigma=3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a2235a66",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.260577Z",
     "iopub.status.busy": "2026-05-19T20:29:11.260450Z",
     "iopub.status.idle": "2026-05-19T20:29:11.398811Z",
     "shell.execute_reply": "2026-05-19T20:29:11.398172Z"
    }
   },
   "outputs": [],
   "source": [
    "data = gauss.generate({x}, 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b928be9f",
   "metadata": {},
   "source": [
    "Fit pdf to data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ebc39970",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.400659Z",
     "iopub.status.busy": "2026-05-19T20:29:11.400508Z",
     "iopub.status.idle": "2026-05-19T20:29:11.607748Z",
     "shell.execute_reply": "2026-05-19T20:29:11.607137Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(gauss_over_gauss_Int[x]) 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 6.77445 ms\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_gauss_over_gauss_Int[x]_gaussData) 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": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gauss.fitTo(data, PrintLevel=-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7702fd1d",
   "metadata": {},
   "source": [
    "Make plot frames\n",
    "-------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef20fe54",
   "metadata": {},
   "source": [
    "Make four plot frames to demonstrate various plotting features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ffc78a8f",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.609698Z",
     "iopub.status.busy": "2026-05-19T20:29:11.609552Z",
     "iopub.status.idle": "2026-05-19T20:29:11.742710Z",
     "shell.execute_reply": "2026-05-19T20:29:11.742126Z"
    }
   },
   "outputs": [],
   "source": [
    "frame1 = x.frame(Name=\"xframe\", Title=\"Red Curve / SumW2 Histo errors\", Bins=20)\n",
    "frame2 = x.frame(Name=\"xframe\", Title=\"Dashed Curve / No XError bars\", Bins=20)\n",
    "frame3 = x.frame(Name=\"xframe\", Title=\"Filled Curve / Blue Histo\", Bins=20)\n",
    "frame4 = x.frame(Name=\"xframe\", Title=\"Partial Range / Filled Bar chart\", Bins=20)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "68caeef7",
   "metadata": {},
   "source": [
    "Data plotting styles\n",
    "---------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1b756fd",
   "metadata": {},
   "source": [
    "Use sqrt(sum(weights^2)) error instead of Poisson errors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6486bff6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.744524Z",
     "iopub.status.busy": "2026-05-19T20:29:11.744403Z",
     "iopub.status.idle": "2026-05-19T20:29:11.873248Z",
     "shell.execute_reply": "2026-05-19T20:29:11.872640Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f310b760>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.plotOn(frame1, DataError=\"SumW2\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "66236c26",
   "metadata": {},
   "source": [
    "Remove horizontal error bars"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4694f71d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.875438Z",
     "iopub.status.busy": "2026-05-19T20:29:11.875314Z",
     "iopub.status.idle": "2026-05-19T20:29:11.984885Z",
     "shell.execute_reply": "2026-05-19T20:29:11.984278Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f4d1f6c0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.plotOn(frame2, XErrorSize=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a6a832d0",
   "metadata": {},
   "source": [
    "Blue markers and error bors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8a467e06",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:11.986951Z",
     "iopub.status.busy": "2026-05-19T20:29:11.986819Z",
     "iopub.status.idle": "2026-05-19T20:29:12.102571Z",
     "shell.execute_reply": "2026-05-19T20:29:12.101978Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f4cbbbd0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.plotOn(frame3, MarkerColor=\"b\", LineColor=\"b\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15c7a964",
   "metadata": {},
   "source": [
    "Filled bar chart"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "271d688d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:12.104777Z",
     "iopub.status.busy": "2026-05-19T20:29:12.104644Z",
     "iopub.status.idle": "2026-05-19T20:29:12.216999Z",
     "shell.execute_reply": "2026-05-19T20:29:12.216412Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f4cc3460>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.plotOn(frame4, DrawOption=\"B\", DataError=None, XErrorSize=0, FillColor=\"kGray\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f02db96",
   "metadata": {},
   "source": [
    "Function plotting styles\n",
    "-----------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "162aa085",
   "metadata": {},
   "source": [
    "Change line color to red"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "5c7d59f8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:12.219213Z",
     "iopub.status.busy": "2026-05-19T20:29:12.219009Z",
     "iopub.status.idle": "2026-05-19T20:29:12.353991Z",
     "shell.execute_reply": "2026-05-19T20:29:12.353393Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f310b760>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gauss.plotOn(frame1, LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1dd46738",
   "metadata": {},
   "source": [
    "Change line style to dashed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "566e9bbd",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:12.356264Z",
     "iopub.status.busy": "2026-05-19T20:29:12.356135Z",
     "iopub.status.idle": "2026-05-19T20:29:12.466272Z",
     "shell.execute_reply": "2026-05-19T20:29:12.465647Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f4d1f6c0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gauss.plotOn(frame2, LineStyle=\"--\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b308290d",
   "metadata": {},
   "source": [
    "Filled shapes in green color"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "82fc1ddf",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:12.468508Z",
     "iopub.status.busy": "2026-05-19T20:29:12.468378Z",
     "iopub.status.idle": "2026-05-19T20:29:12.578123Z",
     "shell.execute_reply": "2026-05-19T20:29:12.577386Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x5647f4cbbbd0>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gauss.plotOn(frame3, MoveToBack=True, DrawOption=\"F\", FillColor=\"kOrange\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "b9d1fee5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:12.579883Z",
     "iopub.status.busy": "2026-05-19T20:29:12.579759Z",
     "iopub.status.idle": "2026-05-19T20:29:12.818938Z",
     "shell.execute_reply": "2026-05-19T20:29:12.818293Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(gauss) only plotting range [-8,3], curve is normalized to data in given range\n",
      "[#1] INFO:Eval -- RooRealVar::setRange(x) new range named 'plotRange' created with bounds [-8,3]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf107_plotstyles.png has been created\n"
     ]
    }
   ],
   "source": [
    "gauss.plotOn(frame4, Range=(-8, 3), LineColor=\"m\")\n",
    "\n",
    "c = ROOT.TCanvas(\"rf107_plotstyles\", \"rf107_plotstyles\", 800, 800)\n",
    "c.Divide(2, 2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame1.GetYaxis().SetTitleOffset(1.6)\n",
    "frame1.Draw()\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame2.GetYaxis().SetTitleOffset(1.6)\n",
    "frame2.Draw()\n",
    "c.cd(3)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame3.GetYaxis().SetTitleOffset(1.6)\n",
    "frame3.Draw()\n",
    "c.cd(4)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame4.GetYaxis().SetTitleOffset(1.6)\n",
    "frame4.Draw()\n",
    "\n",
    "c.SaveAs(\"rf107_plotstyles.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "76a34727",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "cf42f563",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:29:12.820556Z",
     "iopub.status.busy": "2026-05-19T20:29:12.820429Z",
     "iopub.status.idle": "2026-05-19T20:29:13.005530Z",
     "shell.execute_reply": "2026-05-19T20:29:13.004897Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222552995\" style=\"width: 800px; height: 800px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222552995() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(52303,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222552995', 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_1779222552995();\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
}
