{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "67a9eda1",
   "metadata": {},
   "source": [
    "# df010_trivialDataSource\n",
    "Use the \"trivial data source\", an example data source implementation.\n",
    "\n",
    "This tutorial illustrates how use the RDataFrame in combination with a\n",
    "RDataSource. In this case we use a RTrivialDS, which is nothing more\n",
    "than a simple generator: it does not interface to any existing dataset.\n",
    "The RTrivialDS has a single column, col0, which has value n for entry n.\n",
    "\n",
    "Note that RTrivialDS is only a demo data source implementation and superior alternatives\n",
    "typically exist for production use (e.g. constructing an empty RDataFrame as `RDataFrame(nEntries)`).\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": "0145bc04",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:38.005249Z",
     "iopub.status.busy": "2026-05-19T20:09:38.005111Z",
     "iopub.status.idle": "2026-05-19T20:09:38.964943Z",
     "shell.execute_reply": "2026-05-19T20:09:38.963397Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0822399b",
   "metadata": {},
   "source": [
    "Create the data frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "74b54a69",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:38.987234Z",
     "iopub.status.busy": "2026-05-19T20:09:38.987090Z",
     "iopub.status.idle": "2026-05-19T20:09:39.376967Z",
     "shell.execute_reply": "2026-05-19T20:09:39.376497Z"
    }
   },
   "outputs": [],
   "source": [
    "MakeTrivialDataFrame = ROOT.RDF.MakeTrivialDataFrame\n",
    "\n",
    "nEvents = 128\n",
    "\n",
    "d_s = MakeTrivialDataFrame(nEvents)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8566db7a",
   "metadata": {},
   "source": [
    "Now we have a regular RDataFrame: the ingestion of data is delegated to\n",
    "the RDataSource. At this point everything works as before."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9f14bfed",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:39.384188Z",
     "iopub.status.busy": "2026-05-19T20:09:39.384060Z",
     "iopub.status.idle": "2026-05-19T20:09:40.859776Z",
     "shell.execute_reply": "2026-05-19T20:09:40.859317Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file df010_trivialDataSource.png has been created\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saved figure to df010_trivialDataSource.png\n"
     ]
    }
   ],
   "source": [
    "h_s = d_s.Define(\"x\", \"1./(1. + col0)\").Histo1D((\"h_s\", \"h_s\", 128, 0, .6), \"x\")\n",
    "\n",
    "c = ROOT.TCanvas()\n",
    "c.SetLogy()\n",
    "h_s.Draw()\n",
    "c.SaveAs(\"df010_trivialDataSource.png\")\n",
    "\n",
    "print(\"Saved figure to df010_trivialDataSource.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c94d5e2",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6e567453",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:09:40.891269Z",
     "iopub.status.busy": "2026-05-19T20:09:40.891115Z",
     "iopub.status.idle": "2026-05-19T20:09:41.090681Z",
     "shell.execute_reply": "2026-05-19T20:09:41.090229Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779221381080\" style=\"width: 700px; height: 500px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779221381080() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(21837,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779221381080', 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_1779221381080();\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
}
