{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Rf 2 0 1_Composite\n",
    "Addition and convolution: composite pdf with signal and background component\n",
    "\n",
    "```\n",
    "pdf = f_bkg * bkg(x,a0,a1) + (1-fbkg) * (f_sig1 * sig1(x,m,s1 + (1-f_sig1) * sig2(x,m,s2)))\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 Thursday, May 19, 2022 at 08:53 AM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Welcome to JupyROOT 6.27/01\n"
     ]
    }
   ],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Setup component pdfs\n",
    "---------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Declare observable x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", 0, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create two Gaussian PDFs g1(x,mean1,sigma) anf g2(x,mean2,sigma) and\n",
    "their parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:InputArguments -- The parameter 'sigma1' with range [-1e+30, 1e+30] of the RooGaussian 'sig1' exceeds the safe range of (0, inf). Advise to limit its range.\n",
      "[#0] WARNING:InputArguments -- The parameter 'sigma2' with range [-1e+30, 1e+30] of the RooGaussian 'sig2' exceeds the safe range of (0, inf). Advise to limit its range.\n"
     ]
    }
   ],
   "source": [
    "mean = ROOT.RooRealVar(\"mean\", \"mean of gaussians\", 5)\n",
    "sigma1 = ROOT.RooRealVar(\"sigma1\", \"width of gaussians\", 0.5)\n",
    "sigma2 = ROOT.RooRealVar(\"sigma2\", \"width of gaussians\", 1)\n",
    "\n",
    "sig1 = ROOT.RooGaussian(\"sig1\", \"Signal component 1\", x, mean, sigma1)\n",
    "sig2 = ROOT.RooGaussian(\"sig2\", \"Signal component 2\", x, mean, sigma2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Build Chebychev polynomial pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a0 = ROOT.RooRealVar(\"a0\", \"a0\", 0.5, 0.0, 1.0)\n",
    "a1 = ROOT.RooRealVar(\"a1\", \"a1\", -0.2, 0.0, 1.0)\n",
    "bkg = ROOT.RooChebychev(\"bkg\", \"Background\", x, [a0, a1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Method 1 - Two RooAddPdfs\n",
    "------------------------------------------\n",
    "Add signal components"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sum the signal components into a composite signal pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sig1frac = ROOT.RooRealVar(\"sig1frac\", \"fraction of component 1 in signal\", 0.8, 0.0, 1.0)\n",
    "sig = ROOT.RooAddPdf(\"sig\", \"Signal\", [sig1, sig2], [sig1frac])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Add signal and background\n",
    "------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sum the composite signal and background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "bkgfrac = ROOT.RooRealVar(\"bkgfrac\", \"fraction of background\", 0.5, 0.0, 1.0)\n",
    "model = ROOT.RooAddPdf(\"model\", \"g1+g2+a\", [bkg, sig], [bkgfrac])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sample, fit and plot model\n",
    "---------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Generate a data sample of 1000 events in x from model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:Eval -- Evaluating RooAddPdf without a defined normalization set. This can lead to ambiguos coefficients definition and incorrect results. Use RooAddPdf::fixCoefNormalization(nset) to provide a normalization set for defining uniquely RooAddPdf coefficients!\n"
     ]
    }
   ],
   "source": [
    "data = model.generate({x}, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit model to data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooFitResult object at 0x(nil)>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization\n",
      "[#1] INFO:Minimization --  The following expressions have been identified as constant and will be precalculated and cached: (sig1,sig2)\n",
      "[#1] INFO:Minimization --  The following expressions will be evaluated in cache-and-track mode: (bkg)\n",
      " **********\n",
      " **    1 **SET PRINT           1\n",
      " **********\n",
      " **********\n",
      " **    2 **SET NOGRAD\n",
      " **********\n",
      " PARAMETER DEFINITIONS:\n",
      "    NO.   NAME         VALUE      STEP SIZE      LIMITS\n",
      "     1 a0           5.00000e-01  1.00000e-01    0.00000e+00  1.00000e+00\n",
      "     2 a1           0.00000e+00  1.00000e-01    0.00000e+00  1.00000e+00\n",
      " MINUIT WARNING IN PARAM DEF\n",
      " ============== STARTING VALUE IS AT LIMIT.\n",
      " MINUIT WARNING IN PARAMETR\n",
      " ============== VARIABLE2 IS AT ITS LOWER ALLOWED LIMIT.\n",
      " MINUIT WARNING IN PARAMETR\n",
      " ============== VARIABLE2 BROUGHT BACK INSIDE LIMITS.\n",
      "     3 bkgfrac      5.00000e-01  1.00000e-01    0.00000e+00  1.00000e+00\n",
      "     4 sig1frac     8.00000e-01  1.00000e-01    0.00000e+00  1.00000e+00\n",
      " **********\n",
      " **    3 **SET ERR         0.5\n",
      " **********\n",
      " **********\n",
      " **    4 **SET PRINT           1\n",
      " **********\n",
      " **********\n",
      " **    5 **SET STR           1\n",
      " **********\n",
      " NOW USING STRATEGY  1: TRY TO BALANCE SPEED AGAINST RELIABILITY\n",
      " **********\n",
      " **    6 **MIGRAD        2000           1\n",
      " **********\n",
      " FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.\n",
      " MINUIT WARNING IN MIGrad    \n",
      " ============== VARIABLE2 IS AT ITS LOWER ALLOWED LIMIT.\n",
      " START MIGRAD MINIMIZATION.  STRATEGY  1.  CONVERGENCE WHEN EDM .LT. 1.00e-03\n",
      " FCN=1926.2 FROM MIGRAD    STATUS=INITIATE       31 CALLS          32 TOTAL\n",
      "                     EDM= unknown      STRATEGY= 1      NO ERROR MATRIX       \n",
      "  EXT PARAMETER               CURRENT GUESS       STEP         FIRST   \n",
      "  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE \n",
      "   1  a0           5.00000e-01   1.00000e-01   0.00000e+00   2.31850e+00\n",
      "   2  a1           7.50936e-02   1.00000e-01   5.53213e-01  -4.13475e-03\n",
      "   3  bkgfrac      5.00000e-01   1.00000e-01   0.00000e+00   2.67741e+01\n",
      "   4  sig1frac     8.00000e-01   1.00000e-01   0.00000e+00   3.58316e-01\n",
      "                               ERR DEF= 0.5\n",
      " MIGRAD MINIMIZATION HAS CONVERGED.\n",
      " MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.\n",
      " COVARIANCE MATRIX CALCULATED SUCCESSFULLY\n",
      " FCN=1924.17 FROM MIGRAD    STATUS=CONVERGED     119 CALLS         120 TOTAL\n",
      "                     EDM=2.77609e-07    STRATEGY= 1      ERROR MATRIX ACCURATE \n",
      "  EXT PARAMETER                                   STEP         FIRST   \n",
      "  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE \n",
      "   1  a0           5.07642e-01   7.96101e-02   4.71991e-03  -9.40696e-04\n",
      "   2  a1           2.66515e-01   1.34621e-01   5.72412e-03  -6.75205e-05\n",
      "   3  bkgfrac      4.27793e-01   3.57760e-02   1.24946e-03  -1.00877e-02\n",
      "   4  sig1frac     6.41234e-01   9.72166e-02   4.23189e-03   1.73342e-03\n",
      "                               ERR DEF= 0.5\n",
      " EXTERNAL ERROR MATRIX.    NDIM=  25    NPAR=  4    ERR DEF=0.5\n",
      "  6.392e-03  2.434e-03 -5.449e-04 -1.352e-03 \n",
      "  2.434e-03  1.871e-02 -3.804e-03 -8.768e-03 \n",
      " -5.449e-04 -3.804e-03  1.282e-03  2.494e-03 \n",
      " -1.352e-03 -8.768e-03  2.494e-03  9.583e-03 \n",
      " PARAMETER  CORRELATION COEFFICIENTS  \n",
      "       NO.  GLOBAL      1      2      3      4\n",
      "        1  0.22587   1.000  0.223 -0.190 -0.173\n",
      "        2  0.79303   0.223  1.000 -0.777 -0.655\n",
      "        3  0.82183  -0.190 -0.777  1.000  0.712\n",
      "        4  0.73007  -0.173 -0.655  0.712  1.000\n",
      " **********\n",
      " **    7 **SET ERR         0.5\n",
      " **********\n",
      " **********\n",
      " **    8 **SET PRINT           1\n",
      " **********\n",
      " **********\n",
      " **    9 **HESSE        2000\n",
      " **********\n",
      " COVARIANCE MATRIX CALCULATED SUCCESSFULLY\n",
      " FCN=1924.17 FROM HESSE     STATUS=OK             23 CALLS         143 TOTAL\n",
      "                     EDM=2.75649e-07    STRATEGY= 1      ERROR MATRIX ACCURATE \n",
      "  EXT PARAMETER                                INTERNAL      INTERNAL  \n",
      "  NO.   NAME      VALUE            ERROR       STEP SIZE       VALUE   \n",
      "   1  a0           5.07642e-01   7.95738e-02   1.88796e-04   1.52838e-02\n",
      "   2  a1           2.66515e-01   1.33780e-01   2.28965e-04  -4.85861e-01\n",
      "   3  bkgfrac      4.27793e-01   3.55511e-02   2.49893e-04  -1.44921e-01\n",
      "   4  sig1frac     6.41234e-01   9.67457e-02   8.46378e-04   2.86365e-01\n",
      "                               ERR DEF= 0.5\n",
      " EXTERNAL ERROR MATRIX.    NDIM=  25    NPAR=  4    ERR DEF=0.5\n",
      "  6.386e-03  2.397e-03 -5.349e-04 -1.328e-03 \n",
      "  2.397e-03  1.847e-02 -3.740e-03 -8.613e-03 \n",
      " -5.349e-04 -3.740e-03  1.266e-03  2.455e-03 \n",
      " -1.328e-03 -8.613e-03  2.455e-03  9.489e-03 \n",
      " PARAMETER  CORRELATION COEFFICIENTS  \n",
      "       NO.  GLOBAL      1      2      3      4\n",
      "        1  0.22394   1.000  0.221 -0.188 -0.171\n",
      "        2  0.78997   0.221  1.000 -0.773 -0.651\n",
      "        3  0.81931  -0.188 -0.773  1.000  0.708\n",
      "        4  0.72690  -0.171 -0.651  0.708  1.000\n",
      "[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization\n"
     ]
    }
   ],
   "source": [
    "model.fitTo(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot data and PDF overlaid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x88e3430>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xframe = x.frame(Title=\"Example of composite pdf=(sig1+sig2)+bkg\")\n",
    "data.plotOn(xframe)\n",
    "model.plotOn(xframe)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Overlay the background component of model with a dashed line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x88e3430>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: ()\n"
     ]
    }
   ],
   "source": [
    "model.plotOn(xframe, Components={bkg}, LineStyle=\"--\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Overlay the background+sig2 components of model with a dotted line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x88e3430>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: (sig)\n"
     ]
    }
   ],
   "source": [
    "model.plotOn(xframe, Components={bkg, sig2}, LineStyle=\":\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Print structure of composite pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0x83afbe0 RooAddPdf::model = 0.885987 [Auto,Dirty] \n",
      "  0x8200e90/V- RooChebychev::bkg = 0.733485 [Auto,Dirty] \n",
      "    0x7f10200/V- RooRealVar::x = 5\n",
      "    0x7f8dbf0/V- RooRealVar::a0 = 0.507642 +/- 0.0795738\n",
      "    0x7fb05b0/V- RooRealVar::a1 = 0.266515 +/- 0.13378\n",
      "  0x833f280/V- RooRealVar::bkgfrac = 0.427793 +/- 0.0355511\n",
      "  0x83b1660/V- RooAddPdf::sig = 1 [Auto,Dirty] \n",
      "    0x8049500/V- RooGaussian::sig1 = 1 [Auto,Dirty] \n",
      "      0x7f10200/V- RooRealVar::x = 5\n",
      "      0x7e82740/V- RooRealVar::mean = 5\n",
      "      0x7f11e40/V- RooRealVar::sigma1 = 0.5\n",
      "    0x81c1e30/V- RooRealVar::sig1frac = 0.641234 +/- 0.0967457\n",
      "    0x7fade50/V- RooGaussian::sig2 = 1 [Auto,Dirty] \n",
      "      0x7f10200/V- RooRealVar::x = 5\n",
      "      0x7e82740/V- RooRealVar::mean = 5\n",
      "      0x7f1caa0/V- RooRealVar::sigma2 = 1\n"
     ]
    }
   ],
   "source": [
    "model.Print(\"t\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Method 2 - One RooAddPdf with recursive fractions\n",
    "---------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Construct sum of models on one go using recursive fraction interpretations\n",
    "\n",
    "  model2 = bkg + (sig1 + sig2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "model2 = ROOT.RooAddPdf(\"model\", \"g1+g2+a\", [bkg, sig1, sig2], [bkgfrac, sig1frac], True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "NB: Each coefficient is interpreted as the fraction of the\n",
    "left-hand component of the i-th recursive sum, i.e.\n",
    "\n",
    "  sum4 = A + ( B + ( C + D)  with fraction fA, and fC expands to\n",
    "\n",
    "  sum4 = fA*A + (1-fA)*(fB*B + (1-fB)*(fC*C + (1-fC)*D))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot recursive addition model\n",
    "---------------------------------------------------------"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) directly selected PDF components: (bkg,sig2)\n",
      "[#1] INFO:Plotting -- RooAbsPdf::plotOn(model) indirectly selected PDF components: ()\n",
      "0x8bf6060 RooAddPdf::model = 0.885987 [Auto,Dirty] \n",
      "  0x8200e90/V- RooChebychev::bkg = 0.733485 [Auto,Dirty] \n",
      "    0x7f10200/V- RooRealVar::x = 5\n",
      "    0x7f8dbf0/V- RooRealVar::a0 = 0.507642 +/- 0.0795738\n",
      "    0x7fb05b0/V- RooRealVar::a1 = 0.266515 +/- 0.13378\n",
      "  0x833f280/V- RooRealVar::bkgfrac = 0.427793 +/- 0.0355511\n",
      "  0x8049500/V- RooGaussian::sig1 = 1 [Auto,Dirty] \n",
      "    0x7f10200/V- RooRealVar::x = 5\n",
      "    0x7e82740/V- RooRealVar::mean = 5\n",
      "    0x7f11e40/V- RooRealVar::sigma1 = 0.5\n",
      "  0x8a77750/V- RooRecursiveFraction::model_recursive_fraction_sig1 = 0.366918 [Auto,Clean] \n",
      "    0x81c1e30/V- RooRealVar::sig1frac = 0.641234 +/- 0.0967457\n",
      "    0x833f280/V- RooRealVar::bkgfrac = 0.427793 +/- 0.0355511\n",
      "  0x7fade50/V- RooGaussian::sig2 = 1 [Auto,Dirty] \n",
      "    0x7f10200/V- RooRealVar::x = 5\n",
      "    0x7e82740/V- RooRealVar::mean = 5\n",
      "    0x7f1caa0/V- RooRealVar::sigma2 = 1\n",
      "  0x8a20340/V- RooRecursiveFraction::model_recursive_fraction_sig2 = 0.205289 [Auto,Clean] \n",
      "    0x41f0fb0/V- RooConstVar::1 = 1\n",
      "    0x81c1e30/V- RooRealVar::sig1frac = 0.641234 +/- 0.0967457\n",
      "    0x833f280/V- RooRealVar::bkgfrac = 0.427793 +/- 0.0355511\n"
     ]
    }
   ],
   "source": [
    "model2.plotOn(xframe, LineColor=\"r\", LineStyle=\"--\")\n",
    "model2.plotOn(xframe, Components={bkg, sig2}, LineColor=\"r\", LineStyle=\"--\")\n",
    "model2.Print(\"t\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Draw the frame on the canvas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf201_composite.png has been created\n"
     ]
    }
   ],
   "source": [
    "c = ROOT.TCanvas(\"rf201_composite\", \"rf201_composite\", 600, 600)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "xframe.GetYaxis().SetTitleOffset(1.4)\n",
    "xframe.Draw()\n",
    "\n",
    "c.SaveAs(\"rf201_composite.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image 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.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
