{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Coffea Plotting Demo" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/anovak/mplhep/mplhep/__init__.py:31: MatplotlibDeprecationWarning: \n", "The createFontList function was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use FontManager.addfont instead.\n", " font_list = fm.createFontList(font_files)\n" ] } ], "source": [ "from __future__ import print_function, division\n", "\n", "import numpy as np\n", "import uproot\n", "import uproot_methods\n", "import awkward\n", "\n", "# histogram creation and manipulation\n", "from coffea import hist\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " % Total % Received % Xferd Average Speed Time Time Time Current\n", " Dload Upload Total Spent Left Speed\n", "100 212k 100 212k 0 0 1097k 0 --:--:-- --:--:-- --:--:-- 1097k\n" ] } ], "source": [ "# let's borrow some example data from uproot\n", "# See https://mybinder.org/v2/gh/scikit-hep/uproot/master?filepath=binder%2Ftutorial.ipynb\n", "!curl -O http://scikit-hep.org/uproot/examples/HZZ.root" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "fin = uproot.open(\"HZZ.root\")\n", "tree = fin[\"events\"]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Avg. electrons/event: 0.07063197026022305\n", "Avg. muons/event: 1.579925650557621\n" ] } ], "source": [ "# let's build the lepton arrays back into objects\n", "# in the future, some of this verbosity can be reduced\n", "arrays = {k.replace('Electron_', ''): v for k,v in tree.arrays(\"Electron_*\", namedecode='ascii').items()}\n", "p4 = uproot_methods.TLorentzVectorArray.from_cartesian(\n", " arrays.pop('Px'),\n", " arrays.pop('Py'),\n", " arrays.pop('Pz'),\n", " arrays.pop('E'),\n", ")\n", "electrons = awkward.JaggedArray.zip(p4=p4, **arrays)\n", "\n", "arrays = {k.replace('Muon_', ''): v for k,v in tree.arrays(\"Muon_*\", namedecode='ascii').items()}\n", "p4 = uproot_methods.TLorentzVectorArray.from_cartesian(\n", " arrays.pop('Px'),\n", " arrays.pop('Py'),\n", " arrays.pop('Pz'),\n", " arrays.pop('E'),\n", ")\n", "muons = awkward.JaggedArray.zip(p4=p4, **arrays)\n", "\n", "print(\"Avg. electrons/event:\", electrons.counts.sum()/tree.numentries)\n", "print(\"Avg. muons/event:\", muons.counts.sum()/tree.numentries)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'p4': TLorentzVector(-82.592, 41.093, -363.75, 375.27),\n", " 'Charge': -1,\n", " 'Iso': 1.0901432037353516},\n", " {'p4': TLorentzVector(4.1628, -23.219, -66.384, 70.45),\n", " 'Charge': 1,\n", " 'Iso': 4.6292033195495605}]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show electrons in the first event with some\n", "electrons[electrons.counts > 0][0].tolist()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Two types of axes exist presently: bins and categories\n", "lepton_kinematics = hist.Hist(\"Events\",\n", " hist.Cat(\"flavor\", \"Lepton flavor\"),\n", " hist.Bin(\"pt\", \"$p_{T}$\", 19, 10, 100),\n", " hist.Bin(\"eta\", \"$\\eta$\", [-2.5, -1.4, 0, 1.4, 2.5]),\n", " )\n", "\n", "# Pass keyword arguments to fill, all arrays must be flat numpy arrays\n", "# User is responsible for ensuring all arrays have same jagged structure!\n", "lepton_kinematics.fill(flavor=\"electron\", pt=electrons['p4'].pt.flatten(), eta=electrons['p4'].eta.flatten())\n", "lepton_kinematics.fill(flavor=\"muon\", pt=muons['p4'].pt.flatten(), eta=muons['p4'].eta.flatten())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEICAYAAABI7RO5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAEx0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEucG9zdDIwMjcrZ2IwYTYyNDRjYywgaHR0cDovL21hdHBsb3RsaWIub3JnL3zNBJQAACAASURBVHic7d17nBTlne/xz5cRQW4RBFwEBMNiDN7QjKwENKjxElZBk5jFs9lDlCzmFYyaiwrJMYYQFq8YL8e4xBtxWV3WC6BGDXICBJOgowEFCYGI3EQHgQSIwjLM7/zRBTYwzHQx3dM9w/f9es2rq5+ueuY7PdC/qaeqnlJEYGZmlqtmxQ5gZmaNiwuHmZml4sJhZmapuHCYmVkqLhxmZpbKIcUOUB8dO3aMnj17FjuGmVmj8tprr30QEZ0OdPtGXTh69uxJRUVFsWOYmTUqklbWZ3sPVZmZWSouHGZmlooLh5mZpdKoj3GY2cFlx44drFmzhm3bthU7SqPQsmVLunXrRvPmzfParwuHmTUaa9asoW3btuw6m7K6urq4gUpYRLBx40ZWrlxJr169kJS3vl04zKzR2LZtGz179qSqqopNmzbhSVprFxFs2LCBt99+m3POOYeysrK89OvCYWaNzl/+8hck5e2DsClr1qwZb775Jl26dOHEE0/MT5956cXMrIFUV1dTXV1Ns2b++MqFJFq0aMGGDRvy1qffeTNrEnr06FHvPt58801mzpyZhzQZ06dPp3///gwdOpR58+Zx2WWX5a3vNCTldVjPQ1VWcGNuGkflpi317qdz+7ZMGHtjHhKZ1WzRokUsWLCAc889Ny/9TZkyhVtvvZUzzjiDefPm5aXP/amqquKQQxrmI92FwwquctMWTrjo6/XuZ9EzD+QhjR1MVqxYwQ033MAHH3xAq1atuPPOO+nduzdXXXUVLVq0YOnSpVRWVjJu3DjOOussbr75ZrZt28b8+fO55pprGDRoEFdffTUrV67ksMMOY+LEiRx//PHccsstrF27lnfeeYe1a9dy5ZVXMnLkyD2+92233cb8+fNZuXIlF1xwwR7F6PXXX+cHP/gB27Zto2XLltx999307t2b8847j7vvvpvjjjsOgCFDhvDjH/+YHj167DfHe++9x+rVq+nQoQOTJk1qkPfVhcPMmqzvfOc73H777fTq1YvXXnuN6667jmnTpgGwevVqZsyYwYoVK7j44ot59dVXGT16NAsWLOCWW24BYPTo0Zx44ok8+uijzJ07l1GjRjF79mwAli1bxrRp09i6dSunn346l19++R7XS1x33XX85je/YezYsZxyyil77HH07t2bZ555hkMOOYQ5c+Ywfvx4HnnkES655BKmTZvG6NGjee+993jvvffo27dvrTkWLlzIc889x2GHHdYwbyouHGbWRG3dupVXX32VESNG7G7bvn377uWhQ4fSrFkzevXqRY8ePVi2bNk+fcyfP5+HH34YgDPPPJONGzeyefNmAM4991xatGhBixYt6NixI+vXr+eoo47KKdvmzZsZNWoUb7/9NpLYsWMHABdffDFf+tKXGD16NNOnT2fo0KF15rjgggsatGiAC4eZNVERQbt27Xb/Zb63vS+Iq+kCuZoOKO9a79BDD93dVlZWRlVVVc7ZJkyYwMCBA/nFL37BqlWrdheILl260KFDBxYvXsy0adO444476szRqlWrnL9vvvisKjNrktq2bUuPHj2YPn06kPnwXbRo0e7XZ8yYQXV1NStWrGDlypX8/d//PW3atGHr1q271+nfvz9PPPEEAPPmzeOII46gbdu29c62efNmunTpAsBjjz22x2uXXHIJ99xzD5s3b6ZPnz4FzXGgXDjMrEn48MMPOfHEE3d/3Xfffdx///1MmTKFz33ucwwYMIDnn39+9/q9evViyJAh/NM//RO33347LVu2ZODAgSxdupRBgwbx9NNPc/3117NgwQLOPPNMxo0bx7333puXrN/61rcYN24cgwcP3mfalIsuuoinn356914IULAcB0qN+ZL98vLy8I2cSt+Iq6/P21lVD959ax4SWWO1ZMkSjj32WD744IN6nXp61VVXcd555zFkyJA8pitNK1asYP78+fTp04ezzjoLAEmvRUT5gfZZ8D0OSWWS/iDp2eR5B0kzJS1LHttnrTtG0nJJSyWdX+hsZmaWXkMcHL8GWAK0S56PBmZFxM2SRifPb5DUBxgGHA8cBbwk6diI2NkAGc3sIFLsoZ7GrqB7HJK6Af8IZF+5NRSYnCxPBi7Oan88IrZHxApgOdCvkPnMzCy9Qg9V/RS4Hsg++nNkRKwDSB47J+1dgdVZ661J2vYgaaSkCkkV69ev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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# looking at lepton pt for all eta\n", "lepton_pt = lepton_kinematics.integrate(\"eta\", overflow='under')\n", "\n", "ax = hist.plot1d(lepton_pt, overlay=\"flavor\", stack=True,\n", " fill_opts={'alpha': .5, 'edgecolor': (0,0,0,0.3)})\n", "# plot returns axis object like in seaborn, you can edit features afterwards using OO \n", "# e.g. maybe you really miss '90s graphics...\n", "ax.get_legend().shadow = True" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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PceLL74YQ0TxijPBVAHHJ7zvDbzb2DLu/g/gOWBMuOk9M+sFED6/H13IIiK5J1WCacnp9xsrzgSzAigzs1IzOxKYCCyuV2YxcHnYm2w4UOPu1WbW3cyOATCzo4B/AV5POGZS+HoSsAgRkRzzm9/8hqFDh1JeXs5VV1112Ej8hvb/4Q9/YMiQIQwePJjRo0dTWVnJnDlzuOOOOygvL+f5559n8uTJXHfddYwaNYobb7yR1atXM3z4cAYNGsSFF17Ihx9+CATT+N94440MHTqUE044geeff75Fv4PYxsG4+wEzuxZ4GigC7nf39WY2Ldw/B1gCjAO2ALuBKeHhvYD5YU+0NsCj7v5UuO8W4FEz+w7wFvDZFKgiIvXM+q/1bHh312HbN1R/ftvuT4OawMCZT39ue79eh8/l1e+fOvPjL/dv8DM3btzIggULeOGFF2jbti1XX3113RxhqfaPHTuWK6+8kj//+c+Ulpayc+dOunTpwrRp0+jUqRPXX389ECxQ9sYbb/DMM89QVFTEoEGDuOuuuxg5ciQzZsxg1qxZ/PznPweCGs4rr7zCkiVLmDVrFs8880yG31zzxTrQ0t2XECSRxG1zEl47cE2S49YApzRwzh3A6GgjFRGJzrJly1i1ahWnnXYaAHv27KFHjx5p97/00kucddZZlJaWAtClS5cGP+Piiy+mqKiImpoa/vGPfzBy5EgAJk2a9LmlBy666CIATj31VCorKyO9znQ0kl9E8lqqmkaiKGfRcHcmTZrET3/6089tr50ZoKH9ixcvTrocQDKZTr9fu1xAY5cKiILmIhMRidjo0aN57LHHeP/9oA/Szp07+fvf/552/+mnn86f/vQn/va3v9VtBw5bHiDRF77wBY499ti6+yu//vWv62oz2aYajIhIxPr168dPfvITzjvvPA4dOkTbtm25++670+4fPnw4c+fO5aKLLuLQoUP06NGDpUuX8uUvf5kJEyawaNEi7rrrrsM+b/78+UybNo3du3fTt29f5s2b15KX2yBN159jcmmyy1yKRaQxmjJdf6H/f49jun7VYEREKNzEEifdgxERkVgowYiISCyUYEREJBZKMCIiEgslGBERgHnnBw+JjBKMiIjEQglGRERioQQjIhKDyspKTjrpJK644goGDBjAN7/5TZ555hlGjBhBWVkZr7zyCjNnzuS2226rO2bA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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Clearly the yields are much different, are the shapes similar?\n", "lepton_pt.label = \"Density\"\n", "ax = hist.plot1d(lepton_pt, overlay=\"flavor\", density=True)\n", "# ...somewhat, maybe electrons are a bit softer" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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v1xP01fqWf8h4KGw4hGR/Hb06FFOPvlk1q5dG7e97gijeCOOPM7EdjXrtW7dunZZQUFBUn0M3//+9xkxYgTPPfcc5eXllJaWAtCjRw86d+7M+vXrmTdvHj//+c8bjaNt27YJHzcsKjkiInmhQ4cO9OrViwULFgCRk++6detq2xcsWMDRo0f505/+xNatWznzzDNp3749+/fvr13noosuYu7cuQAsXbqULl260KFDh5Rjq6yspEePyEDR2bNnH9N23XXXMXnyZCorK+nXr1+ocQRFiUNEctLBgwcpLCys/ZgyZQpz585lxowZ9O/fn759+7Jw4cLa9c8880yGDx/O5ZdfzrRp02jTpg0jRoxg48aNtZ3jDzzwAGVlZRQXF3PPPfcwZ86cQGK9++67uffee7nggguorj72LvyYMWN4+umnGTduXO2ysOIISk7POV5SUuKaj0Mkf7z99tucffbZge93woQJXHnllYwZMybwfWe7eO+pma1y95Km7lNXHCIikhRVxxWRvFe3X0FSoysOERFJihKHiIgkRYlDRESSosQhIiJJUeIQEZGkaFSViGSt4ZeMYntF3ELZTdKz8FReXfxSYPtrrpQ4RCRrba/YQd9bpwa2vw1Tb210nfLyckaNGsUXvvAFli9fTv/+/fna177G/fffz65du5g7dy4vvPAC7dq14zvf+Q4A5557LosWLaKoqIgpU6Ywc+ZMAG6++Wa+9a1vUV5ezuWXX84XvvAF3njjDXr06MHChQszXqywqXSrSkSkji1btnDnnXeyfv163nnnHf7rv/6LZcuW8eijj/Lwww/Xu92qVauYNWsWb775JsuXL+cXv/gFa9asAWDz5s3cdtttbNiwgZNPPrm2+m0uUuIQEamjV69e9OvXjxYtWtC3b19GjhyJmdGvXz/Ky8vr3W7ZsmX84z/+I23btqVdu3aMHj2aP/zhD7X7HDBgAACDBw9ucD/ZLrTEYWYzzWxXdO6Num3fMTM3sy4xy+41sy1mtsnMLgsrrmxX3y9TeXk5kydPbnK7iCQutoR6ixYtal+3aNGCI0eO0LJlS44ePVq7zqFDh4D45dDj7TPZsuzZJswrjtnAqLoLzawncAnwXsyyc4DriMwEOAqYamYFIcaWtYqKio5bVl5ezvz58xk3blyT2kUkWEVFRaxevRqA1atXs23bNiBSDv03v/kN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\n", "text/plain": [ "<Figure size 432x1152 with 4 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's stack them, after defining some nice styling\n", "stack_fill_opts = {'alpha': 0.8, 'edgecolor':(0,0,0,.5)}\n", "stack_error_opts = {'label':'Stat. Unc.', 'hatch':'///', 'facecolor':'none', 'edgecolor':(0,0,0,.5), 'linewidth': 0}\n", "# maybe we want to compare different eta regions\n", "# plotgrid accepts row and column axes, and creates a grid of 1d plots as appropriate\n", "ax = hist.plotgrid(lepton_kinematics, row=\"eta\", overlay=\"flavor\", stack=True,\n", " fill_opts=stack_fill_opts,\n", " error_opts=stack_error_opts,\n", " )" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Add some pseudodata to a pt histogram so we can make a nice data/mc plot\n", "pthist = lepton_kinematics.sum('eta')\n", "bin_values = pthist.axis('pt').centers()\n", "poisson_means = pthist.sum('flavor').values()[()]\n", "values = np.repeat(bin_values, np.random.poisson(poisson_means))\n", "pthist.fill(flavor='pseudodata', pt=values)\n", "\n", "# Set nicer labels, by accessing the string bins' label property\n", "pthist.axis('flavor').index('electron').label = 'e Flavor'\n", "pthist.axis('flavor').index('muon').label = r'$\\mu$ Flavor'\n", "pthist.axis('flavor').index('pseudodata').label = r'Pseudodata from e/$\\mu$'\n", "\n", "# using regular expressions on flavor name to select just the data\n", "# another method would be to fill a separate data histogram\n", "import re\n", "notdata = re.compile('(?!pseudodata)')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/anovak/mplhep/mplhep/plot.py:189: MatplotlibDeprecationWarning: Saw kwargs ['ls', 'linestyle'] which are all aliases for 'linestyle'. Kept value from 'linestyle'. Passing multiple aliases for the same property will raise a TypeError in 3.3.\n", " label=_labels[0], **kwargs)\n" ] }, { "data": { "image/png": "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QERiRaQV1jHYV2s5flUDKktG9913n9dbfmPvLTuE73l81S1XStVdPkuoxpgCY8yJkhfWbtxzxphsY0w2MAKYBfwEJACjHKovwno7zZfAXqyJeFGtvgHlde4ko1atWnm95Xf71IfcOq6oqFCTqVLKJX+5DxVjTGqZ7U+Bji6ONcB020vVA3Wh5Zebk+PX8SmlfMvXs3yVAvD7ZArW5Qz9OT6llG9pQlV+wd+TKThfztCf4lNK+ZYmVOUX/D2ZOuONbmqlVP2hCVV5xBu3tlRWXleTaWpqqt6HqlQA8ptJSaruqOkJRP7e8qvs+jNnziQ0NNSv7kO97sYh/HjkWK1dr/Wlrdj8ybpau54zqampvP322+zdu9encajAoQlVVVlVkl1qaiqpqakuyyur72l5TXE3mftby/rHI8focu/fa+16+xbU/KPMUlNTmTlzZrn97733HsOHD6/x6ytVliZUVWVVSRYzZ860J9TabLm+8c/l5cqrrUFDel/bl4jISKfnLyoqJDcnB4Bhw3/lstyxfmREBFs3b/R+rAHiyiuvZNOmTaX2NW/e3DfBuHD+/HkaNWrk6zBULdCEqqrMX7t5a7rll3B9klsPJx9/wy/KPTrO1cPLa/MZpf7MGMNzzz3HokWLOHbsGHFxcTz88MOMGzeuwnoNGzYkJibGrWt88cUXPProo+zatYuioiK6d+/Oc889R58+fQAYPXo0RUVFvPPOO/Y6xcXFtGnThgceeID777+fwsJCHn74YZYtW0Zubi49evRg7ty59OvXD4BNmzYxaNAgPvzwQ1JTU8nMzOTdd9/l5ptv9vAro+oSTaiq2ryRDAddn0hw48YVtvwqaxk6loeEhlf7fZXlTjL1pFzBY489xttvv82CBQu48sor2b59O3fffTfNmzdn6NChXrnGzz//zO233878+fMREV544QVuuukmvvnmG1q2bMm4ceMYMWIEOTk5REZGArB582aOHz/O6NGjAZg+fTorV65kyZIlXH755fz5z39myJAhfPPNN6UeMP7www8zb9484uLiaNq0qdN4VP2jCVVVizstQ3eSbXDjxvzt3X+VK/enZKXJtGbk5+fz5z//mY8//pj+/fsD0K5dO3bs2MGCBQsqTKgHDhwgPPx//zy1adOGffucPyfj+uuvL7X9/PPP884777Bu3TrGjRtHUlISzZo14513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bN26lU8++YTEROviH23atOGaa66xHzNw4EC+//57HnroIR56yPr1NcZw5swZpk6dytatWzlz5gyXX345KSkpTJgwAYDx48ezefNmNm/ezIIFCwA4fPiwV/4JKJGVlUW7du14++23WbhwIf/+979p27Yt8+fPL/W0moMHDzJ9+nQ2b96MxWKhW7duvPTSS3Tr1s1rsSjf8mWXrwEmA0eAn4C5wDRjzCrgcmAd8DOwF+u46miHuouA1cCXtvIPbftUJWp7AlFdaK0FktpIpitXrqxSTOHh4YSHh/PBBx9w7tw5p8e8++67XHrppTzxxBMcP37c/mDwc+fO0atXL9asWcO+ffu47777uOeee9iwYQMA8+fPp0+fPkyYMMFer3Xr1lWKz12PPvoov//979m9ezfXXHMNo0aNIi8vD4Bjx47Rr18/RIRPPvmEXbt2ce+992KxWGokFuUbPmuhGmOygetclC0DllVQ1wDTbS/lJl88vNvfW2uBpLaS6ciRI6sUV8OGDXn11Ve5++67eemll+jZsyd9+/bltttuIyEhAYAWLVoQFBRE06ZNiYmJsdeNjY21t1gBJk2axL/+9S+WLVtGYmIiERERBAcHExoaWqpeTbj//vsZNmwYAM888wyvv/46mZmZ9OvXjwULFhAWFsZbb71lf6h5hw4dajQeVfv8YlKSqnn+/vBuVbNqM5l60p06YsQIjh07xurVq0lOTuazzz6jd+/ePPPMMxXWs1gszJo1i+7du3PRRRcRHh7Ou+++yw8/1P6tWN27d7d/3qqV9QHrp2xPWMrIyKBfv372ZKrqJ02oAaCytXdLkuXpUyd0TLWe8udkWqJx48bceOONPPHEE3z22WfcddddpKamUlRU5LLO3LlzmTdvHg899BAbNmwgMzOT4cOHV1jHXc2aWW8kyC0zoQ+s474RERGl9jWyPQwCrA+XBygueSaw3oAQEDShBgB31t7tn3wLq95YXGG5JtO6y9+TqTOdO3fmwoUL9nHV4ODgcmOO27ZtY9iwYdx+++306NGD9u3b8/XXX5c6xlk9d1xxxRU0aNCAnTt3ltr/3XffkZuby5VXXun2uXr16sW2bdu8kuiV/9KEGgB07V3lz8n0zJkzXH/99bz55pvs2bOHw4cP89ZbbzFnzhwSExPtLcW2bduydetWjh49ar83tEOHDmzYsIFt27Zx8OBBpk6dyuHDh8u99x07dpCVlcXp06ftrcaOHTvywgsvuIyradOmTJw4kYceeohVq1Zx+PBhtmzZwtixY0lISKB///5uv8cpU6aQl5fHyJEj+eKLL/j2229ZtmwZmZmZALz33nt07NiRo0ePVulrp/yLJtQAoGvvKmfatm3L9OnTXSbD6pa7Kzw8nN69ezN//nyuu+46unTpwh/+8AfGjBnDihUr7Mf98Y9/5Mcff6R9+/aUrHr22GOP8Ytf/ILk5GQGDBhAWFgYY8eOLXX+lJQUgoOD6dy5M1FRUfbx1a+++srpog2O5s+fz5133smMGTPo0qULd9xxB926dWPNmjVUS/4XkAAAIABJREFU5QFXsbGxbNmyhaKiIgYNGkTPnj15/vnnadjQOi80NzeXr776ivPnz7t9TuV/JJD69uPj4016erqvw6h13Xr0cus+1CGdYlh34IQm01qUMiqZLzN3efWcBw4coFOnTl49p1J1XUW/FyKy0xgTX91raAs1wOhC9kopVTP8belBVcPcWS7QneUElVJKlaYtVKWUUsoLNKEqLBYLaRs/BiBt48e6HJpSSnlAE2qAs1gsPDpxFM+mTAbg2ZTJPDpxlCbVWlJUVKjPI1WqntCEGuDSt2zg4J5dnCvIB+BcQT4H9+wkfcsGH0cWGHJzcnx+H6hSyjs0oQa4bw/spfBsQal9hWfPcuigPl62NkRERmoyVaqe0IQa4OI6dSWkSWipfSFNmtC+YxcfRRRYnC26oclUqbpJE2qAix+QSMfuvWgcak2qjUND6dj9auIHJPo4ssCkyVSpuksTaoALCgpi1uLlPDJ3IQCPzF3IrMXLCQoK8nFkgccba+t6W2pqqtfPqVR9pQlVERQURMKgwQAkDBqsydQHvLVQvbfNnDnT6+dUqr7ShKqUj3nzqS/K+26++WbGjx/v83N4qri4mHvuuYeLLroIEWHTpk0+iSMQaEJVyoeKigr94hFq/mD8+PGICCJCo0aNuPzyy0lJSSE/P9/XofnEwIEDmTrV9TKg7vroo4945ZVXWL16NcePH+faa6/1QnS157e//S3333+/r8NwiyZUpXzIX+9DtVgsrFmzBoA1a9bU2kIfN9xwA8ePH+e7777j6aef5u9//zspKSm1cu366ttvv+WSSy7h2muvJSYmhuDg4HLH+OuDz40xrF69mltvvdXXobhFE6pSPuSP96FaLBaSkpIYPXo0AKNHjyYpKalWkmpISAgxMTG0bt2aMWPGMHbsWN5//30AtmzZQu/evQkPDyciIoKEhAT27t0LWP/wzpkzh/bt29OkSRO6devGm2++Werczlp848eP5+abb7ZvFxQUMH78eMLDw4mOjuaZZ54pF2NhYSHTpk0jOjqaxo0b07t3b7Zt21alc6xbt47+/fvTvHlzWrRoQVJSEgcOHCgV1+bNm1mwYIG91Z6VlVVpvbLGjx/P/fffzw8//ICI2H9WBg4cyOTJk0lJSSEqKoq+ffu69d5K6j344IO0aNGCqKgo5s+fT2FhIffeey+RkZFcdtllvPHGGy5jAve+XwBffPEF586do1+/fgBs376dBg0akJeXZz/mp59+QkTYvXt3hdesDT5NqCLypogcF5H/isjXIjLRoSxRRA6KSIGIbBSRNg5lIiKzReSM7TVHqvK0X6X8RNPIi+jWo1ep15Wdu9D72r68/OprDBv+qyqV979uULVjWrt2LWlpafY/Wnl5eaSlpbF27dpKanpfkyZNOH/+PBcuXODWW2+lX79+7N69m7S0NO677z77BLrHHnuMl19+mQULFrB//34eeeQR7rnnHj788MMqXS8lJYVPPvmEd955hw0bNpCRkcGWLVtKHTN9+nRWrFjBkiVLyMjIoFu3bgwZMoTjx4+7fY78/HymTZvGjh072LRpExEREQwbNszeUpw/fz59+vRhwoQJHD9+nOPHj9O6detK65U1f/58nnjiCS699FKOHz/OF198YS978803McawdetWXn/9dbfeG8DSpUtp2rQpaWlpzJgxg2nTpjF8+HA6dOhAeno6d9xxBxMnTuTYsWMuv87ufr/ef/99hg4dan8Qe2ZmJldccQXh4eH2YzIyMuwPkPc1Xz++7VngLmNMoYh0BDaJSAbwPfAuMBFYDTwFrAB62+pNAoYDVwEG+AT4DlhYu+ErVT2zlrxVaru6z6tNGZVc7ZgyMjLKjVvm5+eTmZlZqjVX03bs2ME///lPEhMT+e9//0tOTg7Dhg2jffv2AHTs2NEe25///Gc+/vhj+vfvD0C7du3YsWMHCxYsYOjQoW5dLy8vj5dffpklS5aQlJQEwCuvvMKll15qPyY/P58XX3yRxYsX28+7cOFC/vWvf7FgwQJmzJhR6TkARowYUWr7lVde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\n", "text/plain": [ "<Figure size 504x504 with 2 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# make a nice ratio plot\n", "plt.rcParams.update({\n", " 'font.size': 14,\n", " 'axes.titlesize': 18,\n", " 'axes.labelsize': 18,\n", " 'xtick.labelsize': 12,\n", " 'ytick.labelsize': 12\n", "})\n", "fig, (ax, rax) = plt.subplots(2, 1, figsize=(7,7), gridspec_kw={\"height_ratios\": (3, 1)}, sharex=True)\n", "fig.subplots_adjust(hspace=.07)\n", "\n", "# Here is an example of setting up a color cycler to color the various fill patches\n", "# http://colorbrewer2.org/#type=qualitative&scheme=Paired&n=6\n", "from cycler import cycler\n", "colors = ['#a6cee3','#1f78b4','#b2df8a','#33a02c','#fb9a99','#e31a1c']\n", "ax.set_prop_cycle(cycler(color=colors))\n", "\n", "fill_opts = {\n", " 'edgecolor': (0,0,0,0.3),\n", " 'alpha': 0.8\n", "}\n", "error_opts = {\n", " 'label':'Stat. Unc.',\n", " 'hatch':'///',\n", " 'facecolor':'none',\n", " 'edgecolor':(0,0,0,.5),\n", " 'linewidth': 0\n", "}\n", "data_err_opts = {\n", " 'linestyle':'none',\n", " 'marker': '.',\n", " 'markersize': 10.,\n", " 'color':'k',\n", " 'elinewidth': 1,\n", "}\n", "\n", "hist.plot1d(pthist[notdata], \n", " overlay=\"flavor\", \n", " ax=ax,\n", " clear=False,\n", " stack=True, \n", " line_opts=None,\n", " fill_opts=fill_opts,\n", " error_opts=error_opts\n", " )\n", "hist.plot1d(pthist['pseudodata'],\n", " overlay=\"flavor\",\n", " ax=ax,\n", " clear=False,\n", " error_opts=data_err_opts\n", " )\n", "\n", "ax.autoscale(axis='x', tight=True)\n", "ax.set_ylim(0, None)\n", "ax.set_xlabel(None)\n", "leg = ax.legend()\n", "\n", "hist.plotratio(pthist['pseudodata'].sum(\"flavor\"), pthist[notdata].sum(\"flavor\"), \n", " ax=rax,\n", " error_opts=data_err_opts, \n", " denom_fill_opts={},\n", " guide_opts={},\n", " unc='num'\n", " )\n", "rax.set_ylabel('Ratio')\n", "rax.set_ylim(0,2)\n", "\n", "coffee = plt.text(0., 1., u\"☕\",\n", " fontsize=28, \n", " horizontalalignment='left', \n", " verticalalignment='bottom', \n", " transform=ax.transAxes\n", " )\n", "lumi = plt.text(1., 1., r\"1 fb$^{-1}$ (?? TeV)\",\n", " fontsize=16, \n", " horizontalalignment='right', \n", " verticalalignment='bottom', \n", " transform=ax.transAxes\n", " )" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# ok lets make some Z candidates\n", "ee_cands = electrons.choose(2)\n", "mm_cands = muons.choose(2)\n", "\n", "# filter opposite-sign\n", "good_ee = ee_cands.i0['Charge'] + ee_cands.i1['Charge'] == 0\n", "ee_p4 = ee_cands.i0['p4'] + ee_cands.i1['p4']\n", "good_mm = mm_cands.i0['Charge']*mm_cands.i1['Charge'] == -1\n", "mm_p4 = mm_cands.i0['p4'] + mm_cands.i1['p4']" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# we can also use matplotlib builtin functions for histogramming, if preferred\n", "fig, ax = plt.subplots(1,1)\n", "_ = plt.hist(ee_p4.mass[good_ee].flatten(), bins=40)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0 3 15]\n", "[0 1]\n" ] } ], "source": [ "# for many plot styles, one can and should write the matplotlib routine themselves\n", "# let's make a scatter plot of the leading and subleading Z candidate (by delta-mass)\n", "# but first we have to calculate the right combinations (which is a bit difficult in pure columnar)\n", "\n", "# CAUTION: composing combinatorics does not check for duplicates!\n", "wrong = mm_cands.choose(2)\n", "print(np.unique(wrong.counts))\n", "\n", "zz_4e = electrons.choose(4)\n", "zz_4m = muons.choose(4)\n", "print(np.unique(zz_4m.counts))\n", "\n", "# for the ee+mm channel, composing is not an issue as the pairs are already mutually exclusive\n", "zz_2e2m = ee_cands.cross(mm_cands)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Max candidates/event: 1\n" ] } ], "source": [ "ZMASS = 91.1876\n", "\n", "def massmetric(cands, i, j):\n", " z1mass = (cands['%d' % i]['p4'] + cands['%d' % j]['p4']).mass\n", " k, l = set(range(4)) - {i, j}\n", " z2mass = (cands['%d' % k]['p4'] + cands['%d' % l]['p4']).mass\n", " deltam = np.abs(z1mass - ZMASS)\n", " deltaq = np.abs(cands['%d' % i]['Charge'] + cands['%d' % j]['Charge'])\n", " # inflate deltam to absurd number if charge sum is nonzero\n", " return z1mass, z2mass, deltam + 1e10*deltaq\n", " \n", "\n", "def bestcombination(zzcands):\n", " good_charge = sum(zzcands[str(i)]['Charge'] for i in range(4)) == 0\n", " good_event = good_charge.sum() == 1\n", " # this downselection keeps all events where exactly one candidate satisfies the requirement\n", " # but does not reduce the number of events, i.e. len(zz_4m) stays the same\n", " zzcands = zzcands[good_charge*good_event][:,:1]\n", " if zzcands.counts.sum() == 0:\n", " # empty array (because a bug in concatenate makes it fail on empty arrays)\n", " empty = awkward.JaggedArray.fromcounts(np.zeros(len(zzcands), dtype='i'), [])\n", " return empty, empty\n", " # now we have to check the permutations of leptons for closest mass to Z boson\n", " # only 4 of these 6 permutations are valid charge pairs, but its easier\n", " # to compare them all, and assign a large delta mass rather than figure out which\n", " # are valid beforehand\n", " z1mass = []\n", " z2mass = []\n", " iperm = []\n", " for i,j in [(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)]:\n", " z1, z2, idx = massmetric(zzcands, i, j)\n", " z1mass.append(z1)\n", " z2mass.append(z2)\n", " iperm.append(idx)\n", "\n", " z1mass = awkward.JaggedArray.concatenate(z1mass, axis=1)\n", " z2mass = awkward.JaggedArray.concatenate(z2mass, axis=1)\n", " iperm = awkward.JaggedArray.concatenate(iperm, axis=1)\n", " z1mass = z1mass[iperm.argmin()]\n", " z2mass = z2mass[iperm.argmin()]\n", " return z1mass, z2mass\n", "\n", " \n", "z1_4m, z2_4m = bestcombination(zz_4m)\n", "z1_4e, z2_4e = bestcombination(zz_4e)\n", "\n", "# for 2e2m its a bit simpler\n", "good_charge = (zz_2e2m.i0['Charge'] + zz_2e2m.i1['Charge'] == 0) & (zz_2e2m.i2['Charge'] + zz_2e2m.i3['Charge'] == 0)\n", "good_event = good_charge.sum() == 1\n", "zz_2e2m = zz_2e2m[good_event*good_charge][:,:1]\n", "za_2e2m, zb_2e2m, deltam_a = massmetric(zz_2e2m, 0, 1)\n", "_, _, deltam_b = massmetric(zz_2e2m, 2, 3)\n", "# this is a good place for awkward.where, but its not available yet\n", "z_2e2m = awkward.JaggedArray.concatenate([za_2e2m, zb_2e2m], axis=1)\n", "deltam = awkward.JaggedArray.concatenate([deltam_a, deltam_b], axis=1)\n", "z1_2e2m = z_2e2m[deltam.argmin()]\n", "z2_2e2m = z_2e2m[deltam.argmax()]\n", "\n", "# see if any events had candidates in multiple categories\n", "# this is extremely rare, but if it happens we would have again to choose a preferred category\n", "print(\"Max candidates/event:\", np.max(z1_4e.counts + z1_4m.counts + z1_2e2m.counts))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$Z_1$ mass [GeV]')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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2LGjL1q0KOE68b7X0qVL6623bds2z8rK8hdeeKFa+eeff+6XXXaZd+rUyffbbz//3ve+5+vWrYv7HH//+9/dzHzbtm1VZZs2bXLAS0tL64wpGb9zkdYAKPEkfAar59NE1m5fS9f2XffZ1m5fm7IYIpEIV111FdOmTWP27NmcfPLJCdWJ12uvvcaAAQOYN29enfW2bdtGJBKhqKioqmzlypUcd9xxdO/enUWLFrFgwQI2btzIqFGj4j5HaWkpvXr1Ij8/v6rsnXfeITc3l6OPPjrhdolI8in5ZKjKpDJjxgzmzJnDSSftu75fPHUaYtCgQdxzzz0MHTq0zgR07bXX0q9fP0488cSqslGjRjFixAgmT55M79696devH7fffjuvvPJK3OcoLS3luOOOq1bvnXfe4eijjyYnJ6dRbROR5EqbodYSv0gkwpVXXslzzz3H3LlzGThwYEJ1YlmwYEFco96GDh1KWVnZPuU33HADixYtYtGiRbRp0waATz/9lLlz57Jw4UKmTJlSVbeiooL27dvHdQ4Iks+FF15Yre7bb79Nv3794mqbiKSOkk+GiUQiDB8+nOeff77OxFNfndoMGDCA5cuX13p8zpw53HDDDdx77737HLv++ut5+umnefXVVznssMOqyktLSykoKOCtt97a5zW5ublxnSMSibB06VJ+/vOfV6tfUlLC6NGj426fiKSGkk8GiUQiDBs2jFmzZvHyyy9z/PHHJ1SnLu3bt+eoo2I/z7t48WLGjRvHww8/zNVXX13t2LXXXsvTTz/NggUL9nl9Tk4OZWVlHHjggdXu19RU1zk+/PBDduzYQbdu3arK3nvvPT766CP1fERaICWfJtItv1vMwQXd8rvFqN14kUiEyy+/nGeeeYZp06Zx8MEHs27dump1ioqKGDFiRJ11OnfunPD9kX79+jFt2jSGDBlSrfzHP/4xTz75JDNnzqSoqKjqPfPz88nPz+eEE06gqKiIyy67jDvuuIOCggJWrFjBzJkzuf/++8nKyqr3HKWlpQA88MADXH/99axatYrrrrsOgN27dyfUHhFpQskYMpeOW1MPtU61xYsXO1DnFk+dFStWJD222t7rzjvvrKrz5ptv+uDBg32//fbz/Px879u3r0+aNCnuc9x8881+1lln+Xnnnee5ubnep08fnzlzphcVFfmQIUPqjTEdf+cizYEk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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "common = {'linestyle': 'none', 'alpha': 0.7}\n", "ax.plot(z2_4e.flatten(), z1_4e.flatten(), marker='d', label=r'$ZZ^{*}\\to 4e$', **common)\n", "ax.plot(z2_4m.flatten(), z1_4m.flatten(), marker='o', label=r'$ZZ^{*}\\to 4\\mu$', **common)\n", "ax.plot(z2_2e2m.flatten(), z1_2e2m.flatten(), marker='s', label=r'$ZZ^{*}\\to 2e2\\mu$', **common)\n", "ax.legend(title='Channel')\n", "ax.set_xlim(0, 120)\n", "ax.set_ylim(60, 120)\n", "ax.set_xlabel('$Z_2$ mass [GeV]')\n", "ax.set_ylabel('$Z_1$ mass [GeV]')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/anovak/coffea/binder/coffea/hist/plot.py:45: RuntimeWarning: All sumw are zero! Cannot compute meaningful error bars\n", " warnings.warn(\"All sumw are zero! Cannot compute meaningful error bars\", RuntimeWarning)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEUCAYAAAAMdcB4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAEx0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEucG9zdDIwMjcrZ2IwYTYyNDRjYywgaHR0cDovL21hdHBsb3RsaWIub3JnL3zNBJQAACAASURBVHic7d15fFTV/f/x1wcIEJYICCKyCiKICKih1tZaQa0rxbqiaCW2YqV8i22tWqyKuFArrdoqIn4RW2SrSKtWFKsVcUNZlP4gQL+iiLIISAHZET6/P+4kTpJJMpPcySx5Px+PeYS598yZz8mEfHLuOfccc3dERESqq06qAxARkeyghCIiIqFQQhERkVAooYiISCiUUEREJBT1Uh1AmFq2bOmdOnVKdRgiIhll0aJFm929VXXryaqE0qlTJxYuXJjqMEREMoqZfRJGPbrkJSIioVBCERGRUCihiIhIKJRQREQkFEooIiISiqya5VWZ7du3s3HjRvbv35/qULJSTk4Ohx12GHl5eakORURSoNYklO3bt/P555/Ttm1bcnNzMbNUh5RV3J3du3ezdu1aACUVkVqo1lzy2rhxI23btqVRo0ZKJklgZjRq1Ii2bduycePGVIcjIilQaxLK/v37yc3NTXUYWS83N1eXFEVqqVqTUAD1TGqAvseSKpc99g6XPfZOqsOo1WpVQhERkeRRQhERkVAooSSJmTFz5sxUhxG3TItXRNKPEkoVff7554wYMYIuXbrQoEED2rZtyznnnMPs2bNTHZqISErUmvtQwrR69Wq+/e1v07RpU8aMGUPv3r05ePAgr776Kj/5yU9Ys2ZNqkMUEalx6qFUwbBhw3B3Fi5cyKWXXkq3bt045phjGD58OEuWLCkut2XLFi655BIaN25M586deeqpp0rUc8stt9CtWzdyc3Pp1KkTN910E3v27Ck+P2rUKHr27Mn06dPp0qULTZs25YILLmDz5s3FZYYMGcL555/PQw89RNu2bWnevDkFBQXs2rWruIy787vf/Y4uXbqQm5vLcccdVyYWEZHqUkJJ0JYtW3jppZcYPnw4TZo0KXO+efPmxf8ePXo0AwcOZMmSJVx22WVcc801fPLJ1/vYNG7cmCeeeILly5czbtw4pk+fzj333FOivtWrVzNjxgz+9re/8fLLL/P+++9z6623lijzxhtvsHTpUl555ZXisg899FDx+d/85jdMnDiRRx55hMLCQn79619z3XXX8cILL4T1bRERCf56zZbHiSee6OUpLCws91wi3n33XQd81qxZFZYD/JZbbil+vn//fs/NzfXJkyeX+5pHH33Uu3TpUvz8jjvu8AYNGvjWrVuLj919990lylx99dXerl07379/f/GxH//4x3766ae7u/uOHTu8YcOGPm/evBLvNWLECD/nnHNKxPv0009X2KZ4hfW9FknEpePf9kvHv53qMDISsNBD+B2sMZQEBd/7+PTq1av43/Xq1aNVq1YlliWZOXMmDz74IB9++CE7duzgwIEDHDhwoEQdHTt25JBDDil+fsQRR5RZ2qRHjx7Uq1evRJl3330XgMLCQvbs2cPZZ59d4qbD/fv306lTp7jbIiJSGSWUBHXt2hUzY/ny5fzgBz+osGxOTk6J52bGwYMHAZg/fz6DBg3ijjvu4IEHHqBZs2Y899xz3HjjjXHXEU+Zoq/PP/88HTp0qPB1IiLVoYSSoBYtWnDWWWfx8MMP87Of/azMOMrWrVtp1qxZpfW89dZbtG3blttuu634WPT4Slh69OhBgwYN+OSTT+jfv3/o9YuIFFFCqYJx48bxrW99i/z8fO666y569eqFu/Paa68xZsyYuKYNH3300axdu5YpU6Zw8sknM2fOHKZNmxZ6rE2bNuXGG2/kxhtvxN059dRT2bFjB/Pnz6dOnToMHTo09PcUkdpJCaUKjjzySBYvXsy9997LzTffzNq1azn00EPp3bs3jz32WFx1DBgwgF/96lfccMMN7N69m+9973uMHj2aYcOGhR7vXXfdRevWrRk7dizXX389eXl59OnTh5tuuin09xKR2ssSGWQO/c3NhgNDgOOAae4+JHL8m8BdwInAAWAu8DN3X19Rffn5+b5w4cKY55YvX84xxxwTVuhSAX2vJRWKVhqecd3JKY4k85jZInfPr249qb4PZR1wN/BEqePNgQlAJ6Aj8CUwqUYjExGRhKT0kpe7zwIws3ygXdTxF6PLmdnDwOs1G52IiCQi1T2UeJ0KLIt1wsyGmtlCM1u4adOmGg5LRESKpH1CMbNewO3Ar2Kdd/cJ7p7v7vmtWrWq2eBERKRYWicUMzsKeBEY4e5vpDoeEREpX9omFDPrCLwC3OXuk1Mdj4iIVCylg/JmVi8SQ12grpk1BL4CWgP/Ah5x9/EpDFFEROKU6hsbfwPcEfX8SuBOwIHOwB1mVnze3cuuF58Cmu8uIlJWqqcNjwJGlXP6zpqLREREqittx1BERCSzKKGkuTFjxtC3b1/y8vJo1aoVAwYMYOnSpQnVsWTJEi6//HLat29Pbm4u3bp14/777y+zDL6ISHWkegxFKjF37lyGDRtG3759cXduv/12zjjjDAoLC2nRokVcdSxatIhWrVoxefJkOnTowHvvvce1117L/v37GTlyZJJbICK1RaU9FDNrWxOBSGxz5syhoKCAnj17ctxxxzF58mQ2bdrEW2+9VVxm37593HzzzbRr147GjRvTt29f5syZU3z+mmuu4Y9//COnnXYanTt3ZtCgQVx//fU888wzxWWefPJJmjRpwosvvkj37t1p1KgR3//+99m2bRszZ86ka9euHHLIIVx11VXs3r27Rr8HIpIZ4umhrDazl4GJwHPu/lWSY6oxdz6/jMJ128s9X7g+9rlde4NvwXGj5sQ836NNXrl19jgijzsGHJtAlCV9+eWXHDx4kObNmxcfKygoYNWqVUydOpV27doxe/ZsBgwYwIIFC+jdu3fMerZv316iDoC9e/fy+9//nilTprBv3z4uuugiLr74Yho2bMgzzzzDF198wYUXXsi4ceP45S9/WeU2iEh2iiehvA2cHXl8YWaTgUnuntiFfAnFiBEj6NOnDyefHExZXrVqFdOmTWP16tXFW/wOHz6cV155hccee4xx48aVqWPx4sU8+eSTTJkypcTxr776ikceeYRu3boBcMUVV/DAAw/w+eef07JlSwAGDhzIa6+9poQiImVUmlDc/btm1hkoAH4I/By4wcwWECw7P93dy/8zP41VtaeQqvtQfvGLX/Dmm2/y5ptvUrduXSBIDu5Ojx49SpTdu3dvzC1/V65cyXnnnccNN9zARRddVOJcgwYNipMJQOvWrTn88MOLk0nRscLCwjCbJSJZIq5BeXf/CLjNzG4HziRILgOBR4E/mNkzwER3n5e0SGu5n//850yfPp3XXnuNzp07Fx8/ePAgZsaCBQvIyckp8Zrc3NwSz1esWEG/fv0YNGgQv/3tb8u8R716JX8czKxMnWam2WEiElNCs7w82N7xZeBlMzsEGEyQXK4CrjSzj4En3P3e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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# What a curious sample, it looks like more of a ZZ background sample\n", "# Let's check the 4l mass\n", "\n", "# for some reason, sum(...) doesn't work, try another route\n", "from functools import reduce\n", "from operator import add\n", "\n", "hmass = hist.Hist(\"Events / 20 GeV\",\n", " hist.Cat(\"channel\", \"Channel\"),\n", " hist.Bin(\"mass\", r\"$m_{ZZ^{*}}$ [GeV]\", 15, 0, 300)\n", " )\n", "hmass.fill(channel=\"4e\", mass=reduce(add, (zz_4e[str(i)]['p4'] for i in range(4))).mass.flatten())\n", "hmass.fill(channel=\"4m\", mass=reduce(add, (zz_4m[str(i)]['p4'] for i in range(4))).mass.flatten())\n", "hmass.fill(channel=\"2e2m\", mass=reduce(add, (zz_2e2m[str(i)]['p4'] for i in range(4))).mass.flatten())\n", "\n", "ax = hist.plot1d(hmass, overlay='channel')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }