Back to home page

EIC code displayed by LXR

 
 

    


Warning, /snippets/Tracking/particle2hit/mc_tracking_hits_example.ipynb is written in an unsupported language. File is not indexed.

0001 {
0002  "cells": [
0003   {
0004    "cell_type": "markdown",
0005    "id": "ec67bbdd",
0006    "metadata": {},
0007    "source": [
0008     "# From selected MC particles to hits on tracking layers\n",
0009     "\n",
0010     "This notebook demonstrates the standalone **`mc_tracking_hits.py`** reader on\n",
0011     "one pion simulation file. Copy that module and this notebook together to share\n",
0012     "the example; edit the input path below. No other project files, ROOT, PODIO or\n",
0013     "DD4hep libraries are needed.\n",
0014     "\n",
0015     "On this machine select **EIC 26.08 (RSU maps)**, then **Run All**. Elsewhere use\n",
0016     "Python 3.9+ with NumPy, Awkward Array, Uproot, pandas, Matplotlib and IPython.\n",
0017     "The saved example reads only 2,000 events, without changing the ROOT file.\n",
0018     "\n",
0019     "The tables contain **simulated hits directly linked to the selected MC particle**,\n",
0020     "not reconstructed hits or fitted-track measurements. A missing hit is not a\n",
0021     "geometric intersection test. Primary selection means `generatorStatus == 1`;\n",
0022     "secondary ancestry is not folded into the primary.\n"
0023    ]
0024   },
0025   {
0026    "cell_type": "code",
0027    "execution_count": 1,
0028    "id": "283d03f3",
0029    "metadata": {
0030     "execution": {
0031      "iopub.execute_input": "2026-10-19T21:57:46.737099Z",
0032      "iopub.status.busy": "2026-10-19T21:57:46.736892Z",
0033      "iopub.status.idle": "2026-10-19T21:58:06.020851Z",
0034      "shell.execute_reply": "2026-10-19T21:58:06.020039Z"
0035     }
0036    },
0037    "outputs": [
0038     {
0039      "name": "stdout",
0040      "output_type": "stream",
0041      "text": [
0042       "Python: 3.13.13\n"
0043      ]
0044     }
0045    ],
0046    "source": [
0047     "from pathlib import Path\n",
0048     "import sys\n",
0049     "import time\n",
0050     "import numpy as np\n",
0051     "import pandas as pd\n",
0052     "import matplotlib.pyplot as plt\n",
0053     "from IPython.display import display\n",
0054     "\n",
0055     "%matplotlib inline\n",
0056     "plt.rcParams.update({'figure.dpi': 110, 'font.size': 10})\n",
0057     "\n",
0058     "# Works from either the notebook folder or the workspace root.\n",
0059     "MODULE_DIR = next(path for path in (Path.cwd(), Path.cwd()/'scripts')\n",
0060     "                  if (path/'mc_tracking_hits.py').is_file())\n",
0061     "sys.path.insert(0, str(MODULE_DIR))\n",
0062     "from mc_tracking_hits import KEY, SURFACE_KEY, read_mc_tracking_hits, iter_mc_tracking_hits\n",
0063     "print('Python:', sys.version.split()[0])\n"
0064    ]
0065   },
0066   {
0067    "cell_type": "markdown",
0068    "id": "99df5061",
0069    "metadata": {},
0070    "source": [
0071     "## 1. Input and MC selection\n",
0072     "\n",
0073     "Cuts use the **MC momentum at production**, not the momentum stored in a hit.\n",
0074     "Ranges are half-open `[low, high)`; momentum is in GeV. Set either range to\n",
0075     "`None` to remove that cut. `collections=None` discovers all owning tracker-hit\n",
0076     "collections. Set `primary_only=False` in the reader call to include secondary MC\n",
0077     "particles as well; there is no one-particle-per-event assumption.\n",
0078     "\n",
0079     "The default sample is 5 GeV pi+ with generated eta = 0.9–1.0. A missing L2 hit\n",
0080     "in this forward-going sample is possible and is kept in the counting tables.\n"
0081    ]
0082   },
0083   {
0084    "cell_type": "code",
0085    "execution_count": null,
0086    "id": "4082d9fc",
0087    "metadata": {
0088     "execution": {
0089      "iopub.execute_input": "2026-10-19T21:58:06.022973Z",
0090      "iopub.status.busy": "2026-10-19T21:58:06.022655Z",
0091      "iopub.status.idle": "2026-10-19T21:58:07.336764Z",
0092      "shell.execute_reply": "2026-10-19T21:58:07.335750Z"
0093     }
0094    },
0095    "outputs": [
0096     {
0097      "name": "stdout",
0098      "output_type": "stream",
0099      "text": [
0100       "2,000 selected MC particles; 12,105 associated hits; 1.30 s\n",
0101       "3 selected MC particles have no hit in the requested collections\n"
0102      ]
0103     }
0104    ],
0105    "source": [
0106     "ROOT_FILE = Path('path/to/your/file.root')  # Adjust to your ROOT file path.\n",
0107     "STOP_EVENTS = 2000             # Keep small for exploration; None reads the whole file.\n",
0108     "STEP_SIZE = 1000\n",
0109     "ETA_RANGE = (0.9, 1.0)\n",
0110     "P_RANGE_GEV = (4.5, 5.5)\n",
0111     "PDGS = [211, -211]\n",
0112     "COLLECTIONS = None\n",
0113     "\n",
0114     "# VertexBarrel IDs in this production geometry. Inspect the catalogue below\n",
0115     "# before using another geometry: layer numbers are not globally unique.\n",
0116     "IB_COLLECTION, IB_SYSTEM = 'VertexBarrelHits', 31\n",
0117     "LAYER_IDS = [0, 1, 2]\n",
0118     "MC_ROW = 0                    # Position in the selected particle table, not an MC index.\n",
0119     "\n",
0120     "assert ROOT_FILE.is_file(), ROOT_FILE\n",
0121     "started = time.perf_counter()\n",
0122     "tables = read_mc_tracking_hits(ROOT_FILE, collections=COLLECTIONS, primary_only=True,\n",
0123     "    pdgs=PDGS, eta_range=ETA_RANGE, p_range=P_RANGE_GEV,\n",
0124     "    stop=STOP_EVENTS, step_size=STEP_SIZE)\n",
0125     "particles, hits = tables['particles'], tables['hits']\n",
0126     "elapsed = time.perf_counter()-started\n",
0127     "print(f'{len(particles):,} selected MC particles; {len(hits):,} associated hits; {elapsed:.2f} s')\n",
0128     "print(f'{(particles.n_hits == 0).sum():,} selected MC particles have no hit in the requested collections')\n",
0129     "assert not particles.empty, 'No selected MC particles: adjust the input/ranges and rerun.'\n"
0130    ]
0131   },
0132   {
0133    "cell_type": "markdown",
0134    "id": "e4b0f1a8",
0135    "metadata": {},
0136    "source": [
0137     "## 2. Understand the tables and their join key\n",
0138     "\n",
0139     "`particles` has one row per selected MC particle, **including zero-hit particles**.\n",
0140     "`hits` has one row per associated simulated hit, preserving all stored attributes.\n",
0141     "They join on `KEY = (file_id, event_entry, mc_index)`:\n",
0142     "\n",
0143     "- `file_id`: ROOT file UUID, separating different simulation files.\n",
0144     "- `event_entry`: zero-based entry in that file, separating events.\n",
0145     "- `mc_index`: original index in the event's MCParticles collection.\n",
0146     "\n",
0147     "The MC index is not assumed to be zero. MC kinematics are stored once in\n",
0148     "`particles`; merge them into `hits` only when a downstream operation needs them.\n",
0149     "CellIDs stay exact uint64 integers; the hexadecimal display below is a copy.\n"
0150    ]
0151   },
0152   {
0153    "cell_type": "code",
0154    "execution_count": 3,
0155    "id": "de4c6ef3",
0156    "metadata": {
0157     "execution": {
0158      "iopub.execute_input": "2026-10-19T21:58:07.338547Z",
0159      "iopub.status.busy": "2026-10-19T21:58:07.338355Z",
0160      "iopub.status.idle": "2026-10-19T21:58:07.473195Z",
0161      "shell.execute_reply": "2026-10-19T21:58:07.472220Z"
0162     }
0163    },
0164    "outputs": [
0165     {
0166      "name": "stdout",
0167      "output_type": "stream",
0168      "text": [
0169       "Join key: ['file_id', 'event_entry', 'mc_index']\n",
0170       "Units: momenta/energy GeV; positions/path length mm; times ns; angles rad\n"
0171      ]
0172     },
0173     {
0174      "data": {
0175       "text/html": [
0176        "<div>\n",
0177        "<style scoped>\n",
0178        "    .dataframe tbody tr th:only-of-type {\n",
0179        "        vertical-align: middle;\n",
0180        "    }\n",
0181        "\n",
0182        "    .dataframe tbody tr th {\n",
0183        "        vertical-align: top;\n",
0184        "    }\n",
0185        "\n",
0186        "    .dataframe thead th {\n",
0187        "        text-align: right;\n",
0188        "    }\n",
0189        "</style>\n",
0190        "<table border=\"1\" class=\"dataframe\">\n",
0191        "  <thead>\n",
0192        "    <tr style=\"text-align: right;\">\n",
0193        "      <th></th>\n",
0194        "      <th>file_id</th>\n",
0195        "      <th>event_entry</th>\n",
0196        "      <th>mc_index</th>\n",
0197        "      <th>pdg</th>\n",
0198        "      <th>p_GeV</th>\n",
0199        "      <th>eta</th>\n",
0200        "      <th>phi_rad</th>\n",
0201        "      <th>n_hits</th>\n",
0202        "    </tr>\n",
0203        "  </thead>\n",
0204        "  <tbody>\n",
0205        "    <tr>\n",
0206        "      <th>0</th>\n",
0207        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0208        "      <td>0</td>\n",
0209        "      <td>0</td>\n",
0210        "      <td>211</td>\n",
0211        "      <td>5.0</td>\n",
0212        "      <td>0.958850</td>\n",
0213        "      <td>-2.426105</td>\n",
0214        "      <td>5</td>\n",
0215        "    </tr>\n",
0216        "    <tr>\n",
0217        "      <th>1</th>\n",
0218        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0219        "      <td>1</td>\n",
0220        "      <td>0</td>\n",
0221        "      <td>211</td>\n",
0222        "      <td>5.0</td>\n",
0223        "      <td>0.955128</td>\n",
0224        "      <td>0.764443</td>\n",
0225        "      <td>6</td>\n",
0226        "    </tr>\n",
0227        "    <tr>\n",
0228        "      <th>2</th>\n",
0229        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0230        "      <td>2</td>\n",
0231        "      <td>0</td>\n",
0232        "      <td>211</td>\n",
0233        "      <td>5.0</td>\n",
0234        "      <td>0.974390</td>\n",
0235        "      <td>-2.121181</td>\n",
0236        "      <td>8</td>\n",
0237        "    </tr>\n",
0238        "    <tr>\n",
0239        "      <th>3</th>\n",
0240        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0241        "      <td>3</td>\n",
0242        "      <td>0</td>\n",
0243        "      <td>211</td>\n",
0244        "      <td>5.0</td>\n",
0245        "      <td>0.958934</td>\n",
0246        "      <td>-0.333522</td>\n",
0247        "      <td>5</td>\n",
0248        "    </tr>\n",
0249        "    <tr>\n",
0250        "      <th>4</th>\n",
0251        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0252        "      <td>4</td>\n",
0253        "      <td>0</td>\n",
0254        "      <td>211</td>\n",
0255        "      <td>5.0</td>\n",
0256        "      <td>0.911613</td>\n",
0257        "      <td>2.763772</td>\n",
0258        "      <td>5</td>\n",
0259        "    </tr>\n",
0260        "  </tbody>\n",
0261        "</table>\n",
0262        "</div>"
0263       ],
0264       "text/plain": [
0265        "                                file_id  event_entry  mc_index  pdg  p_GeV  \\\n",
0266        "0  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0  211    5.0   \n",
0267        "1  1160063f-ec9f-4268-a2c5-04f17ab61ee8            1         0  211    5.0   \n",
0268        "2  1160063f-ec9f-4268-a2c5-04f17ab61ee8            2         0  211    5.0   \n",
0269        "3  1160063f-ec9f-4268-a2c5-04f17ab61ee8            3         0  211    5.0   \n",
0270        "4  1160063f-ec9f-4268-a2c5-04f17ab61ee8            4         0  211    5.0   \n",
0271        "\n",
0272        "        eta   phi_rad  n_hits  \n",
0273        "0  0.958850 -2.426105       5  \n",
0274        "1  0.955128  0.764443       6  \n",
0275        "2  0.974390 -2.121181       8  \n",
0276        "3  0.958934 -0.333522       5  \n",
0277        "4  0.911613  2.763772       5  "
0278       ]
0279      },
0280      "metadata": {},
0281      "output_type": "display_data"
0282     },
0283     {
0284      "data": {
0285       "text/html": [
0286        "<div>\n",
0287        "<style scoped>\n",
0288        "    .dataframe tbody tr th:only-of-type {\n",
0289        "        vertical-align: middle;\n",
0290        "    }\n",
0291        "\n",
0292        "    .dataframe tbody tr th {\n",
0293        "        vertical-align: top;\n",
0294        "    }\n",
0295        "\n",
0296        "    .dataframe thead th {\n",
0297        "        text-align: right;\n",
0298        "    }\n",
0299        "</style>\n",
0300        "<table border=\"1\" class=\"dataframe\">\n",
0301        "  <thead>\n",
0302        "    <tr style=\"text-align: right;\">\n",
0303        "      <th></th>\n",
0304        "      <th>file_id</th>\n",
0305        "      <th>event_entry</th>\n",
0306        "      <th>mc_index</th>\n",
0307        "      <th>hit_collection</th>\n",
0308        "      <th>system</th>\n",
0309        "      <th>layer</th>\n",
0310        "      <th>hit_index</th>\n",
0311        "      <th>cell_id</th>\n",
0312        "      <th>x_mm</th>\n",
0313        "      <th>y_mm</th>\n",
0314        "      <th>z_mm</th>\n",
0315        "      <th>cell_id_hex</th>\n",
0316        "    </tr>\n",
0317        "  </thead>\n",
0318        "  <tbody>\n",
0319        "    <tr>\n",
0320        "      <th>0</th>\n",
0321        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0322        "      <td>0</td>\n",
0323        "      <td>0</td>\n",
0324        "      <td>MPGDBarrelHits</td>\n",
0325        "      <td>61</td>\n",
0326        "      <td>0</td>\n",
0327        "      <td>0</td>\n",
0328        "      <td>18391293623556706365</td>\n",
0329        "      <td>-411.602799</td>\n",
0330        "      <td>-389.605791</td>\n",
0331        "      <td>630.627643</td>\n",
0332        "      <td>0xff3b001c0001103d</td>\n",
0333        "    </tr>\n",
0334        "    <tr>\n",
0335        "      <th>1</th>\n",
0336        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0337        "      <td>1</td>\n",
0338        "      <td>0</td>\n",
0339        "      <td>MPGDBarrelHits</td>\n",
0340        "      <td>61</td>\n",
0341        "      <td>0</td>\n",
0342        "      <td>0</td>\n",
0343        "      <td>18392982258668621885</td>\n",
0344        "      <td>391.923622</td>\n",
0345        "      <td>409.397370</td>\n",
0346        "      <td>628.469277</td>\n",
0347        "      <td>0xff40ffea0001503d</td>\n",
0348        "    </tr>\n",
0349        "    <tr>\n",
0350        "      <th>2</th>\n",
0351        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0352        "      <td>2</td>\n",
0353        "      <td>0</td>\n",
0354        "      <td>MPGDBarrelHits</td>\n",
0355        "      <td>61</td>\n",
0356        "      <td>0</td>\n",
0357        "      <td>0</td>\n",
0358        "      <td>18384255426289012797</td>\n",
0359        "      <td>-275.446742</td>\n",
0360        "      <td>-495.097770</td>\n",
0361        "      <td>644.320836</td>\n",
0362        "      <td>0xff21fee80001103d</td>\n",
0363        "    </tr>\n",
0364        "    <tr>\n",
0365        "      <th>3</th>\n",
0366        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0367        "      <td>3</td>\n",
0368        "      <td>0</td>\n",
0369        "      <td>MPGDBarrelHits</td>\n",
0370        "      <td>61</td>\n",
0371        "      <td>0</td>\n",
0372        "      <td>0</td>\n",
0373        "      <td>18396924239782428733</td>\n",
0374        "      <td>533.554142</td>\n",
0375        "      <td>-159.776636</td>\n",
0376        "      <td>620.381616</td>\n",
0377        "      <td>0xff4f01200001403d</td>\n",
0378        "    </tr>\n",
0379        "    <tr>\n",
0380        "      <th>4</th>\n",
0381        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
0382        "      <td>4</td>\n",
0383        "      <td>0</td>\n",
0384        "      <td>MPGDBarrelHits</td>\n",
0385        "      <td>61</td>\n",
0386        "      <td>0</td>\n",
0387        "      <td>0</td>\n",
0388        "      <td>18418035060604207165</td>\n",
0389        "      <td>-525.670897</td>\n",
0390        "      <td>184.275708</td>\n",
0391        "      <td>581.632721</td>\n",
0392        "      <td>0xff9a014e0001003d</td>\n",
0393        "    </tr>\n",
0394        "  </tbody>\n",
0395        "</table>\n",
0396        "</div>"
0397       ],
0398       "text/plain": [
0399        "                                file_id  event_entry  mc_index  \\\n",
0400        "0  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
0401        "1  1160063f-ec9f-4268-a2c5-04f17ab61ee8            1         0   \n",
0402        "2  1160063f-ec9f-4268-a2c5-04f17ab61ee8            2         0   \n",
0403        "3  1160063f-ec9f-4268-a2c5-04f17ab61ee8            3         0   \n",
0404        "4  1160063f-ec9f-4268-a2c5-04f17ab61ee8            4         0   \n",
0405        "\n",
0406        "   hit_collection  system  layer  hit_index               cell_id        x_mm  \\\n",
0407        "0  MPGDBarrelHits      61      0          0  18391293623556706365 -411.602799   \n",
0408        "1  MPGDBarrelHits      61      0          0  18392982258668621885  391.923622   \n",
0409        "2  MPGDBarrelHits      61      0          0  18384255426289012797 -275.446742   \n",
0410        "3  MPGDBarrelHits      61      0          0  18396924239782428733  533.554142   \n",
0411        "4  MPGDBarrelHits      61      0          0  18418035060604207165 -525.670897   \n",
0412        "\n",
0413        "         y_mm        z_mm         cell_id_hex  \n",
0414        "0 -389.605791  630.627643  0xff3b001c0001103d  \n",
0415        "1  409.397370  628.469277  0xff40ffea0001503d  \n",
0416        "2 -495.097770  644.320836  0xff21fee80001103d  \n",
0417        "3 -159.776636  620.381616  0xff4f01200001403d  \n",
0418        "4  184.275708  581.632721  0xff9a014e0001003d  "
0419       ]
0420      },
0421      "metadata": {},
0422      "output_type": "display_data"
0423     },
0424     {
0425      "data": {
0426       "text/html": [
0427        "<div>\n",
0428        "<style scoped>\n",
0429        "    .dataframe tbody tr th:only-of-type {\n",
0430        "        vertical-align: middle;\n",
0431        "    }\n",
0432        "\n",
0433        "    .dataframe tbody tr th {\n",
0434        "        vertical-align: top;\n",
0435        "    }\n",
0436        "\n",
0437        "    .dataframe thead th {\n",
0438        "        text-align: right;\n",
0439        "    }\n",
0440        "</style>\n",
0441        "<table border=\"1\" class=\"dataframe\">\n",
0442        "  <thead>\n",
0443        "    <tr style=\"text-align: right;\">\n",
0444        "      <th></th>\n",
0445        "      <th>column</th>\n",
0446        "      <th>dtype</th>\n",
0447        "    </tr>\n",
0448        "  </thead>\n",
0449        "  <tbody>\n",
0450        "    <tr>\n",
0451        "      <th>0</th>\n",
0452        "      <td>cell_id</td>\n",
0453        "      <td>uint64</td>\n",
0454        "    </tr>\n",
0455        "    <tr>\n",
0456        "      <th>1</th>\n",
0457        "      <td>energy_deposit_GeV</td>\n",
0458        "      <td>float32</td>\n",
0459        "    </tr>\n",
0460        "    <tr>\n",
0461        "      <th>2</th>\n",
0462        "      <td>time_ns</td>\n",
0463        "      <td>float32</td>\n",
0464        "    </tr>\n",
0465        "    <tr>\n",
0466        "      <th>3</th>\n",
0467        "      <td>path_length_mm</td>\n",
0468        "      <td>float32</td>\n",
0469        "    </tr>\n",
0470        "    <tr>\n",
0471        "      <th>4</th>\n",
0472        "      <td>quality</td>\n",
0473        "      <td>int32</td>\n",
0474        "    </tr>\n",
0475        "    <tr>\n",
0476        "      <th>5</th>\n",
0477        "      <td>x_mm</td>\n",
0478        "      <td>float64</td>\n",
0479        "    </tr>\n",
0480        "    <tr>\n",
0481        "      <th>6</th>\n",
0482        "      <td>y_mm</td>\n",
0483        "      <td>float64</td>\n",
0484        "    </tr>\n",
0485        "    <tr>\n",
0486        "      <th>7</th>\n",
0487        "      <td>z_mm</td>\n",
0488        "      <td>float64</td>\n",
0489        "    </tr>\n",
0490        "    <tr>\n",
0491        "      <th>8</th>\n",
0492        "      <td>px_GeV</td>\n",
0493        "      <td>float32</td>\n",
0494        "    </tr>\n",
0495        "    <tr>\n",
0496        "      <th>9</th>\n",
0497        "      <td>py_GeV</td>\n",
0498        "      <td>float32</td>\n",
0499        "    </tr>\n",
0500        "    <tr>\n",
0501        "      <th>10</th>\n",
0502        "      <td>pz_GeV</td>\n",
0503        "      <td>float32</td>\n",
0504        "    </tr>\n",
0505        "    <tr>\n",
0506        "      <th>11</th>\n",
0507        "      <td>file_id</td>\n",
0508        "      <td>category</td>\n",
0509        "    </tr>\n",
0510        "    <tr>\n",
0511        "      <th>12</th>\n",
0512        "      <td>event_entry</td>\n",
0513        "      <td>int64</td>\n",
0514        "    </tr>\n",
0515        "    <tr>\n",
0516        "      <th>13</th>\n",
0517        "      <td>mc_index</td>\n",
0518        "      <td>int32</td>\n",
0519        "    </tr>\n",
0520        "    <tr>\n",
0521        "      <th>14</th>\n",
0522        "      <td>mc_collection_id</td>\n",
0523        "      <td>uint32</td>\n",
0524        "    </tr>\n",
0525        "    <tr>\n",
0526        "      <th>15</th>\n",
0527        "      <td>hit_collection</td>\n",
0528        "      <td>category</td>\n",
0529        "    </tr>\n",
0530        "    <tr>\n",
0531        "      <th>16</th>\n",
0532        "      <td>hit_collection_id</td>\n",
0533        "      <td>uint32</td>\n",
0534        "    </tr>\n",
0535        "    <tr>\n",
0536        "      <th>17</th>\n",
0537        "      <td>hit_index</td>\n",
0538        "      <td>int64</td>\n",
0539        "    </tr>\n",
0540        "    <tr>\n",
0541        "      <th>18</th>\n",
0542        "      <td>system</td>\n",
0543        "      <td>UInt64</td>\n",
0544        "    </tr>\n",
0545        "    <tr>\n",
0546        "      <th>19</th>\n",
0547        "      <td>layer</td>\n",
0548        "      <td>UInt64</td>\n",
0549        "    </tr>\n",
0550        "    <tr>\n",
0551        "      <th>20</th>\n",
0552        "      <td>cell_module</td>\n",
0553        "      <td>UInt64</td>\n",
0554        "    </tr>\n",
0555        "    <tr>\n",
0556        "      <th>21</th>\n",
0557        "      <td>cell_sensor</td>\n",
0558        "      <td>UInt64</td>\n",
0559        "    </tr>\n",
0560        "    <tr>\n",
0561        "      <th>22</th>\n",
0562        "      <td>cell_x</td>\n",
0563        "      <td>Int64</td>\n",
0564        "    </tr>\n",
0565        "    <tr>\n",
0566        "      <th>23</th>\n",
0567        "      <td>cell_z</td>\n",
0568        "      <td>Int64</td>\n",
0569        "    </tr>\n",
0570        "    <tr>\n",
0571        "      <th>24</th>\n",
0572        "      <td>cell_slice</td>\n",
0573        "      <td>UInt64</td>\n",
0574        "    </tr>\n",
0575        "    <tr>\n",
0576        "      <th>25</th>\n",
0577        "      <td>cell_y</td>\n",
0578        "      <td>Int64</td>\n",
0579        "    </tr>\n",
0580        "    <tr>\n",
0581        "      <th>26</th>\n",
0582        "      <td>cell_assembly</td>\n",
0583        "      <td>UInt64</td>\n",
0584        "    </tr>\n",
0585        "    <tr>\n",
0586        "      <th>27</th>\n",
0587        "      <td>cell_sector</td>\n",
0588        "      <td>UInt64</td>\n",
0589        "    </tr>\n",
0590        "    <tr>\n",
0591        "      <th>28</th>\n",
0592        "      <td>cell_strip</td>\n",
0593        "      <td>UInt64</td>\n",
0594        "    </tr>\n",
0595        "    <tr>\n",
0596        "      <th>29</th>\n",
0597        "      <td>cell_phi</td>\n",
0598        "      <td>Int64</td>\n",
0599        "    </tr>\n",
0600        "    <tr>\n",
0601        "      <th>30</th>\n",
0602        "      <td>cell_segmentation_id</td>\n",
0603        "      <td>UInt64</td>\n",
0604        "    </tr>\n",
0605        "    <tr>\n",
0606        "      <th>31</th>\n",
0607        "      <td>cell_idx</td>\n",
0608        "      <td>UInt64</td>\n",
0609        "    </tr>\n",
0610        "    <tr>\n",
0611        "      <th>32</th>\n",
0612        "      <td>cell_idy</td>\n",
0613        "      <td>UInt64</td>\n",
0614        "    </tr>\n",
0615        "    <tr>\n",
0616        "      <th>33</th>\n",
0617        "      <td>cell_ids</td>\n",
0618        "      <td>UInt64</td>\n",
0619        "    </tr>\n",
0620        "  </tbody>\n",
0621        "</table>\n",
0622        "</div>"
0623       ],
0624       "text/plain": [
0625        "                  column     dtype\n",
0626        "0                cell_id    uint64\n",
0627        "1     energy_deposit_GeV   float32\n",
0628        "2                time_ns   float32\n",
0629        "3         path_length_mm   float32\n",
0630        "4                quality     int32\n",
0631        "5                   x_mm   float64\n",
0632        "6                   y_mm   float64\n",
0633        "7                   z_mm   float64\n",
0634        "8                 px_GeV   float32\n",
0635        "9                 py_GeV   float32\n",
0636        "10                pz_GeV   float32\n",
0637        "11               file_id  category\n",
0638        "12           event_entry     int64\n",
0639        "13              mc_index     int32\n",
0640        "14      mc_collection_id    uint32\n",
0641        "15        hit_collection  category\n",
0642        "16     hit_collection_id    uint32\n",
0643        "17             hit_index     int64\n",
0644        "18                system    UInt64\n",
0645        "19                 layer    UInt64\n",
0646        "20           cell_module    UInt64\n",
0647        "21           cell_sensor    UInt64\n",
0648        "22                cell_x     Int64\n",
0649        "23                cell_z     Int64\n",
0650        "24            cell_slice    UInt64\n",
0651        "25                cell_y     Int64\n",
0652        "26         cell_assembly    UInt64\n",
0653        "27           cell_sector    UInt64\n",
0654        "28            cell_strip    UInt64\n",
0655        "29              cell_phi     Int64\n",
0656        "30  cell_segmentation_id    UInt64\n",
0657        "31              cell_idx    UInt64\n",
0658        "32              cell_idy    UInt64\n",
0659        "33              cell_ids    UInt64"
0660       ]
0661      },
0662      "metadata": {},
0663      "output_type": "display_data"
0664     }
0665    ],
0666    "source": [
0667     "print('Join key:', KEY)\n",
0668     "print('Units:', tables['metadata']['units'])\n",
0669     "display(particles[KEY + ['pdg', 'p_GeV', 'eta', 'phi_rad', 'n_hits']].head())\n",
0670     "hit_preview = hits[KEY + ['hit_collection', 'system', 'layer', 'hit_index',\n",
0671     "                         'cell_id', 'x_mm', 'y_mm', 'z_mm']].head().copy()\n",
0672     "hit_preview['cell_id_hex'] = hit_preview.cell_id.map(lambda value: hex(int(value)))\n",
0673     "display(hit_preview)\n",
0674     "display(pd.DataFrame({'column': hits.columns, 'dtype': hits.dtypes.astype(str).to_numpy()}))\n"
0675    ]
0676   },
0677   {
0678    "cell_type": "code",
0679    "execution_count": 4,
0680    "id": "489cfef2",
0681    "metadata": {
0682     "execution": {
0683      "iopub.execute_input": "2026-10-19T21:58:07.475322Z",
0684      "iopub.status.busy": "2026-10-19T21:58:07.475077Z",
0685      "iopub.status.idle": "2026-10-19T21:58:08.487389Z",
0686      "shell.execute_reply": "2026-10-19T21:58:08.486603Z"
0687     }
0688    },
0689    "outputs": [
0690     {
0691      "data": {
0692       "image/png": "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tM61rsPYdMy6NSbdMZeMxV0uGf2/tp6Hh4fb9zt16pT8+uuv0qABuT0AAMEtToH6+PHjnaZp6dmzp6mhnzx5spl7XLumAwAA3/BGOa25ZDTo1sUxl4wu//77r1lXo0YNmTlzpvz4449m/QsvvGDmWx81apT9OFYuGU34NnHiRDO8rW3btiaXzODBg+37VapUyQTkHTp0MDlmdAibJqbTHnivv/66B64SAABB1vX977//NtOjqIsXL8ovv/wiq1atkrp165oEbv379/f0eQIAAB+W04/KJfPEE0+YceEjR440gbtWDDz11FOydu1aqVOnTpxyycyfP9+ca7du3Uy3fZ39ZdmyZZEyxgMAEGziFKhrLb0WmFbhHBYWZmrRlU6VpjcFABIe08YB8FY5HZNcMprwNSZimktGA39todcFAIBQEqdA/cknn5Tp06fbs65rDbd2ZVOaoTV79uyePk8AABBDlNMAAIRgoD527Fh58cUXTTc3zdD6ww8/2Ld9++23UrFiRU+eIwIIma+DB7/L4EAvi9BEOQ0AQAgG6s8884xpOT98+LAULFhQMmTIYN+mSV8KFSrkyXMEAACxQDkNAECIzqOuLenly5ePtP5Rc5wDAAITvSwCC+U0AAAhNj2b2r9/v7Rq1cq0qOv49N27d5v1OrWKZngFAAC+QzkNAECIBerr16+XsmXLmulfNFi/f/++fZtmltVEcwAAwDcopwEACMGu7++8844J0L/88kt58OCBvPfee/ZtGsDPnj3bk+cYNOg2Cj4XABIC5TQAACHYor5v3z557bXX7HOhOtLEcsyjDgCA71BOAwAQgoF6pkyZ5J9//nG7TTPB58yZM77nBQAA4ohyGgCAEAzUmzRpIsOHD5dDhw7Z12nL+rlz52TChAnSrFkzT54jAACIBcppAABCMFDXMelZs2aVJ554QipVqmTWtW/fXooWLSrp06eXd99919PnCQAAYohyGgCAEEwmp8H4li1b5OuvvzaZZbWLnS7du3eXtm3bSrJkyTx/pgAAIEYopwEACMFA3ZqG7Y033jALAADwL5TTAACEWNd3AAAAAADg4xb1tGnTRpqKLSq637Vr1+JzXgAAIBYopwEACMFAvV+/fjEO1AEAQMKinAYAIAQDdTK5AwDgvyinAQAIHoxRBwAAAAAg0AP1Dh06yMsvv+x2W+vWraVz587x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",
0693       "text/plain": [
0694        "<Figure size 990x330 with 2 Axes>"
0695       ]
0696      },
0697      "metadata": {},
0698      "output_type": "display_data"
0699     }
0700    ],
0701    "source": [
0702     "fig, axes = plt.subplots(1, 2, figsize=(9, 3), layout='constrained')\n",
0703     "axes[0].hist(particles.eta, bins=20, color='steelblue')\n",
0704     "axes[0].set(xlabel='Generated MC eta', ylabel='Selected MC particles')\n",
0705     "axes[1].hist(particles.p_GeV, bins=20, range=P_RANGE_GEV, color='darkorange')\n",
0706     "axes[1].set(xlabel='Generated MC momentum [GeV]', ylabel='Selected MC particles')\n",
0707     "plt.show()\n"
0708    ]
0709   },
0710   {
0711    "cell_type": "markdown",
0712    "id": "70ab43a7",
0713    "metadata": {},
0714    "source": [
0715     "## 3. Find the available tracking layers\n",
0716     "\n",
0717     "Collections and CellID layouts are read from the file. The catalogue below\n",
0718     "lists **observed hits in the selected MC sample**, not all possible geometry\n",
0719     "surfaces. Several detectors reuse layer 0 or 1: always select the hit collection\n",
0720     "and system as well. These are detector-layer groups, not ACTS surface IDs.\n",
0721     "Decoded module/sensor fields retain finer segmentation; a missing encoded\n",
0722     "layer is represented by NA, not an invented layer number.\n"
0723    ]
0724   },
0725   {
0726    "cell_type": "code",
0727    "execution_count": 5,
0728    "id": "a2a42af3",
0729    "metadata": {
0730     "execution": {
0731      "iopub.execute_input": "2026-10-19T21:58:08.489163Z",
0732      "iopub.status.busy": "2026-10-19T21:58:08.488947Z",
0733      "iopub.status.idle": "2026-10-19T21:58:08.503105Z",
0734      "shell.execute_reply": "2026-10-19T21:58:08.502394Z"
0735     }
0736    },
0737    "outputs": [
0738     {
0739      "data": {
0740       "text/html": [
0741        "<div>\n",
0742        "<style scoped>\n",
0743        "    .dataframe tbody tr th:only-of-type {\n",
0744        "        vertical-align: middle;\n",
0745        "    }\n",
0746        "\n",
0747        "    .dataframe tbody tr th {\n",
0748        "        vertical-align: top;\n",
0749        "    }\n",
0750        "\n",
0751        "    .dataframe thead th {\n",
0752        "        text-align: right;\n",
0753        "    }\n",
0754        "</style>\n",
0755        "<table border=\"1\" class=\"dataframe\">\n",
0756        "  <thead>\n",
0757        "    <tr style=\"text-align: right;\">\n",
0758        "      <th></th>\n",
0759        "      <th>collection</th>\n",
0760        "      <th>collection_id</th>\n",
0761        "      <th>type</th>\n",
0762        "      <th>subset</th>\n",
0763        "    </tr>\n",
0764        "  </thead>\n",
0765        "  <tbody>\n",
0766        "    <tr>\n",
0767        "      <th>0</th>\n",
0768        "      <td>MCParticles</td>\n",
0769        "      <td>2714477136</td>\n",
0770        "      <td>edm4hep::MCParticleCollection</td>\n",
0771        "      <td>False</td>\n",
0772        "    </tr>\n",
0773        "    <tr>\n",
0774        "      <th>1</th>\n",
0775        "      <td>B0TrackerHits</td>\n",
0776        "      <td>1370106067</td>\n",
0777        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0778        "      <td>False</td>\n",
0779        "    </tr>\n",
0780        "    <tr>\n",
0781        "      <th>2</th>\n",
0782        "      <td>BackwardMPGDEndcapHits</td>\n",
0783        "      <td>3362963453</td>\n",
0784        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0785        "      <td>False</td>\n",
0786        "    </tr>\n",
0787        "    <tr>\n",
0788        "      <th>3</th>\n",
0789        "      <td>ForwardMPGDEndcapHits</td>\n",
0790        "      <td>3309489006</td>\n",
0791        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0792        "      <td>False</td>\n",
0793        "    </tr>\n",
0794        "    <tr>\n",
0795        "      <th>4</th>\n",
0796        "      <td>ForwardOffMTrackerHits</td>\n",
0797        "      <td>2451365843</td>\n",
0798        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0799        "      <td>False</td>\n",
0800        "    </tr>\n",
0801        "    <tr>\n",
0802        "      <th>5</th>\n",
0803        "      <td>ForwardRomanPotHits</td>\n",
0804        "      <td>1586770095</td>\n",
0805        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0806        "      <td>False</td>\n",
0807        "    </tr>\n",
0808        "    <tr>\n",
0809        "      <th>6</th>\n",
0810        "      <td>LumiSpecTrackerHits</td>\n",
0811        "      <td>4257345714</td>\n",
0812        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0813        "      <td>False</td>\n",
0814        "    </tr>\n",
0815        "    <tr>\n",
0816        "      <th>7</th>\n",
0817        "      <td>MPGDBarrelHits</td>\n",
0818        "      <td>2846270698</td>\n",
0819        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0820        "      <td>False</td>\n",
0821        "    </tr>\n",
0822        "    <tr>\n",
0823        "      <th>8</th>\n",
0824        "      <td>OuterMPGDBarrelHits</td>\n",
0825        "      <td>3679647107</td>\n",
0826        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0827        "      <td>False</td>\n",
0828        "    </tr>\n",
0829        "    <tr>\n",
0830        "      <th>9</th>\n",
0831        "      <td>SiBarrelHits</td>\n",
0832        "      <td>3062527592</td>\n",
0833        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0834        "      <td>False</td>\n",
0835        "    </tr>\n",
0836        "    <tr>\n",
0837        "      <th>10</th>\n",
0838        "      <td>TaggerTrackerHits</td>\n",
0839        "      <td>746073441</td>\n",
0840        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0841        "      <td>False</td>\n",
0842        "    </tr>\n",
0843        "    <tr>\n",
0844        "      <th>11</th>\n",
0845        "      <td>TOFBarrelHits</td>\n",
0846        "      <td>165749848</td>\n",
0847        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0848        "      <td>False</td>\n",
0849        "    </tr>\n",
0850        "    <tr>\n",
0851        "      <th>12</th>\n",
0852        "      <td>TOFEndcapHits</td>\n",
0853        "      <td>337981489</td>\n",
0854        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0855        "      <td>False</td>\n",
0856        "    </tr>\n",
0857        "    <tr>\n",
0858        "      <th>13</th>\n",
0859        "      <td>TrackerEndcapHits</td>\n",
0860        "      <td>1948551886</td>\n",
0861        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0862        "      <td>False</td>\n",
0863        "    </tr>\n",
0864        "    <tr>\n",
0865        "      <th>14</th>\n",
0866        "      <td>VertexBarrelHits</td>\n",
0867        "      <td>3497031840</td>\n",
0868        "      <td>edm4hep::SimTrackerHitCollection</td>\n",
0869        "      <td>False</td>\n",
0870        "    </tr>\n",
0871        "  </tbody>\n",
0872        "</table>\n",
0873        "</div>"
0874       ],
0875       "text/plain": [
0876        "                collection  collection_id                              type  \\\n",
0877        "0              MCParticles     2714477136     edm4hep::MCParticleCollection   \n",
0878        "1            B0TrackerHits     1370106067  edm4hep::SimTrackerHitCollection   \n",
0879        "2   BackwardMPGDEndcapHits     3362963453  edm4hep::SimTrackerHitCollection   \n",
0880        "3    ForwardMPGDEndcapHits     3309489006  edm4hep::SimTrackerHitCollection   \n",
0881        "4   ForwardOffMTrackerHits     2451365843  edm4hep::SimTrackerHitCollection   \n",
0882        "5      ForwardRomanPotHits     1586770095  edm4hep::SimTrackerHitCollection   \n",
0883        "6      LumiSpecTrackerHits     4257345714  edm4hep::SimTrackerHitCollection   \n",
0884        "7           MPGDBarrelHits     2846270698  edm4hep::SimTrackerHitCollection   \n",
0885        "8      OuterMPGDBarrelHits     3679647107  edm4hep::SimTrackerHitCollection   \n",
0886        "9             SiBarrelHits     3062527592  edm4hep::SimTrackerHitCollection   \n",
0887        "10       TaggerTrackerHits      746073441  edm4hep::SimTrackerHitCollection   \n",
0888        "11           TOFBarrelHits      165749848  edm4hep::SimTrackerHitCollection   \n",
0889        "12           TOFEndcapHits      337981489  edm4hep::SimTrackerHitCollection   \n",
0890        "13       TrackerEndcapHits     1948551886  edm4hep::SimTrackerHitCollection   \n",
0891        "14        VertexBarrelHits     3497031840  edm4hep::SimTrackerHitCollection   \n",
0892        "\n",
0893        "    subset  \n",
0894        "0    False  \n",
0895        "1    False  \n",
0896        "2    False  \n",
0897        "3    False  \n",
0898        "4    False  \n",
0899        "5    False  \n",
0900        "6    False  \n",
0901        "7    False  \n",
0902        "8    False  \n",
0903        "9    False  \n",
0904        "10   False  \n",
0905        "11   False  \n",
0906        "12   False  \n",
0907        "13   False  \n",
0908        "14   False  "
0909       ]
0910      },
0911      "metadata": {},
0912      "output_type": "display_data"
0913     },
0914     {
0915      "data": {
0916       "text/html": [
0917        "<div>\n",
0918        "<style scoped>\n",
0919        "    .dataframe tbody tr th:only-of-type {\n",
0920        "        vertical-align: middle;\n",
0921        "    }\n",
0922        "\n",
0923        "    .dataframe tbody tr th {\n",
0924        "        vertical-align: top;\n",
0925        "    }\n",
0926        "\n",
0927        "    .dataframe thead th {\n",
0928        "        text-align: right;\n",
0929        "    }\n",
0930        "</style>\n",
0931        "<table border=\"1\" class=\"dataframe\">\n",
0932        "  <thead>\n",
0933        "    <tr style=\"text-align: right;\">\n",
0934        "      <th></th>\n",
0935        "      <th>hit_collection</th>\n",
0936        "      <th>system</th>\n",
0937        "      <th>layer</th>\n",
0938        "      <th>n_hits</th>\n",
0939        "      <th>n_particles</th>\n",
0940        "    </tr>\n",
0941        "  </thead>\n",
0942        "  <tbody>\n",
0943        "    <tr>\n",
0944        "      <th>0</th>\n",
0945        "      <td>MPGDBarrelHits</td>\n",
0946        "      <td>61</td>\n",
0947        "      <td>0</td>\n",
0948        "      <td>2049</td>\n",
0949        "      <td>1954</td>\n",
0950        "    </tr>\n",
0951        "    <tr>\n",
0952        "      <th>1</th>\n",
0953        "      <td>OuterMPGDBarrelHits</td>\n",
0954        "      <td>64</td>\n",
0955        "      <td>0</td>\n",
0956        "      <td>1594</td>\n",
0957        "      <td>1594</td>\n",
0958        "    </tr>\n",
0959        "    <tr>\n",
0960        "      <th>2</th>\n",
0961        "      <td>TOFBarrelHits</td>\n",
0962        "      <td>92</td>\n",
0963        "      <td>1</td>\n",
0964        "      <td>2044</td>\n",
0965        "      <td>1654</td>\n",
0966        "    </tr>\n",
0967        "    <tr>\n",
0968        "      <th>3</th>\n",
0969        "      <td>TrackerEndcapHits</td>\n",
0970        "      <td>77</td>\n",
0971        "      <td>1</td>\n",
0972        "      <td>1460</td>\n",
0973        "      <td>1460</td>\n",
0974        "    </tr>\n",
0975        "    <tr>\n",
0976        "      <th>4</th>\n",
0977        "      <td>TrackerEndcapHits</td>\n",
0978        "      <td>78</td>\n",
0979        "      <td>1</td>\n",
0980        "      <td>1167</td>\n",
0981        "      <td>1167</td>\n",
0982        "    </tr>\n",
0983        "    <tr>\n",
0984        "      <th>5</th>\n",
0985        "      <td>VertexBarrelHits</td>\n",
0986        "      <td>31</td>\n",
0987        "      <td>0</td>\n",
0988        "      <td>1826</td>\n",
0989        "      <td>1826</td>\n",
0990        "    </tr>\n",
0991        "    <tr>\n",
0992        "      <th>6</th>\n",
0993        "      <td>VertexBarrelHits</td>\n",
0994        "      <td>31</td>\n",
0995        "      <td>1</td>\n",
0996        "      <td>1824</td>\n",
0997        "      <td>1824</td>\n",
0998        "    </tr>\n",
0999        "    <tr>\n",
1000        "      <th>7</th>\n",
1001        "      <td>VertexBarrelHits</td>\n",
1002        "      <td>31</td>\n",
1003        "      <td>2</td>\n",
1004        "      <td>141</td>\n",
1005        "      <td>141</td>\n",
1006        "    </tr>\n",
1007        "  </tbody>\n",
1008        "</table>\n",
1009        "</div>"
1010       ],
1011       "text/plain": [
1012        "        hit_collection  system  layer  n_hits  n_particles\n",
1013        "0       MPGDBarrelHits      61      0    2049         1954\n",
1014        "1  OuterMPGDBarrelHits      64      0    1594         1594\n",
1015        "2        TOFBarrelHits      92      1    2044         1654\n",
1016        "3    TrackerEndcapHits      77      1    1460         1460\n",
1017        "4    TrackerEndcapHits      78      1    1167         1167\n",
1018        "5     VertexBarrelHits      31      0    1826         1826\n",
1019        "6     VertexBarrelHits      31      1    1824         1824\n",
1020        "7     VertexBarrelHits      31      2     141          141"
1021       ]
1022      },
1023      "metadata": {},
1024      "output_type": "display_data"
1025     },
1026     {
1027      "name": "stdout",
1028      "output_type": "stream",
1029      "text": [
1030       "VertexBarrel CellID layout: system:0:8,layer:8:4,module:12:12,sensor:24:4,phi:32:-16,z:48:-16\n"
1031      ]
1032     }
1033    ],
1034    "source": [
1035     "catalogue = pd.DataFrame.from_dict(tables['metadata']['collections'], orient='index')\n",
1036     "display(catalogue.rename_axis('collection').reset_index())\n",
1037     "display(tables['surfaces'])\n",
1038     "print('VertexBarrel CellID layout:', tables['metadata']['encodings'].get(IB_COLLECTION))\n"
1039    ]
1040   },
1041   {
1042    "cell_type": "code",
1043    "execution_count": 6,
1044    "id": "5644bbdd",
1045    "metadata": {
1046     "execution": {
1047      "iopub.execute_input": "2026-10-19T21:58:08.504681Z",
1048      "iopub.status.busy": "2026-10-19T21:58:08.504506Z",
1049      "iopub.status.idle": "2026-10-19T21:58:08.944494Z",
1050      "shell.execute_reply": "2026-10-19T21:58:08.943645Z"
1051     }
1052    },
1053    "outputs": [
1054     {
1055      "data": {
1056       "image/png": "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VTz12Uusa5Z6MPNej6nuAUWOJp0AAABeV4/P7Mu38luzyGizg9vM9m00S081S0/L7Ht2ONUsJi5zfelKZhXrZa7btzlzu7RDmfuKLm+Wtt+sVLRZdFxm88WUA5l5MqasWURk5j6iEzKfZ+mZ2ybvMctIy/xZr1OunllsabODO8wO7jTbv8ksw2MWXyGziaT2cWiPWalIswoNzDw6lk2Z22ekm5VONIurYHZod+Zrq6qWlmyWkmQWHWMWFZd5vNpWy3WcnojMETVTdpl5MswitV1pszJV/ppiIdEsoaJZZLxZZCmz2qebNTk37wCnAVoU9FwzTlX3aMoJHA8EPgAAgOyVPt0QeAp5BD3guKJJJwAAAACEKAIfAAAAABRQRESELV26NN/bv/fee9a1a1c73gh8AAAAQGEc2G62a3XmfRF59913rWXLlpaQkGBVqlSx6667zjZv3pyv5z788MPWt2/fYz6G+vXrW2RkpK1fv95vea9evVzomTp1qnv87bffWqlSpaxMmTJWtmxZa9iwoQ0bNszvOa+++qq1atXK4uPjrWrVqtahQwe3zOPxZB1zdHS0e3758uXdPm688UZbsWKF3370ujoneq2KFSvahRdeaOvWrbPi8nAu51rnznt++vXrZ9OnTy90YCwsAh8AAABQEHvWm/36jtms581mD8+8//XdzOUB9MILL9i//vUve/TRR23Xrl22YMECS0tLszPPPNP27NlT5L+zw4cPZ/3cqFEje+edd7Ieb9++3X788UerVq2a33MU4g4cOGD79++3t956y+6//3778ssv3Tq9l6FDh9qTTz5pO3bssC1btthLL71k3333naWmauCiTJdeeql7/t69e23GjBku/LVp08YWL17s91q//PKLe62NGze6MHzLLbcc8/vMa1lJReADAAAA8kuhbv47Zqu/yxzBtHSFzPvV32YuD1Do27dvnwtLL774ol100UUWGxtrtWrVsrffftv9/Nxzz9mYMWOsffv2fs+rXr26q7RNnjzZnnjiCfvoo49cFUyVJlGwuvfee+2EE06wypUr21VXXWW7d+9269asWeOqTm+++abbXpVFL1UWFeB8K4+9e/e2uLi/RnnNwVlnnWUnnniiLVy40P78808X7j744APr1q2bq/CpGnjaaafZ2LFj3XvKSd26dd17Vch96KGHctymdOnSdvnl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AAAAAEHcpFPNOTX8qfrrZadRhzQU64ABA9x0DOrXN2rUKDd5JHPwAQAAAEAQV/jUH09DtGqo1uxzhnjnIlFzz3nz5rn+fZr/Q4O1aGQbAAAAAEAQV/g08IqGTc2LRu/UDQAAAABQgip8AAAAAIDAIvABAAAAQIgi8AEAAAAoFv3797e77767QM8pU6aMLV++vMiOKdQQ+AAAAIBC2Hlop63fv97dB5pCjfcWGRlpcXFxWY+feOIJt83mzZvtuuuusypVqlh8fLydeuqp9u677x4RqDSfte/+NPBhTutOPPFE++ijj6y4rFmzxg3emJyc7Lf84YcfdgM7eh04cMCaNGlS6MAYboJm0BYAAACgJNh8YLPN3jzbVu1ZZcnpyRYXGWcNExta+xrtrUaZGgF5DYUar/bt29vAgQNduPEd4f7MM8906+bPn29Vq1a1adOm2d///nfbuXOn3X777VnbDh482J566qkcX8e7zuPxuOdffPHFbnT8mjVrFuh409PTXVjznS7t8OHDFh0dXcB3jkCjwgcAAAAUIOxN/HOizdk8xzIswxJjE939T5t/csu1/nh47rnnLDY21t555x2rXbu2q9T17NnTXnjhBbv//vtt3759Bdqfwlq3bt2sXLlytmLFCrds9erVdvbZZ1ulSpWscuXKduWVV7qg6VW/fn0XFlu1amUJCQm2bds2t5/hw4db06ZN3fNE06ppPm2Nyt+8eXObOHHiMb13vcbSpUttxIgR9t5779mwYcNchVKvIW+99ZY1aNDAypYt645x9OjRFs4IfAAAAEA+qbK3bv86a1yhsVWLr2ZlY8q6ez3WcgW/4+Grr76yyy+/3DX39NWnTx87dOiQzZ49u0D7y8jIsMmTJ7tp0k466SS3TFW/u+66yzZt2mRLliyxjRs32gMPPOD3PDUhVTNQBUw1LZUJEybYzJkzbevWra7ZqYKkKok7duywMWPGuHm0tb9jdcstt1i/fv3cvlUR/f777+3gwYN2ww03uCC8f/9+mzt3rp122mkWzgh8AAAAQD6or56acVYqXcmiS/k3VdTjSnGVbOWelUXSpy87haecml2qCaUqa1rv9fzzz1tiYmLWbe/evUesU4WuV69err9cxYoV3TpVyc477zxXSVSYU7D67rvv/F7vn//8p9tOFUZv+FSfOjUxLV26tAte55xzjmsqqvXt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9OWmXLly7gYAAAAA4SSoKny+WrZsaZGRkbZixQpr2LChxcTEuL56vtS3T7L37QMAAAAABHHg07x7as6pSdg1GXvXrl1t/Pjxftuoj5/6+mkydgAAAABAEDbp7N27t2u+qSadGrTlt99+s6FDh7rHF198sdvmwQcftI4dO9qAAQPcdAzq66e5+kaOHFmgOfgAAAAAIFwEReDTqJnjxo2zp556yjIyMqx+/fpuUvU777zTNeWUDh062CeffGL33nuvvf32227C9BdffNFuvPHG4j58AAAAAAhKER6Px2NhZsOGDW56Bo3YqeAIAACA0MTnPoQ72kICAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiIoq7gMAUDhLWrYyS042i4uz5gvmcxoBAABwBCp8QAm0pFnzzLAnycmZjwEAAIBsCHxASazsFWA5AAAAwheBDyhpvJW9/C4HAABA2CLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AEAAABAiCLwAQAAAECIIvABAAAAQIgi8AElTJ23xhRoOQAAAMJXUAS+Dz/80C6++GKrU6eOJSQk2CmnnGKvvPKKZWRk+G03ZcoUa9WqlcXFxVmjRo1sxIgRxXbMQHEp066dlbvoIr9leqzlAAAAgK8oCwLPPvus1atXz55++mmrVq2azZgxw2677TZbtWqVWyazZ8+2Xr162bXXXmvDhg2zWbNm2aBBgywmJsZuvPHG4n4LwHFVa+j/WflLe9uhBQusdMuWhD0AAADkKMLj8XismG3fvt2qVKnit2zw4MGuyrdnzx6LjY217t27265du2zOnDlZ29x00002efJk27Bhg5Uqlf9ipbZXNXH9+vVWu3btgL4XAAAABA8+9yHcBUWTzuxhT9R0Mzk52YW8lJQUmz59uvXt29dvm379+tnmzZtt/vz5x/FoAQAAAKBkCIomnTmZOXOmVaxY0apWrWrLli2z1NRUa968ud82LVq0cPdLliyxNm3a5Lqvffv2uZuXQiIAAAAAhLqgqPBl9/PPP9vo0aPtjjvusMjISNu9e7dbnpiY6LddhQoV3L2qgHlRnz814fTe2rZtW4RHDwAAAADBIegC35YtW+zSSy91oeyuu+7yWxcREZHjc3Jb7tsfUP31vLe5c+cG9JgBAAAAIBgFVZPOvXv3usFZ4uPj7dNPP7Xo6Gi/Sp630uflfexdn5ty5cq5GwAAAACEk6Cp8GmAlosuusi2bt1qU6dOtUqVKmWta9iwoZt+QX31fC1evNjdZ+/bBwAAAAAIksCXlpZmffr0sd9++82FPc3J50vTMnTt2tXGjx/vt3zs2LFWo0YNN6InAAAAACAIm3Teeuut9tlnn9nQoUMtKSnJfvrpJ7+RONUc88EHH7SOHTvagAED3HQMmnh91KhRNnLkyALNwQcAAAAA4SIoJl6vX7++rV27Nsd1M2bMsM6dO7ufp0yZYvfee69r2qkJ0zUYi8JiQTEBJwAAQHjgcx/CXVBU+NasWZOv7Xr06OFuAAAAAICjoy0kAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEKAIfAAAAAIQoAh8AAAAAhCgCHwAAAACEqKjiPgCEtpcHTvd7fOurXYvtWAAAAIBwQ4UPxy3s5bYMAAAAQNEg8KFI5BXsCH0AAADA8UHgAwAAAIAQReADAAAAgBBF4EORyGtwFgZuAQAAAI4PAh+KTE7BjrAHAAAAHD9My4AiRcADAAAAig8VPgAAAAAIUUET+FasWGEDBw60li1bWlRUlJ100kk5bjdlyhRr1aqVxcXFWaNGjWzEiBHH/VgBAAAAoCQImsD3xx9/2Oeff+5CXIsWLXLcZvbs2darVy9r3bq1ffHFF9a/f38bNGiQvf7668f9eAEAAAAg2EV4PB6PBYGMjAwrVSozfyrI/fzzz7Zo0SK/bbp37267du2yOXPmZC276aabbPLkybZhw4as5x+Ntq1Tp46tX7/eateuHeB3AgAAgGDB5z6Eu6Cp8B0trKWkpNj06dOtb9++fsv79etnmzdvtvnz5xfxEQIAAABAyVJiRulcuXKlpaamWvPmzf2We5t/LlmyxNq0aZPjc/ft2+duXgqIAAAAABDqSkzg2717t7tPTEz0W16hQgV3r6aeuRk2bJg98sgjRXyEAAAAABBcgqZJZ35FREQUaLkMHjzY9dfz3ubOnVuERwgAAAAAwaHEVPi8lTxvpc/L+9i7PiflypVzNwAAAAAIJyWmwtewYUOLiYlxffV8LV682N1n79sHAAAAAOGuxAS+2NhY69q1q40fP95v+dixY61GjRpuMnYAAAAAQBA26UxKSrIpU6a4n9euXetG1ZwwYYJ73KlTJ6tSpYo9+OCD1rFjRxswYICbjmHWrFk2atQoGzlyZL7n4AMAAACAcBE0E6+vWbPGTjjhhBzXzZgxwzp37ux+Vii89957XdNOTZquAVluvfXWAr0WE3ACAACEBz73IdwFTYWvfv36lp/s2aNHD3cDAAAAAOSNdpAAAAAAEKIIfAAAAAAQogh8AAAAABCiCHwAAAAAEKIIfAAAAAAQogh8AAAAABCiCHwAAAAAEKIIfAAAAAAQogh8AAAAABCiCHwAAAAAEKIIfAAAAAAQogh8AAAAABCioor7APA/Lw+cnufpuPXVrpwuAAAAAPlGha+EhL38bgMAAAAAXgS+IFCQIEfoAwAAAJBfBD4AAAAACFEEPgAAAAAIUQS+IFCQwVgYuAUAAABAfjFK53GSV987hTjdGKUTAAAAQCAR+I6DowU5rfeGPgAAAAAIFJp0FrH8jqrJ6JsAAAAAAo3ABwAAAAAhisAHAAAAACGKwFfE8tsvj/57AAAAAAKNwHccHC3MEfYAAAAAFAVG6TxOCHUAAAAAjjcqfAAAAAAQogh8AAAAABCiCHwAAAAAEKIIfAAAAAAQogh8AAAAABCiCHwAAAAAEKIIfAAAAAAQogh8AAAAABCiCHwAAAAAEKIIfAAAAAAQoqIsDKWlpbn7zZs3F/ehAAAAoAh5P+95P/8B4SYsA9/27dvdfdu2bYv7UAAAAHCcPv/Vr1+fc42wE+HxeDwWZpKTk23hwoXum54zzjjD5s6dazVq1Cjuw0IQfzOoLwe4TsB1Av49Af/dKXn0eU9h7+STT7a4uLjiPhzguAvLCp/+2E8//XTbsGGDe6ywV7t27eI+LAQ5rhNwnYB/T8B/d0omKnsIZwzaAgAAAAAhisAHAAAAACEqrANfuXLl7KGHHnL3ANcJ+PcE/HcHwYDPJwACKSwHbQEAAACAcBDWFT4AAAAACGUEPgAAAAAIUQQ+AAAAAAhRBD4AAAAACFEEPgAAAAAIUWEZ+JYvX27dunWzhIQEq1q1qt1+++126NCh4j4sFKMPP/zQLr74YqtTp467Lk455RR75ZVXLCMjw2+7KVOmWKtWrSwuLs4aNWpkI0aMKLZjRvE6cOCA1a5d2yIiIuznn3/2W8d1AnnjjTfs1FNPdf9e6L81F110EdcJ/Hz88cfWrl07Nw1DtWrVrHfv3rZs2bIjzhL/pgA4FmEX+Pbs2WNdu3a1/fv320cffWTPPPOMvffeezZgwIDiPjQUo2effdZiY2Pt6aeftsmTJ7vwd9ttt9ldd92Vtc3s2bOtV69e1rp1a/viiy+sf//+NmjQIHv99df53YWhxx57zNLS0o5YznUCefjhh23w4MHWr18/mzZtmo0cOdJq1KjBdYIsX3/9tQt4TZs2dZ9Hhg8f7sLeOeecY/v27eNaARA4njDz1FNPeeLj4z3bt2/PWvbee+9pLkLP4sWLi/XYUHy2bdt2xLI77rjDExcX50lOTnaPu3Xr5mnbtq3fNgMGDPDUqFHDk56eftyOFcVvyZIlnoSEBM+rr77q/u2YN29e1jquE+i/JZGRkZ5p06blejK4TnDDDTd46tev78nIyMg6GXPmzHH/pkyZMoVrBUDAhF2FT80i9O1Z5cqVs5ZdeumlrrqjdQhPVapUOWKZmm4mJyfbrl27LCUlxaZPn259+/b120bf3m/evNnmz59/HI8WxU3V34EDB7pv5n1xnUDGjBljDRo0sPPOOy/HE8J1Ajl8+LCVLVvWNQv3SkxMdPcej3If1wqAwAi7wLdkyRJr3ry53zKFvYYNG7p1gNfMmTOtYsWKru/NypUrLTU19Yhrp0WLFlnXFcLDhAkT7LfffrMHH3zwiHVcJ5CffvrJTj75ZNfsV/9+xMTEWKdOnWzBggVcJ8hyww03uP92vPTSS667yZo1a+zOO+90/505++yzuVYABEzYBb7du3dnfYPmq0KFCq6SA4gG4Rg9erTdcccdFhkZ6a4byX7t6LoRrp3wkJSU5PplPfnkk26Qhey4TiBbtmyxL7/80vUPf/XVV23ixInu2jn33HPdB3uuE0jHjh1t0qRJdt9997n/lpxwwgnuSyNdO/oimn9TAARK2AU+8W0+4aXmEzktR3h+WFMz37Zt2/oN2iK5XSNcO+FhyJAhbiQ9DdiTF66T8KbRfTWKqwbi0KAcF154oX366adusLDXXnstazuuk/D2448/2tVXX23XX3+9ffPNN+6Lgfj4eOvevbvfoC3CtQLgWERZmNG3aN5vV33pW9fszfUQfvbu3ev+Y6v/6OoDWnR0tF8lL/u1433sXY/QtXbtWjeaq76R934Y04d6771uXCcQNQXXFwMnnnhi1gnRCJ3NmjWzP/74wwVA4d+T8Ka+wBo1/Pnnn89adtZZZ7npXjT6s1oT8G8KgEAIuwqfQl32/lbqQK9mFAS+8KYBWjRP1tatW23q1KlWqVKlrHXq46l+ONmvncWLF7t7rp3Qt3r1ateP84ILLnAfwnTr2bOnW9elSxc3GBTXCfL690AtSUqVKsV1gqz/frRs2fKIAcRq1qzpPpMI/6YACISwC3w9evRwTSd27tyZtUzf2Cv0aR3Ck+ZT69OnjxuMQ2GvXr16fuvVn0LfxI4fP95v+dixY9039xrRE6FNH8xmzJjhd3vuuefcOvXTGjFiBNcJHFXw9MXRokWLss7Ixo0bbenSpW4idv49gei/M7/88ssRXQp0rdSvX9895loBEBCeMLN7925PrVq1PGeeeaZn6tSpnrfffttTuXJlT79+/Yr70FCMbrrpJjf30dChQz2zZ8/2u+3du9dt8+OPP3qioqI8N954o2fGjBmeIUOGeEqVKuUZNWoUv7swpesg+zx8XCdIS0vztG7d2tO4cWPPuHHjPJMmTfK0atXK/bfnwIEDXCdwXnrpJffvx6233ur58ssvPePHj/e0bNnSU6FCBc+mTZv4NwVAwIRd4JNly5Z5zjvvPDcBu8LeoEGDPElJScV9WChG9erVc//hzemmD/Ven3/+uefUU0/1xMTEeBo0aOAZPnw4v7cwllPgE64TbN261XPVVVd5ypcv7/5b0717d8/SpUu5TpBFE66PHDnS/TclISHBU61aNU/Pnj09v//++xFniX9TAByLCP1fYGqFAAAAAIBgEnZ9+AAAAAAgXBD4AAAAACBEEfgAAAAAIEQR+AAAAAAgRBH4AAAAACBEEfgAAAAAIEQR+AAAAAAgRBH4AAAAACBEEfgAIATUr1/fIiIi3O3dd989Lq85derUrNcsU6bMcXlNAABQMAQ+AAgRl112mc2ePdu6det2XF6vQ4cO7vVuuOGG4/J6AACg4Ah8ABAiqlWrZu3bt7fKlSsfl9crX768e73atWsfl9cDAAAFR+ADgCCyZs2arGaS2W9jxowp1D4///xzO/PMMy0+Pt4qVKhgnTt3tvnz57t13377rdu3mmdeeumlrmlmnTp1spqFvvjii1a3bl33vBtvvNFSUlIC+n4BAEDRiiri/QMACqBGjRqumaSvt956y1577TVr1KhRgc/luHHj7Morr7RevXrZ+++/bzExMTZr1izbuHGjtWrVKmu7W265xa6//nobOHCgjRo1yq677jpbuHChLVq0yF599VVbtWqVDR482Bo0aGD33nsvv1MAAEoIAh8ABJHY2FjXTNLrxx9/tDfffNMeffRRO+usswq0L4/HY3feeaedd955NmnSpKzlPXr0OGLbPn362P333+9+btu2rU2cONHGjh1rK1ascCHRWw388MMPCXwAAJQgNOkEgCC1YcMG6927t/Xs2bNQIWvZsmVuH6rcHc0555zj1zevatWq1rFjx6ywJ02aNLH169cX+DgAAEDxIfABQBA6dOiQXXzxxValShXXd0/97Apq586d7r5mzZpH3TYxMdHvsYJeTsuSk5MLfBwAAKD40KQTAIKQpjpQv7l58+YVeo67SpUquftNmzYF+OgAAEBJQYUPAILMU089ZePHj7cPPvjAGjZsWOj9NG3a1E2ZMHr06IAeHwAAKDmo8AFAENEImvfdd5/17dvXypUrZz/99FPWOoU/NfHMLzUDfeaZZ9wonZpy4dprr3WDwmgU0NNPP90uvPDCInoXAAAgWBD4ACCI/Pnnn5aRkeGmUNDNlyp1/fv3L9D+rrjiCjf/3uOPP+5CZFxcnLVu3douueSSAB85AAAIRhEejdsNACjR6tevbxdccIG98MILFhkZWahBXgpK//lIT093U0YMGzbMDhw4UOSvCQAACoY+fAAQIkaMGGHR0dH23nvvHZfXmzZtmnu9xx577Li8HgAAKDgqfAAQAhYuXGgpKSnu5wYNGljFihWL/DX37dtny5cvdz+rqtiqVasif00AAFAwBD4AAAAACFE06QQAAACAEEXgAwAAAIAQReADAAAAgBBF4AMAAACAEEXgAwAAAIAQReADAAAAgBBF4AMAAACAEEXgAwAAAIAQReADAAAAAAtN/w+//nc7XV4rSwAAAABJRU5ErkJggg==",
1057       "text/plain": [
1058        "<Figure size 880x440 with 1 Axes>"
1059       ]
1060      },
1061      "metadata": {},
1062      "output_type": "display_data"
1063     }
1064    ],
1065    "source": [
1066     "# All associated hit positions, coloured by collection. Coordinates are actual\n",
1067     "# stored positions; no geometric extrapolation or fitted trajectory is drawn.\n",
1068     "fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')\n",
1069     "for name, group in hits.groupby('hit_collection', observed=True):\n",
1070     "    radius_cm = np.hypot(group.x_mm, group.y_mm)/10\n",
1071     "    ax.scatter(group.z_mm/10, radius_cm, s=7, alpha=.45, label=name)\n",
1072     "ax.set(xlabel='z [cm]', ylabel='r [cm]', title='Hits linked to the selected MC sample')\n",
1073     "ax.legend(fontsize=8, loc='upper left', bbox_to_anchor=(1, 1), markerscale=2)\n",
1074     "plt.show()\n"
1075    ]
1076   },
1077   {
1078    "cell_type": "markdown",
1079    "id": "c0b18047",
1080    "metadata": {},
1081    "source": [
1082     "## 4. Select all L0 hits with their complete information\n",
1083     "\n",
1084     "This selection keeps every stored hit attribute: deposited energy [GeV],\n",
1085     "time [ns], path length [mm], quality, position [mm], hit momentum [GeV],\n",
1086     "CellID and original references. `cell_*` columns are decoded integer fields,\n",
1087     "not physical positions. NA in those columns means that the readout does not\n",
1088     "define that field. No first-hit choice or one-hit-per-layer assumption is made.\n"
1089    ]
1090   },
1091   {
1092    "cell_type": "code",
1093    "execution_count": 7,
1094    "id": "4b02d983",
1095    "metadata": {
1096     "execution": {
1097      "iopub.execute_input": "2026-10-19T21:58:08.946225Z",
1098      "iopub.status.busy": "2026-10-19T21:58:08.946039Z",
1099      "iopub.status.idle": "2026-10-19T21:58:08.984111Z",
1100      "shell.execute_reply": "2026-10-19T21:58:08.983409Z"
1101     }
1102    },
1103    "outputs": [
1104     {
1105      "name": "stdout",
1106      "output_type": "stream",
1107      "text": [
1108       "L0: 1,826 hits from 1,826 MC particles\n"
1109      ]
1110     },
1111     {
1112      "data": {
1113       "text/html": [
1114        "<div>\n",
1115        "<style scoped>\n",
1116        "    .dataframe tbody tr th:only-of-type {\n",
1117        "        vertical-align: middle;\n",
1118        "    }\n",
1119        "\n",
1120        "    .dataframe tbody tr th {\n",
1121        "        vertical-align: top;\n",
1122        "    }\n",
1123        "\n",
1124        "    .dataframe thead th {\n",
1125        "        text-align: right;\n",
1126        "    }\n",
1127        "</style>\n",
1128        "<table border=\"1\" class=\"dataframe\">\n",
1129        "  <thead>\n",
1130        "    <tr style=\"text-align: right;\">\n",
1131        "      <th></th>\n",
1132        "      <th>cell_id</th>\n",
1133        "      <th>energy_deposit_GeV</th>\n",
1134        "      <th>time_ns</th>\n",
1135        "      <th>path_length_mm</th>\n",
1136        "      <th>quality</th>\n",
1137        "      <th>x_mm</th>\n",
1138        "      <th>y_mm</th>\n",
1139        "      <th>z_mm</th>\n",
1140        "      <th>px_GeV</th>\n",
1141        "      <th>py_GeV</th>\n",
1142        "      <th>pz_GeV</th>\n",
1143        "      <th>file_id</th>\n",
1144        "      <th>event_entry</th>\n",
1145        "      <th>mc_index</th>\n",
1146        "      <th>mc_collection_id</th>\n",
1147        "      <th>hit_collection</th>\n",
1148        "      <th>hit_collection_id</th>\n",
1149        "      <th>hit_index</th>\n",
1150        "      <th>system</th>\n",
1151        "      <th>layer</th>\n",
1152        "      <th>cell_module</th>\n",
1153        "      <th>cell_sensor</th>\n",
1154        "      <th>cell_x</th>\n",
1155        "      <th>cell_z</th>\n",
1156        "      <th>cell_slice</th>\n",
1157        "      <th>cell_y</th>\n",
1158        "      <th>cell_assembly</th>\n",
1159        "      <th>cell_sector</th>\n",
1160        "      <th>cell_strip</th>\n",
1161        "      <th>cell_phi</th>\n",
1162        "      <th>cell_segmentation_id</th>\n",
1163        "      <th>cell_idx</th>\n",
1164        "      <th>cell_idy</th>\n",
1165        "      <th>cell_ids</th>\n",
1166        "    </tr>\n",
1167        "  </thead>\n",
1168        "  <tbody>\n",
1169        "    <tr>\n",
1170        "      <th>4191</th>\n",
1171        "      <td>11260412213706783</td>\n",
1172        "      <td>0.000008</td>\n",
1173        "      <td>0.189949</td>\n",
1174        "      <td>0.020946</td>\n",
1175        "      <td>0</td>\n",
1176        "      <td>-28.640769</td>\n",
1177        "      <td>-25.039493</td>\n",
1178        "      <td>42.329336</td>\n",
1179        "      <td>-2.509395</td>\n",
1180        "      <td>-2.206943</td>\n",
1181        "      <td>3.718705</td>\n",
1182        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1183        "      <td>0</td>\n",
1184        "      <td>0</td>\n",
1185        "      <td>2714477136</td>\n",
1186        "      <td>VertexBarrelHits</td>\n",
1187        "      <td>3497031840</td>\n",
1188        "      <td>0</td>\n",
1189        "      <td>31</td>\n",
1190        "      <td>0</td>\n",
1191        "      <td>92</td>\n",
1192        "      <td>6</td>\n",
1193        "      <td>&lt;NA&gt;</td>\n",
1194        "      <td>40</td>\n",
1195        "      <td>&lt;NA&gt;</td>\n",
1196        "      <td>&lt;NA&gt;</td>\n",
1197        "      <td>&lt;NA&gt;</td>\n",
1198        "      <td>&lt;NA&gt;</td>\n",
1199        "      <td>&lt;NA&gt;</td>\n",
1200        "      <td>329</td>\n",
1201        "      <td>&lt;NA&gt;</td>\n",
1202        "      <td>&lt;NA&gt;</td>\n",
1203        "      <td>&lt;NA&gt;</td>\n",
1204        "      <td>&lt;NA&gt;</td>\n",
1205        "    </tr>\n",
1206        "    <tr>\n",
1207        "      <th>4193</th>\n",
1208        "      <td>8446061878263839</td>\n",
1209        "      <td>0.000005</td>\n",
1210        "      <td>0.189439</td>\n",
1211        "      <td>0.020897</td>\n",
1212        "      <td>0</td>\n",
1213        "      <td>27.379898</td>\n",
1214        "      <td>26.412327</td>\n",
1215        "      <td>42.123640</td>\n",
1216        "      <td>2.403217</td>\n",
1217        "      <td>2.333227</td>\n",
1218        "      <td>3.711742</td>\n",
1219        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1220        "      <td>1</td>\n",
1221        "      <td>0</td>\n",
1222        "      <td>2714477136</td>\n",
1223        "      <td>VertexBarrelHits</td>\n",
1224        "      <td>3497031840</td>\n",
1225        "      <td>0</td>\n",
1226        "      <td>31</td>\n",
1227        "      <td>0</td>\n",
1228        "      <td>20</td>\n",
1229        "      <td>6</td>\n",
1230        "      <td>&lt;NA&gt;</td>\n",
1231        "      <td>30</td>\n",
1232        "      <td>&lt;NA&gt;</td>\n",
1233        "      <td>&lt;NA&gt;</td>\n",
1234        "      <td>&lt;NA&gt;</td>\n",
1235        "      <td>&lt;NA&gt;</td>\n",
1236        "      <td>&lt;NA&gt;</td>\n",
1237        "      <td>422</td>\n",
1238        "      <td>&lt;NA&gt;</td>\n",
1239        "      <td>&lt;NA&gt;</td>\n",
1240        "      <td>&lt;NA&gt;</td>\n",
1241        "      <td>&lt;NA&gt;</td>\n",
1242        "    </tr>\n",
1243        "    <tr>\n",
1244        "      <th>4195</th>\n",
1245        "      <td>23929277347381279</td>\n",
1246        "      <td>0.000012</td>\n",
1247        "      <td>0.192169</td>\n",
1248        "      <td>0.021189</td>\n",
1249        "      <td>0</td>\n",
1250        "      <td>-19.804725</td>\n",
1251        "      <td>-32.481421</td>\n",
1252        "      <td>43.219446</td>\n",
1253        "      <td>-1.712605</td>\n",
1254        "      <td>-2.824789</td>\n",
1255        "      <td>3.752893</td>\n",
1256        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1257        "      <td>2</td>\n",
1258        "      <td>0</td>\n",
1259        "      <td>2714477136</td>\n",
1260        "      <td>VertexBarrelHits</td>\n",
1261        "      <td>3497031840</td>\n",
1262        "      <td>0</td>\n",
1263        "      <td>31</td>\n",
1264        "      <td>0</td>\n",
1265        "      <td>92</td>\n",
1266        "      <td>12</td>\n",
1267        "      <td>&lt;NA&gt;</td>\n",
1268        "      <td>85</td>\n",
1269        "      <td>&lt;NA&gt;</td>\n",
1270        "      <td>&lt;NA&gt;</td>\n",
1271        "      <td>&lt;NA&gt;</td>\n",
1272        "      <td>&lt;NA&gt;</td>\n",
1273        "      <td>&lt;NA&gt;</td>\n",
1274        "      <td>909</td>\n",
1275        "      <td>&lt;NA&gt;</td>\n",
1276        "      <td>&lt;NA&gt;</td>\n",
1277        "      <td>&lt;NA&gt;</td>\n",
1278        "      <td>&lt;NA&gt;</td>\n",
1279        "    </tr>\n",
1280        "    <tr>\n",
1281        "      <th>4197</th>\n",
1282        "      <td>11260541062922271</td>\n",
1283        "      <td>0.000003</td>\n",
1284        "      <td>0.189958</td>\n",
1285        "      <td>0.020944</td>\n",
1286        "      <td>0</td>\n",
1287        "      <td>35.983371</td>\n",
1288        "      <td>-12.347747</td>\n",
1289        "      <td>42.333020</td>\n",
1290        "      <td>3.164182</td>\n",
1291        "      <td>-1.074937</td>\n",
1292        "      <td>3.718671</td>\n",
1293        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1294        "      <td>3</td>\n",
1295        "      <td>0</td>\n",
1296        "      <td>2714477136</td>\n",
1297        "      <td>VertexBarrelHits</td>\n",
1298        "      <td>3497031840</td>\n",
1299        "      <td>0</td>\n",
1300        "      <td>31</td>\n",
1301        "      <td>0</td>\n",
1302        "      <td>140</td>\n",
1303        "      <td>6</td>\n",
1304        "      <td>&lt;NA&gt;</td>\n",
1305        "      <td>40</td>\n",
1306        "      <td>&lt;NA&gt;</td>\n",
1307        "      <td>&lt;NA&gt;</td>\n",
1308        "      <td>&lt;NA&gt;</td>\n",
1309        "      <td>&lt;NA&gt;</td>\n",
1310        "      <td>&lt;NA&gt;</td>\n",
1311        "      <td>359</td>\n",
1312        "      <td>&lt;NA&gt;</td>\n",
1313        "      <td>&lt;NA&gt;</td>\n",
1314        "      <td>&lt;NA&gt;</td>\n",
1315        "      <td>&lt;NA&gt;</td>\n",
1316        "    </tr>\n",
1317        "    <tr>\n",
1318        "      <th>4199</th>\n",
1319        "      <td>24770974855741471</td>\n",
1320        "      <td>0.000010</td>\n",
1321        "      <td>0.183491</td>\n",
1322        "      <td>0.020235</td>\n",
1323        "      <td>0</td>\n",
1324        "      <td>-35.399777</td>\n",
1325        "      <td>13.932897</td>\n",
1326        "      <td>39.689497</td>\n",
1327        "      <td>-3.222215</td>\n",
1328        "      <td>1.257249</td>\n",
1329        "      <td>3.609343</td>\n",
1330        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1331        "      <td>4</td>\n",
1332        "      <td>0</td>\n",
1333        "      <td>2714477136</td>\n",
1334        "      <td>VertexBarrelHits</td>\n",
1335        "      <td>3497031840</td>\n",
1336        "      <td>0</td>\n",
1337        "      <td>31</td>\n",
1338        "      <td>0</td>\n",
1339        "      <td>68</td>\n",
1340        "      <td>5</td>\n",
1341        "      <td>&lt;NA&gt;</td>\n",
1342        "      <td>88</td>\n",
1343        "      <td>&lt;NA&gt;</td>\n",
1344        "      <td>&lt;NA&gt;</td>\n",
1345        "      <td>&lt;NA&gt;</td>\n",
1346        "      <td>&lt;NA&gt;</td>\n",
1347        "      <td>&lt;NA&gt;</td>\n",
1348        "      <td>274</td>\n",
1349        "      <td>&lt;NA&gt;</td>\n",
1350        "      <td>&lt;NA&gt;</td>\n",
1351        "      <td>&lt;NA&gt;</td>\n",
1352        "      <td>&lt;NA&gt;</td>\n",
1353        "    </tr>\n",
1354        "  </tbody>\n",
1355        "</table>\n",
1356        "</div>"
1357       ],
1358       "text/plain": [
1359        "                cell_id  energy_deposit_GeV   time_ns  path_length_mm  \\\n",
1360        "4191  11260412213706783            0.000008  0.189949        0.020946   \n",
1361        "4193   8446061878263839            0.000005  0.189439        0.020897   \n",
1362        "4195  23929277347381279            0.000012  0.192169        0.021189   \n",
1363        "4197  11260541062922271            0.000003  0.189958        0.020944   \n",
1364        "4199  24770974855741471            0.000010  0.183491        0.020235   \n",
1365        "\n",
1366        "      quality       x_mm       y_mm       z_mm    px_GeV    py_GeV    pz_GeV  \\\n",
1367        "4191        0 -28.640769 -25.039493  42.329336 -2.509395 -2.206943  3.718705   \n",
1368        "4193        0  27.379898  26.412327  42.123640  2.403217  2.333227  3.711742   \n",
1369        "4195        0 -19.804725 -32.481421  43.219446 -1.712605 -2.824789  3.752893   \n",
1370        "4197        0  35.983371 -12.347747  42.333020  3.164182 -1.074937  3.718671   \n",
1371        "4199        0 -35.399777  13.932897  39.689497 -3.222215  1.257249  3.609343   \n",
1372        "\n",
1373        "                                   file_id  event_entry  mc_index  \\\n",
1374        "4191  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
1375        "4193  1160063f-ec9f-4268-a2c5-04f17ab61ee8            1         0   \n",
1376        "4195  1160063f-ec9f-4268-a2c5-04f17ab61ee8            2         0   \n",
1377        "4197  1160063f-ec9f-4268-a2c5-04f17ab61ee8            3         0   \n",
1378        "4199  1160063f-ec9f-4268-a2c5-04f17ab61ee8            4         0   \n",
1379        "\n",
1380        "      mc_collection_id    hit_collection  hit_collection_id  hit_index  \\\n",
1381        "4191        2714477136  VertexBarrelHits         3497031840          0   \n",
1382        "4193        2714477136  VertexBarrelHits         3497031840          0   \n",
1383        "4195        2714477136  VertexBarrelHits         3497031840          0   \n",
1384        "4197        2714477136  VertexBarrelHits         3497031840          0   \n",
1385        "4199        2714477136  VertexBarrelHits         3497031840          0   \n",
1386        "\n",
1387        "      system  layer  cell_module  cell_sensor  cell_x  cell_z  cell_slice  \\\n",
1388        "4191      31      0           92            6    <NA>      40        <NA>   \n",
1389        "4193      31      0           20            6    <NA>      30        <NA>   \n",
1390        "4195      31      0           92           12    <NA>      85        <NA>   \n",
1391        "4197      31      0          140            6    <NA>      40        <NA>   \n",
1392        "4199      31      0           68            5    <NA>      88        <NA>   \n",
1393        "\n",
1394        "      cell_y  cell_assembly  cell_sector  cell_strip  cell_phi  \\\n",
1395        "4191    <NA>           <NA>         <NA>        <NA>       329   \n",
1396        "4193    <NA>           <NA>         <NA>        <NA>       422   \n",
1397        "4195    <NA>           <NA>         <NA>        <NA>       909   \n",
1398        "4197    <NA>           <NA>         <NA>        <NA>       359   \n",
1399        "4199    <NA>           <NA>         <NA>        <NA>       274   \n",
1400        "\n",
1401        "      cell_segmentation_id  cell_idx  cell_idy  cell_ids  \n",
1402        "4191                  <NA>      <NA>      <NA>      <NA>  \n",
1403        "4193                  <NA>      <NA>      <NA>      <NA>  \n",
1404        "4195                  <NA>      <NA>      <NA>      <NA>  \n",
1405        "4197                  <NA>      <NA>      <NA>      <NA>  \n",
1406        "4199                  <NA>      <NA>      <NA>      <NA>  "
1407       ]
1408      },
1409      "metadata": {},
1410      "output_type": "display_data"
1411     },
1412     {
1413      "data": {
1414       "text/html": [
1415        "<div>\n",
1416        "<style scoped>\n",
1417        "    .dataframe tbody tr th:only-of-type {\n",
1418        "        vertical-align: middle;\n",
1419        "    }\n",
1420        "\n",
1421        "    .dataframe tbody tr th {\n",
1422        "        vertical-align: top;\n",
1423        "    }\n",
1424        "\n",
1425        "    .dataframe thead th {\n",
1426        "        text-align: right;\n",
1427        "    }\n",
1428        "</style>\n",
1429        "<table border=\"1\" class=\"dataframe\">\n",
1430        "  <thead>\n",
1431        "    <tr style=\"text-align: right;\">\n",
1432        "      <th></th>\n",
1433        "      <th>file_id</th>\n",
1434        "      <th>event_entry</th>\n",
1435        "      <th>mc_index</th>\n",
1436        "      <th>layer</th>\n",
1437        "      <th>eta</th>\n",
1438        "      <th>p_GeV</th>\n",
1439        "      <th>x_mm</th>\n",
1440        "      <th>y_mm</th>\n",
1441        "      <th>z_mm</th>\n",
1442        "    </tr>\n",
1443        "  </thead>\n",
1444        "  <tbody>\n",
1445        "    <tr>\n",
1446        "      <th>0</th>\n",
1447        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1448        "      <td>0</td>\n",
1449        "      <td>0</td>\n",
1450        "      <td>0</td>\n",
1451        "      <td>0.958850</td>\n",
1452        "      <td>5.0</td>\n",
1453        "      <td>-28.640769</td>\n",
1454        "      <td>-25.039493</td>\n",
1455        "      <td>42.329336</td>\n",
1456        "    </tr>\n",
1457        "    <tr>\n",
1458        "      <th>1</th>\n",
1459        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1460        "      <td>1</td>\n",
1461        "      <td>0</td>\n",
1462        "      <td>0</td>\n",
1463        "      <td>0.955128</td>\n",
1464        "      <td>5.0</td>\n",
1465        "      <td>27.379898</td>\n",
1466        "      <td>26.412327</td>\n",
1467        "      <td>42.123640</td>\n",
1468        "    </tr>\n",
1469        "    <tr>\n",
1470        "      <th>2</th>\n",
1471        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1472        "      <td>2</td>\n",
1473        "      <td>0</td>\n",
1474        "      <td>0</td>\n",
1475        "      <td>0.974390</td>\n",
1476        "      <td>5.0</td>\n",
1477        "      <td>-19.804725</td>\n",
1478        "      <td>-32.481421</td>\n",
1479        "      <td>43.219446</td>\n",
1480        "    </tr>\n",
1481        "    <tr>\n",
1482        "      <th>3</th>\n",
1483        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1484        "      <td>3</td>\n",
1485        "      <td>0</td>\n",
1486        "      <td>0</td>\n",
1487        "      <td>0.958934</td>\n",
1488        "      <td>5.0</td>\n",
1489        "      <td>35.983371</td>\n",
1490        "      <td>-12.347747</td>\n",
1491        "      <td>42.333020</td>\n",
1492        "    </tr>\n",
1493        "    <tr>\n",
1494        "      <th>4</th>\n",
1495        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1496        "      <td>4</td>\n",
1497        "      <td>0</td>\n",
1498        "      <td>0</td>\n",
1499        "      <td>0.911613</td>\n",
1500        "      <td>5.0</td>\n",
1501        "      <td>-35.399777</td>\n",
1502        "      <td>13.932897</td>\n",
1503        "      <td>39.689497</td>\n",
1504        "    </tr>\n",
1505        "  </tbody>\n",
1506        "</table>\n",
1507        "</div>"
1508       ],
1509       "text/plain": [
1510        "                                file_id  event_entry  mc_index  layer  \\\n",
1511        "0  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0      0   \n",
1512        "1  1160063f-ec9f-4268-a2c5-04f17ab61ee8            1         0      0   \n",
1513        "2  1160063f-ec9f-4268-a2c5-04f17ab61ee8            2         0      0   \n",
1514        "3  1160063f-ec9f-4268-a2c5-04f17ab61ee8            3         0      0   \n",
1515        "4  1160063f-ec9f-4268-a2c5-04f17ab61ee8            4         0      0   \n",
1516        "\n",
1517        "        eta  p_GeV       x_mm       y_mm       z_mm  \n",
1518        "0  0.958850    5.0 -28.640769 -25.039493  42.329336  \n",
1519        "1  0.955128    5.0  27.379898  26.412327  42.123640  \n",
1520        "2  0.974390    5.0 -19.804725 -32.481421  43.219446  \n",
1521        "3  0.958934    5.0  35.983371 -12.347747  42.333020  \n",
1522        "4  0.911613    5.0 -35.399777  13.932897  39.689497  "
1523       ]
1524      },
1525      "metadata": {},
1526      "output_type": "display_data"
1527     }
1528    ],
1529    "source": [
1530     "ib_hits = hits.loc[(hits.hit_collection == IB_COLLECTION) & (hits.system == IB_SYSTEM)]\n",
1531     "l0_hits = ib_hits.loc[ib_hits.layer == 0]\n",
1532     "print(f'L0: {len(l0_hits):,} hits from {len(l0_hits[KEY].drop_duplicates()):,} MC particles')\n",
1533     "with pd.option_context('display.max_columns', None):\n",
1534     "    display(l0_hits.head())\n",
1535     "\n",
1536     "# Add truth kinematics for downstream plots/cuts only when needed.\n",
1537     "l0_with_mc = l0_hits.merge(particles[KEY + ['p_GeV', 'eta', 'pdg']],\n",
1538     "                          on=KEY, validate='many_to_one')\n",
1539     "display(l0_with_mc[KEY + ['layer', 'eta', 'p_GeV', 'x_mm', 'y_mm', 'z_mm']].head())\n"
1540    ]
1541   },
1542   {
1543    "cell_type": "code",
1544    "execution_count": 8,
1545    "id": "a5d7f0b7",
1546    "metadata": {
1547     "execution": {
1548      "iopub.execute_input": "2026-10-19T21:58:08.985617Z",
1549      "iopub.status.busy": "2026-10-19T21:58:08.985443Z",
1550      "iopub.status.idle": "2026-10-19T21:58:09.136383Z",
1551      "shell.execute_reply": "2026-10-19T21:58:09.135591Z"
1552     }
1553    },
1554    "outputs": [
1555     {
1556      "data": {
1557       "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbUAAAHECAYAAAC+1LS5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAQ6wAAEOsBUJTofAAAcTdJREFUeJzt3Qd8VFX2B/Df9EnvPSEJgdAhdBCliYoKWMDewL7quuKuuq7uH9taEdfVtSv2sqIoFopKR3qHQEIggfTek+nv/zk3TEwyk5CEZOr5+hlD3kwyL29m3nn33nPPlUmSJIExxhjzAHJn7wBjjDHWUzioMcYY8xgc1BhjjHkMDmqMMcY8Bgc1xhhjHoODGmOMMY/BQY0xxpjH4KDGGGPMY3BQY4wx5jE4qDHGGPMYHNS82IcffgiZTIb169fDE0ydOhVJSUkOf9758+eL4+gN7B3js/37c3JyxM8/8cQTcAR6v9Pz0fvf1dCxpWPs7n+HM3FQcwMlJSX4+9//jmHDhiEwMBABAQHo27cvrrjiCrz//vtwB//+97/5w8fc9sLv008/7dTjv/32W0yYMAF+fn4ICQnB7NmzceDAAThKVVWVuDjwlAvV7uCg5uJOnTqF4cOHY/HixRgyZAieeeYZvPTSS5g3b564wqVg4Q48Oai9++67aGxshLfy9r/fii4w586di/r6erzwwgt4/PHHcejQIUyaNAn79+/v8eebPHmyOO433XRTq6D25JNPenVQUzp7B1jHKJgVFxeLoPCXv/zF5v68vDw+hE5Ai1vQCcXX1xcqlUrcXJHJZILZbIZGo+m153Dlv99RKisr8eCDDyI+Ph5btmwRPSrkmmuuweDBg/HnP/8ZGzdu7NHnlMvl0Gq1Pfo7PQG31FxcZmam+Hr++efbvZ8+RG0dP35cjHPExsZCrVaLx9xzzz0oKyvr1HMaDAa8+OKLooXo4+MjPqAzZsxo90O5YsUKcT91t9CHjLpGb7/9dvF81vGSkydPYsOGDeLf1hvd1519zsrKEl2vQUFBoiv2wgsv7PKVMD0/Pd+6devElTR1F4WHh2PBggUoLS212wX166+/4rnnnkNqaqoIEnSM2htTsm6rqKgQxyIyMhL+/v5iX48dO9Z83MaOHSsCY1xcHJ5//nmb/VyzZg2uu+46pKSkNL8WU6ZMwU8//WTzWOtzlpeX484770RMTIzYz61bt2Lo0KHiOSjAtbV9+3bxc9TF3R0d/f01NTXihE77Qu+N0aNHi7+pM37//XfxmtC+5+bmNl9MUMtw3Lhx4jWj2znnnIPvvvvO7u/4z3/+gwEDBojjkJycjKeffloE+p72/fffi7+VXmtrQCP0Pr766quxadOmVu/3znzuL7vsMvEep/fNpZdeKj4jHY2p0dfk5GTxb2qtWT9nLcdAV61ahenTp4v3I70etH+XXHKJONaegltqLo5OZmTp0qWiS0Op7Pgl27dvnxhophPlrbfeisTERHESffPNN/Hbb79hx44d4oPSHvrA05ucAhCdTO+++240NDSIMQX6MNDJY9asWc2PX7RoEZ566imxn3TySkhIEAHshx9+EK3I/v3745NPPsHChQvFCeqxxx5r/tmIiIgu7zOd3OgkRt0stG+DBg0SJ236+bCwsC4d271792LZsmUikN14443i5E4nBnq+nTt3iv1p6aGHHhKts1tuuUXsO/2tZzJz5kxERUWJ41RQUIAlS5aIwEYn17/+9a/ib6Dn//LLL/Hoo4+Kv52OuxXtD7XUaf/oBEQB96OPPhKvwddffy26oduiCww61hSkLBYLoqOjcdddd+H+++8XwXDOnDmtHv/ee++Jkx+dkHvaRRddhODgYPG30fuIehxonIle3z59+rT7c9988434m2l8avny5eJ3EDpWH3/8sTjh33DDDc3jWHSRQ+8XOp5W9PfTZ2bMmDHiYoReuw8++EAEoJ5G7x1C7822aBt1TdL7qjOJTPn5+aJrkV4n2n86Vq+99pr4/uDBg6KFZg/9zCuvvCI+a3Q8rrzySrGdgiKhi1J631DLkd7L9HkpKioSLUv6DNrbd7dEi4Qy15WdnS0FBwfTQq5SVFSUdPXVV0svv/yytG3bNslisdg8Pi0tTUpOTpbKy8tbbafHy+Vy6YknnmjetnTpUvF7161b17zt3//+t9j27bfftvp5g8EgjRw5Uvxuqx07dojHTpgwQaqrq7PZF7PZ3PzvxMREacqUKXb/xq7s80033SSec/ny5a0e+9xzz4nt9DydQY+l29dff91q+4svvii2P/300zbHqX///nb/zltuuUXcb2/bXXfd1Wr7K6+8Irb7+/uL19ZKp9OJ13fixImtHm/v+err66XU1FRpyJAhdp/zhhtusPmZqqoqydfXV5o9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",
1558       "text/plain": [
1559        "<Figure size 495x440 with 1 Axes>"
1560       ]
1561      },
1562      "metadata": {},
1563      "output_type": "display_data"
1564     }
1565    ],
1566    "source": [
1567     "fig, ax = plt.subplots(figsize=(4.5, 4), layout='constrained')\n",
1568     "ax.scatter(l0_hits.x_mm/10, l0_hits.y_mm/10, s=8, alpha=.35)\n",
1569     "ax.set(xlabel='x [cm]', ylabel='y [cm]', title='Selected primary-linked L0 hits')\n",
1570     "ax.set_aspect('equal')\n",
1571     "plt.show()\n"
1572    ]
1573   },
1574   {
1575    "cell_type": "markdown",
1576    "id": "1f8d6a1d",
1577    "metadata": {},
1578    "source": [
1579     "## 5. Count L0/L1/L2 hits for every selected MC particle\n",
1580     "\n",
1581     "Group hit rows by particle and layer, then reindex against **all selected MC\n",
1582     "particles**. This supplies zero counts for missing layers and zero-hit particles.\n",
1583     "The hit fraction below measures simulated hit presence, not track-reconstruction\n",
1584     "efficiency. Distinct-particle counts and raw hit counts can differ.\n"
1585    ]
1586   },
1587   {
1588    "cell_type": "code",
1589    "execution_count": 9,
1590    "id": "dca9aa8b",
1591    "metadata": {
1592     "execution": {
1593      "iopub.execute_input": "2026-10-19T21:58:09.138017Z",
1594      "iopub.status.busy": "2026-10-19T21:58:09.137825Z",
1595      "iopub.status.idle": "2026-10-19T21:58:09.276743Z",
1596      "shell.execute_reply": "2026-10-19T21:58:09.276047Z"
1597     }
1598    },
1599    "outputs": [
1600     {
1601      "data": {
1602       "text/html": [
1603        "<div>\n",
1604        "<style scoped>\n",
1605        "    .dataframe tbody tr th:only-of-type {\n",
1606        "        vertical-align: middle;\n",
1607        "    }\n",
1608        "\n",
1609        "    .dataframe tbody tr th {\n",
1610        "        vertical-align: top;\n",
1611        "    }\n",
1612        "\n",
1613        "    .dataframe thead th {\n",
1614        "        text-align: right;\n",
1615        "    }\n",
1616        "</style>\n",
1617        "<table border=\"1\" class=\"dataframe\">\n",
1618        "  <thead>\n",
1619        "    <tr style=\"text-align: right;\">\n",
1620        "      <th></th>\n",
1621        "      <th></th>\n",
1622        "      <th></th>\n",
1623        "      <th>L0</th>\n",
1624        "      <th>L1</th>\n",
1625        "      <th>L2</th>\n",
1626        "    </tr>\n",
1627        "    <tr>\n",
1628        "      <th>file_id</th>\n",
1629        "      <th>event_entry</th>\n",
1630        "      <th>mc_index</th>\n",
1631        "      <th></th>\n",
1632        "      <th></th>\n",
1633        "      <th></th>\n",
1634        "    </tr>\n",
1635        "  </thead>\n",
1636        "  <tbody>\n",
1637        "    <tr>\n",
1638        "      <th rowspan=\"10\" valign=\"top\">1160063f-ec9f-4268-a2c5-04f17ab61ee8</th>\n",
1639        "      <th>0</th>\n",
1640        "      <th>0</th>\n",
1641        "      <td>1</td>\n",
1642        "      <td>1</td>\n",
1643        "      <td>0</td>\n",
1644        "    </tr>\n",
1645        "    <tr>\n",
1646        "      <th>1</th>\n",
1647        "      <th>0</th>\n",
1648        "      <td>1</td>\n",
1649        "      <td>1</td>\n",
1650        "      <td>0</td>\n",
1651        "    </tr>\n",
1652        "    <tr>\n",
1653        "      <th>2</th>\n",
1654        "      <th>0</th>\n",
1655        "      <td>1</td>\n",
1656        "      <td>1</td>\n",
1657        "      <td>0</td>\n",
1658        "    </tr>\n",
1659        "    <tr>\n",
1660        "      <th>3</th>\n",
1661        "      <th>0</th>\n",
1662        "      <td>1</td>\n",
1663        "      <td>1</td>\n",
1664        "      <td>0</td>\n",
1665        "    </tr>\n",
1666        "    <tr>\n",
1667        "      <th>4</th>\n",
1668        "      <th>0</th>\n",
1669        "      <td>1</td>\n",
1670        "      <td>1</td>\n",
1671        "      <td>0</td>\n",
1672        "    </tr>\n",
1673        "    <tr>\n",
1674        "      <th>5</th>\n",
1675        "      <th>0</th>\n",
1676        "      <td>1</td>\n",
1677        "      <td>1</td>\n",
1678        "      <td>0</td>\n",
1679        "    </tr>\n",
1680        "    <tr>\n",
1681        "      <th>6</th>\n",
1682        "      <th>0</th>\n",
1683        "      <td>1</td>\n",
1684        "      <td>1</td>\n",
1685        "      <td>0</td>\n",
1686        "    </tr>\n",
1687        "    <tr>\n",
1688        "      <th>7</th>\n",
1689        "      <th>0</th>\n",
1690        "      <td>1</td>\n",
1691        "      <td>1</td>\n",
1692        "      <td>0</td>\n",
1693        "    </tr>\n",
1694        "    <tr>\n",
1695        "      <th>8</th>\n",
1696        "      <th>0</th>\n",
1697        "      <td>1</td>\n",
1698        "      <td>0</td>\n",
1699        "      <td>0</td>\n",
1700        "    </tr>\n",
1701        "    <tr>\n",
1702        "      <th>9</th>\n",
1703        "      <th>0</th>\n",
1704        "      <td>1</td>\n",
1705        "      <td>1</td>\n",
1706        "      <td>0</td>\n",
1707        "    </tr>\n",
1708        "  </tbody>\n",
1709        "</table>\n",
1710        "</div>"
1711       ],
1712       "text/plain": [
1713        "                                                           L0  L1  L2\n",
1714        "file_id                              event_entry mc_index            \n",
1715        "1160063f-ec9f-4268-a2c5-04f17ab61ee8 0           0          1   1   0\n",
1716        "                                     1           0          1   1   0\n",
1717        "                                     2           0          1   1   0\n",
1718        "                                     3           0          1   1   0\n",
1719        "                                     4           0          1   1   0\n",
1720        "                                     5           0          1   1   0\n",
1721        "                                     6           0          1   1   0\n",
1722        "                                     7           0          1   1   0\n",
1723        "                                     8           0          1   0   0\n",
1724        "                                     9           0          1   1   0"
1725       ]
1726      },
1727      "metadata": {},
1728      "output_type": "display_data"
1729     },
1730     {
1731      "data": {
1732       "text/html": [
1733        "<div>\n",
1734        "<style scoped>\n",
1735        "    .dataframe tbody tr th:only-of-type {\n",
1736        "        vertical-align: middle;\n",
1737        "    }\n",
1738        "\n",
1739        "    .dataframe tbody tr th {\n",
1740        "        vertical-align: top;\n",
1741        "    }\n",
1742        "\n",
1743        "    .dataframe thead th {\n",
1744        "        text-align: right;\n",
1745        "    }\n",
1746        "</style>\n",
1747        "<table border=\"1\" class=\"dataframe\">\n",
1748        "  <thead>\n",
1749        "    <tr style=\"text-align: right;\">\n",
1750        "      <th></th>\n",
1751        "      <th>selected_MC_particles</th>\n",
1752        "      <th>MC_with_hit</th>\n",
1753        "      <th>number_of_hits</th>\n",
1754        "      <th>fraction_with_hit</th>\n",
1755        "    </tr>\n",
1756        "  </thead>\n",
1757        "  <tbody>\n",
1758        "    <tr>\n",
1759        "      <th>L0</th>\n",
1760        "      <td>2000</td>\n",
1761        "      <td>1826</td>\n",
1762        "      <td>1826</td>\n",
1763        "      <td>0.9130</td>\n",
1764        "    </tr>\n",
1765        "    <tr>\n",
1766        "      <th>L1</th>\n",
1767        "      <td>2000</td>\n",
1768        "      <td>1824</td>\n",
1769        "      <td>1824</td>\n",
1770        "      <td>0.9120</td>\n",
1771        "    </tr>\n",
1772        "    <tr>\n",
1773        "      <th>L2</th>\n",
1774        "      <td>2000</td>\n",
1775        "      <td>141</td>\n",
1776        "      <td>141</td>\n",
1777        "      <td>0.0705</td>\n",
1778        "    </tr>\n",
1779        "  </tbody>\n",
1780        "</table>\n",
1781        "</div>"
1782       ],
1783       "text/plain": [
1784        "    selected_MC_particles  MC_with_hit  number_of_hits  fraction_with_hit\n",
1785        "L0                   2000         1826            1826             0.9130\n",
1786        "L1                   2000         1824            1824             0.9120\n",
1787        "L2                   2000          141             141             0.0705"
1788       ]
1789      },
1790      "metadata": {},
1791      "output_type": "display_data"
1792     },
1793     {
1794      "data": {
1795       "image/png": "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2rVWrFix/y9YzpzWoUMHGzBggFWrVi3o406cOGHvvPOOPfLII76yNG7c2A3WpxGHCWQAAMjcImpaGjNmjJso0qMgQjUxzzzzjO3cudP69+8f1v4WLFhgzZo18wUx0q5dOzdGjbYlRRNXKpgJnHW7UKFCbhsAAMjcIqqR2bJli1WvXt39vWfPHlu+fLl9+OGHLselePHi1rdv37D29/PPP1vXrl0TrFMQo7wXbUtKXFyc3XHHHTZx4kSrW7eunX/++fbVV1/ZSy+95KuhScrBgwfd4lEABgAAskAgo9oY5cPIsmXLXEChJh0pWbKkC27CoWYl1aIEKly4sMt1Sc4LL7xgd999t11xxRW+dQpiBg0alOzjxo8fb0OHDg2rnAAAIBMEMhdddJFNmjTJSpcu7fJQlKjrTVWwdetWO+uss8LeZ7Zs2RKtU/NQsPX+1GNJtUFTpkyxqlWr2jfffGODBw92QVBygYqSie+8884ENTK1atUKu9wAACCDBTIjRoyw6667zi688EI788wzbfHixb5tc+fODTsgUNChWplASihOKtHXSzIeO3asvf/++3bDDTe4dZoDSjVGat669957k0w6LlCggFsAAEAWC2SUj6KaF439ojwW/2ahbt26WeXKlcPan4KVwFwYjQOzadOmRLkz/tatW+f+v/jiixOs120lAav3Uji9pwAAQBYZEE81MZdeemmi3JaWLVtalSpVwtqXHrNkyRI3box/zY6CGW1LisadETUn+fv666/d/+XLlw+rHAAAIIsEMj/99JPdeuutrkZG+THffvutW69xXz766KOw9tWjRw8XELVq1coWLlzoxqlRwq7GkfFvWlJtj8aX8Vx22WWuGUvJvi+++KJLPH7qqadcjswtt9zielABAIDMK6JAZtGiRXbJJZe4btgKZo4fP+7bph5MSgQOh4KYpUuXuukJ2rZt6xJx27dv77pR+zt58qRbPDly5LB58+ZZ69atbfTo0a725uWXX3ZBkP4HAACZW7b4CEaOU02IxpF57bXXXC6KBsNTc07NmjVd4q2SbLdv324ZicpbpkwZ27Ztm+uNFU3l+82P6v6QMWwZdW36FmBIwoEikQUM+Tu9SwCk+TU5ohoZ9Rbq2LGj+zuwe7RqV8IdRwYAACASEQUyRYoUsR07dgTdpp5MGhQPAAAgJgMZ5aQooXbDhg2+daqZ+fPPP924LponCQAAICYDmZEjR7oeQRoQr3bt2m6dxnvRyLqawHHIkCHRLicAAEB0BsRTsLJixQp74403XA8mNTVpUZJvp06dXPIvAABATAYy/jNPawEAAMhQA+IBAABkmBoZTUlwupmoPbrf338zngEAAIiRQOahhx4KOZABAACIqUCGnkgAACDWkCMDAACyViCjWahvvvnmoNs02WP37t1TWi4AAIDUCWQ++eSTJEfv1ezVCxcujGS3AAAAqR/I/PXXX25k32CKFi1qu3btimS3AAAAqR/IlCpVylavXh10m9YzaSQAAIjZQEZ5MMOHD7dZs2YlWP/OO+/YiBEj7LbbbotW+QAAAKIbyAwaNMgaNWpkt956qxsor0qVKu5/3W7YsKGbGRsAACAm51rSpJAffvihmzBy6dKltnfvXpcb06xZM2vatGn0SwkAABDNSSOlefPmbgEAAIjpQGbfvn1WqFAhy549u/v7dIoUKZLSsgEAAEQnkFF365UrV1qtWrWsWLFip5136eTJk6HuGgAAIHUDmVdeecUqVark+5sJJAEAQIYJZDp37uz7u0uXLqlVHgAAgNTtft2kSRNbv3590G0bN2502wEAAGIykPn000/t4MGDQbdp/eeff57ScgEAAKROICNJ5cisWLHCSpQoEeluAQAAop8jM3LkSLd4QUzjxo1dV2x/R48etRMnTljPnj1DLwEAAEBqBzJXXnmlPfTQQxYfH2/Dhg1z8y2VLl060Yi/1apVs+uvvz7S8gAAAEQ/kNEcSloUyOzZs8ceffRRK1OmTOjPBAAAkN45Mmo6mjx5sv3www/RLgsAAEDqBjJxcXFWqlQpRu4FAAAZs9fSfffdZ08//bRL7gUAAMhQs1///vvvtmHDBitbtqw1atTIdbf2746tv5999tlolhMAACA6gcyHH35ouXPndn+vWbMm0XYCGQAAELOBzObNm6NfEgAAgLQa2RcAACBD1sh4fv31VzdJ5JEjRxJta9u2bUp2DQAAkDqBjCaGVKCybNkyd1uD5Il/wu/Jkycj2TUAAEDqNi1pVN+dO3fa8uXLXRAzd+5cNyN2t27drEKFCrZq1apIdgsAAJD6gczHH39sAwYMsNq1a7vb55xzjjVo0MCmTJlirVu3tnHjxkWyWwAAgNQPZHbv3u3mWcqRI4fly5fP9u7d69t2zTXXuEAHAAAgJgMZBTGaOFLOPfdc++CDD3zbVqxYYXny5Al7n0oabtGihQuMNMDeAw88YIcPHw7psfv27bOePXtayZIl3XNXqVLFzQcFAAAyt4iSfZs3b26LFy+2Nm3aWO/eva1z5862evVqy5Urlxsg76GHHgprfwcOHLAmTZpYuXLlbM6cOa7Gp0+fPq6m54033kj2sf/++6+blfuMM85wowkrCPrll1/s+PHjkbw0AACQ2QOZ0aNH23///ef+7tixo+XPn99mz57talCee+4569GjR1j7U+3J/v37be3atVasWLH/L1jOnNahQweXi1OtWrUkHztixAj3vAqgFMyIpk0AAACZX0SBTN68ed3iUc2MlkgtWLDAmjVr5gtipF27dta1a1e3LblA5pVXXnHNUF4QAwAAso4UDYinvBbVhKgrtnouXX755S4/JVw///yzC1r8aS6nSpUquW3JTZWwa9cuK1y4sF133XW2aNEiVzt066232tixY5MNbjQWjhaPXgMAAMgCgYzyUrp3726zZs2yU6dOWVxcnMtJyZ49u91000320ksvuYAiVGpWKlSoUKL1ClCUyJuUP//80/3/8MMPu+dV7c26devsscces2PHjrlyJGX8+PE2dOjQkMsIAAAySa+lXr16uRmwNW6MAo2jR4+6/5XrMn/+fLc9XP6jAns02F6w9R4FUaKmJzUxNW3a1D33sGHD3G0v0AlGycTbtm3zLcFm8QYAAJmwRkY9i5Tw698cpBoVjeyroEY1ItOmTQt5f6p5Ua1MsN5MyeXHFClSxP2vHk/+dFtBjpqlzj777KCPLVCggFsAAEAWq5HRWC2aiiCYihUruqamcChYCcyFUUC0adOmZAMZ5dCoy3cgb+4nNXUBAIDMK6Ir/R133GEvvPCCL2Dw6PakSZPc9nC0bNnSlixZkmCEYM3fpGBG25KiIEZj2uix/nRb3berV68eVjkAAEAWaFpSk863337rRvW9/vrr3SB0GsRu3rx5LvioV6+eS6YV5bho0LzkaNyZiRMnWqtWrWzgwIG+AfE0jox/jYyarqZPn24nTpzwrRs0aJB7vk6dOtntt9/ukn0HDx5s9913nxUvXjySlwcAADJzIKMcGI9G0w3Ur18/39+hBDLKr1m6dKlL1G3btq0bo6Z9+/YuD8ffyZMn3eKvVq1aLsFYZVJQVbRoUbefJ554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",
1796       "text/plain": [
1797        "<Figure size 550x330 with 1 Axes>"
1798       ]
1799      },
1800      "metadata": {},
1801      "output_type": "display_data"
1802     }
1803    ],
1804    "source": [
1805     "counts = ib_hits.groupby(KEY + ['layer'], observed=True).size().unstack('layer', fill_value=0)\n",
1806     "counts = counts.reindex(index=pd.MultiIndex.from_frame(particles[KEY]),\n",
1807     "                        columns=LAYER_IDS, fill_value=0)\n",
1808     "counts.columns = [f'L{layer}' for layer in LAYER_IDS]\n",
1809     "display(counts.head(10))\n",
1810     "\n",
1811     "layer_summary = pd.DataFrame({\n",
1812     "    'selected_MC_particles': len(particles),\n",
1813     "    'MC_with_hit': (counts > 0).sum(),\n",
1814     "    'number_of_hits': counts.sum(),\n",
1815     "})\n",
1816     "layer_summary['fraction_with_hit'] = layer_summary.MC_with_hit/len(particles)\n",
1817     "display(layer_summary)\n",
1818     "fig, ax = plt.subplots(figsize=(5, 3), layout='constrained')\n",
1819     "ax.bar(layer_summary.index, layer_summary.fraction_with_hit, color=['C0', 'C1', 'C2'])\n",
1820     "ax.set(ylabel='Fraction of selected MC particles with a hit', ylim=(0, 1),\n",
1821     "       title='Simulated hit presence on IB layers')\n",
1822     "plt.show()\n"
1823    ]
1824   },
1825   {
1826    "cell_type": "markdown",
1827    "id": "a492bf38",
1828    "metadata": {},
1829    "source": [
1830     "## 6. Follow one MC particle through all its tracking hits\n",
1831     "\n",
1832     "Choose `MC_ROW` in the input cell, then use its full key. The plots show only\n",
1833     "stored hit positions; the markers do not define a propagated trajectory.\n",
1834     "An absent marker does not establish whether the particle crossed active material.\n"
1835    ]
1836   },
1837   {
1838    "cell_type": "code",
1839    "execution_count": 10,
1840    "id": "2304442f",
1841    "metadata": {
1842     "execution": {
1843      "iopub.execute_input": "2026-10-19T21:58:09.278504Z",
1844      "iopub.status.busy": "2026-10-19T21:58:09.278324Z",
1845      "iopub.status.idle": "2026-10-19T21:58:09.638970Z",
1846      "shell.execute_reply": "2026-10-19T21:58:09.638178Z"
1847     }
1848    },
1849    "outputs": [
1850     {
1851      "data": {
1852       "text/html": [
1853        "<div>\n",
1854        "<style scoped>\n",
1855        "    .dataframe tbody tr th:only-of-type {\n",
1856        "        vertical-align: middle;\n",
1857        "    }\n",
1858        "\n",
1859        "    .dataframe tbody tr th {\n",
1860        "        vertical-align: top;\n",
1861        "    }\n",
1862        "\n",
1863        "    .dataframe thead th {\n",
1864        "        text-align: right;\n",
1865        "    }\n",
1866        "</style>\n",
1867        "<table border=\"1\" class=\"dataframe\">\n",
1868        "  <thead>\n",
1869        "    <tr style=\"text-align: right;\">\n",
1870        "      <th></th>\n",
1871        "      <th>file_id</th>\n",
1872        "      <th>event_entry</th>\n",
1873        "      <th>mc_index</th>\n",
1874        "      <th>pdg</th>\n",
1875        "      <th>p_GeV</th>\n",
1876        "      <th>eta</th>\n",
1877        "      <th>n_hits</th>\n",
1878        "    </tr>\n",
1879        "  </thead>\n",
1880        "  <tbody>\n",
1881        "    <tr>\n",
1882        "      <th>0</th>\n",
1883        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1884        "      <td>0</td>\n",
1885        "      <td>0</td>\n",
1886        "      <td>211</td>\n",
1887        "      <td>5.0</td>\n",
1888        "      <td>0.95885</td>\n",
1889        "      <td>5</td>\n",
1890        "    </tr>\n",
1891        "  </tbody>\n",
1892        "</table>\n",
1893        "</div>"
1894       ],
1895       "text/plain": [
1896        "                                file_id  event_entry  mc_index  pdg  p_GeV  \\\n",
1897        "0  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0  211    5.0   \n",
1898        "\n",
1899        "       eta  n_hits  \n",
1900        "0  0.95885       5  "
1901       ]
1902      },
1903      "metadata": {},
1904      "output_type": "display_data"
1905     },
1906     {
1907      "data": {
1908       "text/html": [
1909        "<div>\n",
1910        "<style scoped>\n",
1911        "    .dataframe tbody tr th:only-of-type {\n",
1912        "        vertical-align: middle;\n",
1913        "    }\n",
1914        "\n",
1915        "    .dataframe tbody tr th {\n",
1916        "        vertical-align: top;\n",
1917        "    }\n",
1918        "\n",
1919        "    .dataframe thead th {\n",
1920        "        text-align: right;\n",
1921        "    }\n",
1922        "</style>\n",
1923        "<table border=\"1\" class=\"dataframe\">\n",
1924        "  <thead>\n",
1925        "    <tr style=\"text-align: right;\">\n",
1926        "      <th></th>\n",
1927        "      <th>cell_id</th>\n",
1928        "      <th>energy_deposit_GeV</th>\n",
1929        "      <th>time_ns</th>\n",
1930        "      <th>path_length_mm</th>\n",
1931        "      <th>quality</th>\n",
1932        "      <th>x_mm</th>\n",
1933        "      <th>y_mm</th>\n",
1934        "      <th>z_mm</th>\n",
1935        "      <th>px_GeV</th>\n",
1936        "      <th>py_GeV</th>\n",
1937        "      <th>pz_GeV</th>\n",
1938        "      <th>file_id</th>\n",
1939        "      <th>event_entry</th>\n",
1940        "      <th>mc_index</th>\n",
1941        "      <th>mc_collection_id</th>\n",
1942        "      <th>hit_collection</th>\n",
1943        "      <th>hit_collection_id</th>\n",
1944        "      <th>hit_index</th>\n",
1945        "      <th>system</th>\n",
1946        "      <th>layer</th>\n",
1947        "      <th>cell_module</th>\n",
1948        "      <th>cell_sensor</th>\n",
1949        "      <th>cell_x</th>\n",
1950        "      <th>cell_z</th>\n",
1951        "      <th>cell_slice</th>\n",
1952        "      <th>cell_y</th>\n",
1953        "      <th>cell_assembly</th>\n",
1954        "      <th>cell_sector</th>\n",
1955        "      <th>cell_strip</th>\n",
1956        "      <th>cell_phi</th>\n",
1957        "      <th>cell_segmentation_id</th>\n",
1958        "      <th>cell_idx</th>\n",
1959        "      <th>cell_idy</th>\n",
1960        "      <th>cell_ids</th>\n",
1961        "    </tr>\n",
1962        "  </thead>\n",
1963        "  <tbody>\n",
1964        "    <tr>\n",
1965        "      <th>0</th>\n",
1966        "      <td>18391293623556706365</td>\n",
1967        "      <td>5.881450e-07</td>\n",
1968        "      <td>2.837182</td>\n",
1969        "      <td>4.487403</td>\n",
1970        "      <td>0</td>\n",
1971        "      <td>-411.602799</td>\n",
1972        "      <td>-389.605791</td>\n",
1973        "      <td>630.627643</td>\n",
1974        "      <td>-2.330133</td>\n",
1975        "      <td>-2.396362</td>\n",
1976        "      <td>3.712324</td>\n",
1977        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
1978        "      <td>0</td>\n",
1979        "      <td>0</td>\n",
1980        "      <td>2714477136</td>\n",
1981        "      <td>MPGDBarrelHits</td>\n",
1982        "      <td>2846270698</td>\n",
1983        "      <td>0</td>\n",
1984        "      <td>61</td>\n",
1985        "      <td>0</td>\n",
1986        "      <td>17</td>\n",
1987        "      <td>0</td>\n",
1988        "      <td>&lt;NA&gt;</td>\n",
1989        "      <td>-197</td>\n",
1990        "      <td>&lt;NA&gt;</td>\n",
1991        "      <td>&lt;NA&gt;</td>\n",
1992        "      <td>&lt;NA&gt;</td>\n",
1993        "      <td>&lt;NA&gt;</td>\n",
1994        "      <td>0</td>\n",
1995        "      <td>28</td>\n",
1996        "      <td>&lt;NA&gt;</td>\n",
1997        "      <td>&lt;NA&gt;</td>\n",
1998        "      <td>&lt;NA&gt;</td>\n",
1999        "      <td>&lt;NA&gt;</td>\n",
2000        "    </tr>\n",
2001        "    <tr>\n",
2002        "      <th>1</th>\n",
2003        "      <td>1280427959676588365</td>\n",
2004        "      <td>1.777196e-05</td>\n",
2005        "      <td>1.143507</td>\n",
2006        "      <td>0.053785</td>\n",
2007        "      <td>0</td>\n",
2008        "      <td>-170.215860</td>\n",
2009        "      <td>-153.222709</td>\n",
2010        "      <td>254.865000</td>\n",
2011        "      <td>-2.445041</td>\n",
2012        "      <td>-2.277954</td>\n",
2013        "      <td>3.717713</td>\n",
2014        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
2015        "      <td>0</td>\n",
2016        "      <td>0</td>\n",
2017        "      <td>2714477136</td>\n",
2018        "      <td>TrackerEndcapHits</td>\n",
2019        "      <td>1948551886</td>\n",
2020        "      <td>0</td>\n",
2021        "      <td>77</td>\n",
2022        "      <td>1</td>\n",
2023        "      <td>5</td>\n",
2024        "      <td>1</td>\n",
2025        "      <td>-398</td>\n",
2026        "      <td>4548</td>\n",
2027        "      <td>&lt;NA&gt;</td>\n",
2028        "      <td>&lt;NA&gt;</td>\n",
2029        "      <td>&lt;NA&gt;</td>\n",
2030        "      <td>&lt;NA&gt;</td>\n",
2031        "      <td>&lt;NA&gt;</td>\n",
2032        "      <td>&lt;NA&gt;</td>\n",
2033        "      <td>&lt;NA&gt;</td>\n",
2034        "      <td>&lt;NA&gt;</td>\n",
2035        "      <td>&lt;NA&gt;</td>\n",
2036        "      <td>&lt;NA&gt;</td>\n",
2037        "    </tr>\n",
2038        "    <tr>\n",
2039        "      <th>2</th>\n",
2040        "      <td>2515537705056620878</td>\n",
2041        "      <td>1.170038e-05</td>\n",
2042        "      <td>2.018520</td>\n",
2043        "      <td>0.053789</td>\n",
2044        "      <td>0</td>\n",
2045        "      <td>-296.890557</td>\n",
2046        "      <td>-274.409506</td>\n",
2047        "      <td>449.865000</td>\n",
2048        "      <td>-2.385317</td>\n",
2049        "      <td>-2.340755</td>\n",
2050        "      <td>3.717303</td>\n",
2051        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
2052        "      <td>0</td>\n",
2053        "      <td>0</td>\n",
2054        "      <td>2714477136</td>\n",
2055        "      <td>TrackerEndcapHits</td>\n",
2056        "      <td>1948551886</td>\n",
2057        "      <td>1</td>\n",
2058        "      <td>78</td>\n",
2059        "      <td>1</td>\n",
2060        "      <td>5</td>\n",
2061        "      <td>1</td>\n",
2062        "      <td>-969</td>\n",
2063        "      <td>8936</td>\n",
2064        "      <td>&lt;NA&gt;</td>\n",
2065        "      <td>&lt;NA&gt;</td>\n",
2066        "      <td>&lt;NA&gt;</td>\n",
2067        "      <td>&lt;NA&gt;</td>\n",
2068        "      <td>&lt;NA&gt;</td>\n",
2069        "      <td>&lt;NA&gt;</td>\n",
2070        "      <td>&lt;NA&gt;</td>\n",
2071        "      <td>&lt;NA&gt;</td>\n",
2072        "      <td>&lt;NA&gt;</td>\n",
2073        "      <td>&lt;NA&gt;</td>\n",
2074        "    </tr>\n",
2075        "    <tr>\n",
2076        "      <th>3</th>\n",
2077        "      <td>11260412213706783</td>\n",
2078        "      <td>7.516195e-06</td>\n",
2079        "      <td>0.189949</td>\n",
2080        "      <td>0.020946</td>\n",
2081        "      <td>0</td>\n",
2082        "      <td>-28.640769</td>\n",
2083        "      <td>-25.039493</td>\n",
2084        "      <td>42.329336</td>\n",
2085        "      <td>-2.509395</td>\n",
2086        "      <td>-2.206943</td>\n",
2087        "      <td>3.718705</td>\n",
2088        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
2089        "      <td>0</td>\n",
2090        "      <td>0</td>\n",
2091        "      <td>2714477136</td>\n",
2092        "      <td>VertexBarrelHits</td>\n",
2093        "      <td>3497031840</td>\n",
2094        "      <td>0</td>\n",
2095        "      <td>31</td>\n",
2096        "      <td>0</td>\n",
2097        "      <td>92</td>\n",
2098        "      <td>6</td>\n",
2099        "      <td>&lt;NA&gt;</td>\n",
2100        "      <td>40</td>\n",
2101        "      <td>&lt;NA&gt;</td>\n",
2102        "      <td>&lt;NA&gt;</td>\n",
2103        "      <td>&lt;NA&gt;</td>\n",
2104        "      <td>&lt;NA&gt;</td>\n",
2105        "      <td>&lt;NA&gt;</td>\n",
2106        "      <td>329</td>\n",
2107        "      <td>&lt;NA&gt;</td>\n",
2108        "      <td>&lt;NA&gt;</td>\n",
2109        "      <td>&lt;NA&gt;</td>\n",
2110        "      <td>&lt;NA&gt;</td>\n",
2111        "    </tr>\n",
2112        "    <tr>\n",
2113        "      <th>4</th>\n",
2114        "      <td>3345947775263</td>\n",
2115        "      <td>7.460033e-06</td>\n",
2116        "      <td>0.251360</td>\n",
2117        "      <td>0.020947</td>\n",
2118        "      <td>0</td>\n",
2119        "      <td>-37.869693</td>\n",
2120        "      <td>-33.172348</td>\n",
2121        "      <td>56.017768</td>\n",
2122        "      <td>-2.504878</td>\n",
2123        "      <td>-2.211722</td>\n",
2124        "      <td>3.718871</td>\n",
2125        "      <td>1160063f-ec9f-4268-a2c5-04f17ab61ee8</td>\n",
2126        "      <td>0</td>\n",
2127        "      <td>0</td>\n",
2128        "      <td>2714477136</td>\n",
2129        "      <td>VertexBarrelHits</td>\n",
2130        "      <td>3497031840</td>\n",
2131        "      <td>1</td>\n",
2132        "      <td>31</td>\n",
2133        "      <td>1</td>\n",
2134        "      <td>117</td>\n",
2135        "      <td>10</td>\n",
2136        "      <td>&lt;NA&gt;</td>\n",
2137        "      <td>0</td>\n",
2138        "      <td>&lt;NA&gt;</td>\n",
2139        "      <td>&lt;NA&gt;</td>\n",
2140        "      <td>&lt;NA&gt;</td>\n",
2141        "      <td>&lt;NA&gt;</td>\n",
2142        "      <td>&lt;NA&gt;</td>\n",
2143        "      <td>779</td>\n",
2144        "      <td>&lt;NA&gt;</td>\n",
2145        "      <td>&lt;NA&gt;</td>\n",
2146        "      <td>&lt;NA&gt;</td>\n",
2147        "      <td>&lt;NA&gt;</td>\n",
2148        "    </tr>\n",
2149        "  </tbody>\n",
2150        "</table>\n",
2151        "</div>"
2152       ],
2153       "text/plain": [
2154        "                cell_id  energy_deposit_GeV   time_ns  path_length_mm  \\\n",
2155        "0  18391293623556706365        5.881450e-07  2.837182        4.487403   \n",
2156        "1   1280427959676588365        1.777196e-05  1.143507        0.053785   \n",
2157        "2   2515537705056620878        1.170038e-05  2.018520        0.053789   \n",
2158        "3     11260412213706783        7.516195e-06  0.189949        0.020946   \n",
2159        "4         3345947775263        7.460033e-06  0.251360        0.020947   \n",
2160        "\n",
2161        "   quality        x_mm        y_mm        z_mm    px_GeV    py_GeV    pz_GeV  \\\n",
2162        "0        0 -411.602799 -389.605791  630.627643 -2.330133 -2.396362  3.712324   \n",
2163        "1        0 -170.215860 -153.222709  254.865000 -2.445041 -2.277954  3.717713   \n",
2164        "2        0 -296.890557 -274.409506  449.865000 -2.385317 -2.340755  3.717303   \n",
2165        "3        0  -28.640769  -25.039493   42.329336 -2.509395 -2.206943  3.718705   \n",
2166        "4        0  -37.869693  -33.172348   56.017768 -2.504878 -2.211722  3.718871   \n",
2167        "\n",
2168        "                                file_id  event_entry  mc_index  \\\n",
2169        "0  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
2170        "1  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
2171        "2  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
2172        "3  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
2173        "4  1160063f-ec9f-4268-a2c5-04f17ab61ee8            0         0   \n",
2174        "\n",
2175        "   mc_collection_id     hit_collection  hit_collection_id  hit_index  system  \\\n",
2176        "0        2714477136     MPGDBarrelHits         2846270698          0      61   \n",
2177        "1        2714477136  TrackerEndcapHits         1948551886          0      77   \n",
2178        "2        2714477136  TrackerEndcapHits         1948551886          1      78   \n",
2179        "3        2714477136   VertexBarrelHits         3497031840          0      31   \n",
2180        "4        2714477136   VertexBarrelHits         3497031840          1      31   \n",
2181        "\n",
2182        "   layer  cell_module  cell_sensor  cell_x  cell_z  cell_slice  cell_y  \\\n",
2183        "0      0           17            0    <NA>    -197        <NA>    <NA>   \n",
2184        "1      1            5            1    -398    4548        <NA>    <NA>   \n",
2185        "2      1            5            1    -969    8936        <NA>    <NA>   \n",
2186        "3      0           92            6    <NA>      40        <NA>    <NA>   \n",
2187        "4      1          117           10    <NA>       0        <NA>    <NA>   \n",
2188        "\n",
2189        "   cell_assembly  cell_sector  cell_strip  cell_phi  cell_segmentation_id  \\\n",
2190        "0           <NA>         <NA>           0        28                  <NA>   \n",
2191        "1           <NA>         <NA>        <NA>      <NA>                  <NA>   \n",
2192        "2           <NA>         <NA>        <NA>      <NA>                  <NA>   \n",
2193        "3           <NA>         <NA>        <NA>       329                  <NA>   \n",
2194        "4           <NA>         <NA>        <NA>       779                  <NA>   \n",
2195        "\n",
2196        "   cell_idx  cell_idy  cell_ids  \n",
2197        "0      <NA>      <NA>      <NA>  \n",
2198        "1      <NA>      <NA>      <NA>  \n",
2199        "2      <NA>      <NA>      <NA>  \n",
2200        "3      <NA>      <NA>      <NA>  \n",
2201        "4      <NA>      <NA>      <NA>  "
2202       ]
2203      },
2204      "metadata": {},
2205      "output_type": "display_data"
2206     },
2207     {
2208      "data": {
2209       "image/png": "iVBORw0KGgoAAAANSUhEUgAABFgAAAGuCAYAAACk8LIGAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAQ6wAAEOsBUJTofAAAdRtJREFUeJzt3Qm8zGX///HPsRzHTlmzC6GUnTahEirUrYTuopD2ou5KokQk9EvSInErWVLSYmlBq5AkRSpbSFps2bf5P96X/3fumXPmnDPnzNnmzOv5eIxjvvOdmWuumXO+13y+n+tzxfl8Pp8BAAAAAAAg3fKk/64AAAAAAAAgwAIAAAAAAJAByGABAAAAAACIEAEWAAAAAACACBFgAQAAAAAAiBABFgAAAAAAgAgRYAEAAAAAAIgQARYAAAAAAIAIEWABAAAAAACIEAEWAAAAAACACBFgAZAumzZtsri4OHv00UfTdf+qVatay5Yt6f10iob+mzx5svuMLF68ONV9e/To4fYNl/bVfQAAQM4Y52lcovEJEMsIsCBbHDhwwJ566ilr1qyZlShRwhISEqx69erWq1cvW7t2bY54V/SlUAcWXW688caQ+/h8Pncg0T758uULuc8ff/xhAwcOtEaNGrnXGh8fbxUqVLBOnTrZjBkz7MSJE5ZTffvtt+7AqoMschd9vvXe7t6923KL//u//3NBHQBA8ryxTTiXcALkiC0aO7z99tvZ3Qwgxwr9jRDIRBs2bLB27drZTz/9ZO3bt7du3bpZ4cKF7YcffnBfjqZMmWIvvvii9ezZM0e8Dwr+zJo1y5599lkrVqxY0G0ffvihbd682e1z9OjRJPfV7V26dLF//vnHrr76arvhhhusaNGitm3bNps/f75dd911tn79ehswYIDl1ADLY489FvKMRJUqVezgwYPJBpaQudatW5emjI/ENGjWe6ssEAX+oo0+e3nz5k0SYNHnlMwWAEjeq6++GnRdJ7aeeOIJu/DCC61Pnz5Bt9WpU4eujFHJjfM0dtCJR50oTOyDDz5wJx+BWMY3I2SpQ4cO2ZVXXmm//PKLy9649tprg27/z3/+YxdffLHLZKlWrVqOmAKhwMjrr79u06ZNs1tuuSXotpdfftkqV67sDkJffvll0G0//vijXXXVVS6gsmjRIjvnnHOCbn/kkUfc9o0bN1pOs3//fhf0Som+3CuwhOxRoECBmO56PnsAkD7XX399koC7AizKJE58W3rGB7lRLL7u9IzzlKUNxDqmCCFLvfLKK7ZmzRq78847kwRXpHz58i6YoWkzCraEqrmwbNkya926tRUpUsSdee/atav9+eefSR5LWSMPP/ywnXHGGe7L6CmnnOKi7d99912a2qyzN+edd55NnDgxaPtff/1lc+bMcZk2efIk/VVSAEUH5AkTJiQJrnhatWplN910U6pt8F67AjLnn3++O8iXKlXKPXfi167Xredu3ry5lS5d2h3sdFb/rrvuSjIdJHB+7ZtvvmlNmza1QoUK2eWXX+6ez8siUju9dGEvOyClubnvvPOOXXLJJVayZMmg6V/qs9SsXLnSOnfubGXKlHFt130ffPBBN60skDKGFMT69ddfLRza9/bbb7ezzjrLihcvbgULFrR69erZmDFjkkzTOnz4sD3++ONWt25d19fKXKpdu7bdfPPN7jbPV1995QKGp512mvuM6fOrz+a7774b9Hjq9379+rmgofYrW7as+9z+/PPPIdsaTv+FqsGiM0d63NNPP929PrX7oosusvfffz9oP91PZ6BEbfLe28D38siRIzZy5Eg7++yz/Y+lNn366adJ2qv3YvDgwa5Naq9+Z55//nlLj71797q/D+pLPZam1ul1JRbqs6hssk8++SQovd2b3qYztOqbSpUqufdAny/9Lk2aNCld7QSA3M47zmjcpHGBjkkae4mOmwrK6Hb9vfamP2vcsHXr1iSPlZYx3K5du+z++++3mjVruuOPnlfH6/79+/ufWye3atWqleIUb+8459E4R8dEHc/0uA0aNHAnytLyupWdoYxm3VdjCW3XMbd79+62Y8eOoMdRhrJes8YI6p+KFSvabbfdFtZYKLA22d9//+3GihrTqd0aky5cuDDkfaZOneqm36tdGr9oLDh9+vQk+4VzTEw8zvP6Vf773/8GHWtTq8GydOlSu+KKK9xY3BsnaJylsUYgPZceT1nugwYNcicw1T7tr+8HiSkbXJ8ntV+Pqz5Wdnzik55AViKDBVnqjTfecD9vvfXWZPepX7++nXvuubZkyRL35VkHUc+qVavc9CJNtdHUmxUrVriDow7G+iMb+CXtggsucJkySmNUgEP7KNihx/7ss8+sYcOGYbdbX251cFu9erU7yIumMh07dswNJhLPUVam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FVzp80Ef+++a/wYFV0TXtb33B73t0LFD2dbG3IgASwYOSIe9v8aaDPvI+ry6wu6f9Z37qevanpED0ZYtW1pcXJx98cUXQdvvvvtut/2FF16wTZs2uf8XKVLEXSpVqmQPPvhgUK2PWbNm2Xnnnedu16pJDRs2tJEjR7pivzJ58mRXk0a3FytWzCpXrmxdu3a1b775Jklwo2DBgm6/4sWL20UXXWSrV6+27KJ2N2/ePGS/qW/kwgsvtPXr16c7QAMAuZUyV1Zs3pXiPrp99AfrsqxNAAAgbZS58u2f36a4j24ft3IcXZuBCLBE6dm+WrVq2X//+1//9aNHj9qMGTOsRo0aQftp+d99+/a54MGkSZPs5Zdfdtv/7//+z2699Va766677LfffrO///7bXnvtNdu8ebNt2bLFf/8mTZq4++/du9e+/vprO/vss11QZuHChUHPM3v2bLefHqdFixYuEJMeeh3hbAMAZDxlXWpaUDi0H1maAADkzJormhYUDu2n/ZExCLBE6dm+7t2721tvvWUHDx5019977z0755xzrEKFCiH3P/PMM13gQ5kle/bssYEDB9r48ePtuuuuc9kpUrduXXvuueesZs2aIR+jTJky9tBDD1nPnj3tgQceCLlPvnz5XHDlxx9/NJ/P57bNmzfPZcfoeZRJ88gjj/hv8zJtXnnlFZdFUr9+fVu8eLGVK1fOxowZY6eddpp16NDB7asA0FlnnWUlSpRwGSg//PBDuvvPew5Re3/99Ve76qqrXBbOww8/7NrXr18/95qVlaPnTZy5AwC5jQraJj5RkBzt98Uvf2d6mwAAQNqooG3iaUHJ0X5Lty+lizMIAZYoPdunL/7KJHn77bf902J69OiR7P7ff/+9ffrpp9agQQNbsmSJmwbUqVOndD13586dbcWKFbZ/f9Jf2iNHjrhASLNmzVzgRAoXLuzat3v3bnv//fftpZdesjfffDPofgsWLLDvvvvOZcl4mTfKptmwYYMLJL377rsuKPT666+7LJnrr7/errzySvd8kZo2bZqb/uRl4QwbNsw++OADe+ONN1yb1G61QX0OALmZVgtKi90HIv8bDAAAMpZWC0qLPUf28BZkEAIsUXy2TwEVTRP6888/7csvv3QZGIkpS6NkyZLutr59+7rsEwUvSpUqZfnz5/fv165dO5cZUqhQIXv11VdTfF5l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z9O2bVu7//77k2xftWqV5c+f33bs2JGmx6tataoLbGVUcCNv3rxWpEgRd6lYsaI9+uijlp1Cvb7FixdbuXLl/NfnzZvnD67oNeizBwAAAABA1AZYknP48GFbuHChXXfddUHbu3fvbtu3b7eVK1dadgdX+nzQx/675r+2/9j+oNt0Xdt7f9A7Q4IsPXv2tKlTp9rx48eDtk+aNMllYpQtWzasxzl69KhlhiZNmti+ffvc5ZNPPrEJEybYrFmz0vVYidvo8/ns2LFjGdRSAAAAAAByaYDlzDPPdBkQ1atXt+HDh/uDCOvXr7cjR45YnTp1gvavW7eu+7l27VrLTs+tfM6+/fPbFPfR7eNWjov4uTp16mSHDh2yDz74wL9NQYfXX3/dBV80fapWrVp2yimnWPv27W3r1q3+/VTXZty4cXbGGWfYqaeeal27drVff/3VrrrqKpdx8vDDD7v9fv75ZxesKVWqlJ1++un+Wje7d++2KlWquOfyAiDKOtJ7FYrue/7559uaNWv82/Sc5cuXd1PBLrzwQlu9erX/th49etgtt9xiHTp0cO158803rWXLlvbQQw/ZRRddZIULF7avv/7afv/9d+vSpYsLJinLSVkykWQx6Tk0rUht6du3ry1fvtyfhbN//35btmyZCxwVK1bMPeftt9+e7ucCAAAAAOROOSLAoi/cjz32mE2ZMsVN11BgQFOA7r77bnf7rl273M8SJUoE3a9kyZLu586dO1N8/L1797pAg3dR1ktG1lyZ9VN4GRraT/tHokCBAi5I8d///te/7f3333fZHXptym5R8EVThTSlSoGIoDbMmmWfffaZu33atGlWuXJlmz17tss4GTZsmB04cMAuueQSF+RQP6mw8IgRI+zDDz90/f/qq6+62jcKzGh6loIeDzzwQMi2/vTTT65WTuCUmzZt2ti6devsjz/+cMEZvZZAav+9995r//zzj6u5I3qtzzzzjNumIsdqm4ocb9682ZYuXWpz5sxxU8ciVa9ePRdoCczC0evT5/Dqq6+2PXv22MaNG+3f//53xM8FAAAAAMhdckSR28suu8xdAr+EFyxY0J5++ml/VoWXgRFKcts9yupQACczqKBt4mlBydF+S7cvtVaVW0X0nMpUUfaHvvArE0QBiOuvv96ef/55Gz16tKs7IsrseOqpp1wwRIEU0cpMZcqUSfax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8+e3yZMn26WXXuqyeq+44oqg4MqAAQPc/g0bNrQJEyZYu3btbNmyZVavXj3eYwAAcqE4X6giKqn49ttv3eBCg4dWrVq56ULRZOvWrVapUiVXoLdixYrZ3RwAAGJOeo/FU6dOdWMQBVLKlCmTZJqytm/YsCHTMlj27t3rMlc8GkY1btzYihUrZosWLXLbDh8+bGXLlrU+ffq4jBfvvgqsnH322TZ9+vQ0PS/jFgAAsk9ajsPpiozUrVvXmjVr5qr358mTxwoWLBh0O0skAgCAzPDQQw9Z586d7aWXXnJBjayUN2/eoOCKN+ZRZu/nn3/u3/bll1+6paK7du0adN8uXbq4JaYVlNH9AABA7pKuAEvv3r1txowZbilmitwCAICssmvXLjcOyergSnJOnDjhAip16tTxb1u7dq37Wbt27SQnqP755x/btm0bGbQAAORC6QqwvPXWWzZmzBiWSAQAAFnqsssus6VLl9rFF1+cI3r+2WeftXXr1tmLL74YFAQqUKBAkgxfL/tl586dKQZYNA1JF8/27dszpe0AACAHBFhUUI4lEgEAQFZT9srtt99u+/fvd0GWxEVuRUVlw6WpPOEEMKpVq+aCJoE++eQT+89//mP33XefK7gbKNQUIK/sXWrTg3QS67HHHgvzFQAAgKgOsNx7771uicRLLrkk6grcAgCA6KWVeGT48OHuEhis8GqbqKBsuGbPnm09e/ZMdb+VK1e6Wiue7777zjp27GidOnWyJ598MkmmyqFDh9xFSzR7du/e7b89Jf369bNevXr5rysA1LRp07BfEwAAyB7pio5s3LjRVq1alWFLJC5YsMAtY7hmzRqXEluhQgU3YBk8eLAVL17cv9/cuXPt4YcfdnOblVqrAchtt92WnpcAAACikLdST0bp0aOHu6TF+vXr3VQlZcq8+uqrSTJSvHosGq80aNDAv13jnKJFi7pxTkpUXyan1JgBAACZHGB57733XDV8+eyzz5LcntYAi+Yin3feeXbPPfe4szrff/+9Pfroo+7nBx984PZZsmSJO1N0ww03uNTZL774wu688063PGPgWR4AAJB7XXTRRdn6/L///ru1adPGypUrZ2+//XaSZaJFYxqdINKCAF6ARVk1M2fOtPbt27OCEAAAuVS6M1gykpYxDFzKsGXLlm6ec58+fey3336z0047zYYMGeLOFE2cONHt06pVK/v1119t0KBBdtNNN7nlogEAQO6mDFqtwqNARWLKdFWG69lnn50pz33w4EFr27at/fHHH+5kjzJSAjVv3tz91Bhm4MCBNmDAACtdurQbv7z88su2YcMGmz59eqa0DQAAZL8cW0Dl1FNPdT+PHj1qhw8ftoULF9qIESOC9unevbtNmDDBzYtu1KhRNrUUAABkFdWBO//880MGWJYtW2ZPP/20ffjhh5ny3Dt27HABHtFU5uSK2Er//v3d9bFjx7r71atXzwWA9BMAAOROedK7JOGDDz4Y8jZtVwHc9FD6rArCffPNNy5j5corr7QqVaq4uc5Hjhzxz2n21K1b1z/HOSWq67J161b/heUOAQCITt9++60LsIRy7rnnujFEZqlataoLmiR3STxd+v7777fNmze7sc3y5ctd9i0AAMi90hVgGT9+vJ1++ukhb6tVq5a7PT0UTClYsKDLRilfvrxNmzbNbd+1a5f7mbiYrleFXzVcUqI03kqVKvkvVOIHACA6KatVJ12Su03BDAAAgKgJsOhsTM2aNUPeVr16ddu0aVO6GqPUWRWvfemll+yHH35wGSyBSy0mrtKf2naPVhvasmWL/6IUYgAAEH1UNHbKlCkhb9P2c845J8vbBAAAkO4aLFo6UIVuVYw2MRVwK1SoULp61ytKp+r7KgjXuHFjmz17tn8qkJfJ4vGue5ksKbWX5Q4BAIh+Dz30kHXo0MEuv/xy69mzpyuEr4L4kyZNsgULFticOXOyu4kAACBGpSuDRcsTPvbYYy4bJJDqmzz++OPWrl27iBtWv359txT0L7/84qYjaRnExLVWvOr9iWuzAACA3EmBlddff91Wr15t1157rV144YXup65ru24HAACImgwWreajpQjPOOMMa926tf/skVb60XKEw4cPj7hhS5YscdODNOVIyx3qeWbOnOlWD/CoRotqtShdGAAAxIYuXbq4y7p16+zvv/92Kw9qTAIAABB1ARYFVFTFf/To0S6o8tNPP7nBjZYkVADklFNOSdPjXX311W46kKYIqcitlkAcOXKku+4tgzho0CBr0aKF9e7d2y3PrFotWqL5xRdftDx50pWIAwAAohhBFQAAEPUBFlEQZdiwYRnSCK3qM2PGDJcZc+LECbcMYp8+fey+++5zU4O8pRc1r3rAgAGuiF3FihVt7Nix1qtXrwxpAwAAyJk09adt27ZpOoGj+7Rv3z7JCoQAAACZJc7n8/ksxqhWjJZrVg0ZBWoAAEDOPRarJttXX31lTZo0CeuxNcVYJ2iWL1/uiuZHO8YtAABEx3E4X1oK2z777LNhp+MqbnPZZZfZ+PHjrUaNGuE+DQAAQJIxxahRo6xs2bJhj0EAAACyWtgBlo8++sj27t0b9gNrqk9a7wMAAJBY5cqVbdmyZWm+j4rkAwAA5MgaLK1atUpTQdm4uLj0tAkAAMBv06ZN9AYAAMg9AZbBgwdbelccAgAAAAAAyM0yPcACAAAAAACQ24U/3wcAAAAAAAAhEWABAAAAAACIEAEWAAAAAACACBFgAQAAUWPcuHG2e/fu7G4GAABA5AGWI0eO2Jtvvmnr169P610BAAAi8sADD7gVCrt162YLFy6kNwEAQPQGWOLj46179+62ZcuWzGkRAABAMrZv325jxoxxJ3ouueQSq169ug0dOtS2bt1KnwEAgOibIlS7dm0CLAAAIMsVK1bM+vbta0uXLrXvvvvOOnbsaM8++6xVq1bN2rdv77Jsjx49yjsDAACiI8AyfPhwd7ZoxYoVGd8iAACAMJx11ln29NNP28qVK+3888+3+fPn2zXXXGMVKlSwwYMH28GDB+lHAACQZfKl507/+c9/7K+//rKmTZtaqVKlrEyZMhYXF+e/Xf9ftWpVRrYTAADAz+fzuYDKxIkT7b333rMSJUrY/fffb1dddZXNnTvXZbV8//33LqMFAAAgxwZYGjVqZI0bN8741gAAAKRAtVdeeeUVmzJliv3222926aWX2tSpU91UoXz5Tg5rmjdv7sYp1113HX0JAABydoBl8uTJGd8SAACAVNSsWdNNAerZs6fdfPPNVqVKlWTrxTVr1oz+BAAAOTvAAgAAkB3mzJljl19+ueXJk3IZuVq1atmiRYuyrF0AAAAEWAAAQNS48sors7sJAAAAGbeKEAAAAAAAAP6HAAsAAAAAAECECLAAAAAAAABEiAALAAAAAABAhAiwAAAAhOH48eM2cuRIu+iii6x06dJWsmRJa9GihX388cdJ9q1atarFxcUluRw6dIi+BgAglyLAAgAAEIaDBw/aE088YfXr17dJkybZ9OnTrUKFCnbppZfae++9l2T/zp0725IlS4IuBQoUoK8BAMilWKYZAAAgDAULFrSNGze6zBVPmzZt7KeffrLRo0fbFVdcEbR/2bJlrXnz5vQtAAAxggwWAACAMOTNmzcouCKa9qOMlt9++40+BAAgxhFgAQAASKcTJ07Yl19+aXXq1Ely29SpU92UoCJFilj79u1t9erVYT3m3r17bevWrf7L9u3beX8AAIgCTBECAABIp2effdbWrVtnL774YtD2Dh06WLNmzaxy5cq2YcMGGzZsmF1wwQW2cuVKq169eoqPOWbMGHvsscd4TwAAiDJxPp/PZzFGZ4MqVapkW7ZssYoVK2Z3c4DIHNlvtmGx2cHdZgVLmFVvaRZfmF4FkKPllGPxnj17wsoQqVatWpICtZ988omrwXL33Xe71YVSoueoXbu2de/e3caPH59qBosugfdt2rRptvcVAACxaGsaxixksADR6sgBs0XDzFZMNjuy73/b44uYNeph1nqgWf6C2dlCAMjxZs+ebT179kx1P2WeqNaK57vvvrOOHTtap06d7Mknn0z1/uXLl3cZLCtWrEh132LFirkLAACILtRgAaI1uPJqJ7Ml44KDK+62fSe3T+lodvRgdrUQAKJCjx49TMm8qV0Cgyvr16+3yy67zBo2bGivvvqqK3QbjhhMGgYAIKYQYAGikTJXtixNeR/dvnBoVrUIAGLC77//7qYFlStXzt5++22Lj48P635aZeiLL76wJk2aZHobAQBA9mCKEBCNNVc0LSgc2q/VAGqyAEAGOHjwoLVt29b++OMPV4h2zZo1Qbc3b97c/Zw2bZq9//771q5dOzvttNNckdvhw4e7ZZ779+/PewEAQC5FgAWINipom3haUHK034ZPzGq3z+xWAUCut2PHDlu1apX7v2qvJDcFSAVxVRDvnnvusd27d1uJEiWsdevWNmTIEHcbAADInQiwANFGqwWlaf9dmdUSAIgpVatWDauOijJZFi9enCVtAgAAOQc1WIBoo6WY07R/ycxqCQAAAADg/yPAAkSb6i1PLsUcDu2n/QEAAAAAmYoACxBt4gubNeoR3r7aL75QZrcIAAAAAGIeARYgGrUeaFapWcr76HbtBwAAAADIdARYgGiUv6DZDXPMzr0j6XQhXdd23a79AAAAAACZjlWEgGil4Mllw8xaDTi5FLNWC1JBW1ejhWlBAAAAAJCVCLAAuaEmS+322d0KAACAYEf2m21YbHZw98lVEN1JoML0EoBciwALAAAAgIxz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XqZMGbv77rvt4MGDFqsIsORiP/zwg73//vsuGFC3bt2Q+yxZssQ6duxoDRs2tHnz5rmB25133mkvv/yyxdJAQMGCp556yt577z0XbLnrrrvsgQce8O9DP520c+dOO++88+yll15ywRYFV6ZMmWLXXHMNfZWCxx9/3I4dO5ZkO5+r/9GXQ/WHd7n99tvpp0QeffRR9zvXvXt39/v34osvWvny5emnGKTgduDviy7nnntuki8FAwYMcF8cFPTWWKBdu3a2evXqbGt3TqYv/+orfYkNhf4Mn0666Mvr66+/bnPmzLErrrjCjauGDx9On6aRvqQ+8cQT7mTppEmTbPr06VahQgW79NJL3ZiVz2j66DvPt99+6wJXCgQmh9/71O3evdtat25t//zzj7355puuz6ZOnWq9e/e2mOVDrnX8+HH//2+88UbfmWeemWSftm3b+po2bRq0rXfv3r7y5csH3T83++OPP5Jsu/fee30JCQm+Q4cOuev0U/JeeuklnZLybdu2jb4KYe3atb7ChQv7XnjhBddPy5cv99/G58rnmzRpkuuXP//8M9nPGP3k861Zs8aXN29e34IFC+inGJfc8TyQjl3Fixf33X///f5tx44d89WpU8fXpUuXLGhl9Jk4caKvRo0avoceesj9zQ5Ef0auW7duvpo1a9KnaaTf2507dwZtO3HihK9hw4a+li1b0p/pFPgdp0qVKr7bb789yT783odnxIgRvkKFCgWN46ZOnerGdhq7xCIyWHKxPHlSfnsPHz5sCxcutOuuuy5ou86Obt++3VauXGmxINTZKqW2Hjp0yGVs0E8pO/XUU93Po0eP0lch6KydpuqdccYZQdv5XIWHfvrfVCplLbRp04Z+Qqq+/PJLl0XQtWtX/zZNfenSpYvLZgk1VSPWz8BqWuLTTz9t8fHxSW6nPzNmrKBxAn2aNvq91bSgQJrSooyW3377jf7MpO9Iwu99eHRMueSSS6xUqVL+bf/617/c7ADdFosIsMSw9evX25EjR6xOnTpB273pRGvXrrVY9dlnn9kpp5zi5hHST6HnBCsA9c0339iQIUPsyiuvtCpVqtBXicyaNctWrVplgwYNStKHfK6CnXnmmW4gqSCC0sj1GaOf/uerr75ydQw03Ux/l/QlUKnNSnGmn2KP/n4orV2fg0aNGtnbb78ddLt3/K5du3aS47vSuLdt25al7c3pBg4c6PpRU1lCoT/TR1NjVYNM09U1nVgnHOjTyKlGoL78B47f+YxmPPo0/H5K/F2yQIECrr5NrH6XzJfdDUD22bVrl/uZeO6hFylX9kYsUhFSzXMdPHiw+8JHPyWlYIo3QFdRq2nTprn/01f/c+DAAVcvQ8GCYsWKJelD+uok1RB57LHHrFmzZu6s3DvvvOO+7OjzpaKI9NNJv//+uwtoqrbWCy+84L5Yq980D//nn3+mn2KIMixVsFZBSWVeqCj7VVdd5Qq2d+7c2e2j3xsNcAsWLJjs8V2Ft2EuSKni0Sll7dKf6VtooWbNmv7r+rt+77330qcZ4Nlnn7V169a5Olx8RjMPv/fh91OoOjYlS5aM2e+SBFjgvtSkZXtu/xKjtLamTZsGFbkV+ul/lPKns1L6sqcz6spgUUV2+up/hg4damXLlnWFo1MS65+ryy67zF08mgKjL4VK1X/44Yf922O9n3TGUr9zKiCnL9aiM+7VqlVzRafPP/98ty3W+ykaaSqPpuWmRu+1giZanSGQVpJS8XFlynkBluTec29qUG7+PKSlPxWoVGHb2267LUm2T2Kx2p/p+YyKVmZcvny5+7v16aef2ogRI9y0DAWGY71P09Ofnk8++cT+85//2H333edWEwoUq/0ZaZ+mJJb7NC2S66e4GO0jAiwxzDuT5Z0h9njXE8/5zO30x1krLBQqVMidRc+fP7/bTj8lpaWsRYN6rUDVuHFjmz17tn96Wax/pjZv3uxWp1Kf7N27123TINP7qQufq+Rde+21rgq9ziwrW0pi/TOlKYsK2HnBFS/7R18KFej0pjbEej9FI/2d6NmzZ6r7KcNCdRcS05dWnRjQly6tOKIApd5vTePURUs0e5Txkts/D2npzx9//NHWrFnjVrzw+kZ9JrquvtMllvszvZ9RfYnV2EBatmzplm/Viatbb73VypUrF9N9mt7f+e+++86t/KnVLp988smgfWO5PzPi72gosd6n4VI/JB57eP2UeOpQrKAGSwzT3DidvUk8P06DDYmlXwr98dRZwB07drjlYr3CrUI/pUwHKk2lUjowfXXSxo0bXX2jyy+/3B14dFGWj7Rq1coVA6OvkhdYgJN+shT/Hquv9AWbfopeynLT+5jaJaUvBYmL1nqfl1DH96JFi7plXnOrtPSnAiz6YlC1alX/32p9cd2/f7/7v5ZGj/X+zKjPqDLuVFtr06ZNFut9mp7+VN0lZXvqpNarr76aJDMglvszoz6jicV6n6alnxL30eHDh91nNpa+SwYiwBLDdHZB65bPnDkzaLvqaejMqOZ5x0oRNp0xVzFSBVe8M+Ye+illS5YscYMmFSelr07SAXzRokVBF015EdXPGD9+PH2VghkzZrignf4G8Zk6SRkqCgB///33/n5SnRp9QTznnHPopxim6WMqqK3sJq/mirILixcv7n6XPPo7reN9+/btYzZtO9SXssR/q2+88UZ3tlr/79Onj9uP/ozc559/7j53mqJBn6Z9+rqmzyrzRwWtQ610xWc049Gn4dEx5eOPP7a///47KKPo8OHD7raYlN3rRCPz7N+/3/fGG2+4S8uWLX2VKlXyX//jjz/cPl9++aUvX758vl69evkWLVrkGzp0qC9Pnjy+CRMmxMxb06dPH7dW+8iRI31LliwJuuzZs8ftQz+ddNVVV/mGDRvme/fdd30fffSRb/To0b6yZcv6zj77bN/hw4fpqxTo90ufs+XLl/u38bny+dq0aeN78sknfe+//7673HLLLb64uDjfPffcQz8FOHbsmK9hw4a+mjVr+mbMmOGbPXu2r0GDBr4KFSr49u3bx+cpRmzatMkdz1988UX3N1jH89atW7vfmbfeeito36eeesqXP39+36hRo3wLFy70devWzZeQkOD77rvvsq390WDw4MG+woULJ9lOf4Zn9+7dvvPOO883fvx43wcffOD+rvfv3999Fvv27UufptGBAwd855xzjq9IkSK+t99+O8k4lc9o+v+Wet+JSpcu7Wvbtq3/On2aNrt27XJjkfPPP983f/5835QpU3ylSpXyde/e3RerCLDkYhs3bnRf6EJd9GXPo4Of/njHx8f7qlev7hs3bpwvllSpUoV+CtPw4cN99evX9xUtWtQNQM8880zfI4884g9EeWL9MxVugEViva/uuusuFzQoWLCgr0CBAr569er5nnnmGd+JEyeC9ov1fpIdO3a4L8nFixf3FSpUyNeuXTvfjz/+GLQP/ZS7/f33374OHTq4wax+F/SlSwEXDWoT0++QThxUrlzZ/W41btzYBVqQvgAL/RmeQ4cO+Xr06OGrUaOG+7t+yimn+Jo2bep75ZVXXKCYPs24sXzi8+R8RsM3adIk+jQDrVu3zp0w09ikVKlSvjvvvNMFB2NVnP7J7iwaAAAAAACAaEYNFgAAAAAAgAgRYAEAAAAAAIgQARYAAAAAAIAIEWABAAAAAACIEAEWAAAAAACACBFgAQAAAAAAiBABFgAAAAAAgAgRYAEAAAAAAIgQARYAOUrVqlUtLi7OXV577bUsec758+f7n7NIkSJZ8pwAACD6MW4BEIgAC4Acp3PnzrZkyRJr27Ztljzfueee657v5ptvzpLnAwAAuQfjFgAeAiwAcpyyZcta8+bNrVSpUlnyfMWLF3fPV7FixSx5PgAAkHswbgHgIcACIFNs2rTJP+0m8WXy5Mnpesz333/fzj//fCtUqJCVLFnSWrZsaStXrnS3LV682D22pvv861//clN9KlWq5J9mNHbsWKtcubK7X69evezw4cMZ+noBAEB02rt3r1WpUsWuueaaoO233367Gzds3bo1XY/LuAWIPQRYAGSK8uXLu2k3gZe+fftanjx5rEaNGml+vBkzZtiVV15pZcqUsddff92mTp3qgi3btm0L2u+2226zBg0a2OzZs93UnxtvvNEeeOABW7Bggb3wwgv2+OOP25QpU2z06NEZ+GoBAEC0KlasmDv58+abb9qrr77qtmncMH78eHdJT4Yr4xYgNuXL7gYAyJ0KFCjgpt14vvzyS3vllVdsyJAhdsEFF6TpsXw+n913333Wpk0bFzjxtG/fPsm+1157rQ0cOND9v2nTpvbWW2/ZtGnT7JdffrH4+Hh/tssbb7xhAwYMiOAVAgCA3KJVq1Z2zz332J133mn16tWzm266ybp06WJdu3ZN82MxbgFiFxksADKdUmuvvvpql4GSnqDGunXr3GNosJOaSy65JKi2ijJeWrRo4Q+uSK1atWzLli1pbgcAAMi9nnjiCatQoYL/BNHzzz+frsdh3ALELgIsADLVwYMHrVOnTla6dGmXfqs6KWn1999/u5+nnXZaqvuWKFEi6LoCK6G2HTp0KM3tAAAAuVdCQoI7IaQ6bd27d3f1V9KDcQsQuwiwAMhUWvp4w4YN9vbbb7vCs+lx6qmnup+//fZbBrcOAADgpO+//96eeuopV8vt2WeftTVr1qSraxi3ALGLAAuATDNixAibOXOmTZ8+3U4//fR0P84ZZ5zhCsxNmjQpQ9sHAAAgR44csX//+9/WuHFj++qrr1wdFl0/evRomjuIcQsQuyhyCyBTfPHFF/bwww/bdddd56rza7DiUbBFU4bCpWlFo0aNcoXmtATzDTfc4IroamWiJk2a2BVXXMG7CAAA0m3w4MH2888/26pVq9xUYq0mpEwWFefXCoRpwbgFiF1ksADIFBqknDhxwi2prOWSAy/vv/9+mh9PlfznzJnjlmVW0EbBls8//zxdSycCAAAErnQ4cuRIGz16tD/jVlko2jZ8+HBbunQp4xYAYYnzaR0xAMghqlatapdffrk988wzljdv3nQVxU0r/Rk8fvy4O0s1ZswY27dvX6Y/JwAAiH6MWwAEIoMFQI4zfvx4y58/v02dOjVLnm/BggXu+dKaAgwAAMC4BYCHDBYAOcrq1avd8ohSvXp1O+WUUzL9Offu3Ws//fST+7+yZjTnGgAAIDWMWwAEIsACAAAAAAAQIaYIAQAAAAAARIgACwAAAAAAQIQIsAAAAAAAAESIAAsAAAAAAECECLAAAAAAAABEiAALAAAAAABAhAiwAAAAAAAARIgACwAAAAAAQIQIsAAAAAAAAFhk/h+DUe4aFvMF7QAAAABJRU5ErkJggg==",
2210       "text/plain": [
2211        "<Figure size 1100x418 with 2 Axes>"
2212       ]
2213      },
2214      "metadata": {},
2215      "output_type": "display_data"
2216     }
2217    ],
2218    "source": [
2219     "assert 0 <= MC_ROW < len(particles), 'Choose a valid MC_ROW in the input cell.'\n",
2220     "one_particle = particles.iloc[[MC_ROW]]\n",
2221     "one_hits = hits.merge(one_particle[KEY], on=KEY, validate='many_to_one')\n",
2222     "display(one_particle[KEY + ['pdg', 'p_GeV', 'eta', 'n_hits']])\n",
2223     "with pd.option_context('display.max_columns', None):\n",
2224     "    display(one_hits)\n",
2225     "\n",
2226     "fig, axes = plt.subplots(1, 2, figsize=(10, 3.8), layout='constrained')\n",
2227     "for name, group in one_hits.groupby('hit_collection', observed=True):\n",
2228     "    radius_cm = np.hypot(group.x_mm, group.y_mm)/10\n",
2229     "    axes[0].scatter(group.z_mm/10, radius_cm, s=45, label=name)\n",
2230     "    axes[1].scatter(group.x_mm/10, group.y_mm/10, s=45)\n",
2231     "axes[0].set(xlabel='z [cm]', ylabel='r [cm]', title='One MC particle: associated hits')\n",
2232     "axes[1].set(xlabel='x [cm]', ylabel='y [cm]', title='Transverse positions')\n",
2233     "axes[1].set_aspect('equal', adjustable='datalim')\n",
2234     "if not one_hits.empty:\n",
2235     "    axes[0].legend(fontsize=8)\n",
2236     "plt.show()\n"
2237    ]
2238   },
2239   {
2240    "cell_type": "markdown",
2241    "id": "2faa60ba",
2242    "metadata": {},
2243    "source": [
2244     "## 7. Use the same operations in bounded-memory batch analysis\n",
2245     "\n",
2246     "`read_mc_tracking_hits()` collects one file/prefix in memory. For large files,\n",
2247     "iterate event blocks, make the same layer selections, accumulate counts or\n",
2248     "histograms, and discard each block. Do not concatenate every file's raw hit table.\n",
2249     "The check below rereads the same small prefix with a different block size and\n",
2250     "requires identical particle/hit/layer counts.\n"
2251    ]
2252   },
2253   {
2254    "cell_type": "code",
2255    "execution_count": 11,
2256    "id": "e46b14f6",
2257    "metadata": {
2258     "execution": {
2259      "iopub.execute_input": "2026-10-19T21:58:09.640667Z",
2260      "iopub.status.busy": "2026-10-19T21:58:09.640464Z",
2261      "iopub.status.idle": "2026-10-19T21:58:16.860228Z",
2262      "shell.execute_reply": "2026-10-19T21:58:16.858937Z"
2263     }
2264    },
2265    "outputs": [
2266     {
2267      "name": "stdout",
2268      "output_type": "stream",
2269      "text": [
2270       "PASS: streaming counts match the collected tables with a different block size.\n"
2271      ]
2272     }
2273    ],
2274    "source": [
2275     "stream_particles, stream_hits = 0, 0\n",
2276     "stream_layer_hits = np.zeros(len(LAYER_IDS), dtype=np.int64)\n",
2277     "for block in iter_mc_tracking_hits(ROOT_FILE, collections=COLLECTIONS, primary_only=True,\n",
2278     "        pdgs=PDGS, eta_range=ETA_RANGE, p_range=P_RANGE_GEV,\n",
2279     "        stop=STOP_EVENTS, step_size=137):\n",
2280     "    stream_particles += len(block['particles'])\n",
2281     "    stream_hits += len(block['hits'])\n",
2282     "    selected = block['hits'].loc[(block['hits'].hit_collection == IB_COLLECTION)\n",
2283     "                                & (block['hits'].system == IB_SYSTEM)]\n",
2284     "    for index, layer in enumerate(LAYER_IDS):\n",
2285     "        stream_layer_hits[index] += int((selected.layer == layer).sum())\n",
2286     "assert stream_particles == len(particles) and stream_hits == len(hits)\n",
2287     "np.testing.assert_array_equal(stream_layer_hits, counts.sum().to_numpy())\n",
2288     "print('PASS: streaming counts match the collected tables with a different block size.')\n"
2289    ]
2290   },
2291   {
2292    "cell_type": "markdown",
2293    "id": "87cfce6f",
2294    "metadata": {},
2295    "source": [
2296     "## 8. Final consistency checks\n",
2297     "\n",
2298     "These checks verify table integrity and unchanged input-file size/time. The\n",
2299     "reader was also tested separately against independent PODIO object getters;\n",
2300     "PODIO is not required to run this notebook.\n"
2301    ]
2302   },
2303   {
2304    "cell_type": "code",
2305    "execution_count": 12,
2306    "id": "f4e9fa6c",
2307    "metadata": {
2308     "execution": {
2309      "iopub.execute_input": "2026-10-19T21:58:16.862682Z",
2310      "iopub.status.busy": "2026-10-19T21:58:16.862406Z",
2311      "iopub.status.idle": "2026-10-19T21:58:16.882860Z",
2312      "shell.execute_reply": "2026-10-19T21:58:16.881977Z"
2313     }
2314    },
2315    "outputs": [
2316     {
2317      "name": "stdout",
2318      "output_type": "stream",
2319      "text": [
2320       "PASS: unique identities, valid MC links, exact CellIDs, hit totals and zero-hit rows.\n",
2321       "Validated 2,000 MC particles and 12,105 associated simulated hits.\n"
2322      ]
2323     }
2324    ],
2325    "source": [
2326     "HIT_KEY = ['file_id', 'event_entry', 'hit_collection_id', 'hit_index']\n",
2327     "assert not particles.duplicated(KEY).any()\n",
2328     "assert not hits.duplicated(HIT_KEY).any()\n",
2329     "assert hits.cell_id.dtype == np.dtype('uint64')\n",
2330     "assert len(hits.merge(particles[KEY], on=KEY, validate='many_to_one')) == len(hits)\n",
2331     "assert particles.n_hits.sum() == len(hits)\n",
2332     "assert len(counts) == len(particles)\n",
2333     "assert len(one_hits) == int(one_particle.n_hits.iloc[0])\n",
2334     "assert ROOT_FILE.stat().st_size == tables['metadata']['source_bytes']\n",
2335     "assert ROOT_FILE.stat().st_mtime_ns == tables['metadata']['source_mtime_ns']\n",
2336     "print('PASS: unique identities, valid MC links, exact CellIDs, hit totals and zero-hit rows.')\n",
2337     "print(f'Validated {len(particles):,} MC particles and {len(hits):,} associated simulated hits.')\n"
2338    ]
2339   }
2340  ],
2341  "metadata": {
2342   "kernelspec": {
2343    "display_name": "EIC 26.08 (RSU maps)",
2344    "language": "python",
2345    "name": "eic-rsu-26.08"
2346   },
2347   "language_info": {
2348    "codemirror_mode": {
2349     "name": "ipython",
2350     "version": 3
2351    },
2352    "file_extension": ".py",
2353    "mimetype": "text/x-python",
2354    "name": "python",
2355    "nbconvert_exporter": "python",
2356    "pygments_lexer": "ipython3",
2357    "version": "3.13.13"
2358   }
2359  },
2360  "nbformat": 4,
2361  "nbformat_minor": 5
2362 }