Skip to content

Instantly share code, notes, and snippets.

@simonepigazzini
Last active February 8, 2022 17:41
Show Gist options
  • Save simonepigazzini/ce4dd6b5365979581ec81c971fd0d40a to your computer and use it in GitHub Desktop.
Save simonepigazzini/ce4dd6b5365979581ec81c971fd0d40a to your computer and use it in GitHub Desktop.
Test implementation of the ECAL PhiSym/EFlow calibration workflow for Run3. Using flat NanoAOD as input and awkward+coffea for the data processing
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# ECAL PhiSym on NanoAOD with awkward+coffea"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"## Import all the tools\n",
" - use BaseSchema which simply loads the NanoAOD flat trees into awkward arrays"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import awkward as ak\n",
"import numpy as np\n",
"from typing import List\n",
"from coffea.nanoevents import NanoEventsFactory, BaseSchema"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.rc('font',**{'family':'sans-serif', 'sans-serif':['Helvetica'], 'size':'20'})\n",
"plt.rcParams['figure.figsize'] = '10,10'\n",
"plt.style.use('seaborn-white')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"runs = NanoEventsFactory.from_root('phisym_nano.root', schemaclass=BaseSchema, treepath=\"/Runs\").events()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def addIEtaIPhi(runs):\n",
" \"\"\"\n",
" Add ieta and iphi coordinates to EB rec hits\n",
" \"\"\"\n",
"\n",
" zside = (runs.PhiSymRecHitEB_id & 0x10000)/ak.max(runs.PhiSymRecHitEB_id & 0x10000)\n",
" zside = zside + (ak.full_like(zside, fill_value=-1)+zside)\n",
" runs.PhiSymRecHitEB_ieta = ((runs.PhiSymRecHitEB_id >> 9) & 0x7F)*zside \n",
" runs.PhiSymRecHitEB_iphi = runs.PhiSymRecHitEB_id & 0x1FF\n",
"\n",
"def boundaryCrystals(runs):\n",
" \"\"\"\n",
" Flag crystals on module boundaries:\n",
" - first and last crystals in a SM along phi (iphi % 20 == 0|1)\n",
" - first and last crystals in a module along eta (|ieta| = 1, 25,26, 45,46, 65,66, 85)\n",
" \"\"\"\n",
"\n",
" bounds = ak.zeros_like(runs.PhiSymRecHitEB_ieta)\n",
" for idx in [1, 25, 25, 45, 46, 65, 66, 85]:\n",
" bounds = bounds + (abs(runs.PhiSymRecHitEB_ieta) == idx)\n",
" \n",
" return (runs.PhiSymRecHitEB_iphi % 20 == 0) | (runs.PhiSymRecHitEB_iphi % 20 == 1) | (bounds > 0)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def kfactors(runs):\n",
" \"\"\"\n",
" Compute k-factors\n",
" - keep same definition as in Run2: the miscalibration values are centered\n",
" around 0.\n",
" \"\"\"\n",
"\n",
" read_miscalib = []\n",
" for mis in ['_m5', '_m4', '_m3', '_m2', '_m1', '', '_p1', '_p2', '_p3', '_p4', '_p5']:\n",
" read_miscalib.append(runs[f'PhiSymRecHitEB_sumEt{mis}']/runs[f'PhiSymRecHitEB_sumEt']-1)\n",
" read_miscalib = ak.Array(read_miscalib)\n",
" true_miscalib = ak.ones_like(read_miscalib)*np.linspace(-0.05, 0.05, 11)\n",
"\n",
" res = ak.linear_fit(true_miscalib, read_miscalib, axis=0)\n",
" \n",
" return res"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/lib/python3.9/site-packages/awkward/_connect/_numpy.py:150: RuntimeWarning: invalid value encountered in true_divide\n",
" result = getattr(ufunc, method)(\n"
]
}
],
"source": [
"k = kfactors(runs)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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v9Ftt92mUaNGKSYmRgsXLtSnn35qemlGrVmzRsOGDes1N0pfvHixhg0b1uKv7OzsLv3+Ru+Yf99996moqEgrV65URUWFRo4cqc8++0ybNm3S8OHD9eCDD3ba91q6dKny8/M1btw4paamqk+fPtq5c6fWrFmjv/71r/rzn//c5H5l7mjbtm1auHChQkJCNGfOHPn5+emdd97RmjVr9M477+jFF1+Uh4f7f657fn5+s1fluis+IuySo0eP6pFHHtF///d/98obQZ8+fVr33nuvTp8+rZkzZ2r48OE6duyYcnJytGPHDuXl5ekHP/iB6WV2uV27dmnu3Lm69tprNWvWLFmtVh09elR/+tOf9Ne//lXZ2dkaM2aM6WV2u88++0wbN240vQwjli1bpgEDBjTZPmLEiK79xjbDampqbE899ZRt4sSJth/84Ae2W265xZaenm47d+5cp32PDz/80BYaGmr7xS9+0WRfSkqKLTQ01Pbmm2922vfrqerq6myRkZG2iRMn2qqrq532Pfzww7bQ0FBbcXGxmcV1o5deeskWGhpqS09Pd/xzfn6+6WV1qQ0bNthCQ0NtW7Zscdr+1ltv2UJDQ20ZGRmGVtZ9zp49axs9erTtrrvush05csQWGhpq+9nPfmZ6Wd3qd7/7nS00NNT21ltvOW3fsWOHLTQ01DZ//nxDK+ted9xxh23UqFG248ePO23/61//agsNDbX9x3/8h6GVmdPQ0GBLSEiw3X333bbQ0FDbokWLTC+pWyxatMgWGhra5M9CdzH+koevr68WLVqk4uJiHTx4UG+//baWLl2q/v37d9r38PLy0sKFC/Xwww832Tdu3DhJveMGsF988YV+8pOfaO7cuerXr5/Tvh//+MeS1Gteil+3bp2WLl2qb33rW6aX0i34iDCpvr5ed999t15++WXdeOONppdjREBAgO644w7FxsY6bR8/frwsFkuv+O+/sbFR06dP129/+1sFBQU57Rs7dqwk6d///reJpRmVl5enkpKSXvM2ZE9h9O3I7jJ06FANHTq02X2ffPKJJCk0NLQ7l2TEd7/7XT311FPN7jt//rwkNYkzd5SQkGB6Cd3K/hFhY8aMafEjwt58802Vl5c7Pp3CHV133XVavny56WUY1dz/iEqX/ozYbLZO/Z/fnsrDw0OzZ89udl9v+vvgcidPntTTTz+te+65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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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jhypV155RYsXL5YkZWdnKzMzU0OGDNHChQsdtYMGDVJMTIySk5O1Zs0aN7sDAADQNDTonLCsrCxJUnx8vNPy4OBghYWFadOmTSosLKy2NiAgQFFRUdq3b58OHjzYkM0DAADwGHUKYWVlZfr+++8rLc/JyZHValXHjh0rrQsNDVVZWZn27t3rqPXy8lJwcLDLWnsNAABAc+RWCMvIyNA999yjPn36KDg4WCNGjNCmTZskSUVFRSooKFBAQIDL11qtVklSbm6u46efn5+8vb2rrD127Jg7zQPQxATOXG+6CQBgjFsh7NNPP9XYsWP1+uuv6+mnn1ZeXp4SExO1fv16FRcXS5LatGnj8rU+Pj6SLoY1SSouLnYsq6rWvk0AAIDmplYT88eNG6d7771X/fr1cxy5uvPOO3XnnXdq+PDhmjdvnjIzMyVJNput2m1ZLBbHz5pqAaAhBM5cryPz7zXdDABwUqsjYbfeeqt++tOfVjp12KNHD/Xr10/5+fk6d+6cJKmkpMTlNuxHtdq2bStJ8vX1rbG2Xbt2tWkeAABAk1PvqyPt9w0rLi6Wn5+fjh8/7rLOPhfMfp+wLl266MyZMyotLa1Um5eX51QLAADQ3NQYwoqKipSVleWYgH+5o0ePSrp4a4nw8HDl5+c7QtSldu3apdatWzuuhgwPD1dFRYV2795dqXbnzp2SpL59+9a+JwAAAE1IjSHM29tbycnJmjFjhk6ePOm0btu2bdq9e7d69+4tq9Wq2NhYSdLy5cud6rZv3679+/crJibGMXF/+PDhslgsSk1Ndao9fPiwNm/erH79+qlz58716RsAAIDHqnFivre3t2bMmKFnn31Wo0aN0ujRo3XjjTfqX//6l9555x21a9dOL774oiQpKipK0dHRSk9PV1FRkfr376+8vDylpKTIarVq2rRpju326tVL8fHxWrFihRISEjR48GCdPXtWKSkpatWqlZKSkq5crwE0e/bbXzAhH4CnqtXVkffdd5+sVqtSU1OVlpamgoICXX/99br33nuVmJioLl26OGoXLFigt99+W2vXrtW6devUvn17RUdHa+rUqfL393fa7qxZsxQYGKiMjAwlJSXJx8dHERERmjJlirp3796wPQUAAPAgtX525O23367bb7+9xjpvb28lJiYqMTGxxlqLxaK4uDjFxcXVthkAAADNQoM+OxIA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4glNnjxZubm5ioqKqrKuXbt22rlzZ+076YbGGo/t27crPj6+yu307NlTf/rTn5yWbd68WX/4wx+0f/9+2Ww29ejRQ/Hx8Ro2bFjdO1yNxhoLSaqoqNCf//xnvfPOO/rPf/6jFi1aKDAwUGPHjlVMTIxjTmVj7Bvnz5/X4sWLtXHjRp08eVIdOnRQZGSkpkyZIn9//xpf7864HTp0SK+99pp27Nih4uJi3XTTTRo2bJgmTpxY6ZY3//vf/7Rw4UL94x//UEFBgW688Ubdfffdmjx5stN0h4bWmONx4MABLV26VF9++aUKCgp00003KTIyUgkJCbr22msddWPHjtWOHTuqfM+lS5cqOjq67p2uQmONxV133eU4i+LK2rVr1atXL8fvJvaNxhiLmj4nJekHP/iB/v73v0syt19I9R8PSTp69Kh+9atfac+ePZo3b55GjBjhss4TPzeMhrAHH3xQ69at08svv6y8vDyFhITo66+/1vLly9WzZ0+NHz/eZPOqtHXrVj322GOyWq2aNGmSOnTooI8//ljJyck6cuSIZs+eXeM2kpKSlJmZqaioKI0fP17nz59XWlqa4uLilJaWprCwMEkXrwS98847XW7jH//4h1avXq1bbrnFaXlERITLK0ivueYa9ztbC405HnaDBw/WkCFDKm2nffv2Tr+vXbtWM2bMUM+ePfX000/L29tba9eu1dNPP61Tp05p3Lhx9ev8ZRp7LF588UVlZGTojjvu0PTp01VWVqbVq1dr2rRp2r9/v6ZPn+607Su1b9T3EWTujNvXX3+tBx98UN7e3ho3bpysVqu2bdumxYsXa+/evXrjjTcctSdPntT999+vwsJCPfLII+rWrZv27dun9PR07dq1S++8806lD9+G0JjjsXPnTj3yyCO67rrrNHbsWPn7++vzzz9Xamqq/va3v+mDDz6o9KXx2muvuXzfy0N+Q2jMsZCk66+/Xs8//7zLbXXq1Mnx7yb2jcYai1tuuaXKv3FxcbGef/75St8bUuPuF1LDPLowMzNTc+bUfFWvx35u2AwrKiqyzZ8/33bnnXfafvSjH9l+9rOf2ZKTk23nzp0z3TSXKioqbPfcc4+tb9++tv/9739O6xISEmy33nqr7auvvqp2G1988YUtKCjI9tRTTzktP378uC00NNQWGxtbYzvOnz9vu+OOO2zjxo1zLDt27JgtKCjINmPGjNp3qJ4aezy2bdtmCwoKsi1atKjGthUVFdkiIiJsd911l624uNixvKyszBYbG2vr3bu3LT8/vxa9rJ3GHoucnBxbUFCQLTEx0am2pKTEFhkZafvhD3/o+O/oSu8bb7zxhi0oKMi2cuVKp+Uff/yxLSgoyDZv3rwqX+vuuI0fP97Wq1cv24EDB5xqk5OTbUFBQbaNGzc6liUlJdmCgoJsmzdvdqpdvny5LSgoyJaWluZ2X2ujMcdj8ODBtrCwMFteXp5T7bx582xBQUG2P/7xj45lDz30kC0oKKg+XXNbY47FwIEDbQMHDqxVu0zsG405FlX5zW9+YwsJCbEdPXrUsczEfmGz1W88bDabbdWqVbagoCBbcnKy498zMzNd1nrq54bRxxZJkq+vr2bMmKFNmzZp7969+uSTTzR79uxKRzQ8xd69e/Wf//xHQ4YM0Y033ui0buzYsbLZbPrzn/9c7TaysrIkqdLh4oCAAEVFRWnfvn06ePBgtdv43e9+p7Nnz+rXv/51HXrRcDxlPFyxH0a+//775ePj41jesmVLjR49Wt99950++ugjt7dblcYei+LiYg0dOrTSEeM2bdqob9+++v7773X48OH6dqtW6vMIMnfG7fTp0/rss8/0k5/8REFBQZVqJTlOR3///ffasGGDAgMDFRkZ6VT7wAMP6Jprrql06rqhNNZ4FBcXKywsTI8++mil+bM//elPJV08VWlSY42FO0ztG6bH4ssvv1RGRoYmTpyoLl261K8zDaAhHl24dOlSzZ49u9qj+Z78uWE8hDU1u3fvliT17t270ro+ffo41VQlJydHXl5eLu8bEhoa6qipyoEDB/Tuu+8qPj5egYGB1b7X5Rc9NDRPGI/S0tJq22ZvR13a5o7GHosBAwbo1VdfdXnbFvtNjtu1a1flezXUvlHfR5C5M25ffvmlbDaby9quXbuqQ4cOjtrDhw+rsLDQZa2Pj4+CgoK0f/9+XbhwwY3e1qwxx8PX11cvvfSSJk2aVKm2sLBQUuVT9Je6cOGCKioqatGrumnMsXDlwoULLr/ETewbpsfCZrNpzpw5CggI0GOPPVZtW6/0fiE1zKMLR40aVau5ap78uUEIc9OxY8ckuX7ckq+vr9q3b++oqUpubq78/PxcnlO+9HFNVfnd736ntm3bKiEhocrtT548WX379lWfPn0UERGhX//61zp//ny17aoLU+Oxf/9+jR8/XqGhoerdu7fuuOMOvfrqq07/YdhfY9/Gpeztralt7vCEfUOSvvnmG3322WcKCgpS9+7dK22/ofcNdx5B5oo741ZdrX35iRMnVFZWVqva8vLyKm+TU1eNOR7VWbVqlSTpnnvuqbRu8eLFGjhwoHr37q2QkBA99NBD+uKLL2rcprtMjMV3332nl156SbfffrtCQkLUu3dvPf74405H003sG6b3i48++ki7d+/WU089pVatXD9/o7H2C6n+4+EOT/7cMDox31PU5tDijTfeqP79+9fqcUuXPmrJleLiYnXo0MHlOvtpM/v7XO7LL7/U5s2b9cQTT1T5f7jZ2dkaNWqU5syZo/Lycm3YsEHvvvuu9uzZo1WrVlX5H6BdUxiPbdu2acyYMYqLi1NRUZHef/99vfXWWzpw4IDefPNNWSwWx2suPRV5absk1di2pjAWlyooKNATTzyhiooKl6eq67tvVNVmyb1HkLn7evtra1Nrs9lUXFxc73bVVWOOR1UWLFigrVu3atSoUS4nVW/ZskWJiYny9/fXnj17lJKSovj4eKWmpjboDbFNjMXp06f1zTff6Fe/+pXat2+vHTt2aOXKldq1a5fef/99devWzci+YXK/sNlsWrp0qTp37lztVeGNtV9I9R+Phn4vU58bhDBJzzzzTI01d9xxh/r371+rxy1d+qilqtbXdJ67KitWrFDLli01atSoSutuuOEGLVu2TAEBAU5XvgwdOlRPP/20srKylJmZqbi4uGrfw5PH49Zbb9WyZcvUrVs3x4PdJennP/+5xo4dq08++USffvqpIiMjG6RtnjwWl8vNzdWECRP0zTffaO7cufrxj3/sWNdQ+0ZVbZbcewSZu6+317jzXvVtV1015nhcrqKiQsnJyXrnnXcUGRlZ6crB6dOnq7i4WP369XPczmDgwIHq27evxo8fr9/+9rd6//33q223Oxp7LObPny8vLy+nwBAdHa1bbrlFs2fP1muvvaaFCxca2TdM7hefffaZ/v3vf+uZZ55x+ci/xt4vLm1rY/wNPPlzgxAm6fPPP6+xpmXLi0NVm8ctVTcPR7p46LimxzW52sa5c+f00Ucf6ac//WmliZnSxcc6/exnP3O53TFjxigrK0vbtm2r8YvWk8ejQ4cOLvvo5eWl0aNHa+fOndq2bZsiIyMdbXN15Ki6cb6UJ4/Fpfbs2aOEhAQVFxdr0aJFleZJNNS+4UpdHkHm7uvtfa5NrcVika+vb63bVdPfxF2NOR6XKikp0bRp07Rp0ybFxsYqOTm50mRlV/NcJOn2229XYGCg9uzZo6Kioga7D1Jjj0VERITLuvvuu09z5szR1q1b3WpXQ+4bpvYLSXrvvffUokULxcbGulzf2PuFVP/xaOj3MvW5QQhT9RNXL2c/+uLqfPC5c+dUVFSkH/3oR9Vuo0uXLtq7d69KS0srnf6p7nFNGzduVFlZWbU33ayKn5+fpOpPZdk1lfG43OV9vLRtl8+Nsm+3piuEmsJY7Ny5UxMmTFC7du20cuXKGt/jcu7sG67U9xFk7oxbdbU2m03Hjx/XD37wA7Vs2dLxt62uXddcc02Vcz/qqjHHw66kpETjx49XTk6Opk2bpscff9ztdvv5+enIkSMqKSlpsC9bE2PhipeXlzp06KDTp09LkpF9w9RYfPvtt/r000/Vp08fXX/99W63+0rsF1LjPrrQkz83mJjvpvDwcEmur9az33G8pnPn4eHhqqiocHkli30bffv2rbTus88+kyT169fP5XZzcnK0cuVKnT17ttK6I0eOSHI9Sb0+Gns8tm7dqvT0dJWVlVWqvbyPDdE2d5jYNw4cOOCYw/Huu+9W+YV0JfeN+j6CzJ1x69Onj1q0aKHs7OxKtQcOHFBhYaGjtlu3brruuutc1p47d04HDx5UaGio40hmQ2nM8ZAuXlI/efJk7d69W/Pnz68ygOXn52vt2rUu74xus9n0zTffqHXr1jXeHNMdjTkWx44d0+rVq7V///5KtSUlJTp58qTji9PEvtHY+4XdF198oW+//bbK7w0T+4XUuI8u9OTPDUKYm3r27Kkf/vCH+vDDD52Sss1mU2pqqlq2bKnhw4c7lhcWFurQoUMqKChwLBs+fLgsFotSU1Odtn348GFt3rxZ/fr1c5rvZLdnzx75+Pi4XCddPHX24osv6u2333ZaXl5e7lg2aNAgN3tcvcYej48++khz5szR6tWrnWq/++47paWlyWKx6O6775Z0ca6Wv7+/3n//fadJlKWlpXrnnXd07bXXNuh4NPZYXLhwQVOmTJGXl5eWL19e7YfVld43YmNj9d133zmuyLOzP4Ls0seIHDp0yOmKJ3fGrUOHDrrrrrv0+eefa9++fU7vZR8z+z2HvLy89Itf/EJ5eXn661//6lSblpam8vLySvcnaiiNNR6S9MYbb+if//ynnnvuOafll6uoqNCzzz6r2bNnVzrquWbNGuXn52vgwIEN/mSNxhqLs2fP6rnnntOcOXP0/fffO73XH/7wB1VUVDj2cVP7RmPuF3ZffvmlpIvzaV0xtV9I9RsPd3jy54bFVtdZwFexnJwcxcfH64YbbtDDDz+s9u3ba926dfrnP/+pp556Sr/85S8dtWvWrNGsWbP0q1/9ShMnTnQsf+mll7RixQoNHDhQgwcP1tmzZ5WSkqKSkhKtWrWq0iMlysvLFRISom7dumn9+vUu21VYWKgxY8bowIEDGjp0qAYMGKDi4mKtW7dOu3fvVmxsrObPn9+kx+O///2vRo8erVOnTum+++5TWFiYTp8+rdWrV+vw4cOaNGmSnnzyScd2//rXv2ry5Mm65ZZbFBcXp5YtWzquBvztb39b7ZeWp49Fenq65syZo6FDhzqC5+V69OihHj16XPF948KFC3rooYe0d+9ejRkzxukRZN27d1dGRobj6s5bb71V3bp104cfflincfvmm290//33S5IeffRRdezYUZ988onWr1+vkSNHau7cuY7as2fP6oEHHlB+fr7GjRunbt266YsvvtCqVat0++23a9myZbV6nqenjsepU6cUFRWldu3aVflIrDZt2jhuOrl48WItWbJEt9xyi0aOHKn27dsrJydH77//vuNoakOfnm3MfcP+rN2wsDANGzZM3t7e2rJlizZs2KCgoCBlZGQ4TqmZ2DcacyzsZs2apTVr1uj999+vcu6Xif2iIcbjk08+0bfffitJjqtgx4wZ45gbeP311zv+3VM/NwhhdbRv3z4tWrRIu3btUllZmbp37674+PhKX+pVfdHabDZlZGQoIyNDR44ckY+PjyIiIjRlypRK85eki4dBIyIiFBoaqnfffbfKdhUUFCg1NVUff/yx4/+WbrnlFt1///0aOXJkg18JZteY43HixAn94Q9/0KeffqoTJ07ommuu0Q9/+EONHTvW5dGcrVu36vXXX9fevXslSb169dLjjz9e6W7IDaWxxsKdh7tLV37fKC4u1pIlS/Thhx8qPz9ffn5+uvvuu/Xkk086za1z9WEq1X7cpIsfqPbbMBQXF6tLly66//77FR8fX+nD8fTp01q4cKE2bdqkgoICWa1W/fznP9fjjz9ep1ty1FZjjIe7D2qWpA0bNigjI0MHDx5UYWGhOnbsqIEDByohIUE33HBDw3T+Mo21b5SXl2v16tVavXq1jh49qm+//VadOnXSoEGD9Nhjj1Wa02Ri32jM/04kKTExUX//+9/1l7/8RTfffHOV7TKxX0j1G4+aHtgeERGh9PR0x++e+LlBCAMAADCAOWEAAAAGEMIAAAAMIIQBAAAYQAgDAAAwgBAGAABgACEMAADAAEIYAACAAYQwAAAAAwhhAAAABhDCAAAADPh/WWYUA/eRNqAAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(k.slope[0], bins=1000)\n",
"plt.show()\n",
"plt.hist(k.intercept[0], bins=1000)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"addIEtaIPhi(runs)\n",
"sumEtEB = ak.sum(ak.mask(runs.PhiSymRecHitEB_sumEt, boundaryCrystals(runs), valid_when=False))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3 (ipykernel)",
"env": null,
"interrupt_mode": "signal",
"language": "python",
"metadata": {
"debugger": true
},
"name": "python3"
},
"name": "test_nanophisym.ipynb"
},
"nbformat": 4,
"nbformat_minor": 4
}
name: phisym
channels:
- conda-forge
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
- abseil-cpp=20210324.2=h9c3ff4c_0
- alsa-lib=1.2.3=h516909a_0
- argon2-cffi=21.3.0=pyhd8ed1ab_0
- argon2-cffi-bindings=21.2.0=py39h3811e60_1
- arrow-cpp=6.0.1=py39h2c67c1e_5_cpu
- asttokens=2.0.5=pyhd8ed1ab_0
- attrs=21.4.0=pyhd8ed1ab_0
- awkward=1.7.0=py39he80948d_0
- awkward0=0.15.5=pyhd8ed1ab_0
- aws-c-auth=0.6.8=hadad3cd_1
- aws-c-cal=0.5.12=h70efedd_7
- aws-c-common=0.6.17=h7f98852_0
- aws-c-compression=0.2.14=h7c7754b_7
- aws-c-event-stream=0.2.7=hd2be095_32
- aws-c-http=0.6.10=h416565a_3
- aws-c-io=0.10.14=he836878_0
- aws-c-mqtt=0.7.10=h885097b_0
- aws-c-s3=0.1.29=h8d70ed6_0
- aws-c-sdkutils=0.1.1=h7c7754b_4
- aws-checksums=0.1.12=h7c7754b_6
- aws-crt-cpp=0.17.10=h6ab17b9_5
- aws-sdk-cpp=1.9.160=h36ff4c5_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=py_2
- backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
- black=22.1.0=pyhd8ed1ab_0
- bleach=4.1.0=pyhd8ed1ab_0
- boost-histogram=1.2.1=py39h1a9c180_0
- brotli=1.0.9=h7f98852_6
- brotli-bin=1.0.9=h7f98852_6
- bzip2=1.0.8=h7f98852_4
- c-ares=1.18.1=h7f98852_0
- ca-certificates=2021.10.8=ha878542_0
- cachetools=5.0.0=pyhd8ed1ab_0
- certifi=2021.10.8=py39hf3d152e_1
- cffi=1.15.0=py39h4bc2ebd_0
- click=8.0.3=py39hf3d152e_1
- cloudpickle=2.0.0=pyhd8ed1ab_0
- coffea=0.7.12=pyhd8ed1ab_0
- colorama=0.4.4=pyh9f0ad1d_0
- commonmark=0.9.1=py_0
- correctionlib=2.1.0=py39h1a9c180_0
- cycler=0.11.0=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- dbus=1.13.6=h5008d03_3
- debugpy=1.5.1=py39he80948d_0
- decorator=5.1.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- entrypoints=0.4=pyhd8ed1ab_0
- executing=0.8.2=pyhd8ed1ab_0
- expat=2.4.4=h9c3ff4c_0
- flit-core=3.6.0=pyhd8ed1ab_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- font-ttf-ubuntu=0.83=hab24e00_0
- fontconfig=2.13.96=ha180cfb_0
- fonts-conda-ecosystem=1=0
- fonts-conda-forge=1=0
- fonttools=4.29.1=py39h3811e60_0
- freetype=2.10.4=h0708190_1
- fribidi=1.0.10=h36c2ea0_0
- fsspec=2022.1.0=pyhd8ed1ab_0
- future=0.18.2=py39hf3d152e_4
- gettext=0.19.8.1=h73d1719_1008
- gflags=2.2.2=he1b5a44_1004
- giflib=5.2.1=h36c2ea0_2
- glog=0.5.0=h48cff8f_0
- grpc-cpp=1.42.0=ha1441d3_1
- gst-plugins-base=1.18.5=hf529b03_3
- gstreamer=1.18.5=h9f60fe5_3
- hist=2.5.2=pyhd8ed1ab_0
- histoprint=2.2.1=pyhd8ed1ab_0
- icu=69.1=h9c3ff4c_0
- iminuit=2.8.4=py39he80948d_1
- importlib-metadata=4.10.1=py39hf3d152e_0
- importlib_resources=5.4.0=pyhd8ed1ab_0
- ipykernel=6.9.0=py39hef51801_0
- ipython=8.0.1=py39hf3d152e_0
- ipython_genutils=0.2.0=py_1
- jbig=2.1=h7f98852_2003
- jedi=0.18.1=py39hf3d152e_0
- jinja2=3.0.3=pyhd8ed1ab_0
- jpeg=9e=h7f98852_0
- jsonschema=4.4.0=pyhd8ed1ab_0
- jupyter_client=7.1.2=pyhd8ed1ab_0
- jupyter_core=4.9.1=py39hf3d152e_1
- jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
- kiwisolver=1.3.2=py39h1a9c180_1
- krb5=1.19.2=hcc1bbae_3
- lcms2=2.12=hddcbb42_0
- ld_impl_linux-64=2.36.1=hea4e1c9_2
- lerc=3.0=h9c3ff4c_0
- libblas=3.9.0=13_linux64_openblas
- libbrotlicommon=1.0.9=h7f98852_6
- libbrotlidec=1.0.9=h7f98852_6
- libbrotlienc=1.0.9=h7f98852_6
- libcblas=3.9.0=13_linux64_openblas
- libclang=13.0.1=default_hc23dcda_0
- libcurl=7.81.0=h2574ce0_0
- libdeflate=1.8=h7f98852_0
- libedit=3.1.20191231=he28a2e2_2
- libev=4.33=h516909a_1
- libevent=2.1.10=h9b69904_4
- libffi=3.4.2=h7f98852_5
- libgcc-ng=11.2.0=h1d223b6_12
- libgfortran-ng=11.2.0=h69a702a_12
- libgfortran5=11.2.0=h5c6108e_12
- libglib=2.70.2=h174f98d_2
- libgomp=11.2.0=h1d223b6_12
- libiconv=1.16=h516909a_0
- libimagequant=2.17.0=h7f98852_1
- liblapack=3.9.0=13_linux64_openblas
- libllvm11=11.1.0=hf817b99_2
- libllvm13=13.0.1=hf817b99_0
- libnghttp2=1.46.0=h812cca2_0
- libnsl=2.0.0=h7f98852_0
- libogg=1.3.4=h7f98852_1
- libopenblas=0.3.18=pthreads_h8fe5266_0
- libopus=1.3.1=h7f98852_1
- libpng=1.6.37=h21135ba_2
- libpq=14.1=hd57d9b9_1
- libprotobuf=3.19.4=h780b84a_0
- libsodium=1.0.18=h36c2ea0_1
- libssh2=1.10.0=ha56f1ee_2
- libstdcxx-ng=11.2.0=he4da1e4_12
- libthrift=0.15.0=he6d91bd_1
- libtiff=4.3.0=h6f004c6_2
- libutf8proc=2.7.0=h7f98852_0
- libuuid=2.32.1=h7f98852_1000
- libvorbis=1.3.7=h9c3ff4c_0
- libwebp=1.2.2=h3452ae3_0
- libwebp-base=1.2.2=h7f98852_1
- libxcb=1.13=h7f98852_1004
- libxkbcommon=1.0.3=he3ba5ed_0
- libxml2=2.9.12=h885dcf4_1
- libzlib=1.2.11=h36c2ea0_1013
- llvmlite=0.38.0=py39h1bbdace_0
- lz4=3.1.10=py39h03635ed_0
- lz4-c=1.9.3=h9c3ff4c_1
- markupsafe=2.0.1=py39h3811e60_1
- matplotlib=3.5.1=py39hf3d152e_0
- matplotlib-base=3.5.1=py39h2fa2bec_0
- matplotlib-inline=0.1.3=pyhd8ed1ab_0
- mistune=0.8.4=py39h3811e60_1005
- mplhep=0.3.20=pyhd8ed1ab_0
- mplhep_data=0.0.3=pyhd8ed1ab_0
- munkres=1.1.4=pyh9f0ad1d_0
- mypy_extensions=0.4.3=py39hf3d152e_4
- mysql-common=8.0.28=ha770c72_0
- mysql-libs=8.0.28=hfa10184_0
- nbclient=0.5.10=pyhd8ed1ab_1
- nbconvert=6.4.1=py39hf3d152e_0
- nbformat=5.1.3=pyhd8ed1ab_0
- ncurses=6.3=h9c3ff4c_0
- nest-asyncio=1.5.4=pyhd8ed1ab_0
- notebook=6.4.8=pyha770c72_0
- nspr=4.32=h9c3ff4c_1
- nss=3.74=hb5efdd6_0
- numba=0.55.1=py39h56b8d98_0
- numpy=1.21.5=py39haac66dc_0
- openjpeg=2.4.0=hb52868f_1
- openssl=1.1.1l=h7f98852_0
- orc=1.7.1=h1be678f_1
- packaging=21.3=pyhd8ed1ab_0
- pandas=1.4.0=py39hde0f152_0
- pandoc=2.17.1.1=ha770c72_0
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parquet-cpp=1.5.1=2
- parso=0.8.3=pyhd8ed1ab_0
- pathspec=0.9.0=pyhd8ed1ab_0
- pcre=8.45=h9c3ff4c_0
- pexpect=4.8.0=pyh9f0ad1d_2
- pickleshare=0.7.5=py_1003
- pillow=9.0.1=py39he69867a_0
- pip=22.0.3=pyhd8ed1ab_0
- platformdirs=2.4.1=pyhd8ed1ab_1
- prometheus_client=0.13.1=pyhd8ed1ab_0
- prompt-toolkit=3.0.26=pyha770c72_0
- pthread-stubs=0.4=h36c2ea0_1001
- ptyprocess=0.7.0=pyhd3deb0d_0
- pure_eval=0.2.2=pyhd8ed1ab_0
- pyarrow=6.0.1=py39hff6fa39_5_cpu
- pycparser=2.21=pyhd8ed1ab_0
- pydantic=1.9.0=py39h3811e60_0
- pygments=2.11.2=pyhd8ed1ab_0
- pyparsing=3.0.7=pyhd8ed1ab_0
- pyqt=5.12.3=py39hf3d152e_8
- pyqt-impl=5.12.3=py39hde8b62d_8
- pyqt5-sip=4.19.18=py39he80948d_8
- pyqtchart=5.12=py39h0fcd23e_8
- pyqtwebengine=5.12.1=py39h0fcd23e_8
- pyrsistent=0.18.1=py39h3811e60_0
- python=3.9.10=h85951f9_2_cpython
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python-xxhash=2.0.2=py39h3811e60_1
- python_abi=3.9=2_cp39
- pytz=2021.3=pyhd8ed1ab_0
- pyzmq=22.3.0=py39h37b5a0c_1
- qt=5.12.9=ha98a1a1_5
- re2=2021.11.01=h9c3ff4c_0
- readline=8.1=h46c0cb4_0
- rich=11.1.0=pyhd8ed1ab_0
- s2n=1.3.0=h9b69904_0
- scipy=1.8.0=py39hee8e79c_0
- scitokens-cpp=0.6.3=h00015f2_2
- send2trash=1.8.0=pyhd8ed1ab_0
- setuptools=60.8.1=py39hf3d152e_0
- six=1.16.0=pyh6c4a22f_0
- snappy=1.1.8=he1b5a44_3
- sqlite=3.37.0=h9cd32fc_0
- stack_data=0.1.4=pyhd8ed1ab_0
- terminado=0.13.1=py39hf3d152e_0
- testpath=0.5.0=pyhd8ed1ab_0
- tk=8.6.11=h27826a3_1
- tomli=2.0.0=pyhd8ed1ab_1
- tornado=6.1=py39h3811e60_2
- tqdm=4.62.3=pyhd8ed1ab_0
- traitlets=5.1.1=pyhd8ed1ab_0
- typed-ast=1.5.2=py39h3811e60_0
- typing-extensions=4.0.1=hd8ed1ab_0
- typing_extensions=4.0.1=pyha770c72_0
- tzdata=2021e=he74cb21_0
- uhi=0.3.1=pyhd8ed1ab_0
- unicodedata2=14.0.0=py39h3811e60_0
- uproot=4.1.9=py39hf3d152e_1
- uproot-base=4.1.9=pyhd49a682_1
- uproot3=3.14.4=pyhd8ed1ab_0
- uproot3-methods=0.10.1=pyhd8ed1ab_0
- wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- wheel=0.37.1=pyhd8ed1ab_0
- xorg-libxau=1.0.9=h7f98852_0
- xorg-libxdmcp=1.1.3=h7f98852_0
- xrootd=5.4.0=py39hf708bbc_0
- xxhash=0.8.0=h7f98852_3
- xz=5.2.5=h516909a_1
- zeromq=4.3.4=h9c3ff4c_1
- zipp=3.7.0=pyhd8ed1ab_1
- zlib=1.2.11=h36c2ea0_1013
- zstandard=0.17.0=py39h3811e60_0
- zstd=1.5.2=ha95c52a_0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment