Skip to content

Instantly share code, notes, and snippets.

@lgray
Last active December 30, 2019 17:12
Show Gist options
  • Save lgray/8c6fb825a76729258d2016008a86b13b to your computer and use it in GitHub Desktop.
Save lgray/8c6fb825a76729258d2016008a86b13b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"List{ \n",
" Rec#6(0){ \n",
" third = Rec#8(0 4){ \n",
" pt = Value#8(0 4){ 5 }\n",
" charge = Value#8(0 4){ 1 }\n",
" mass = Value#8(0 4){ 10 }\n",
" }\n",
" }\n",
" Rec#6(2){ \n",
" third = Rec#8(2 1){ \n",
" pt = Value#8(2 1){ 50 }\n",
" charge = Value#8(2 1){ -1 }\n",
" mass = Value#8(2 1){ 15 }\n",
" }\n",
" }\n",
" Rec#6(3){ \n",
" third = Rec#7(3 3){ \n",
" pt = Value#7(3 3){ 9.9 }\n",
" charge = Value#7(3 3){ -1 }\n",
" iso = Value#7(3 3){ 4 }\n",
" }\n",
" }\n",
"}\n"
]
},
{
"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": [
"from awkwardql import data, interpreter, interface\n",
"\n",
"events = data.RecordArray({\n",
" \"muons\": data.ListArray([0, 3, 3, 5], [3, 3, 5, 9], data.RecordArray({\n",
" \"pt\": data.PrimitiveArray([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]),\n",
" \"charge\": data.PrimitiveArray([-1, 1, -1, 1, -1, 1, -1, 1, -1]),\n",
" \"iso\": data.PrimitiveArray([0, 0, 100, 50, 30, 1, 2, 3, 4])\n",
" })),\n",
" \"electrons\": data.ListArray([0, 5, 6, 8], [5, 6, 8, 12], data.RecordArray({\n",
" \"pt\": data.PrimitiveArray([1, 2, 3, 4, 5, 100, 30, 50, 1, 2, 3, 4]),\n",
" \"charge\": data.PrimitiveArray([1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1]),\n",
" \"mass\": data.PrimitiveArray([10, 10, 10, 10, 10, 5, 15, 15, 9, 8, 7, 6])\n",
" })),\n",
" \"met\": data.PrimitiveArray([100, 200, 300, 400])\n",
" })\n",
"\n",
"events.setindex()\n",
"event_data = data.instantiate(events)\n",
"\n",
"@interface.query\n",
"def third_not_in_z():\n",
" r\"\"\"\n",
" def mass(one, two) {\n",
" 91.2 + one.pt + two.pt # yes this is just a stand in\n",
" }\n",
"\n",
" third = {\n",
" leptons = electrons union muons\n",
" Z = electrons as (lep1, lep2) union muons as (lep1, lep2) \n",
" where lep1.charge != lep2.charge \n",
" min by abs(mass(lep1, lep2) - 91.2)\n",
" leptons where count(leptons) >= 3 except [?Z.lep1, ?Z.lep2] max by pt\n",
" }\n",
"\n",
" hist ?third.pt by regular(100, 0, 250) named \"third_pt\" titled \"Leading other lepton pT\"\n",
" \"\"\"\n",
"\n",
"output, counter = third_not_in_z(event_data)\n",
"\n",
"print(output)\n",
"\n",
"counter[\"third_pt\"].mpl()"
]
},
{
"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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment