{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f359dc40",
   "metadata": {},
   "source": [
    "# rf209_anaconv\n",
    "Addition and convolution: decay function pdfs with optional B physics effects (mixing\n",
    "and CP violation) that can be analytically convolved with e.g. Gaussian resolution functions\n",
    "\n",
    "```\n",
    "pdf1 = decay(t,tau) (x) delta(t)\n",
    "pdf2 = decay(t,tau) (x) gauss(t,m,s)\n",
    "pdf3 = decay(t,tau) (x) (f*gauss1(t,m1,s1) + (1-f)*gauss2(t,m1,s1))\n",
    "```\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:30 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ced25eca",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:10.614454Z",
     "iopub.status.busy": "2026-05-19T20:30:10.614333Z",
     "iopub.status.idle": "2026-05-19T20:30:11.591126Z",
     "shell.execute_reply": "2026-05-19T20:30:11.590387Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e2a06a2",
   "metadata": {},
   "source": [
    "B-physics pdf with truth resolution\n",
    "---------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e00e692",
   "metadata": {},
   "source": [
    "Variables of decay pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "90f40561",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:11.593331Z",
     "iopub.status.busy": "2026-05-19T20:30:11.593182Z",
     "iopub.status.idle": "2026-05-19T20:30:11.755876Z",
     "shell.execute_reply": "2026-05-19T20:30:11.755172Z"
    }
   },
   "outputs": [],
   "source": [
    "dt = ROOT.RooRealVar(\"dt\", \"dt\", -10, 10)\n",
    "tau = ROOT.RooRealVar(\"tau\", \"tau\", 1.548)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0fc23fb0",
   "metadata": {},
   "source": [
    "Build a truth resolution model (delta function)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1917957a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:11.757934Z",
     "iopub.status.busy": "2026-05-19T20:30:11.757802Z",
     "iopub.status.idle": "2026-05-19T20:30:11.873807Z",
     "shell.execute_reply": "2026-05-19T20:30:11.873186Z"
    }
   },
   "outputs": [],
   "source": [
    "tm = ROOT.RooTruthModel(\"tm\", \"truth model\", dt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e81e108b",
   "metadata": {},
   "source": [
    "Construct decay(t) (x) delta(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0b2d9eda",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:11.875828Z",
     "iopub.status.busy": "2026-05-19T20:30:11.875694Z",
     "iopub.status.idle": "2026-05-19T20:30:12.004650Z",
     "shell.execute_reply": "2026-05-19T20:30:12.003381Z"
    }
   },
   "outputs": [],
   "source": [
    "decay_tm = ROOT.RooDecay(\"decay_tm\", \"decay\", dt, tau, tm, type=\"DoubleSided\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "644611b4",
   "metadata": {},
   "source": [
    "Plot pdf (dashed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "06f79930",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.006284Z",
     "iopub.status.busy": "2026-05-19T20:30:12.006142Z",
     "iopub.status.idle": "2026-05-19T20:30:12.188698Z",
     "shell.execute_reply": "2026-05-19T20:30:12.188009Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x558647f4eed0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame = dt.frame(Title=\"Bdecay (x) resolution\")\n",
    "decay_tm.plotOn(frame, LineStyle=\"--\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e5444c6",
   "metadata": {},
   "source": [
    "B-physics pdf with Gaussian resolution\n",
    "----------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bfb336a7",
   "metadata": {},
   "source": [
    "Build a gaussian resolution model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "772e0013",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.191185Z",
     "iopub.status.busy": "2026-05-19T20:30:12.191049Z",
     "iopub.status.idle": "2026-05-19T20:30:12.302336Z",
     "shell.execute_reply": "2026-05-19T20:30:12.301566Z"
    }
   },
   "outputs": [],
   "source": [
    "bias1 = ROOT.RooRealVar(\"bias1\", \"bias1\", 0)\n",
    "sigma1 = ROOT.RooRealVar(\"sigma1\", \"sigma1\", 1)\n",
    "gm1 = ROOT.RooGaussModel(\"gm1\", \"gauss model 1\", dt, bias1, sigma1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdf0aaf5",
   "metadata": {},
   "source": [
    "Construct decay(t) (x) gauss1(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "347039d3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.304181Z",
     "iopub.status.busy": "2026-05-19T20:30:12.304046Z",
     "iopub.status.idle": "2026-05-19T20:30:12.407906Z",
     "shell.execute_reply": "2026-05-19T20:30:12.407166Z"
    }
   },
   "outputs": [],
   "source": [
    "decay_gm1 = ROOT.RooDecay(\"decay_gm1\", \"decay\", dt, tau, gm1, type=\"DoubleSided\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "527206fe",
   "metadata": {},
   "source": [
    "Plot pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e8d722aa",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.409773Z",
     "iopub.status.busy": "2026-05-19T20:30:12.409639Z",
     "iopub.status.idle": "2026-05-19T20:30:12.514757Z",
     "shell.execute_reply": "2026-05-19T20:30:12.514070Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x558647f4eed0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "decay_gm1.plotOn(frame)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9852ded4",
   "metadata": {},
   "source": [
    "B-physics pdf with double Gaussian resolution\n",
    "------------------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "759252d8",
   "metadata": {},
   "source": [
    "Build another gaussian resolution model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8fc1b32d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.516882Z",
     "iopub.status.busy": "2026-05-19T20:30:12.516749Z",
     "iopub.status.idle": "2026-05-19T20:30:12.620376Z",
     "shell.execute_reply": "2026-05-19T20:30:12.619712Z"
    }
   },
   "outputs": [],
   "source": [
    "bias2 = ROOT.RooRealVar(\"bias2\", \"bias2\", 0)\n",
    "sigma2 = ROOT.RooRealVar(\"sigma2\", \"sigma2\", 5)\n",
    "gm2 = ROOT.RooGaussModel(\"gm2\", \"gauss model 2\", dt, bias2, sigma2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3015417",
   "metadata": {},
   "source": [
    "Build a composite resolution model f*gm1+(1-f)*gm2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ba0d4291",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.622506Z",
     "iopub.status.busy": "2026-05-19T20:30:12.622373Z",
     "iopub.status.idle": "2026-05-19T20:30:12.809645Z",
     "shell.execute_reply": "2026-05-19T20:30:12.800084Z"
    }
   },
   "outputs": [],
   "source": [
    "gm1frac = ROOT.RooRealVar(\"gm1frac\", \"fraction of gm1\", 0.5)\n",
    "gmsum = ROOT.RooAddModel(\"gmsum\", \"sum of gm1 and gm2\", [gm1, gm2], [gm1frac])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f66b95f",
   "metadata": {},
   "source": [
    "Construct decay(t) (x) (f*gm1 + (1-f)*gm2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f1e9d2fb",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.821306Z",
     "iopub.status.busy": "2026-05-19T20:30:12.821166Z",
     "iopub.status.idle": "2026-05-19T20:30:12.924998Z",
     "shell.execute_reply": "2026-05-19T20:30:12.924257Z"
    }
   },
   "outputs": [],
   "source": [
    "decay_gmsum = ROOT.RooDecay(\"decay_gmsum\", \"decay\", dt, tau, gmsum, ROOT.RooDecay.DoubleSided)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7358000",
   "metadata": {},
   "source": [
    "Plot pdf (red)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a09cd27b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:12.926936Z",
     "iopub.status.busy": "2026-05-19T20:30:12.926803Z",
     "iopub.status.idle": "2026-05-19T20:30:13.041024Z",
     "shell.execute_reply": "2026-05-19T20:30:13.040437Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x558647f4eed0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "decay_gmsum.plotOn(frame, LineColor=\"r\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c26e7ee4",
   "metadata": {},
   "source": [
    "Draw all frames on canvas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "76fce254",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:13.043118Z",
     "iopub.status.busy": "2026-05-19T20:30:13.042983Z",
     "iopub.status.idle": "2026-05-19T20:30:13.260187Z",
     "shell.execute_reply": "2026-05-19T20:30:13.259415Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf209_anaconv.png has been created\n"
     ]
    }
   ],
   "source": [
    "c = ROOT.TCanvas(\"rf209_anaconv\", \"rf209_anaconv\", 600, 600)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame.GetYaxis().SetTitleOffset(1.6)\n",
    "frame.Draw()\n",
    "\n",
    "c.SaveAs(\"rf209_anaconv.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd049d47",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "093516a6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:30:13.281479Z",
     "iopub.status.busy": "2026-05-19T20:30:13.281329Z",
     "iopub.status.idle": "2026-05-19T20:30:13.461407Z",
     "shell.execute_reply": "2026-05-19T20:30:13.460385Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222613451\" style=\"width: 600px; height: 600px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222613451() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(30891,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222613451', 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_1779222613451();\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
}
