{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ae765b83",
   "metadata": {},
   "source": [
    "# df016_vecOps\n",
    "Process collections in RDataFrame with the help of RVec.\n",
    "\n",
    "This tutorial shows the potential of the VecOps approach for treating collections\n",
    "stored in datasets, a situation very common in HEP data analysis.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:** Danilo Piparo (CERN)  \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:09 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "fa82bead",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:45.319793Z",
     "iopub.status.busy": "2026-05-19T20:09:45.319673Z",
     "iopub.status.idle": "2026-05-19T20:09:46.665038Z",
     "shell.execute_reply": "2026-05-19T20:09:46.664538Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT\n",
    "\n",
    "df = ROOT.RDataFrame(1024)\n",
    "coordDefineCode = '''ROOT::RVecD {0}(len);\n",
    "                     std::transform({0}.begin(), {0}.end(), {0}.begin(), [](double){{return gRandom->Uniform(-1.0, 1.0);}});\n",
    "                     return {0};'''\n",
    "d = df.Define(\"len\", \"gRandom->Uniform(0, 16)\")\\\n",
    "      .Define(\"x\", coordDefineCode.format(\"x\"))\\\n",
    "      .Define(\"y\", coordDefineCode.format(\"y\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "214843da",
   "metadata": {},
   "source": [
    "Now we have in our hands d, a RDataFrame with two columns, x and y, which\n",
    "hold collections of coordinates. The sizes of these collections vary.\n",
    "Let's now define radii radii from the x and y coordinates. We'll do it treating \n",
    "the collections stored in the columns without looping on the individual elements."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e52d91cd",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:46.675391Z",
     "iopub.status.busy": "2026-05-19T20:09:46.675249Z",
     "iopub.status.idle": "2026-05-19T20:09:46.794113Z",
     "shell.execute_reply": "2026-05-19T20:09:46.793218Z"
    }
   },
   "outputs": [],
   "source": [
    "d1 = d.Define(\"r\", \"sqrt(x*x + y*y)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92c044e2",
   "metadata": {},
   "source": [
    "Now we want to plot 2 quarters of a ring with radii .5 and 1.\n",
    "Note how the cuts are performed on RVecs, comparing them with integers and\n",
    "among themselves."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7b7ddbd0",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:46.800301Z",
     "iopub.status.busy": "2026-05-19T20:09:46.800127Z",
     "iopub.status.idle": "2026-05-19T20:09:48.412113Z",
     "shell.execute_reply": "2026-05-19T20:09:48.411769Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file df016_ring.png has been created\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saved figure to df016_ring.png\n"
     ]
    }
   ],
   "source": [
    "ring_h = d1.Define(\"rInFig\", \"r > .5 && r < 1 && x*y < 0\")\\\n",
    "           .Define(\"yFig\", \"y[rInFig]\")\\\n",
    "           .Define(\"xFig\", \"x[rInFig]\")\\\n",
    "           .Histo2D((\"fig\", \"Two quarters of a ring\", 64, -1.1, 1.1, 64, -1.1, 1.1), \"xFig\", \"yFig\")\n",
    "\n",
    "cring = ROOT.TCanvas()\n",
    "ring_h.Draw(\"Colz\")\n",
    "cring.SaveAs(\"df016_ring.png\")\n",
    "\n",
    "print(\"Saved figure to df016_ring.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "607d0869",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9eb13d65",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:48.413744Z",
     "iopub.status.busy": "2026-05-19T20:09:48.413593Z",
     "iopub.status.idle": "2026-05-19T20:09:48.592446Z",
     "shell.execute_reply": "2026-05-19T20:09:48.591687Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779221388581\" style=\"width: 700px; height: 500px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779221388581() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(26346,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779221388581', 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_1779221388581();\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
}
