{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ec153369",
   "metadata": {},
   "source": [
    "# rf607_fitresult\n",
    "Likelihood and minimization: demonstration of options of the RooFitResult class\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:33 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2beb2a81",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:19.131010Z",
     "iopub.status.busy": "2026-05-19T20:33:19.130870Z",
     "iopub.status.idle": "2026-05-19T20:33:20.111429Z",
     "shell.execute_reply": "2026-05-19T20:33:20.110814Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f801d03d",
   "metadata": {},
   "source": [
    "Create pdf, data\n",
    "--------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6e9acedb",
   "metadata": {},
   "source": [
    "Declare observable x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f7a2cc62",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.113323Z",
     "iopub.status.busy": "2026-05-19T20:33:20.113186Z",
     "iopub.status.idle": "2026-05-19T20:33:20.280960Z",
     "shell.execute_reply": "2026-05-19T20:33:20.280323Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", 0, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10e7fcd6",
   "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,
   "id": "19e6aac2",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.282726Z",
     "iopub.status.busy": "2026-05-19T20:33:20.282567Z",
     "iopub.status.idle": "2026-05-19T20:33:20.422801Z",
     "shell.execute_reply": "2026-05-19T20:33:20.422141Z"
    }
   },
   "outputs": [],
   "source": [
    "mean = ROOT.RooRealVar(\"mean\", \"mean of gaussians\", 5, -10, 10)\n",
    "sigma1 = ROOT.RooRealVar(\"sigma1\", \"width of gaussians\", 0.5, 0.1, 10)\n",
    "sigma2 = ROOT.RooRealVar(\"sigma2\", \"width of gaussians\", 1, 0.1, 10)\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",
   "id": "b1b78ac5",
   "metadata": {},
   "source": [
    "Build Chebychev polynomial pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "efb28ed8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.424560Z",
     "iopub.status.busy": "2026-05-19T20:33:20.424433Z",
     "iopub.status.idle": "2026-05-19T20:33:20.620181Z",
     "shell.execute_reply": "2026-05-19T20:33:20.619494Z"
    }
   },
   "outputs": [],
   "source": [
    "a0 = ROOT.RooRealVar(\"a0\", \"a0\", 0.5, 0.0, 1.0)\n",
    "a1 = ROOT.RooRealVar(\"a1\", \"a1\", -0.2)\n",
    "bkg = ROOT.RooChebychev(\"bkg\", \"Background\", x, [a0, a1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29cf81e2",
   "metadata": {},
   "source": [
    "Sum the signal components into a composite signal pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "bcfec7e7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.622044Z",
     "iopub.status.busy": "2026-05-19T20:33:20.621898Z",
     "iopub.status.idle": "2026-05-19T20:33:20.736202Z",
     "shell.execute_reply": "2026-05-19T20:33:20.735411Z"
    }
   },
   "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",
   "id": "1ebbe5b7",
   "metadata": {},
   "source": [
    "Sum the composite signal and background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c21b905d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.738105Z",
     "iopub.status.busy": "2026-05-19T20:33:20.737947Z",
     "iopub.status.idle": "2026-05-19T20:33:20.842714Z",
     "shell.execute_reply": "2026-05-19T20:33:20.841568Z"
    }
   },
   "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",
   "id": "5e75d754",
   "metadata": {},
   "source": [
    "Generate 1000 events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9b3a300a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.844177Z",
     "iopub.status.busy": "2026-05-19T20:33:20.844054Z",
     "iopub.status.idle": "2026-05-19T20:33:20.990688Z",
     "shell.execute_reply": "2026-05-19T20:33:20.990038Z"
    }
   },
   "outputs": [],
   "source": [
    "data = model.generate({x}, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86381cfb",
   "metadata": {},
   "source": [
    "Fit pdf to data, save fit result\n",
    "-------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "af5f5c89",
   "metadata": {},
   "source": [
    "Perform fit and save result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b8552112",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:20.992473Z",
     "iopub.status.busy": "2026-05-19T20:33:20.992350Z",
     "iopub.status.idle": "2026-05-19T20:33:21.185496Z",
     "shell.execute_reply": "2026-05-19T20:33:21.184810Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(model) 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 839.504 μs\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_model_modelData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n"
     ]
    }
   ],
   "source": [
    "r = model.fitTo(data, Save=True, PrintLevel=-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "668fc07e",
   "metadata": {},
   "source": [
    "Print fit results\n",
    "---------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d21078b",
   "metadata": {},
   "source": [
    "Summary printing: Basic info plus final values of floating fit parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1bf23e03",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.187330Z",
     "iopub.status.busy": "2026-05-19T20:33:21.187203Z",
     "iopub.status.idle": "2026-05-19T20:33:21.296540Z",
     "shell.execute_reply": "2026-05-19T20:33:21.295856Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "  RooFitResult: minimized FCN value: 1885.34, estimated distance to minimum: 0.000381082\n",
      "                covariance matrix quality: Full, accurate covariance matrix\n",
      "                Status : MINIMIZE=0 HESSE=0 \n",
      "\n",
      "    Floating Parameter    FinalValue +/-  Error   \n",
      "  --------------------  --------------------------\n",
      "                    a0    7.2873e-01 +/-  1.13e-01\n",
      "               bkgfrac    4.3445e-01 +/-  8.57e-02\n",
      "                  mean    5.0345e+00 +/-  3.36e-02\n",
      "              sig1frac    7.7758e-01 +/-  9.71e-02\n",
      "                sigma1    5.2318e-01 +/-  4.55e-02\n",
      "                sigma2    1.7671e+00 +/-  1.18e+00\n",
      "\n"
     ]
    }
   ],
   "source": [
    "r.Print()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dab63eb3",
   "metadata": {},
   "source": [
    "Verbose printing: Basic info, of constant parameters, and\n",
    "final values of floating parameters, correlations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8931e361",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.298085Z",
     "iopub.status.busy": "2026-05-19T20:33:21.297952Z",
     "iopub.status.idle": "2026-05-19T20:33:21.403021Z",
     "shell.execute_reply": "2026-05-19T20:33:21.402096Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "  RooFitResult: minimized FCN value: 1885.34, estimated distance to minimum: 0.000381082\n",
      "                covariance matrix quality: Full, accurate covariance matrix\n",
      "                Status : MINIMIZE=0 HESSE=0 \n",
      "\n",
      "    Constant Parameter    Value     \n",
      "  --------------------  ------------\n",
      "                    a1   -2.0000e-01\n",
      "\n",
      "    Floating Parameter  InitialValue    FinalValue +/-  Error     GblCorr.\n",
      "  --------------------  ------------  --------------------------  --------\n",
      "                    a0    5.0000e-01    7.2873e-01 +/-  1.13e-01  <none>\n",
      "               bkgfrac    5.0000e-01    4.3445e-01 +/-  8.57e-02  <none>\n",
      "                  mean    5.0000e+00    5.0345e+00 +/-  3.36e-02  <none>\n",
      "              sig1frac    8.0000e-01    7.7758e-01 +/-  9.71e-02  <none>\n",
      "                sigma1    5.0000e-01    5.2318e-01 +/-  4.55e-02  <none>\n",
      "                sigma2    1.0000e+00    1.7671e+00 +/-  1.18e+00  <none>\n",
      "\n"
     ]
    }
   ],
   "source": [
    "r.Print(\"v\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc9e4452",
   "metadata": {},
   "source": [
    "Visualize correlation matrix\n",
    "-------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5ec7d60",
   "metadata": {},
   "source": [
    "Construct 2D color plot of correlation matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "23f85c03",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.404424Z",
     "iopub.status.busy": "2026-05-19T20:33:21.404299Z",
     "iopub.status.idle": "2026-05-19T20:33:21.533881Z",
     "shell.execute_reply": "2026-05-19T20:33:21.532792Z"
    }
   },
   "outputs": [],
   "source": [
    "ROOT.gStyle.SetOptStat(0)\n",
    "ROOT.gStyle.SetPalette(1)\n",
    "hcorr = r.correlationHist()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4dd43c4c",
   "metadata": {},
   "source": [
    "Visualize ellipse corresponding to single correlation matrix element"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "32ec699a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.535353Z",
     "iopub.status.busy": "2026-05-19T20:33:21.535228Z",
     "iopub.status.idle": "2026-05-19T20:33:21.654257Z",
     "shell.execute_reply": "2026-05-19T20:33:21.653623Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55bfe4349410>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame = ROOT.RooPlot(sigma1, sig1frac, 0.45, 0.60, 0.65, 0.90)\n",
    "frame.SetTitle(\"Covariance between sigma1 and sig1frac\")\n",
    "r.plotOn(frame, sigma1, sig1frac, \"ME12ABHV\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7da7fba3",
   "metadata": {},
   "source": [
    "Access fit result information\n",
    "---------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87a3fa59",
   "metadata": {},
   "source": [
    "Access basic information"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "bc0ed769",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.656047Z",
     "iopub.status.busy": "2026-05-19T20:33:21.655922Z",
     "iopub.status.idle": "2026-05-19T20:33:21.768086Z",
     "shell.execute_reply": "2026-05-19T20:33:21.767060Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EDM =  0.0003810824542340818\n",
      "-log(L) minimum =  1885.3440933934653\n"
     ]
    }
   ],
   "source": [
    "print(\"EDM = \", r.edm())\n",
    "print(\"-log(L) minimum = \", r.minNll())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "089bd0c0",
   "metadata": {},
   "source": [
    "Access list of final fit parameter values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f3b9d651",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.769750Z",
     "iopub.status.busy": "2026-05-19T20:33:21.769561Z",
     "iopub.status.idle": "2026-05-19T20:33:21.882042Z",
     "shell.execute_reply": "2026-05-19T20:33:21.881372Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "final value of floating parameters\n",
      "  1) RooRealVar::       a0 = 0.72873 +/- 0.112573\n",
      "  2) RooRealVar::  bkgfrac = 0.43445 +/- 0.085744\n",
      "  3) RooRealVar::     mean = 5.03451 +/- 0.0336279\n",
      "  4) RooRealVar:: sig1frac = 0.777578 +/- 0.0971233\n",
      "  5) RooRealVar::   sigma1 = 0.523178 +/- 0.0455077\n",
      "  6) RooRealVar::   sigma2 = 1.76714 +/- 1.18159\n"
     ]
    }
   ],
   "source": [
    "print(\"final value of floating parameters\")\n",
    "r.floatParsFinal().Print(\"s\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf8c67af",
   "metadata": {},
   "source": [
    "Access correlation matrix elements"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "71d5ba5a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.884197Z",
     "iopub.status.busy": "2026-05-19T20:33:21.884063Z",
     "iopub.status.idle": "2026-05-19T20:33:21.995565Z",
     "shell.execute_reply": "2026-05-19T20:33:21.994592Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "correlation between sig1frac and a0 is   -0.38371276390446235\n",
      "correlation between bkgfrac and mean is  -0.051612510229553044\n"
     ]
    }
   ],
   "source": [
    "print(\"correlation between sig1frac and a0 is  \", r.correlation(sig1frac, a0))\n",
    "print(\"correlation between bkgfrac and mean is \", r.correlation(\"bkgfrac\", \"mean\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a13fbedb",
   "metadata": {},
   "source": [
    "Extract covariance and correlation matrix as ROOT.TMatrixDSym"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f74d4089",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:21.997001Z",
     "iopub.status.busy": "2026-05-19T20:33:21.996875Z",
     "iopub.status.idle": "2026-05-19T20:33:22.137939Z",
     "shell.execute_reply": "2026-05-19T20:33:22.137212Z"
    }
   },
   "outputs": [],
   "source": [
    "cor = r.correlationMatrix()\n",
    "cov = r.covarianceMatrix()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f44b49ae",
   "metadata": {},
   "source": [
    "Print correlation, matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "7e1a6e41",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:22.139758Z",
     "iopub.status.busy": "2026-05-19T20:33:22.139618Z",
     "iopub.status.idle": "2026-05-19T20:33:22.249388Z",
     "shell.execute_reply": "2026-05-19T20:33:22.248753Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "correlation matrix\n",
      "covariance matrix\n",
      "\n",
      "6x6 matrix is as follows\n",
      "\n",
      "     |      0    |      1    |      2    |      3    |      4    |\n",
      "----------------------------------------------------------------------\n",
      "   0 |          1     -0.8038    -0.02304     -0.3837      0.4249 \n",
      "   1 |    -0.8038           1    -0.05161      0.6011     -0.4042 \n",
      "   2 |   -0.02304    -0.05161           1    -0.08752    -0.04055 \n",
      "   3 |    -0.3837      0.6011    -0.08752           1      0.2836 \n",
      "   4 |     0.4249     -0.4042    -0.04055      0.2836           1 \n",
      "   5 |     0.8347     -0.8794      0.0146     -0.2731      0.5878 \n",
      "\n",
      "\n",
      "     |      5    |\n",
      "----------------------------------------------------------------------\n",
      "   0 |     0.8347 \n",
      "   1 |    -0.8794 \n",
      "   2 |     0.0146 \n",
      "   3 |    -0.2731 \n",
      "   4 |     0.5878 \n",
      "   5 |          1 \n",
      "\n",
      "\n",
      "6x6 matrix is as follows\n",
      "\n",
      "     |      0    |      1    |      2    |      3    |      4    |\n",
      "----------------------------------------------------------------------\n",
      "   0 |    0.01295   -0.007884  -8.818e-05   -0.004281    0.002201 \n",
      "   1 |  -0.007884    0.007427  -0.0001496    0.005078   -0.001585 \n",
      "   2 | -8.818e-05  -0.0001496    0.001131  -0.0002885  -6.206e-05 \n",
      "   3 |  -0.004281    0.005078  -0.0002885     0.00961    0.001265 \n",
      "   4 |   0.002201   -0.001585  -6.206e-05    0.001265    0.002071 \n",
      "   5 |     0.1142    -0.09113   0.0005905     -0.0322     0.03217 \n",
      "\n",
      "\n",
      "     |      5    |\n",
      "----------------------------------------------------------------------\n",
      "   0 |     0.1142 \n",
      "   1 |   -0.09113 \n",
      "   2 |  0.0005905 \n",
      "   3 |    -0.0322 \n",
      "   4 |    0.03217 \n",
      "   5 |      1.446 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(\"correlation matrix\")\n",
    "cor.Print()\n",
    "print(\"covariance matrix\")\n",
    "cov.Print()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0421716c",
   "metadata": {},
   "source": [
    "Persist fit result in root file\n",
    "-------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a1c3041",
   "metadata": {},
   "source": [
    "Open ROOT file save save result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "c406d8cd",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:22.250944Z",
     "iopub.status.busy": "2026-05-19T20:33:22.250822Z",
     "iopub.status.idle": "2026-05-19T20:33:22.489264Z",
     "shell.execute_reply": "2026-05-19T20:33:22.488103Z"
    }
   },
   "outputs": [],
   "source": [
    "f = ROOT.TFile(\"rf607_fitresult.root\", \"RECREATE\")\n",
    "r.Write(\"rf607\")\n",
    "f.Close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7f2db58c",
   "metadata": {},
   "source": [
    "In a clean ROOT session retrieve the persisted fit result as follows:\n",
    "r = gDirectory.Get(\"rf607\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8e580f8a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:22.490920Z",
     "iopub.status.busy": "2026-05-19T20:33:22.490789Z",
     "iopub.status.idle": "2026-05-19T20:33:22.717542Z",
     "shell.execute_reply": "2026-05-19T20:33:22.716883Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf607_fitresult.png has been created\n"
     ]
    }
   ],
   "source": [
    "c = ROOT.TCanvas(\"rf607_fitresult\", \"rf607_fitresult\", 800, 400)\n",
    "c.Divide(2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "hcorr.GetYaxis().SetTitleOffset(1.4)\n",
    "hcorr.Draw(\"colz\")\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame.GetYaxis().SetTitleOffset(1.6)\n",
    "frame.Draw()\n",
    "\n",
    "c.SaveAs(\"rf607_fitresult.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e5c7284",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "58b11dc8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:33:22.719388Z",
     "iopub.status.busy": "2026-05-19T20:33:22.719264Z",
     "iopub.status.idle": "2026-05-19T20:33:22.904802Z",
     "shell.execute_reply": "2026-05-19T20:33:22.904146Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222802895\" style=\"width: 800px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222802895() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(36954,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222802895', 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_1779222802895();\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
}
