{ "cells": [ { "cell_type": "code", "execution_count": 1, "source": [ "from servicex import ServiceXDataset\r\n", "from coffea.processor.servicex import DataSource, Analysis\r\n", "from coffea.processor.servicex import DaskExecutor\r\n", "from func_adl_servicex import ServiceXSourceXAOD \r\n", "\r\n", "import matplotlib.pyplot as plt\r\n", "\r\n", "from coffea import hist, processor\r\n", "from IPython.display import display, update_display, HTML" ], "outputs": [], "metadata": {} }, { "cell_type": "code", "execution_count": 2, "source": [ "dids = ['mc15_13TeV:mc15_13TeV.361106.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zee.merge.DAOD_STDM3.e3601_s2576_s2132_r6630_r6264_p2363_tid05630052_00']\r\n", "datasets = [\r\n", " ServiceXDataset(did, backend_name='atlas_xaod')\r\n", " for did in dids\r\n", "]" ], "outputs": [], "metadata": {} }, { "cell_type": "code", "execution_count": 3, "source": [ "leptons_per_event_query = ServiceXSourceXAOD('dummy_dataset') \\\r\n", " .Select(lambda e: e.Electrons(\"Electrons\")) \\\r\n", " .Select(lambda eles: eles.Where(lambda e: e.pt()/1000.0 > 30.0)) \\\r\n", " .Select(lambda eles: eles.Where(lambda e: abs(e.eta()) < 2.5)) \\\r\n", " .Where(lambda eles: len(eles) == 2) \\\r\n", " .Select(lambda ls: {\r\n", " 'electrons_pt': ls.Select(lambda e: e.pt()/1000.0),\r\n", " 'electrons_eta': ls.Select(lambda e: e.eta()),\r\n", " 'electrons_phi': ls.Select(lambda e: e.phi()),\r\n", " 'electrons_mass': ls.Select(lambda e: e.m()/1000.0),\r\n", " 'electrons_charge': ls.Select(lambda e: e.charge())\r\n", " })" ], "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "Found backend type matching \"xaod\". Matching by type is depreciated. Please switch to using the \"name\" keyword in your servicex.yaml file.\n", "Found backend type matching \"xaod\". Matching by type is depreciated. Please switch to using the \"name\" keyword in your servicex.yaml file.\n" ] } ], "metadata": {} }, { "cell_type": "code", "execution_count": 4, "source": [ "datasource = DataSource(query=leptons_per_event_query, metadata={'dataset-nickname': 'Zee'}, datasets=datasets)" ], "outputs": [], "metadata": {} }, { "cell_type": "code", "execution_count": 5, "source": [ "class Z_EEAnalysis(Analysis):\r\n", " @staticmethod\r\n", " def process(events):\r\n", " import awkward as ak\r\n", " from collections import defaultdict\r\n", "\r\n", " sumw = defaultdict(float)\r\n", " mass_hist = hist.Hist(\r\n", " \"Events\",\r\n", " hist.Cat(\"dataset\", \"Dataset\"),\r\n", " hist.Bin(\"mass\", \"$Z_{ee}$ [GeV]\", 60, 60, 120),\r\n", " )\r\n", "\r\n", " dataset = events.metadata['dataset-nickname']\r\n", "\r\n", " electrons = events.electrons\r\n", "\r\n", " # Form the invar mass, plot.\r\n", " cut = (ak.num(electrons) == 2)\r\n", " diele = electrons[cut][:, 0] + electrons[cut][:, 1]\r\n", "\r\n", " sumw[dataset] += len(events)\r\n", " mass_hist.fill(\r\n", " dataset=dataset,\r\n", " mass=diele.mass,\r\n", " )\r\n", " \r\n", " return {\r\n", " \"sumw\": sumw,\r\n", " \"mass\": mass_hist\r\n", " }" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "We create the analysis and executor. The `DaskExecutor` can be done two ways:\n", "\n", "- `DaskExecutor()` which creates a local cluster. All data will be pulled down to the local machine via an `uproot.open`. This can be paiful depending on what your connection looks like.\n", "- `DaskExecutor(client_addr=\"node.name.edu:8786\")` which will attach to a remote `dask` cluster. This is particularly powerful if the `dask` cluster is located close to the `servicex` installation." ], "metadata": {} }, { "cell_type": "code", "execution_count": 6, "source": [ "analysis = Z_EEAnalysis()\r\n", "#executor = DaskExecutor(client_addr=\"localhost:8786\")\r\n", "executor = DaskExecutor()" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "This next method makes an updating plot, as the data appears. If you didn't want the fancy updating plot, you could do `await executor.execute(analysis, datasource)`, and you'd end up with the coffea dict when that cell completed." ], "metadata": {} }, { "cell_type": "code", "execution_count": 7, "source": [ "%matplotlib inline\r\n", "async def plot_stream(accumulator_stream):\r\n", " global first\r\n", " fig, axes = plt.subplots()\r\n", " first = True\r\n", "\r\n", "\r\n", " count = 0\r\n", " async for coffea_info in accumulator_stream:\r\n", " print(coffea_info)\r\n", " hist.plot1d(coffea_info['mass'], ax=axes)\r\n", "\r\n", " count += 1\r\n", " plt.text(0.95, 0.8, f'Chunks of data: {count}', horizontalalignment='right', transform=axes.transAxes)\r\n", "\r\n", " # Either display it or update a previous version of the plot\r\n", " if first:\r\n", " display(fig, display_id='mass_update')\r\n", " first = False\r\n", " else:\r\n", " update_display(fig, display_id='mass_update')\r\n", " return coffea_info\r\n", "\r\n", "await plot_stream(executor.execute(analysis, datasource))\r\n", "plt.close() # Prevents another copy of the plot showing up in the notebook" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "{'sumw': defaultdict(, {'Zee': 24000.0}), 'mass': }\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-08-16T22:42:43.430700\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.2, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEOCAYAAABfM7oIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAApM0lEQVR4nO3df3xU1bnv8c9jQEAligo0iBRsudWAgJCiXKsHtSBqW6RXBbFXbC1UUWtvz6tVek6LWNvS1h6V2qpppYBHEYtFscUKR8HfPwgWUSIIImggSiBqAJWfz/1jrwlDmAn5tTOZ4ft+veY1ez977T1rkWQe1tpr723ujoiISJwOyXQFREQk9ynZiIhI7JRsREQkdko2IiISOyUbERGJnZKNiIjETslGRERid9AlGzMbl+k6xCWX2wZqX7ZT+7JXU7TtoEs2QM7+QpDbbQO1L9upfdlLyUZERFo+i+t2NWb2JWBWUugE4GfAjBDvDqwFLnH3D83MgDuA84FPgCvc/dVwrDHAf4bj3OLu00N8ADANaAfMA673AzToiCOO8BNPPLEJWtjyVFRU0LFjx0xXIzZqX3ZT+7LXkiVLtrp7+8YcI7Zks8+HmOUB64FTgWuASnefbGY3Ah3c/QYzOx+4jijZnArc4e6nmtnRQAlQBDiwBBgQEtQrwPeBl4mSzRR3f7y2uhQVFXlJSUk8DRURyUFmtsTdixpzjOYaRjsHeNvd1wHDgekhPh24MCwPB2Z45CXgKDMrAM4FFrh7pbt/CCwAhoVt+e7+UujNzEg6loiItCDNlWxGATPDcmd3Lw/L7wOdw/JxwHtJ+5SFWG3xshRxERFpYWJPNmZ2KPAN4K81t4UeSezjeGY2zsxKzKykoqIi7o8TEck1xya+Q8Or3rPTWsVRqxrOA1519w/C+gdmVuDu5WEobGOIrweOT9qva4itBwbXiC8K8a4pyu/H3YuBYojO2TSmMSIiO3fupKysjM8++yzTVWlSbdu2pWvXrrRu3brmpk2NPWfTHMnmUvYOoQHMBcYAk8P7o0nxa83sQaIJAh+HhPQE8Esz6xDKDQUmuHulmVWZ2WlEEwQuB34ff3NE5GBXVlZG+/bt6d69O9FE2uzn7mzevJmysjJ69OjR5MePdRjNzA4HhgB/SwpPBoaY2Srgq2Edotlka4DVwJ+A8QDuXgn8HFgcXjeHGKHMn8M+bwO1zkQTEWkKn332Gcccc0zOJBoAM+OYY46JrbcWa8/G3bcBx9SIbSaanVazrBNNi051nKnA1BTxEqB3k1RWRKQecinRJMTZJt1BQEQkBnl5efTr149evXrRt29ffve737Fnz55a91m7di0PPPBAk9fl9ttv55NPPmny49ZHc5yzEZEDmPTYcko3VAFQWh69FxbkR+9d8pn49V4Zq5s0TLt27Vi6dCkAGzduZPTo0VRVVTFp0qS0+ySSzejRo5u0Lrfffjvf+ta3OOyww5r0uPWhno1IC1C6oWqfJJNINKXlVdVJSLJXp06dKC4u5s4778TdWbt2LWeccQb9+/enf//+vPDCCwDceOONPPvss/Tr14/bbrstbbny8nLOPPNM+vXrR+/evXn22WcBmD9/PoMGDaJ///5cfPHFbN26lSlTprBhwwbOOusszjrrrIz9G+DuB9VrwIABLtLSXHL3C37J3S/UOS6ZVVpaesAyhx9++H6xI4880t9//33ftm2bf/rpp+7u/tZbb3nie2nhwoV+wQUXVJdPV+7WW2/1W265xd3dd+3a5VVVVV5RUeFnnHGGb9261d3dJ0+e7JMmTXJ3989//vNeUVHR4LYBJd7I714No4mINLOdO3dy7bXXsnTpUvLy8njrrbfqVe7LX/4y3/nOd9i5cycXXngh/fr14+mnn6a0tJTTTz8dgB07djBo0KBma9OBKNmIiDSDNWvWkJeXR6dOnZg0aRKdO3fmtddeY8+ePbRt2zblPrfddlvKcmeeeSbPPPMM//jHP7jiiiv44Q9/SIcOHRgyZAgzZ85MeaxM0zkbEZGYVVRUcNVVV3HttddiZnz88ccUFBRwyCGHcN9997F7924A2rdvz5YtW6r3S1du3bp1dO7cmbFjx/Ld736XV199ldNOO43nn3+e1atXA7Bt27bqnlDN42aCko2ISAw+/fTT6qnPX/3qVxk6dCgTJ04EYPz48UyfPp2+ffuyYsUKDj/8cAD69OlDXl4effv25bbbbktbbtGiRfTt25dTTjmFWbNmcf3119OxY0emTZvGpZdeSp8+fRg0aBArVqwAYNy4cQwbNiyjEwSa5Xk2LYmeZyMt0ch7XgRg1vcG1SkumfXmm29y0kknZboasUjVtmx6no2IiBzElGxERCR2SjYiIhI7JRsREYmdko2IiMROyUZEpBmMvOfF6tmFByPdQUCkhSstr+Lkm54AdCdo2WvOnDn73UF62bJl/OMf/+C8887LUK3SU7IRaUbpHiVQWl5VnUiSFXbJ36dszWU5eI0YMYIRI0ZUrxcXF3P//fdz7rnnZrBW6SnZiDSjxKMEaiaWwoL86sSSLFXv5WAeipHU3nrrLW6++WZeeOEFDjnkEH7729/y0EMPsX37dkaMGFHdA/rv//5vpkyZwo4dOzj11FP54x//SF5eXrPUUclGpJkVFuTrjgA5JLm3mqxmD/ST7bsAqodEE9L1aOs6TLpz505Gjx7N7373O7p168b8+fNZtWoVr7zyCu7ON77xDZ555hk6duzIrFmzeP7552ndujXjx4/n/vvv5/LLL69rUxtFyUZEJIv99Kc/pVevXowcORKIHqA2f/58TjnlFAC2bt3KqlWrWLZsGUuWLOHLX/4yEN27rVOnTs1WTyUbEZFGqGsPJI773C1atIiHH36YV199tTrm7kyYMIHvfe97+5T9/e9/z5gxY/jVr37VZJ9fH7FOfTazo8xstpmtMLM3zWyQmR1tZgvMbFV47xDKmplNMbPVZrbMzPonHWdMKL/KzMYkxQeY2ethnylmZnG2R0Skpfjwww/59re/zYwZM2jfvn11/Nxzz2Xq1Kls3boVgPXr17Nx40bOOeccZs+ezcaNGwGorKxk3bp1zVbfuK+zuQP4p7ufCPQF3gRuBJ50957Ak2Ed4DygZ3iNA+4CMLOjgYnAqcBAYGIiQYUyY5P2GxZze0REWoS7776bjRs3cvXVV9OvX7/q14cffsjo0aMZNGgQJ598MhdddBFbtmyhsLCQW265haFDh9KnTx+GDBlCeXl5s9U3tmE0MzsSOBO4AsDddwA7zGw4MDgUmw4sAm4AhgMzwvOuXwq9ooJQdoG7V4bjLgCGmdkiIN/dXwrxGcCFwONxtUlEpKWYMGECEyZMSLv9+uuv3y82cuTI6nM7zS3OczY9gArgL2bWF1gCXA90dvdEOn0f6ByWjwPeS9q/LMRqi5eliIuItDgH+wzEOIfRWgH9gbvc/RRgG3uHzAAIvZjYn95mZuPMrMTMSioqKuL+OBGRXHNs4js0vMbV9wBxJpsyoMzdXw7rs4mSzwdheIzwvjFsXw8cn7R/1xCrLd41RXw/7l7s7kXuXtSxY8dGNUpEGu79999n1KhRfOELX2DAgAGcf/75vPXWWyxatIivfe1rTfIZa9eupXfv3k1yrIS//vWvnHTSSQd8rPI777xDZWVlrWU2bdrEjh07GlyXXbt2sXLlSl599VXefffd6vju3btZvnx59Wvp0qX7bG+kTYnv0PAqru8BYks27v4+8J6ZfSmEzgFKgblAYkbZGODRsDwXuDzMSjsN+DgMtz0BDDWzDmFiwFDgibCtysxOC7PQLk86loi0MO7OiBEjGDx4MG+//TZLlizhV7/6FR988EGmq3ZA9957L3/6059YuHBhdSwamKm/zZs3s3PnzgbXxczo0qULXbt23Seel5dHr169ql+HHnooHTp0SHOU1BraprqIezbadcD9ZrYM6Af8EpgMDDGzVcBXwzrAPGANsBr4EzAeIEwM+DmwOLxuTkwWCGX+HPZ5G00OEGmxFi5cSOvWrbnqqquqY3379uWMM84AoosPL7roIk488UQuu+yy6i++7t27s2nTJgBKSkoYPHgwADfddBPf+c53GDx4MCeccAJTpkzZ7zPXrFnDKaecwuLFi1m+fDkDBw6kX79+9OnTh1WrVu1XfubMmZx88sn07t2bG264AYCbb76Z5557jiuvvJIf/ehHALRt25bNmzezZ88e3n33Xd544w1WrlzJrl27qo+1YcMGSktLWb58OWvXrsXdqaysZNu2bbzzzjssX76cPXv2pCxXm7y8PNq3b88hh6T/+v7ss8/YtWsXRxxxRK3HSububN68mbZt29Z5n/qI9aJOd18KFKXYdE6Ksg5ck+Y4U4GpKeIlQNP2l0UkFm+88QYDBgxIu/1f//oXy5cvp0uXLpx++uk8//zzfOUrX6n1mCtWrGDhwoVs2bKFL33pS1x99dXV21auXMmoUaOYNm0affv25brrruP666/nsssuY8eOHezevXufY23YsIEbbriBJUuW0KFDB4YOHcojjzzCz372M5566iluvfVWioqir7OuXbtSVlbGunXr2LJlC506dWLnzp2sX7+eqqoqPvjgA/bs2cMhhxyCmfHee++xefNmDjvsMD7++GM6dOhAmzZtWLlyZdpyW7ZsAdjnGppkW7duZceOHWzbtm2/bR999BHuzooVK2r996upbdu2+/WYmoruICAiLcLAgQOrv+j69evH2rVrD5hsLrjgAtq0aUObNm3o1KlT9ZBcRUUFw4cP529/+xuFhYUADBo0iF/84heUlZXxzW9+k549e+5zrMWLFzN48GAS53Uvu+wynnnmGS688ML9Prd169b06NGDO+64gz59+lT3tn72s58xevRoLrroIh5++GF+85vf8Mknn1BZWcl1113HjTfeyNVXX82tt95Kv379ANKWO5Bp06ZRUlLCnXfeud+2wsJC7rvvPk466aQDHqe56OFpItIsevXqxZIlS9Jub9OmTfVyXl5e9ZBUq1at2LNnDxAND9VlnyOPPJJu3brx3HPPVW8fPXo0c+fOpV27dpx//vk89dRTjW9UGp999hnjx49n9uzZvP7664wdO3a/utenXH289tpr7Nq1q9ZeZCYo2YhIszj77LPZvn07xcV7JzItW7aMZ599ttb9unfvXp2kHn744Tp91qGHHsqcOXOYMWMGDzzwABCdvznhhBP4/ve/z/Dhw1m2bNk++wwcOJCnn36aTZs2sXv3bmbOnMm//du/1fo5Z555JrNmzWL37t2Ul5dXTyBIJIxjjz2WrVu3Mnv27Op92rdvXz1EVlu5hpo5cyaXXnppo4/T1DSMJiLNwsyYM2cOP/jBD/j1r39N27Zt6d69O7fffjvr16e8agGAiRMncuWVV/LTn/60eriqLg4//HD+/ve/M2TIEI444ghKS0u57777aN26NZ/73Of4yU9+sk/5goICJk+ezFlnnYW7c8EFFzB8+PBaP2PEiBE89dRTFBYW0q1bNwYNii7cPOqooxg7diy9e/fmc5/7XPWdlgGuuOIKrrrqKtq1a8eLL76Yttzdd98NsM+EioTu3btTVVXFjh07eOSRR5g/f371cOFDDz3EvHnz6vzv1FwszqluLVFRUZGXlJRkuhpykGqKO//GcfdgkdqY2RJ3TzXZq840jCYiIrFTshERkdgp2YiISOyUbEREJHZKNiIiEjslGxERiZ2SjYiIxE7JRkREYqdkIyIisVOyERGR2CnZiIhI7JRsREQkdko2IiISOyUbERGJnZ5nIxKTSY8tp3RDFQCl5VXV8cKC/ExVSSRj1LMRiUnphqp9kgxEiaawi5KNHHzUsxGJUWFBvh5yJkLMPRszW2tmr5vZUjMrCbGjzWyBma0K7x1C3MxsipmtNrNlZtY/6ThjQvlVZjYmKT4gHH912NfibI+IiDRMcwyjneXu/ZIeKXoj8KS79wSeDOsA5wE9w2sccBdEyQmY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" }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "{'sumw': defaultdict(, {'Zee': 74000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 124000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 249000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 399000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 549000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 699000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 849000.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 998800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1148800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1298800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1343800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1493800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1543800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1693800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1843800.0}), 'mass': }\n", "{'sumw': defaultdict(, {'Zee': 1993800.0}), 'mass': }\n" ] } ], "metadata": {} } ], "metadata": { "kernelspec": { "name": "python3", "display_name": "Python 3.9.6 64-bit ('.venv': venv)" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" }, "pycharm": { "stem_cell": { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [] } }, "interpreter": { "hash": "0857beeb8bd56f57ec31dfb6d49aa425259567fda5d0227b9061b424f42da337" } }, "nbformat": 4, "nbformat_minor": 4 }