{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "85d88dc0",
   "metadata": {},
   "source": [
    "# hist105_TExec_dynamic_slice\n",
    "Example of function called when a mouse event occurs in a pad.\n",
    "When moving the mouse in the canvas, a second canvas shows the\n",
    "projection along X of the bin corresponding to the Y position\n",
    "of the mouse. The resulting histogram is fitted with a gaussian.\n",
    "A \"dynamic\" line shows the current bin position in Y.\n",
    "This more elaborated example can be used as a starting point\n",
    "to develop more powerful interactive applications exploiting CINT\n",
    "as a development engine.\n",
    "\n",
    "Note that a class is used to hold on to the canvas that display\n",
    "the selected slice.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:** Rene Brun, Johann Cohen-Tanugi, Wim Lavrijsen, Enric Tejedor  \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:13 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "796ecaea",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:13:24.227811Z",
     "iopub.status.busy": "2026-05-19T20:13:24.227686Z",
     "iopub.status.idle": "2026-05-19T20:13:25.511633Z",
     "shell.execute_reply": "2026-05-19T20:13:25.511044Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779221605501\" style=\"width: 700px; height: 500px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779221605501() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(23756,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779221605501', 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_1779221605501();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import sys\n",
    "import ctypes\n",
    "\n",
    "from ROOT import gRandom, gPad, gROOT, gVirtualX\n",
    "from ROOT import kTRUE, kRed\n",
    "from ROOT import TCanvas, TH2, TH2F\n",
    "\n",
    "\n",
    "class DynamicExec:\n",
    "\n",
    "   def __init__( self ):\n",
    "      self._cX   = None\n",
    "      self._cY   = None\n",
    "      self._old  = None\n",
    "\n",
    "   def __call__( self ):\n",
    "\n",
    "      h = gPad.GetSelected();\n",
    "      if not h:\n",
    "         return\n",
    "\n",
    "      if not isinstance( h, TH2 ):\n",
    "         return\n",
    "\n",
    "      gPad.GetCanvas().FeedbackMode( kTRUE )\n",
    "\n",
    "    # erase old position and draw a line at current position\n",
    "      px = gPad.GetEventX()\n",
    "      py = gPad.GetEventY()\n",
    "\n",
    "      uxmin, uxmax = gPad.GetUxmin(), gPad.GetUxmax()\n",
    "      uymin, uymax = gPad.GetUymin(), gPad.GetUymax()\n",
    "      pxmin, pxmax = gPad.XtoAbsPixel( uxmin ), gPad.XtoAbsPixel( uxmax )\n",
    "      pymin, pymax = gPad.YtoAbsPixel( uymin ), gPad.YtoAbsPixel( uymax )\n",
    "\n",
    "      if self._old != None:\n",
    "         gVirtualX.DrawLine( pxmin, self._old[1], pxmax, self._old[1] )\n",
    "         gVirtualX.DrawLine( self._old[0], pymin, self._old[0], pymax )\n",
    "      gVirtualX.DrawLine( pxmin, py, pxmax, py )\n",
    "      gVirtualX.DrawLine( px, pymin, px, pymax )\n",
    "\n",
    "      self._old = px, py\n",
    "\n",
    "      upx = gPad.AbsPixeltoX( px )\n",
    "      x = gPad.PadtoX( upx )\n",
    "      upy = gPad.AbsPixeltoY( py )\n",
    "      y = gPad.PadtoY( upy )\n",
    "\n",
    "      padsav = gPad\n",
    "\n",
    "    # create or set the display canvases\n",
    "      if not self._cX:\n",
    "         self._cX = TCanvas( 'c2', 'Projection Canvas in X', 730, 10, 700, 500 )\n",
    "      else:\n",
    "         self._DestroyPrimitive( 'X' )\n",
    "\n",
    "      if not self._cY:\n",
    "         self._cY = TCanvas( 'c3', 'Projection Canvas in Y', 10, 550, 700, 500 )\n",
    "      else:\n",
    "         self._DestroyPrimitive( 'Y' )\n",
    "\n",
    "      self.DrawSlice( h, y, 'Y' )\n",
    "      self.DrawSlice( h, x, 'X' )\n",
    "\n",
    "      padsav.cd()\n",
    "\n",
    "   def _DestroyPrimitive( self, xy ):\n",
    "      proj = getattr( self, '_c'+xy ).GetPrimitive( 'Projection '+xy )\n",
    "      if proj:\n",
    "         proj.IsA().Destructor( proj )\n",
    "\n",
    "   def DrawSlice( self, histo, value, xy ):\n",
    "      yx = xy == 'X' and 'Y' or 'X'\n",
    "\n",
    "    # draw slice corresponding to mouse position\n",
    "      canvas = getattr( self, '_c'+xy )\n",
    "      canvas.SetGrid()\n",
    "      canvas.cd()\n",
    "\n",
    "      bin = getattr( histo, 'Get%saxis' % xy )().FindBin( value )\n",
    "      hp = getattr( histo, 'Projection' + yx )( '', bin, bin )\n",
    "      hp.SetFillColor( 38 )\n",
    "      hp.SetName( 'Projection ' + xy )\n",
    "      hp.SetTitle( xy + 'Projection of bin=%d' % bin )\n",
    "      hp.Fit( 'gaus', 'ql' )\n",
    "      hp.GetFunction( 'gaus' ).SetLineColor( kRed )\n",
    "      hp.GetFunction( 'gaus' ).SetLineWidth( 6 )\n",
    "      canvas.Update()\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    " # create a new canvas.\n",
    "   c1 = TCanvas('c1', 'Dynamic Slice Example', 10, 10, 700, 500 )\n",
    "   c1.SetFillColor( 42 )\n",
    "   c1.SetFrameFillColor( 33 )\n",
    "\n",
    " # create a 2-d histogram, fill and draw it\n",
    "   hpxpy  = TH2F( 'hpxpy', 'py vs px', 40, -4, 4, 40, -4, 4 )\n",
    "   hpxpy.SetStats( 0 )\n",
    "   x, y = ctypes.c_double( 0.1 ), ctypes.c_double( 0.101 )\n",
    "   for i in range( 50000 ):\n",
    "   # pass ctypes doubles by reference, then retrieve their modified values with .value\n",
    "     gRandom.Rannor( x, y )\n",
    "     hpxpy.Fill( x.value, y.value )\n",
    "   hpxpy.Draw( 'COL' )\n",
    "\n",
    " # Add a TExec object to the canvas (explicit use of __main__ is for IPython)\n",
    "   import __main__\n",
    "   __main__.slicer = DynamicExec()\n",
    "   c1.AddExec( 'dynamic', 'TPython::Exec( \"slicer()\" );' )\n",
    "   c1.Update()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a7fe6a5f",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3320d10a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:13:25.513275Z",
     "iopub.status.busy": "2026-05-19T20:13:25.513093Z",
     "iopub.status.idle": "2026-05-19T20:13:25.640888Z",
     "shell.execute_reply": "2026-05-19T20:13:25.640359Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779221605638\" style=\"width: 700px; height: 500px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779221605638() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(23756,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779221605638', 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_1779221605638();\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
}
