{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9c51648b",
   "metadata": {},
   "source": [
    "# hist007_TH1_liveupdate\n",
    "Simple example illustrating how to use the C++ interpreter.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:** Wim Lavrijsen  \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:11 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "850797f8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:57.740750Z",
     "iopub.status.busy": "2026-05-19T20:11:57.740626Z",
     "iopub.status.idle": "2026-05-19T20:11:58.759764Z",
     "shell.execute_reply": "2026-05-19T20:11:58.747344Z"
    }
   },
   "outputs": [],
   "source": [
    "from ROOT import TCanvas, TH1F, TSlider\n",
    "from ROOT import gROOT, gBenchmark, gRandom"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eebbb779",
   "metadata": {},
   "source": [
    "Create a new canvas, and customize it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "705f4237",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:58.787510Z",
     "iopub.status.busy": "2026-05-19T20:11:58.787330Z",
     "iopub.status.idle": "2026-05-19T20:11:58.932177Z",
     "shell.execute_reply": "2026-05-19T20:11:58.931537Z"
    }
   },
   "outputs": [],
   "source": [
    "c1 = TCanvas( 'c1', 'The HSUM example', 200, 10, 600, 400 )\n",
    "c1.SetGrid();\n",
    "\n",
    "gBenchmark.Start( 'hsum' )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "772a214a",
   "metadata": {},
   "source": [
    "Create some histograms."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8e6cb5b3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:58.934344Z",
     "iopub.status.busy": "2026-05-19T20:11:58.934214Z",
     "iopub.status.idle": "2026-05-19T20:11:59.047437Z",
     "shell.execute_reply": "2026-05-19T20:11:59.046858Z"
    }
   },
   "outputs": [],
   "source": [
    "total  = TH1F( 'total', 'This is the total distribution', 100, -4, 4 )\n",
    "main   = TH1F( 'main', 'Main contributor', 100, -4, 4 )\n",
    "s1     = TH1F( 's1', 'This is the first signal', 100, -4, 4 )\n",
    "s2     = TH1F( 's2', 'This is the second signal', 100, -4, 4 )\n",
    "total.Sumw2()   # this makes sure that the sum of squares of weights will be stored"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cde25ed8",
   "metadata": {},
   "source": [
    "Set canvas/frame attributes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "00a5c901",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:59.049704Z",
     "iopub.status.busy": "2026-05-19T20:11:59.049548Z",
     "iopub.status.idle": "2026-05-19T20:11:59.161388Z",
     "shell.execute_reply": "2026-05-19T20:11:59.160762Z"
    }
   },
   "outputs": [],
   "source": [
    "total.SetMarkerStyle( 21 )\n",
    "total.SetMarkerSize( 0.7 )\n",
    "main.SetFillColor( 16 )\n",
    "s1.SetFillColor( 42 )\n",
    "s2.SetFillColor( 46 )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e0689b1",
   "metadata": {},
   "source": [
    "Initialize random number generator."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "dafe2755",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:59.163591Z",
     "iopub.status.busy": "2026-05-19T20:11:59.163437Z",
     "iopub.status.idle": "2026-05-19T20:11:59.271286Z",
     "shell.execute_reply": "2026-05-19T20:11:59.270714Z"
    }
   },
   "outputs": [],
   "source": [
    "gRandom.SetSeed()\n",
    "gauss, landau = gRandom.Gaus, gRandom.Landau"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a82a36ab",
   "metadata": {},
   "source": [
    "for speed, bind and cache the Fill member functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a73a6bc2",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:59.273663Z",
     "iopub.status.busy": "2026-05-19T20:11:59.273431Z",
     "iopub.status.idle": "2026-05-19T20:11:59.377060Z",
     "shell.execute_reply": "2026-05-19T20:11:59.376473Z"
    }
   },
   "outputs": [],
   "source": [
    "histos = [ 'total', 'main', 's1', 's2' ]\n",
    "for name in histos:\n",
    "   exec('%sFill = %s.Fill' % (name,name))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e99993a5",
   "metadata": {},
   "source": [
    "Fill histograms randomly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "bc86c4a0",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:59.379510Z",
     "iopub.status.busy": "2026-05-19T20:11:59.379285Z",
     "iopub.status.idle": "2026-05-19T20:11:59.799270Z",
     "shell.execute_reply": "2026-05-19T20:11:59.798742Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779221520026\" style=\"width: 600px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779221520026() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(33847,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779221520026', 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_1779221520026();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kUPDATE = 500\n",
    "for i in range( 10000 ):\n",
    " # Generate random values.\n",
    "   xmain = gauss( -1, 1.5 )\n",
    "   xs1   = gauss( -0.5, 0.5 )\n",
    "   xs2   = landau( 1, 0.15 )\n",
    "   mainFill( xmain )\n",
    "\n",
    " # Fill histograms.\n",
    "   s1Fill( xs1, 0.3 )\n",
    "   s2Fill( xs2, 0.2 )\n",
    "   totalFill( xmain )\n",
    "   totalFill( xs1, 0.3 )\n",
    "   totalFill( xs2, 0.2 )\n",
    "\n",
    " # Update display every kUPDATE events.\n",
    "   if i and (i%kUPDATE) == 0 :\n",
    "      if i == kUPDATE :\n",
    "         total.Draw( 'e1p' )\n",
    "         main.Draw( 'same' )\n",
    "         s1.Draw( 'same' )\n",
    "         s2.Draw( 'same' )\n",
    "         c1.Update()\n",
    "         slider = TSlider( 'slider', 'test', 4.2, 0, 4.6, total.GetMaximum(), 38 )\n",
    "         slider.SetFillColor( 46 )\n",
    "\n",
    "      if slider:\n",
    "         slider.SetRange( 0, float(i) / 10000. )\n",
    "\n",
    "      c1.Modified()\n",
    "      c1.Update()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df2f26cd",
   "metadata": {},
   "source": [
    "Destroy member functions cache."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "ae8b4ae1",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:59.801148Z",
     "iopub.status.busy": "2026-05-19T20:11:59.800966Z",
     "iopub.status.idle": "2026-05-19T20:11:59.909324Z",
     "shell.execute_reply": "2026-05-19T20:11:59.908791Z"
    }
   },
   "outputs": [],
   "source": [
    "for name in histos:\n",
    "   exec('del %sFill' % name)\n",
    "del histos"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0304fb4f",
   "metadata": {},
   "source": [
    "Done, finalized and trigger an update."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "51bf0e1c",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:11:59.911825Z",
     "iopub.status.busy": "2026-05-19T20:11:59.911694Z",
     "iopub.status.idle": "2026-05-19T20:12:00.027854Z",
     "shell.execute_reply": "2026-05-19T20:12:00.027364Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hsum      : Real Time =   1.09 seconds Cpu Time =   0.92 seconds\n"
     ]
    }
   ],
   "source": [
    "slider.SetRange( 0, 1 )\n",
    "total.Draw( 'sameaxis' ) # to redraw axis hidden by the fill area\n",
    "c1.Modified()\n",
    "c1.Update()\n",
    "\n",
    "gBenchmark.Show( 'hsum' )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "863de253",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d1bf8213",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:12:00.029761Z",
     "iopub.status.busy": "2026-05-19T20:12:00.029630Z",
     "iopub.status.idle": "2026-05-19T20:12:00.143373Z",
     "shell.execute_reply": "2026-05-19T20:12:00.142888Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779221520141\" style=\"width: 600px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779221520141() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(33847,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779221520141', 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_1779221520141();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%jsroot on\n",
    "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
}
