{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6a986789",
   "metadata": {},
   "source": [
    "# fitConvolution\n",
    "Tutorial for convolution of two functions\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:** Jonas Rembser, Aurelie Flandi (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:24 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0ee6cec5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:24:49.071063Z",
     "iopub.status.busy": "2026-05-19T20:24:49.070927Z",
     "iopub.status.idle": "2026-05-19T20:24:50.146944Z",
     "shell.execute_reply": "2026-05-19T20:24:50.146547Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb3bac41",
   "metadata": {},
   "source": [
    "Construction of histogram to fit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8a032196",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:24:50.150017Z",
     "iopub.status.busy": "2026-05-19T20:24:50.149823Z",
     "iopub.status.idle": "2026-05-19T20:24:53.924987Z",
     "shell.execute_reply": "2026-05-19T20:24:53.924342Z"
    }
   },
   "outputs": [],
   "source": [
    "h_ExpGauss = ROOT.TH1F(\"h_ExpGauss\", \"Exponential convoluted by Gaussian\", 100, 0.0, 5.0)\n",
    "h_ExpGauss.Fill(\n",
    "    np.array(\n",
    "        [\n",
    "            # Gives a alpha of -0.3 in the exp.\n",
    "            # Probability density function of the addition of two variables is the\n",
    "            # convolution of two density functions.\n",
    "            ROOT.gRandom.Exp(1.0 / 0.3) + ROOT.gRandom.Gaus(0.0, 3.0)\n",
    "            for _ in range(1000000)\n",
    "        ]\n",
    "    )\n",
    ")\n",
    "f_conv = ROOT.TF1Convolution(\"expo\", \"gaus\", -1, 6, True)\n",
    "f_conv.SetRange(-1.0, 6.0)\n",
    "f_conv.SetNofPointsFFT(1000)\n",
    "f = ROOT.TF1(\"f\", f_conv, 0.0, 5.0, f_conv.GetNpar())\n",
    "f.SetParameters(1.0, -0.3, 0.0, 1.0)\n",
    "\n",
    "c1 = ROOT.TCanvas(\"c1\", \"c1\", 800, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ea6259f",
   "metadata": {},
   "source": [
    "Fit and draw result of the fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3c747ab1",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:24:53.926867Z",
     "iopub.status.busy": "2026-05-19T20:24:53.926734Z",
     "iopub.status.idle": "2026-05-19T20:24:54.284147Z",
     "shell.execute_reply": "2026-05-19T20:24:54.282997Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "****************************************\n",
      "Minimizer is Minuit2 / Migrad\n",
      "Chi2                      =       298.12\n",
      "NDf                       =           96\n",
      "Edm                       =  1.60212e-06\n",
      "NCalls                    =          448\n",
      "p0                        =      7.32861   +/-   0.0370515   \n",
      "p1                        =    0.0733017   +/-   0.0024398   \n",
      "p2                        =     -2.26418   +/-   0.0491398   \n",
      "p3                        =      1.12807   +/-   0.0628225   \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file fitConvolution.png has been created\n"
     ]
    }
   ],
   "source": [
    "h_ExpGauss.Fit(\"f\")\n",
    "\n",
    "c1.SaveAs(\"fitConvolution.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b917914a",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "145623d7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:24:54.286097Z",
     "iopub.status.busy": "2026-05-19T20:24:54.285963Z",
     "iopub.status.idle": "2026-05-19T20:24:54.503049Z",
     "shell.execute_reply": "2026-05-19T20:24:54.502257Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222294484\" style=\"width: 800px; height: 1000px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222294484() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(24639,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222294484', 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_1779222294484();\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
}
