{
"cells": [
{
"cell_type": "markdown",
"id": "273c3186",
"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",
"This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, March 19, 2024 at 07:06 PM."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7c966737",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:06:56.781617Z",
"iopub.status.busy": "2024-03-19T19:06:56.781267Z",
"iopub.status.idle": "2024-03-19T19:07:00.156898Z",
"shell.execute_reply": "2024-03-19T19:07:00.152891Z"
}
},
"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": "31cbfc74",
"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": "eee4b854",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:07:00.204497Z",
"iopub.status.busy": "2024-03-19T19:07:00.204043Z",
"iopub.status.idle": "2024-03-19T19:07:00.389628Z",
"shell.execute_reply": "2024-03-19T19:07:00.388301Z"
}
},
"outputs": [],
"source": [
"d1 = d.Define(\"r\", \"sqrt(x*x + y*y)\")"
]
},
{
"cell_type": "markdown",
"id": "c8b7adde",
"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": "0abe599b",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:07:00.396631Z",
"iopub.status.busy": "2024-03-19T19:07:00.396223Z",
"iopub.status.idle": "2024-03-19T19:07:08.154653Z",
"shell.execute_reply": "2024-03-19T19:07:08.153484Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saved figure to df016_ring.png\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Info in : png file df016_ring.png has been created\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": "ab4137e5",
"metadata": {},
"source": [
"Draw all canvases "
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "09baa1dc",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:07:08.159193Z",
"iopub.status.busy": "2024-03-19T19:07:08.158741Z",
"iopub.status.idle": "2024-03-19T19:07:08.391767Z",
"shell.execute_reply": "2024-03-19T19:07:08.390607Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}