diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1353c5d0..0f31195d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,4 +66,4 @@ jobs: --durations=20 - name: Upload coverage report - uses: codecov/codecov-action@v4.4.1 + uses: codecov/codecov-action@v4.5.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 466ba796..dea80fd6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,19 +5,19 @@ ci: repos: - repo: https://github.com/psf/black-pre-commit-mirror - rev: "24.3.0" + rev: "24.4.2" hooks: - id: black-jupyter args: [--line-length=100] - repo: https://github.com/adamchainz/blacken-docs - rev: "1.16.0" + rev: "1.18.0" hooks: - id: blacken-docs additional_dependencies: [black==23.*] - repo: https://github.com/pre-commit/pre-commit-hooks - rev: "v4.5.0" + rev: "v4.6.0" hooks: - id: check-added-large-files args: ["--maxkb=2000"] @@ -48,7 +48,7 @@ repos: # args: [--prose-wrap=always] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.3.4" + rev: "v0.5.0" hooks: - id: ruff args: ["--fix", "--show-fixes"] @@ -64,7 +64,7 @@ repos: # - pytest - repo: https://github.com/codespell-project/codespell - rev: "v2.2.6" + rev: "v2.3.0" hooks: - id: codespell types_or: [python, rst, markdown] @@ -84,13 +84,13 @@ repos: # exclude: .pre-commit-config.yaml - repo: https://github.com/abravalheri/validate-pyproject - rev: "v0.16" + rev: "v0.18" hooks: - id: validate-pyproject additional_dependencies: ["validate-pyproject-schema-store[all]"] - repo: https://github.com/python-jsonschema/check-jsonschema - rev: "0.28.1" + rev: "0.28.6" hooks: - id: check-dependabot - id: check-github-workflows diff --git a/inference_scans/run_law.sh b/inference_scans/run_law.sh index 2d4c6a8a..0734ee1f 100755 --- a/inference_scans/run_law.sh +++ b/inference_scans/run_law.sh @@ -112,9 +112,9 @@ while true; do shift done -# export DHI_CMS_POSTFIX="Supplementary" +export DHI_CMS_POSTFIX="" -common_args="--file-types pdf,png --unblinded $unblinded --version $VERSION $printdeps --remove-output $rmoutput,a,y --campaign run2 --use-snapshot True --cms-postfix Preliminary" +common_args="--file-types pdf,png --unblinded $unblinded --version $VERSION $printdeps --remove-output $rmoutput,a,y --campaign run2 --use-snapshot True" custom_args="--rMax 200 --setParameterRanges r_qqhh=-40,1000:r_gghh=-40,200" diff --git a/paper/limit_plots.ipynb b/paper/limit_plots.ipynb index 27331257..b2961506 100644 --- a/paper/limit_plots.ipynb +++ b/paper/limit_plots.ipynb @@ -11,6 +11,7 @@ "import matplotlib.patches as patches\n", "import matplotlib.ticker as mticker\n", "import mplhep as hep\n", + "import numpy as np\n", "\n", "plt.style.use(hep.style.CMS)\n", "hep.style.use(\"CMS\")\n", @@ -26,7 +27,7 @@ "source": [ "from pathlib import Path\n", "\n", - "plot_dir = Path(\"plots/Limits/24Jun2\")\n", + "plot_dir = Path(\"plots/Limits/24Jun5\")\n", "plot_dir.mkdir(parents=True, exist_ok=True)" ] }, @@ -36,17 +37,32 @@ "metadata": {}, "outputs": [], "source": [ - "observed_values = [142, 1.1]\n", - "expected_medians = [69, 0.9]\n", - "expected_68_lows = [50, 0.7]\n", - "expected_68_highs = [80, 1.1]\n", - "expected_95_lows = [40, 0.5]\n", - "expected_95_highs = [100, 1.3]\n", + "limits = [\n", + " # 95%-, 68%-, 50%, 68%+, 95%+, observed\n", + " [32.9, 45.9, 69.1, 113, 182, 142],\n", + " [0.413, 0.585, 0.903, 1.48, 2.4, 1.06],\n", + "]\n", + "\n", + "limits = np.array(limits)\n", + "\n", + "observed_values = limits[:, 5]\n", + "expected_medians = limits[:, 2]\n", + "expected_68_lows = limits[:, 1]\n", + "expected_68_highs = limits[:, 3]\n", + "expected_95_lows = limits[:, 0]\n", + "expected_95_highs = limits[:, 4]\n", "\n", "limit_labels = [\n", " r\"$\\sigma(pp \\rightarrow HH)$ $(\\kappa_{2V} = 1)$\",\n", " r\"$\\sigma(pp \\rightarrow qqHH)$ $(\\kappa_{2V} = 0)$\",\n", - "]" + "]\n", + "\n", + "\n", + "def format_limit(number):\n", + " if number > 10:\n", + " return f\"{number:.0f}\" # No decimals\n", + " else:\n", + " return f\"{number:.1f}\" # One decimal" ] }, { @@ -64,7 +80,7 @@ "y_lim = top_space + limit_height * len(observed_values)\n", "dashed = (0, (2, 2))\n", "\n", - "xlims = [0.1, 200]\n", + "xlims = [0.1, 250]\n", "\n", "\n", "plt.rcParams.update({\"text.usetex\": False, \"font.size\": 24})\n", @@ -129,7 +145,7 @@ " ax.text(\n", " textx,\n", " y_label - 0.06,\n", - " f\"Expected: {expected_medians[i]}\\nObserved: {observed_values[i]}\",\n", + " f\"Expected: {format_limit(expected_medians[i])}\\nObserved: {format_limit(observed_values[i])}\",\n", " verticalalignment=\"center\",\n", " horizontalalignment=\"left\",\n", " transform=ax.get_yaxis_transform(),\n", @@ -190,12 +206,20 @@ "# Configure the x-axis to avoid scientific notation\n", "ax.xaxis.set_major_formatter(plt.ScalarFormatter())\n", "ax.xaxis.get_major_formatter().set_scientific(False)\n", + "ax.xaxis.set_major_formatter(mticker.FormatStrFormatter(\"%g\")) # plot decimals as needed\n", "\n", - "hep.cms.label(label=\"Preliminary\", ax=ax, data=True, lumi=138, com=13)\n", + "hep.cms.label(label=None, ax=ax, data=True, lumi=138, com=13)\n", "plt.tight_layout()\n", "plt.savefig(plot_dir / \"limits.pdf\", bbox_inches=\"tight\")\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/src/HHbbVV/postprocessing/GetEventDisplayJets.ipynb b/src/HHbbVV/postprocessing/GetEventDisplayJets.ipynb new file mode 100644 index 00000000..22afd99c --- /dev/null +++ b/src/HHbbVV/postprocessing/GetEventDisplayJets.ipynb @@ -0,0 +1,1282 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "import uproot\n", + "from tqdm import tqdm\n", + "from coffea import nanoevents\n", + "from coffea.nanoevents.methods.base import NanoEventsArray\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "# rundir = Path(\"/eos/uscms/store/user/lpcpfnano/cmantill/v2_3/2016/JetHT2016/JetHT/JetHT_Run2016B_ver2_HIPM/220701_193532/0000/\")\n", + "rundir = Path(\n", + " \"/eos/uscms/store/user/lpcpfnano/cmantill/v2_3/2016/JetHT2016/JetHT/JetHT_Run2016E_HIPM/220701_193836/0000/\"\n", + ")\n", + "files = [f for f in rundir.iterdir() if f.is_file()]" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "event_ids = [310609526] # , 1017592313]\n", + "lumi_blocks = [159] # , 542]\n", + "run_nums = [274388] # , 277070]" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [], + "source": [ + "event_ids = [1017592313]\n", + "lumi_blocks = [542]\n", + "run_nums = [277070]" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 8%|▊ | 54/675 [00:04<00:50, 12.41it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumi block match in /eos/uscms/store/user/lpcpfnano/cmantill/v2_3/2016/JetHT2016/JetHT/JetHT_Run2016E_HIPM/220701_193836/0000/nano_data2016_1-20.root!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 9%|▊ | 58/675 [00:07<03:05, 3.33it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1017592313\n", + "Found event 1017592313 in /eos/uscms/store/user/lpcpfnano/cmantill/v2_3/2016/JetHT2016/JetHT/JetHT_Run2016E_HIPM/220701_193836/0000/nano_data2016_1-20.root!\n", + "31658\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 30%|██▉ | 202/675 [00:20<00:45, 10.47it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumi block match in /eos/uscms/store/user/lpcpfnano/cmantill/v2_3/2016/JetHT2016/JetHT/JetHT_Run2016E_HIPM/220701_193836/0000/nano_data2016_16.root!\n", + "1017592313\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 73%|███████▎ | 491/675 [00:47<00:17, 10.26it/s]\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn [102], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m f \u001b[38;5;129;01min\u001b[39;00m tqdm(files):\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43muproot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mf\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m:Runs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m file:\n\u001b[1;32m 3\u001b[0m runs \u001b[38;5;241m=\u001b[39m file[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39marrays()\u001b[38;5;241m.\u001b[39mrun\u001b[38;5;241m.\u001b[39mto_numpy()\n\u001b[1;32m 5\u001b[0m runmatch \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "File \u001b[0;32m/uscms_data/d3/rkansal/mambaforge/envs/python39/lib/python3.9/site-packages/uproot/reading.py:154\u001b[0m, in \u001b[0;36mopen\u001b[0;34m(path, object_cache, array_cache, custom_classes, decompression_executor, interpretation_executor, **options)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m file\u001b[38;5;241m.\u001b[39mroot_directory\n\u001b[1;32m 153\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 154\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfile\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mroot_directory\u001b[49m[object_path]\n", + "File \u001b[0;32m/uscms_data/d3/rkansal/mambaforge/envs/python39/lib/python3.9/site-packages/uproot/reading.py:784\u001b[0m, in \u001b[0;36mReadOnlyFile.root_directory\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 778\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 779\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mroot_directory\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 780\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 781\u001b[0m \u001b[38;5;124;03m The root ``TDirectory`` of the file\u001b[39;00m\n\u001b[1;32m 782\u001b[0m \u001b[38;5;124;03m (:doc:`uproot.reading.ReadOnlyDirectory`).\u001b[39;00m\n\u001b[1;32m 783\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 784\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mReadOnlyDirectory\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 785\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 786\u001b[0m \u001b[43m \u001b[49m\u001b[43muproot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msource\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcursor\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCursor\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fBEGIN\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fNbytesName\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 787\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 788\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 789\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 790\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/uscms_data/d3/rkansal/mambaforge/envs/python39/lib/python3.9/site-packages/uproot/reading.py:1433\u001b[0m, in \u001b[0;36mReadOnlyDirectory.__init__\u001b[0;34m(self, path, cursor, context, file, parent)\u001b[0m\n\u001b[1;32m 1425\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhook_before_header_key(\n\u001b[1;32m 1426\u001b[0m chunk\u001b[38;5;241m=\u001b[39mchunk,\n\u001b[1;32m 1427\u001b[0m cursor\u001b[38;5;241m=\u001b[39mcursor,\n\u001b[1;32m 1428\u001b[0m keys_chunk\u001b[38;5;241m=\u001b[39mkeys_chunk,\n\u001b[1;32m 1429\u001b[0m keys_cursor\u001b[38;5;241m=\u001b[39mkeys_cursor,\n\u001b[1;32m 1430\u001b[0m )\n\u001b[1;32m 1432\u001b[0m \u001b[38;5;66;03m# header_key is never used, but we do need to seek past it\u001b[39;00m\n\u001b[0;32m-> 1433\u001b[0m \u001b[43mReadOnlyKey\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkeys_chunk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeys_cursor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mread_strings\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 1435\u001b[0m num_keys \u001b[38;5;241m=\u001b[39m keys_cursor\u001b[38;5;241m.\u001b[39mfield(\n\u001b[1;32m 1436\u001b[0m keys_chunk, _directory_format_num_keys, context\n\u001b[1;32m 1437\u001b[0m )\n\u001b[1;32m 1439\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhook_before_keys(\n\u001b[1;32m 1440\u001b[0m chunk\u001b[38;5;241m=\u001b[39mchunk,\n\u001b[1;32m 1441\u001b[0m cursor\u001b[38;5;241m=\u001b[39mcursor,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1444\u001b[0m num_keys\u001b[38;5;241m=\u001b[39mnum_keys,\n\u001b[1;32m 1445\u001b[0m )\n", + "File \u001b[0;32m/uscms_data/d3/rkansal/mambaforge/envs/python39/lib/python3.9/site-packages/uproot/reading.py:2271\u001b[0m, in \u001b[0;36mReadOnlyKey.__init__\u001b[0;34m(self, chunk, cursor, context, file, parent, read_strings)\u001b[0m\n\u001b[1;32m 2251\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent \u001b[38;5;241m=\u001b[39m parent\n\u001b[1;32m 2253\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhook_before_interpret(\n\u001b[1;32m 2254\u001b[0m chunk\u001b[38;5;241m=\u001b[39mchunk,\n\u001b[1;32m 2255\u001b[0m cursor\u001b[38;5;241m=\u001b[39mcursor,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2259\u001b[0m read_strings\u001b[38;5;241m=\u001b[39mread_strings,\n\u001b[1;32m 2260\u001b[0m )\n\u001b[1;32m 2262\u001b[0m (\n\u001b[1;32m 2263\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fNbytes,\n\u001b[1;32m 2264\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fVersion,\n\u001b[1;32m 2265\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fObjlen,\n\u001b[1;32m 2266\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fDatime,\n\u001b[1;32m 2267\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fKeylen,\n\u001b[1;32m 2268\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fCycle,\n\u001b[1;32m 2269\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fSeekKey,\n\u001b[1;32m 2270\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fSeekPdir,\n\u001b[0;32m-> 2271\u001b[0m ) \u001b[38;5;241m=\u001b[39m \u001b[43mcursor\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfields\u001b[49m\u001b[43m(\u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_key_format_small\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmove\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 2273\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_64bit:\n\u001b[1;32m 2274\u001b[0m (\n\u001b[1;32m 2275\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fNbytes,\n\u001b[1;32m 2276\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fVersion,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2282\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fSeekPdir,\n\u001b[1;32m 2283\u001b[0m ) \u001b[38;5;241m=\u001b[39m cursor\u001b[38;5;241m.\u001b[39mfields(chunk, _key_format_big, context)\n", + "File \u001b[0;32m/uscms_data/d3/rkansal/mambaforge/envs/python39/lib/python3.9/site-packages/uproot/source/cursor.py:197\u001b[0m, in \u001b[0;36mCursor.fields\u001b[0;34m(self, chunk, format, context, move)\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m move:\n\u001b[1;32m 196\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_index \u001b[38;5;241m=\u001b[39m stop\n\u001b[0;32m--> 197\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mformat\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munpack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mchunk\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "for f in tqdm(files):\n", + " with uproot.open(f\"{f}:Runs\") as file:\n", + " runs = file[\"run\"].arrays().run.to_numpy()\n", + "\n", + " runmatch = False\n", + " for run_num in run_nums:\n", + " if np.isin(run_num, runs):\n", + " runmatch = True\n", + "\n", + " if not runmatch:\n", + " continue\n", + "\n", + " with uproot.open(f\"{f}:LuminosityBlocks\") as file:\n", + " lbs = file[\"luminosityBlock\"].arrays().luminosityBlock.to_numpy()\n", + "\n", + " lumimatch = False\n", + " for lb in lumi_blocks:\n", + " if np.isin(lb, lbs):\n", + " lumimatch = True\n", + "\n", + " if not lumimatch:\n", + " continue\n", + "\n", + " print(f\"Lumi block match in {f}!\")\n", + "\n", + " with uproot.open(f\"{f}:Events/event\") as file:\n", + " events = file.arrays().event.to_numpy()\n", + "\n", + " # print(events)\n", + " # print(f)\n", + "\n", + " eventmatch = False\n", + " for event_id in event_ids:\n", + " print(event_id)\n", + " if np.isin(event_id, events):\n", + " eventmatch = True\n", + " print(f\"Found event {event_id} in {f}!\")\n", + " idx = np.where(events == event_id)[0][0]\n", + " print(idx)\n", + " break\n", + "\n", + " if eventmatch:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJetAK15SubJet_nBHadrons in , taking first instance\n", + " warnings.warn(\n", + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJetAK15SubJet_nCHadrons in , taking first instance\n", + " warnings.warn(\n", + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJetAK15_nBHadrons in , taking first instance\n", + " warnings.warn(\n", + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJetAK15_nCHadrons in , taking first instance\n", + " warnings.warn(\n", + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJet_btagDDBvLV2 in , taking first instance\n", + " warnings.warn(\n", + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJet_btagDDCvBV2 in , taking first instance\n", + " warnings.warn(\n", + "/uscms/home/rkansal/.local/lib/python3.9/site-packages/coffea/nanoevents/mapping/uproot.py:86: UserWarning: Found duplicate branch FatJet_btagDDCvLV2 in , taking first instance\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "events = nanoevents.NanoEventsFactory.from_root(\n", + " \"/eos/uscms/store/user/lpcpfnano/cmantill/v2_3/2016/JetHT2016/JetHT/JetHT_Run2016E_HIPM/220701_193836/0000/nano_data2016_1-20.root\",\n", + " schemaclass=nanoevents.NanoAODSchema,\n", + ").events()" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[665.5 584. ]\n", + "[ 1.0561523 1.2133789 1.6704102 2.6201172 -3.899414 -5.013672\n", + " -2.244629 ]\n" + ] + } + ], + "source": [ + "print(events.FatJet[idx].pt.to_numpy())\n", + "print(events.Jet[idx].eta.to_numpy())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['run',\n", + " 'luminosityBlock',\n", + " 'event',\n", + " 'nFatJetAK15SubJet',\n", + " 'FatJetAK15SubJet_area',\n", + " 'FatJetAK15SubJet_btagCSVV2',\n", + " 'FatJetAK15SubJet_btagDeepB',\n", + " 'FatJetAK15SubJet_btagJP',\n", + " 'FatJetAK15SubJet_eta',\n", + " 'FatJetAK15SubJet_mass',\n", + " 'FatJetAK15SubJet_phi',\n", + " 'FatJetAK15SubJet_pt',\n", + " 'FatJetAK15SubJet_rawFactor',\n", + " 'FatJetAK15SubJet_nBHadrons',\n", + " 'FatJetAK15SubJet_nCHadrons',\n", + " 'nFatJetAK15',\n", + " 'FatJetAK15_ParticleNetMD_probQCD',\n", + " 'FatJetAK15_ParticleNetMD_probXbb',\n", + " 'FatJetAK15_ParticleNetMD_probXcc',\n", + " 'FatJetAK15_ParticleNetMD_probXqq',\n", + " 'FatJetAK15_ParticleNet_probHbb',\n", + " 'FatJetAK15_ParticleNet_probHcc',\n", + " 'FatJetAK15_ParticleNet_probHqqqq',\n", + " 'FatJetAK15_ParticleNet_probQCDb',\n", + " 'FatJetAK15_ParticleNet_probQCDbb',\n", + " 'FatJetAK15_ParticleNet_probQCDc',\n", + " 'FatJetAK15_ParticleNet_probQCDcc',\n", + " 'FatJetAK15_ParticleNet_probQCDothers',\n", + " 'FatJetAK15_ParticleNet_probTbc',\n", + " 'FatJetAK15_ParticleNet_probTbcq',\n", + " 'FatJetAK15_ParticleNet_probTbel',\n", + " 'FatJetAK15_ParticleNet_probTbmu',\n", + " 'FatJetAK15_ParticleNet_probTbq',\n", + " 'FatJetAK15_ParticleNet_probTbqq',\n", + " 'FatJetAK15_ParticleNet_probTbta',\n", + " 'FatJetAK15_ParticleNet_probWcq',\n", + " 'FatJetAK15_ParticleNet_probWqq',\n", + " 'FatJetAK15_ParticleNet_probZbb',\n", + " 'FatJetAK15_ParticleNet_probZcc',\n", + " 'FatJetAK15_ParticleNet_probZqq',\n", + " 'FatJetAK15_area',\n", + " 'FatJetAK15_btagCSVV2',\n", + " 'FatJetAK15_btagDeepB',\n", + " 'FatJetAK15_btagJP',\n", + " 'FatJetAK15_eta',\n", + " 'FatJetAK15_mass',\n", + " 'FatJetAK15_msoftdrop',\n", + " 'FatJetAK15_n2b1',\n", + " 'FatJetAK15_n3b1',\n", + " 'FatJetAK15_phi',\n", + " 'FatJetAK15_pt',\n", + " 'FatJetAK15_rawFactor',\n", + " 'FatJetAK15_tau1',\n", + " 'FatJetAK15_tau2',\n", + " 'FatJetAK15_tau3',\n", + " 'FatJetAK15_jetId',\n", + " 'FatJetAK15_nBHadrons',\n", + " 'FatJetAK15_nCHadrons',\n", + " 'FatJetAK15_nPFConstituents',\n", + " 'FatJetAK15_subJetIdx1',\n", + " 'FatJetAK15_subJetIdx2',\n", + " 'nboostedTau',\n", + " 'boostedTau_chargedIso',\n", + " 'boostedTau_eta',\n", + " 'boostedTau_leadTkDeltaEta',\n", + " 'boostedTau_leadTkDeltaPhi',\n", + " 'boostedTau_leadTkPtOverTauPt',\n", + " 'boostedTau_mass',\n", + " 'boostedTau_neutralIso',\n", + " 'boostedTau_phi',\n", + " 'boostedTau_photonsOutsideSignalCone',\n", + " 'boostedTau_pt',\n", + " 'boostedTau_puCorr',\n", + " 'boostedTau_rawAntiEle2018',\n", + " 'boostedTau_rawIso',\n", + " 'boostedTau_rawIsodR03',\n", + " 'boostedTau_rawMVAnewDM2017v2',\n", + " 'boostedTau_rawMVAoldDM2017v2',\n", + " 'boostedTau_rawMVAoldDMdR032017v2',\n", + " 'boostedTau_charge',\n", + " 'boostedTau_decayMode',\n", + " 'boostedTau_jetIdx',\n", + " 'boostedTau_rawAntiEleCat2018',\n", + " 'boostedTau_idAntiEle2018',\n", + " 'boostedTau_idAntiMu',\n", + " 'boostedTau_idMVAnewDM2017v2',\n", + " 'boostedTau_idMVAoldDM2017v2',\n", + " 'boostedTau_idMVAoldDMdR032017v2',\n", + " 'CaloMET_phi',\n", + " 'CaloMET_pt',\n", + " 'CaloMET_sumEt',\n", + " 'ChsMET_phi',\n", + " 'ChsMET_pt',\n", + " 'ChsMET_sumEt',\n", + " 'nCorrT1METJet',\n", + " 'CorrT1METJet_area',\n", + " 'CorrT1METJet_eta',\n", + " 'CorrT1METJet_muonSubtrFactor',\n", + " 'CorrT1METJet_phi',\n", + " 'CorrT1METJet_rawPt',\n", + " 'nFatJetAK15PFCands',\n", + " 'FatJetAK15PFCands_pt',\n", + " 'FatJetAK15PFCands_btagEtaRel',\n", + " 'FatJetAK15PFCands_btagPtRatio',\n", + " 'FatJetAK15PFCands_btagPParRatio',\n", + " 'FatJetAK15PFCands_btagSip3dVal',\n", + " 'FatJetAK15PFCands_btagSip3dSig',\n", + " 'FatJetAK15PFCands_btagJetDistVal',\n", + " 'FatJetAK15PFCands_pFCandsIdx',\n", + " 'FatJetAK15PFCands_jetIdx',\n", + " 'nJetSVsAK15',\n", + " 'JetSVsAK15_mass',\n", + " 'JetSVsAK15_pt',\n", + " 'JetSVsAK15_ntracks',\n", + " 'JetSVsAK15_chi2',\n", + " 'JetSVsAK15_normchi2',\n", + " 'JetSVsAK15_dxy',\n", + " 'JetSVsAK15_dxysig',\n", + " 'JetSVsAK15_d3d',\n", + " 'JetSVsAK15_d3dsig',\n", + " 'JetSVsAK15_costhetasvpv',\n", + " 'JetSVsAK15_phirel',\n", + " 'JetSVsAK15_ptrel',\n", + " 'JetSVsAK15_deltaR',\n", + " 'JetSVsAK15_enration',\n", + " 'JetSVsAK15_jetIdx',\n", + " 'JetSVsAK15_sVIdx',\n", + " 'nFatJetPFCands',\n", + " 'FatJetPFCands_pt',\n", + " 'FatJetPFCands_btagEtaRel',\n", + " 'FatJetPFCands_btagPtRatio',\n", + " 'FatJetPFCands_btagPParRatio',\n", + " 'FatJetPFCands_btagSip3dVal',\n", + " 'FatJetPFCands_btagSip3dSig',\n", + " 'FatJetPFCands_btagJetDistVal',\n", + " 'FatJetPFCands_pFCandsIdx',\n", + " 'FatJetPFCands_jetIdx',\n", + " 'nFatJetSVs',\n", + " 'FatJetSVs_mass',\n", + " 'FatJetSVs_pt',\n", + " 'FatJetSVs_ntracks',\n", + " 'FatJetSVs_chi2',\n", + " 'FatJetSVs_normchi2',\n", + " 'FatJetSVs_dxy',\n", + " 'FatJetSVs_dxysig',\n", + " 'FatJetSVs_d3d',\n", + " 'FatJetSVs_d3dsig',\n", + " 'FatJetSVs_costhetasvpv',\n", + " 'FatJetSVs_phirel',\n", + " 'FatJetSVs_ptrel',\n", + " 'FatJetSVs_deltaR',\n", + " 'FatJetSVs_enration',\n", + " 'FatJetSVs_jetIdx',\n", + " 'FatJetSVs_sVIdx',\n", + " 'nPFCands',\n", + " 'PFCands_d0',\n", + " 'PFCands_d0Err',\n", + " 'PFCands_dz',\n", + " 'PFCands_dzErr',\n", + " 'PFCands_eta',\n", + " 'PFCands_mass',\n", + " 'PFCands_phi',\n", + " 'PFCands_pt',\n", + " 'PFCands_puppiWeight',\n", + " 'PFCands_puppiWeightNoLep',\n", + " 'PFCands_trkChi2',\n", + " 'PFCands_vtxChi2',\n", + " 'PFCands_charge',\n", + " 'PFCands_lostInnerHits',\n", + " 'PFCands_pdgId',\n", + " 'PFCands_pvAssocQuality',\n", + " 'PFCands_trkQuality',\n", + " 'DeepMETResolutionTune_phi',\n", + " 'DeepMETResolutionTune_pt',\n", + " 'DeepMETResponseTune_phi',\n", + " 'DeepMETResponseTune_pt',\n", + " 'nElectron',\n", + " 'Electron_dEscaleDown',\n", + " 'Electron_dEscaleUp',\n", + " 'Electron_dEsigmaDown',\n", + " 'Electron_dEsigmaUp',\n", + " 'Electron_deltaEtaSC',\n", + " 'Electron_dr03EcalRecHitSumEt',\n", + " 'Electron_dr03HcalDepth1TowerSumEt',\n", + " 'Electron_dr03TkSumPt',\n", + " 'Electron_dr03TkSumPtHEEP',\n", + " 'Electron_dxy',\n", + " 'Electron_dxyErr',\n", + " 'Electron_dz',\n", + " 'Electron_dzErr',\n", + " 'Electron_eCorr',\n", + " 'Electron_eInvMinusPInv',\n", + " 'Electron_energyErr',\n", + " 'Electron_eta',\n", + " 'Electron_hoe',\n", + " 'Electron_ip3d',\n", + " 'Electron_jetPtRelv2',\n", + " 'Electron_jetRelIso',\n", + " 'Electron_mass',\n", + " 'Electron_miniPFRelIso_all',\n", + " 'Electron_miniPFRelIso_chg',\n", + " 'Electron_mvaFall17V2Iso',\n", + " 'Electron_mvaFall17V2noIso',\n", + " 'Electron_pfRelIso03_all',\n", + " 'Electron_pfRelIso03_chg',\n", + " 'Electron_phi',\n", + " 'Electron_pt',\n", + " 'Electron_r9',\n", + " 'Electron_scEtOverPt',\n", + " 'Electron_sieie',\n", + " 'Electron_sip3d',\n", + " 'Electron_mvaTTH',\n", + " 'Electron_charge',\n", + " 'Electron_cutBased',\n", + " 'Electron_jetIdx',\n", + " 'Electron_pdgId',\n", + " 'Electron_photonIdx',\n", + " 'Electron_tightCharge',\n", + " 'Electron_vidNestedWPBitmap',\n", + " 'Electron_vidNestedWPBitmapHEEP',\n", + " 'Electron_convVeto',\n", + " 'Electron_cutBased_HEEP',\n", + " 'Electron_isPFcand',\n", + " 'Electron_jetNDauCharged',\n", + " 'Electron_lostHits',\n", + " 'Electron_mvaFall17V2Iso_WP80',\n", + " 'Electron_mvaFall17V2Iso_WP90',\n", + " 'Electron_mvaFall17V2Iso_WPL',\n", + " 'Electron_mvaFall17V2noIso_WP80',\n", + " 'Electron_mvaFall17V2noIso_WP90',\n", + " 'Electron_mvaFall17V2noIso_WPL',\n", + " 'Electron_seedGain',\n", + " 'nFatJet',\n", + " 'FatJet_area',\n", + " 'FatJet_btagCSVV2',\n", + " 'FatJet_btagDDBvLV2',\n", + " 'FatJet_btagDDCvBV2',\n", + " 'FatJet_btagDDCvLV2',\n", + " 'FatJet_btagDeepB',\n", + " 'FatJet_btagHbb',\n", + " 'FatJet_deepTagMD_H4qvsQCD',\n", + " 'FatJet_deepTagMD_HbbvsQCD',\n", + " 'FatJet_deepTagMD_TvsQCD',\n", + " 'FatJet_deepTagMD_WvsQCD',\n", + " 'FatJet_deepTagMD_ZHbbvsQCD',\n", + " 'FatJet_deepTagMD_ZHccvsQCD',\n", + " 'FatJet_deepTagMD_ZbbvsQCD',\n", + " 'FatJet_deepTagMD_ZvsQCD',\n", + " 'FatJet_deepTagMD_bbvsLight',\n", + " 'FatJet_deepTagMD_ccvsLight',\n", + " 'FatJet_deepTag_H',\n", + " 'FatJet_deepTag_QCD',\n", + " 'FatJet_deepTag_QCDothers',\n", + " 'FatJet_deepTag_TvsQCD',\n", + " 'FatJet_deepTag_WvsQCD',\n", + " 'FatJet_deepTag_ZvsQCD',\n", + " 'FatJet_eta',\n", + " 'FatJet_mass',\n", + " 'FatJet_msoftdrop',\n", + " 'FatJet_n2b1',\n", + " 'FatJet_n3b1',\n", + " 'FatJet_particleNetMD_QCD',\n", + " 'FatJet_particleNetMD_Xbb',\n", + " 'FatJet_particleNetMD_Xcc',\n", + " 'FatJet_particleNetMD_Xqq',\n", + " 'FatJet_particleNet_H4qvsQCD',\n", + " 'FatJet_particleNet_HbbvsQCD',\n", + " 'FatJet_particleNet_HccvsQCD',\n", + " 'FatJet_particleNet_QCD',\n", + " 'FatJet_particleNet_TvsQCD',\n", + " 'FatJet_particleNet_WvsQCD',\n", + " 'FatJet_particleNet_ZvsQCD',\n", + " 'FatJet_particleNet_mass',\n", + " 'FatJet_phi',\n", + " 'FatJet_pt',\n", + " 'FatJet_rawFactor',\n", + " 'FatJet_tau1',\n", + " 'FatJet_tau2',\n", + " 'FatJet_tau3',\n", + " 'FatJet_tau4',\n", + " 'FatJet_lsf3',\n", + " 'FatJet_jetId',\n", + " 'FatJet_subJetIdx1',\n", + " 'FatJet_subJetIdx2',\n", + " 'FatJet_electronIdx3SJ',\n", + " 'FatJet_muonIdx3SJ',\n", + " 'FatJet_nConstituents',\n", + " 'nFsrPhoton',\n", + " 'FsrPhoton_dROverEt2',\n", + " 'FsrPhoton_eta',\n", + " 'FsrPhoton_phi',\n", + " 'FsrPhoton_pt',\n", + " 'FsrPhoton_relIso03',\n", + " 'FsrPhoton_muonIdx',\n", + " 'nIsoTrack',\n", + " 'IsoTrack_dxy',\n", + " 'IsoTrack_dz',\n", + " 'IsoTrack_eta',\n", + " 'IsoTrack_pfRelIso03_all',\n", + " 'IsoTrack_pfRelIso03_chg',\n", + " 'IsoTrack_phi',\n", + " 'IsoTrack_pt',\n", + " 'IsoTrack_miniPFRelIso_all',\n", + " 'IsoTrack_miniPFRelIso_chg',\n", + " 'IsoTrack_charge',\n", + " 'IsoTrack_fromPV',\n", + " 'IsoTrack_pdgId',\n", + " 'IsoTrack_isHighPurityTrack',\n", + " 'IsoTrack_isPFcand',\n", + " 'IsoTrack_isFromLostTrack',\n", + " 'nJet',\n", + " 'Jet_area',\n", + " 'Jet_btagCSVV2',\n", + " 'Jet_btagDeepB',\n", + " 'Jet_btagDeepCvB',\n", + " 'Jet_btagDeepCvL',\n", + " 'Jet_btagDeepFlavB',\n", + " 'Jet_btagDeepFlavCvB',\n", + " 'Jet_btagDeepFlavCvL',\n", + " 'Jet_btagDeepFlavQG',\n", + " 'Jet_chEmEF',\n", + " 'Jet_chFPV0EF',\n", + " 'Jet_chHEF',\n", + " 'Jet_eta',\n", + " 'Jet_hfsigmaEtaEta',\n", + " 'Jet_hfsigmaPhiPhi',\n", + " 'Jet_mass',\n", + " 'Jet_muEF',\n", + " 'Jet_muonSubtrFactor',\n", + " 'Jet_neEmEF',\n", + " 'Jet_neHEF',\n", + " 'Jet_phi',\n", + " 'Jet_pt',\n", + " 'Jet_puIdDisc',\n", + " 'Jet_qgl',\n", + " 'Jet_rawFactor',\n", + " 'Jet_bRegCorr',\n", + " 'Jet_bRegRes',\n", + " 'Jet_cRegCorr',\n", + " 'Jet_cRegRes',\n", + " 'Jet_electronIdx1',\n", + " 'Jet_electronIdx2',\n", + " 'Jet_hfadjacentEtaStripsSize',\n", + " 'Jet_hfcentralEtaStripSize',\n", + " 'Jet_jetId',\n", + " 'Jet_muonIdx1',\n", + " 'Jet_muonIdx2',\n", + " 'Jet_nElectrons',\n", + " 'Jet_nMuons',\n", + " 'Jet_puId',\n", + " 'Jet_nConstituents',\n", + " 'L1PreFiringWeight_Dn',\n", + " 'L1PreFiringWeight_ECAL_Dn',\n", + " 'L1PreFiringWeight_ECAL_Nom',\n", + " 'L1PreFiringWeight_ECAL_Up',\n", + " 'L1PreFiringWeight_Muon_Nom',\n", + " 'L1PreFiringWeight_Muon_StatDn',\n", + " 'L1PreFiringWeight_Muon_StatUp',\n", + " 'L1PreFiringWeight_Muon_SystDn',\n", + " 'L1PreFiringWeight_Muon_SystUp',\n", + " 'L1PreFiringWeight_Nom',\n", + " 'L1PreFiringWeight_Up',\n", + " 'nLowPtElectron',\n", + " 'LowPtElectron_ID',\n", + " 'LowPtElectron_convVtxRadius',\n", + " 'LowPtElectron_deltaEtaSC',\n", + " 'LowPtElectron_dxy',\n", + " 'LowPtElectron_dxyErr',\n", + " 'LowPtElectron_dz',\n", + " 'LowPtElectron_dzErr',\n", + " 'LowPtElectron_eInvMinusPInv',\n", + " 'LowPtElectron_embeddedID',\n", + " 'LowPtElectron_energyErr',\n", + " 'LowPtElectron_eta',\n", + " 'LowPtElectron_hoe',\n", + " 'LowPtElectron_mass',\n", + " 'LowPtElectron_miniPFRelIso_all',\n", + " 'LowPtElectron_miniPFRelIso_chg',\n", + " 'LowPtElectron_phi',\n", + " 'LowPtElectron_pt',\n", + " 'LowPtElectron_ptbiased',\n", + " 'LowPtElectron_r9',\n", + " 'LowPtElectron_scEtOverPt',\n", + " 'LowPtElectron_sieie',\n", + " 'LowPtElectron_unbiased',\n", + " 'LowPtElectron_charge',\n", + " 'LowPtElectron_convWP',\n", + " 'LowPtElectron_pdgId',\n", + " 'LowPtElectron_convVeto',\n", + " 'LowPtElectron_lostHits',\n", + " 'MET_MetUnclustEnUpDeltaX',\n", + " 'MET_MetUnclustEnUpDeltaY',\n", + " 'MET_covXX',\n", + " 'MET_covXY',\n", + " 'MET_covYY',\n", + " 'MET_phi',\n", + " 'MET_pt',\n", + " 'MET_significance',\n", + " 'MET_sumEt',\n", + " 'MET_sumPtUnclustered',\n", + " 'nProton_multiRP',\n", + " 'Proton_multiRP_t',\n", + " 'Proton_multiRP_thetaX',\n", + " 'Proton_multiRP_thetaY',\n", + " 'Proton_multiRP_time',\n", + " 'Proton_multiRP_timeUnc',\n", + " 'Proton_multiRP_xi',\n", + " 'Proton_multiRP_arm',\n", + " 'nMuon',\n", + " 'Muon_dxy',\n", + " 'Muon_dxyErr',\n", + " 'Muon_dxybs',\n", + " 'Muon_dz',\n", + " 'Muon_dzErr',\n", + " 'Muon_eta',\n", + " 'Muon_ip3d',\n", + " 'Muon_jetPtRelv2',\n", + " 'Muon_jetRelIso',\n", + " 'Muon_mass',\n", + " 'Muon_miniPFRelIso_all',\n", + " 'Muon_miniPFRelIso_chg',\n", + " 'Muon_pfRelIso03_all',\n", + " 'Muon_pfRelIso03_chg',\n", + " 'Muon_pfRelIso04_all',\n", + " 'Muon_phi',\n", + " 'Muon_pt',\n", + " 'Muon_ptErr',\n", + " 'Muon_segmentComp',\n", + " 'Muon_sip3d',\n", + " 'Muon_softMva',\n", + " 'Muon_tkRelIso',\n", + " 'Muon_tunepRelPt',\n", + " 'Muon_mvaLowPt',\n", + " 'Muon_mvaTTH',\n", + " 'Muon_charge',\n", + " 'Muon_jetIdx',\n", + " 'Muon_nStations',\n", + " 'Muon_nTrackerLayers',\n", + " 'Muon_pdgId',\n", + " 'Muon_tightCharge',\n", + " 'Muon_fsrPhotonIdx',\n", + " 'Muon_highPtId',\n", + " 'Muon_highPurity',\n", + " 'Muon_inTimeMuon',\n", + " 'Muon_isGlobal',\n", + " 'Muon_isPFcand',\n", + " 'Muon_isStandalone',\n", + " 'Muon_isTracker',\n", + " 'Muon_jetNDauCharged',\n", + " 'Muon_looseId',\n", + " 'Muon_mediumId',\n", + " 'Muon_mediumPromptId',\n", + " 'Muon_miniIsoId',\n", + " 'Muon_multiIsoId',\n", + " 'Muon_mvaId',\n", + " 'Muon_mvaLowPtId',\n", + " 'Muon_pfIsoId',\n", + " 'Muon_puppiIsoId',\n", + " 'Muon_softId',\n", + " 'Muon_softMvaId',\n", + " 'Muon_tightId',\n", + " 'Muon_tkIsoId',\n", + " 'Muon_triggerIdLoose',\n", + " 'nPhoton',\n", + " 'Photon_dEscaleDown',\n", + " 'Photon_dEscaleUp',\n", + " 'Photon_dEsigmaDown',\n", + " 'Photon_dEsigmaUp',\n", + " 'Photon_eCorr',\n", + " 'Photon_energyErr',\n", + " 'Photon_eta',\n", + " 'Photon_hoe',\n", + " 'Photon_mass',\n", + " 'Photon_mvaID',\n", + " 'Photon_mvaID_Fall17V1p1',\n", + " 'Photon_pfRelIso03_all',\n", + " 'Photon_pfRelIso03_chg',\n", + " 'Photon_phi',\n", + " 'Photon_pt',\n", + " 'Photon_r9',\n", + " 'Photon_sieie',\n", + " 'Photon_charge',\n", + " 'Photon_cutBased',\n", + " 'Photon_cutBased_Fall17V1Bitmap',\n", + " 'Photon_electronIdx',\n", + " 'Photon_jetIdx',\n", + " 'Photon_pdgId',\n", + " 'Photon_vidNestedWPBitmap',\n", + " 'Photon_electronVeto',\n", + " 'Photon_isScEtaEB',\n", + " 'Photon_isScEtaEE',\n", + " 'Photon_mvaID_WP80',\n", + " 'Photon_mvaID_WP90',\n", + " 'Photon_pixelSeed',\n", + " 'Photon_seedGain',\n", + " 'nPPSLocalTrack',\n", + " 'PPSLocalTrack_x',\n", + " 'PPSLocalTrack_y',\n", + " 'PPSLocalTrack_time',\n", + " 'PPSLocalTrack_timeUnc',\n", + " 'PPSLocalTrack_multiRPProtonIdx',\n", + " 'PPSLocalTrack_singleRPProtonIdx',\n", + " 'PPSLocalTrack_decRPId',\n", + " 'PPSLocalTrack_rpType',\n", + " 'PuppiMET_phi',\n", + " 'PuppiMET_phiJERDown',\n", + " 'PuppiMET_phiJERUp',\n", + " 'PuppiMET_phiJESDown',\n", + " 'PuppiMET_phiJESUp',\n", + " 'PuppiMET_phiUnclusteredDown',\n", + " 'PuppiMET_phiUnclusteredUp',\n", + " 'PuppiMET_pt',\n", + " 'PuppiMET_ptJERDown',\n", + " 'PuppiMET_ptJERUp',\n", + " 'PuppiMET_ptJESDown',\n", + " 'PuppiMET_ptJESUp',\n", + " 'PuppiMET_ptUnclusteredDown',\n", + " 'PuppiMET_ptUnclusteredUp',\n", + " 'PuppiMET_sumEt',\n", + " 'RawMET_phi',\n", + " 'RawMET_pt',\n", + " 'RawMET_sumEt',\n", + " 'RawPuppiMET_phi',\n", + " 'RawPuppiMET_pt',\n", + " 'RawPuppiMET_sumEt',\n", + " 'fixedGridRhoFastjetAll',\n", + " 'fixedGridRhoFastjetCentral',\n", + " 'fixedGridRhoFastjetCentralCalo',\n", + " 'fixedGridRhoFastjetCentralChargedPileUp',\n", + " 'fixedGridRhoFastjetCentralNeutral',\n", + " 'nSoftActivityJet',\n", + " 'SoftActivityJet_eta',\n", + " 'SoftActivityJet_phi',\n", + " 'SoftActivityJet_pt',\n", + " 'SoftActivityJetHT',\n", + " 'SoftActivityJetHT10',\n", + " 'SoftActivityJetHT2',\n", + " 'SoftActivityJetHT5',\n", + " 'SoftActivityJetNjets10',\n", + " 'SoftActivityJetNjets2',\n", + " 'SoftActivityJetNjets5',\n", + " 'nProton_singleRP',\n", + " 'Proton_singleRP_thetaY',\n", + " 'Proton_singleRP_xi',\n", + " 'Proton_singleRP_decRPId',\n", + " 'nSubJet',\n", + " 'SubJet_btagCSVV2',\n", + " 'SubJet_btagDeepB',\n", + " 'SubJet_eta',\n", + " 'SubJet_mass',\n", + " 'SubJet_n2b1',\n", + " 'SubJet_n3b1',\n", + " 'SubJet_phi',\n", + " 'SubJet_pt',\n", + " 'SubJet_rawFactor',\n", + " 'SubJet_tau1',\n", + " 'SubJet_tau2',\n", + " 'SubJet_tau3',\n", + " 'SubJet_tau4',\n", + " 'nTau',\n", + " 'Tau_chargedIso',\n", + " 'Tau_dxy',\n", + " 'Tau_dz',\n", + " 'Tau_eta',\n", + " 'Tau_leadTkDeltaEta',\n", + " 'Tau_leadTkDeltaPhi',\n", + " 'Tau_leadTkPtOverTauPt',\n", + " 'Tau_mass',\n", + " 'Tau_neutralIso',\n", + " 'Tau_phi',\n", + " 'Tau_photonsOutsideSignalCone',\n", + " 'Tau_pt',\n", + " 'Tau_puCorr',\n", + " 'Tau_rawDeepTau2017v2p1VSe',\n", + " 'Tau_rawDeepTau2017v2p1VSjet',\n", + " 'Tau_rawDeepTau2017v2p1VSmu',\n", + " 'Tau_rawIso',\n", + " 'Tau_rawIsodR03',\n", + " 'Tau_charge',\n", + " 'Tau_decayMode',\n", + " 'Tau_jetIdx',\n", + " 'Tau_idAntiEleDeadECal',\n", + " 'Tau_idAntiMu',\n", + " 'Tau_idDecayModeOldDMs',\n", + " 'Tau_idDeepTau2017v2p1VSe',\n", + " 'Tau_idDeepTau2017v2p1VSjet',\n", + " 'Tau_idDeepTau2017v2p1VSmu',\n", + " 'TkMET_phi',\n", + " 'TkMET_pt',\n", + " 'TkMET_sumEt',\n", + " 'nTrigObj',\n", + " 'TrigObj_pt',\n", + " 'TrigObj_eta',\n", + " 'TrigObj_phi',\n", + " 'TrigObj_l1pt',\n", + " 'TrigObj_l1pt_2',\n", + " 'TrigObj_l2pt',\n", + " 'TrigObj_id',\n", + " 'TrigObj_l1iso',\n", + " 'TrigObj_l1charge',\n", + " 'TrigObj_filterBits',\n", + " 'nOtherPV',\n", + " 'OtherPV_z',\n", + " 'PV_ndof',\n", + " 'PV_x',\n", + " 'PV_y',\n", + " 'PV_z',\n", + " 'PV_chi2',\n", + " 'PV_score',\n", + " 'PV_npvs',\n", + " 'PV_npvsGood',\n", + " 'nSV',\n", + " 'SV_dlen',\n", + " 'SV_dlenSig',\n", + " 'SV_dxy',\n", + " 'SV_dxySig',\n", + " 'SV_pAngle',\n", + " 'SV_charge',\n", + " 'FatJetAK15SubJet_Proba',\n", + " 'FatJetAK15SubJet_btagDeepB_b',\n", + " 'FatJetAK15SubJet_btagDeepB_bb',\n", + " 'FatJetAK15SubJet_btagDeepC',\n", + " 'FatJetAK15SubJet_btagDeepL',\n", + " 'FatJetAK15SubJet_nBHadrons',\n", + " 'FatJetAK15SubJet_nCHadrons',\n", + " 'FatJetAK15_DDX_tau1_flightDistance2dSig',\n", + " 'FatJetAK15_DDX_tau1_trackEtaRel_0',\n", + " 'FatJetAK15_DDX_tau1_trackEtaRel_1',\n", + " 'FatJetAK15_DDX_tau1_trackEtaRel_2',\n", + " 'FatJetAK15_DDX_tau1_trackSip3dSig_0',\n", + " 'FatJetAK15_DDX_tau1_trackSip3dSig_1',\n", + " 'FatJetAK15_DDX_tau1_vertexDeltaR',\n", + " 'FatJetAK15_DDX_tau1_vertexEnergyRatio',\n", + " 'FatJetAK15_DDX_tau1_vertexMass',\n", + " 'FatJetAK15_DDX_tau2_flightDistance2dSig',\n", + " 'FatJetAK15_DDX_tau2_trackEtaRel_0',\n", + " 'FatJetAK15_DDX_tau2_trackEtaRel_1',\n", + " 'FatJetAK15_DDX_tau2_trackEtaRel_3',\n", + " 'FatJetAK15_DDX_tau2_trackSip3dSig_0',\n", + " 'FatJetAK15_DDX_tau2_trackSip3dSig_1',\n", + " 'FatJetAK15_DDX_tau2_vertexEnergyRatio',\n", + " 'FatJetAK15_DDX_tau2_vertexMass',\n", + " 'FatJetAK15_DDX_trackSip2dSigAboveBottom_0',\n", + " 'FatJetAK15_DDX_trackSip2dSigAboveBottom_1',\n", + " 'FatJetAK15_DDX_trackSip2dSigAboveCharm',\n", + " 'FatJetAK15_DDX_trackSip3dSig_0',\n", + " 'FatJetAK15_DDX_trackSip3dSig_1',\n", + " 'FatJetAK15_DDX_trackSip3dSig_2',\n", + " 'FatJetAK15_DDX_trackSip3dSig_3',\n", + " 'FatJetAK15_DDX_z_ratio',\n", + " 'FatJetAK15_Proba',\n", + " 'FatJetAK15_btagDDBvLV2',\n", + " 'FatJetAK15_btagDDCvBV2',\n", + " 'FatJetAK15_btagDDCvLV2',\n", + " 'FatJetAK15_btagDeepB_b',\n", + " 'FatJetAK15_btagDeepB_bb',\n", + " 'FatJetAK15_btagDeepL',\n", + " 'FatJetAK15_DDX_jetNSecondaryVertices',\n", + " 'FatJetAK15_DDX_jetNTracks',\n", + " 'FatJetAK15_nBHadrons',\n", + " 'FatJetAK15_nCHadrons',\n", + " 'FatJet_DDX_tau1_flightDistance2dSig',\n", + " 'FatJet_DDX_tau1_trackEtaRel_0',\n", + " 'FatJet_DDX_tau1_trackEtaRel_1',\n", + " 'FatJet_DDX_tau1_trackEtaRel_2',\n", + " 'FatJet_DDX_tau1_trackSip3dSig_0',\n", + " 'FatJet_DDX_tau1_trackSip3dSig_1',\n", + " 'FatJet_DDX_tau1_vertexDeltaR',\n", + " 'FatJet_DDX_tau1_vertexEnergyRatio',\n", + " 'FatJet_DDX_tau1_vertexMass',\n", + " 'FatJet_DDX_tau2_flightDistance2dSig',\n", + " 'FatJet_DDX_tau2_trackEtaRel_0',\n", + " 'FatJet_DDX_tau2_trackEtaRel_1',\n", + " 'FatJet_DDX_tau2_trackEtaRel_3',\n", + " 'FatJet_DDX_tau2_trackSip3dSig_0',\n", + " 'FatJet_DDX_tau2_trackSip3dSig_1',\n", + " 'FatJet_DDX_tau2_vertexEnergyRatio',\n", + " 'FatJet_DDX_tau2_vertexMass',\n", + " 'FatJet_DDX_trackSip2dSigAboveBottom_0',\n", + " 'FatJet_DDX_trackSip2dSigAboveBottom_1',\n", + " 'FatJet_DDX_trackSip2dSigAboveCharm',\n", + " 'FatJet_DDX_trackSip3dSig_0',\n", + " 'FatJet_DDX_trackSip3dSig_1',\n", + " 'FatJet_DDX_trackSip3dSig_2',\n", + " 'FatJet_DDX_trackSip3dSig_3',\n", + " 'FatJet_DDX_z_ratio',\n", + " 'FatJet_Proba',\n", + " 'FatJet_btagDDBvLV2',\n", + " 'FatJet_btagDDCvBV2',\n", + " 'FatJet_btagDDCvLV2',\n", + " 'FatJet_btagDeepB_b',\n", + " 'FatJet_btagDeepB_bb',\n", + " 'FatJet_btagDeepL',\n", + " 'FatJet_DDX_jetNSecondaryVertices',\n", + " 'FatJet_DDX_jetNTracks',\n", + " 'FatJet_nBHadrons',\n", + " 'FatJet_nCHadrons',\n", + " 'Jet_DeepCSV_flightDistance2dSig',\n", + " 'Jet_DeepCSV_flightDistance2dVal',\n", + " 'Jet_DeepCSV_flightDistance3dSig',\n", + " 'Jet_DeepCSV_flightDistance3dVal',\n", + " 'Jet_DeepCSV_trackDecayLenVal_0',\n", + " 'Jet_DeepCSV_trackDecayLenVal_1',\n", + " 'Jet_DeepCSV_trackDecayLenVal_2',\n", + " 'Jet_DeepCSV_trackDecayLenVal_3',\n", + " 'Jet_DeepCSV_trackDecayLenVal_4',\n", + " 'Jet_DeepCSV_trackDecayLenVal_5',\n", + " 'Jet_DeepCSV_trackDeltaR_0',\n", + " 'Jet_DeepCSV_trackDeltaR_1',\n", + " 'Jet_DeepCSV_trackDeltaR_2',\n", + " 'Jet_DeepCSV_trackDeltaR_3',\n", + " 'Jet_DeepCSV_trackDeltaR_4',\n", + " 'Jet_DeepCSV_trackDeltaR_5',\n", + " 'Jet_DeepCSV_trackEtaRel_0',\n", + " 'Jet_DeepCSV_trackEtaRel_1',\n", + " 'Jet_DeepCSV_trackEtaRel_2',\n", + " 'Jet_DeepCSV_trackEtaRel_3',\n", + " 'Jet_DeepCSV_trackJetDistVal_0',\n", + " 'Jet_DeepCSV_trackJetDistVal_1',\n", + " 'Jet_DeepCSV_trackJetDistVal_2',\n", + " 'Jet_DeepCSV_trackJetDistVal_3',\n", + " 'Jet_DeepCSV_trackJetDistVal_4',\n", + " 'Jet_DeepCSV_trackJetDistVal_5',\n", + " 'Jet_DeepCSV_trackJetPt',\n", + " 'Jet_DeepCSV_trackPtRatio_0',\n", + " 'Jet_DeepCSV_trackPtRatio_1',\n", + " 'Jet_DeepCSV_trackPtRatio_2',\n", + " 'Jet_DeepCSV_trackPtRatio_3',\n", + " 'Jet_DeepCSV_trackPtRatio_4',\n", + " 'Jet_DeepCSV_trackPtRatio_5',\n", + " 'Jet_DeepCSV_trackPtRel_0',\n", + " 'Jet_DeepCSV_trackPtRel_1',\n", + " 'Jet_DeepCSV_trackPtRel_2',\n", + " 'Jet_DeepCSV_trackPtRel_3',\n", + " 'Jet_DeepCSV_trackPtRel_4',\n", + " 'Jet_DeepCSV_trackPtRel_5',\n", + " 'Jet_DeepCSV_trackSip2dSigAboveCharm',\n", + " 'Jet_DeepCSV_trackSip2dSig_0',\n", + " 'Jet_DeepCSV_trackSip2dSig_1',\n", + " 'Jet_DeepCSV_trackSip2dSig_2',\n", + " 'Jet_DeepCSV_trackSip2dSig_3',\n", + " 'Jet_DeepCSV_trackSip2dSig_4',\n", + " 'Jet_DeepCSV_trackSip2dSig_5',\n", + " 'Jet_DeepCSV_trackSip2dValAboveCharm',\n", + " 'Jet_DeepCSV_trackSip3dSigAboveCharm',\n", + " 'Jet_DeepCSV_trackSip3dSig_0',\n", + " 'Jet_DeepCSV_trackSip3dSig_1',\n", + " 'Jet_DeepCSV_trackSip3dSig_2',\n", + " 'Jet_DeepCSV_trackSip3dSig_3',\n", + " 'Jet_DeepCSV_trackSip3dSig_4',\n", + " 'Jet_DeepCSV_trackSip3dSig_5',\n", + " 'Jet_DeepCSV_trackSip3dValAboveCharm',\n", + " 'Jet_DeepCSV_trackSumJetDeltaR',\n", + " 'Jet_DeepCSV_trackSumJetEtRatio',\n", + " 'Jet_DeepCSV_vertexCategory',\n", + " 'Jet_DeepCSV_vertexEnergyRatio',\n", + " 'Jet_DeepCSV_vertexJetDeltaR',\n", + " 'Jet_DeepCSV_vertexMass',\n", + " 'Jet_Proba',\n", + " 'Jet_btagDeepB_b',\n", + " 'Jet_btagDeepB_bb',\n", + " 'Jet_btagDeepL',\n", + " 'Jet_DeepCSV_jetNSecondaryVertices',\n", + " 'Jet_DeepCSV_jetNSelectedTracks',\n", + " 'Jet_DeepCSV_jetNTracksEtaRel',\n", + " 'Jet_DeepCSV_vertexNTracks',\n", + " 'Jet_nBHadrons',\n", + " 'Jet_nCHadrons',\n", + " 'SubJet_Proba',\n", + " 'SubJet_btagDeepB_b',\n", + " 'SubJet_btagDeepB_bb',\n", + " 'SubJet_btagDeepC',\n", + " 'SubJet_btagDeepL',\n", + " 'SubJet_nBHadrons',\n", + " 'SubJet_nCHadrons',\n", + " 'Electron_cleanmask',\n", + " 'Jet_cleanmask',\n", + " 'Muon_cleanmask',\n", + " 'Photon_cleanmask',\n", + " 'Tau_cleanmask',\n", + " 'SV_chi2',\n", + " 'SV_eta',\n", + " 'SV_mass',\n", + " 'SV_ndof',\n", + " 'SV_phi',\n", + " 'SV_pt',\n", + " 'SV_x',\n", + " 'SV_y',\n", + " 'SV_z',\n", + " 'SV_ntracks',\n", + " 'L1_AlwaysTrue',\n", + " 'L1_BPTX_LUT1_AND',\n", + " 'L1_BPTX_LUT1_B1',\n", + " 'L1_BPTX_LUT1_B2',\n", + " 'L1_BPTX_LUT1_OR',\n", + " 'L1_BPTX_LUT2_AND',\n", + " 'L1_BPTX_LUT2_B1NotB2',\n", + " 'L1_BPTX_LUT2_B2NotB1',\n", + " 'L1_BPTX_LUT2_NotOR',\n", + " 'L1_BPTX_TRIG2_AND',\n", + " 'L1_BPTX_TRIG2_B1NotB2',\n", + " 'L1_BPTX_TRIG2_B2NotB1',\n", + " 'L1_BPTX_TRIG2_NotOR',\n", + " 'L1_BRIL_TRIG0_AND',\n", + " 'L1_BRIL_TRIG0_FstBunchInTrain',\n", + " 'L1_BRIL_TRIG0_OR',\n", + " 'L1_BRIL_TRIG0_delayedAND',\n", + " 'L1_BRIL_TRIG3_AND',\n", + " 'L1_BRIL_TRIG3_delayedAND',\n", + " 'L1_BRIL_TRIG3_ref',\n", + " 'L1_BeamGasB1',\n", + " 'L1_BeamGasB2',\n", + " 'L1_BeamGasMinus',\n", + " 'L1_BeamGasPlus',\n", + " 'L1_BptxMinus',\n", + " 'L1_BptxOR',\n", + " 'L1_BptxPlus',\n", + " 'L1_BptxXOR',\n", + " 'L1_DoubleEG6_HTT255',\n", + " 'L1_DoubleEG_15_10',\n", + " 'L1_DoubleEG_18_17',\n", + " 'L1_DoubleEG_20_18',\n", + " 'L1_DoubleEG_22_10',\n", + " 'L1_DoubleEG_22_12',\n", + " 'L1_DoubleEG_22_15',\n", + " 'L1_DoubleEG_23_10',\n", + " 'L1_DoubleEG_24_17',\n", + " 'L1_DoubleIsoTau26er',\n", + " 'L1_DoubleIsoTau27er',\n", + " 'L1_DoubleIsoTau28er',\n", + " 'L1_DoubleIsoTau29er',\n", + " 'L1_DoubleIsoTau30er',\n", + " 'L1_DoubleIsoTau32er',\n", + " 'L1_DoubleJet12_ForwardBackward',\n", + " 'L1_DoubleJet16_ForwardBackward',\n", + " 'L1_DoubleJet8_ForwardBackward',\n", + " 'L1_DoubleJetC100',\n", + " 'L1_DoubleJetC112',\n", + " 'L1_DoubleJetC120',\n", + " 'L1_DoubleJetC40',\n", + " 'L1_DoubleJetC50',\n", + " 'L1_DoubleJetC60',\n", + " 'L1_DoubleJetC60_ETM60',\n", + " 'L1_DoubleJetC80',\n", + " 'L1_DoubleMu0',\n", + " 'L1_DoubleMu0er1p6_dEta_Max1p8',\n", + " 'L1_DoubleMu0er1p6_dEta_Max1p8_OS',\n", + " 'L1_DoubleMu7_EG14',\n", + " 'L1_DoubleMu7_EG7',\n", + " 'L1_DoubleMuOpen',\n", + " 'L1_DoubleMu_10_0_dEta_Max1p8',\n", + " 'L1_DoubleMu_10_3p5',\n", + " 'L1_DoubleMu_10_Open',\n", + " 'L1_DoubleMu_11_4',\n", + " 'L1_DoubleMu_12_5',\n", + " 'L1_DoubleMu_12_8',\n", + " 'L1_DoubleMu_13_6',\n", + " 'L1_DoubleMu_15_5',\n", + " 'L1_DoubleTau50er',\n", + " 'L1_EG25er_HTT125',\n", + " 'L1_EG27er_HTT200',\n", + " 'L1_ETM100',\n", + " 'L1_ETM120',\n", + " 'L1_ETM30',\n", + " 'L1_ETM40',\n", + " 'L1_ETM50',\n", + " 'L1_ETM60',\n", + " 'L1_ETM60_Jet60_dPhi_Min0p4',\n", + " 'L1_ETM70',\n", + " 'L1_ETM80',\n", + " 'L1_ETM90',\n", + " 'L1_ETT25',\n", + " 'L1_ETT25_BptxAND',\n", + " 'L1_ETT35_BptxAND',\n", + " 'L1_ETT50_BptxAND',\n", + " 'L1_ETT60_BptxAND',\n", + " 'L1_HTM100',\n", + " 'L1_HTM120',\n", + " 'L1_HTM130',\n", + " 'L1_HTM140',\n", + " 'L1_HTM150',\n", + " 'L1_HTM50',\n", + " 'L1_HTM60_HTT260',\n", + " 'L1_HTM70',\n", + " 'L1_HTM80',\n", + " 'L1_HTM80_HTT220',\n", + " 'L1_HTT120',\n", + " 'L1_HTT160',\n", + " 'L1_HTT200',\n", + " 'L1_HTT220',\n", + " 'L1_HTT240',\n", + " 'L1_HTT255',\n", + " 'L1_HTT270',\n", + " 'L1_HTT280',\n", + " 'L1_HTT300',\n", + " 'L1_HTT320',\n", + " 'L1_IsoEG22er_Tau20er_dEta_Min0p2',\n", + " 'L1_IsolatedBunch',\n", + " 'L1_Jet32_DoubleMuOpen_Mu10_dPhi_Jet_Mu0_Max0p4_dPhi_Mu_Mu_Min1p0',\n", + " 'L1_Jet32_MuOpen_EG10_dPhi_Jet_Mu_Max0p4_dPhi_Mu_EG_Min1p0',\n", + " 'L1_MU20_EG15',\n", + " 'L1_MinimumBiasHF0_AND',\n", + " 'L1_MinimumBiasHF0_AND_BptxAND',\n", + " 'L1_MinimumBiasHF0_OR',\n", + " 'L1_MinimumBiasHF0_OR_BptxAND',\n", + " 'L1_MinimumBiasHF1_AND',\n", + " 'L1_MinimumBiasHF1_AND_BptxAND',\n", + " 'L1_MinimumBiasHF1_OR',\n", + " 'L1_MinimumBiasHF1_OR_BptxAND',\n", + " 'L1_Mu0er_ETM40',\n", + " 'L1_Mu0er_ETM55',\n", + " 'L1_Mu10er_ETM30',\n", + " 'L1_Mu10er_ETM50',\n", + " 'L1_Mu12_EG10',\n", + " 'L1_Mu14er_ETM30',\n", + " 'L1_Mu16er_Tau20er',\n", + " 'L1_Mu16er_Tau24er',\n", + " 'L1_Mu18er_IsoTau26er',\n", + " 'L1_Mu18er_Tau20er',\n", + " 'L1_Mu18er_Tau24er',\n", + " 'L1_Mu20_EG10',\n", + " 'L1_Mu20_EG17',\n", + " 'L1_Mu20er_IsoTau26er',\n", + " 'L1_Mu23_EG10',\n", + " 'L1_Mu23_IsoEG10',\n", + " 'L1_Mu3_JetC120',\n", + " 'L1_Mu3_JetC120_dEta_Max0p4_dPhi_Max0p4',\n", + " 'L1_Mu3_JetC16',\n", + " 'L1_Mu3_JetC16_dEta_Max0p4_dPhi_Max0p4',\n", + " 'L1_Mu3_JetC60',\n", + " 'L1_Mu3_JetC60_dEta_Max0p4_dPhi_Max0p4',\n", + " 'L1_Mu5_EG15',\n", + " 'L1_Mu5_EG20',\n", + " 'L1_Mu5_EG23',\n", + " 'L1_Mu5_IsoEG18',\n", + " 'L1_Mu5_IsoEG20',\n", + " 'L1_Mu6_DoubleEG10',\n", + " 'L1_Mu6_DoubleEG17',\n", + " 'L1_Mu6_HTT200',\n", + " 'L1_Mu8_HTT150',\n", + " 'L1_NotBptxOR',\n", + " 'L1_QuadJetC36_Tau52',\n", + " 'L1_QuadJetC40',\n", + " 'L1_QuadJetC50',\n", + " 'L1_QuadJetC60',\n", + " 'L1_QuadMu0',\n", + " 'L1_SingleEG10',\n", + " 'L1_SingleEG15',\n", + " 'L1_SingleEG18',\n", + " 'L1_SingleEG24',\n", + " 'L1_SingleEG26',\n", + " 'L1_SingleEG28',\n", + " 'L1_SingleEG2_BptxAND',\n", + " 'L1_SingleEG30',\n", + " 'L1_SingleEG34',\n", + " 'L1_SingleEG40',\n", + " 'L1_SingleEG45',\n", + " 'L1_SingleEG5',\n", + " 'L1_SingleIsoEG18',\n", + " 'L1_SingleIsoEG18er',\n", + " 'L1_SingleIsoEG20',\n", + " 'L1_SingleIsoEG20er',\n", + " 'L1_SingleIsoEG22',\n", + " 'L1_SingleIsoEG22er',\n", + " 'L1_SingleIsoEG24',\n", + " 'L1_SingleIsoEG24er',\n", + " 'L1_SingleIsoEG26',\n", + " 'L1_SingleIsoEG26er',\n", + " 'L1_SingleIsoEG28',\n", + " 'L1_SingleIsoEG28er',\n", + " 'L1_SingleIsoEG30',\n", + " 'L1_SingleIsoEG30er',\n", + " 'L1_SingleIsoEG34',\n", + " 'L1_SingleIsoEG34er',\n", + " 'L1_SingleJet120',\n", + " 'L1_SingleJet12_BptxAND',\n", + " 'L1_SingleJet140',\n", + " 'L1_SingleJet150',\n", + " 'L1_SingleJet16',\n", + " 'L1_SingleJet160',\n", + " 'L1_SingleJet170',\n", + " 'L1_SingleJet180',\n", + " 'L1_SingleJet20',\n", + " 'L1_SingleJet200',\n", + " 'L1_SingleJet35',\n", + " 'L1_SingleJet60',\n", + " 'L1_SingleJet8_BptxAND',\n", + " 'L1_SingleJet90',\n", + " 'L1_SingleJetC20_NotBptxOR',\n", + " 'L1_SingleJetC20_NotBptxOR_3BX',\n", + " 'L1_SingleJetC32_NotBptxOR',\n", + " 'L1_SingleJetC32_NotBptxOR_3BX',\n", + " 'L1_SingleJetC36_NotBptxOR_3BX',\n", + " 'L1_SingleMu10_LowQ',\n", + " 'L1_SingleMu12',\n", + " 'L1_SingleMu14',\n", + " 'L1_SingleMu14er',\n", + " 'L1_SingleMu16',\n", + " 'L1_SingleMu16er',\n", + " 'L1_SingleMu18',\n", + " ...]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "events.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "python39", + "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.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/HHbbVV/postprocessing/PlotFits.ipynb b/src/HHbbVV/postprocessing/PlotFits.ipynb index 9ac3dca5..60ef0376 100644 --- a/src/HHbbVV/postprocessing/PlotFits.ipynb +++ b/src/HHbbVV/postprocessing/PlotFits.ipynb @@ -49,7 +49,7 @@ "k2v0sig = False\n", "unblinded = True\n", "\n", - "plot_dir = MAIN_DIR / f\"plots/PostFit/24May30QCDTF\"\n", + "plot_dir = MAIN_DIR / f\"plots/PostFit/24Jul18Fig8Prelim\"\n", "# plot_dir = (\n", "# MAIN_DIR\n", "# / \"plots/PostFit/24Apr9ggFScan/nTF1/ggf_txbb_MP_ggf_bdt_0.9965_vbf_txbb_HP_vbf_bdt_0.999_lepton_veto_Hbb\"\n", @@ -217,7 +217,7 @@ "metadata": {}, "outputs": [], "source": [ - "ylims = {\"passggf\": 40, \"passvbf\": 7, \"fail\": 6e5}\n", + "ylims = {\"passggf\": 60, \"passvbf\": 10, \"fail\": 7e5}\n", "title_label = \" Asimov Dataset\" if asimov else \"\"\n", "sig_scale_dict = {\n", " \"HHbbVV\": 100,\n", @@ -228,6 +228,8 @@ "sig_scale_dict = {key: val for key, val in sig_scale_dict.items() if key in sig_keys}\n", "\n", "for shape, shape_label in shapes.items():\n", + " # if shape != \"postfit\":\n", + " # continue\n", " for region, region_label in selection_regions.items():\n", " pass_region = region.startswith(\"pass\")\n", " for i, shape_var in enumerate(shape_vars):\n", @@ -237,11 +239,14 @@ " \"bg_keys\": bg_keys,\n", " \"bg_err\": bgerrs[shape][region],\n", " \"sig_scale_dict\": sig_scale_dict if pass_region else None,\n", - " \"show\": False,\n", + " \"show\": True,\n", " \"year\": \"all\",\n", " \"ylim\": ylims[region],\n", " \"title\": f\"{shape_label} {region_label} Region{title_label}\",\n", " \"name\": f\"{plot_dir}/{shape}_{region}_{shape_var.var}.pdf\",\n", + " \"ncol\": 2, # if region == \"passvbf\" else 1,\n", + " \"ratio_ylims\": [0, 5] if region == \"passvbf\" else [0, 2],\n", + " \"cmslabel\": \"Preliminary\",\n", " }\n", "\n", " plotting.ratioHistPlot(**plot_params, data_err=True)\n", @@ -250,6 +255,20 @@ " # break" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## QCD Transfer Factor" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/src/HHbbVV/postprocessing/PostProcess.ipynb b/src/HHbbVV/postprocessing/PostProcess.ipynb index 8c299bc5..4ea4476c 100644 --- a/src/HHbbVV/postprocessing/PostProcess.ipynb +++ b/src/HHbbVV/postprocessing/PostProcess.ipynb @@ -81,20 +81,21 @@ "\n", "MAIN_DIR = Path(\"../../../\")\n", "samples_dir = MAIN_DIR / \"../data/skimmer/24Mar14UpdateData\"\n", - "year = \"2018\"\n", + "year = \"2016APV\"\n", "bdt_preds_dir = samples_dir / \"24_04_05_k2v0_training_eqsig_vbf_vars_rm_deta/inferences\"\n", "\n", - "date = \"24Jun1\"\n", - "plot_dir = MAIN_DIR / f\"plots/PostProcessing/{date}LPSFs\"\n", - "templates_dir = f\"templates/{date}\"\n", - "_ = os.system(f\"mkdir -p {plot_dir}\")\n", + "date = \"24Jul4Event\"\n", + "plot_dir = MAIN_DIR / f\"plots/PostProcessing/{date}\"\n", + "templates_dir = Path(\"templates\") / date\n", "_ = os.system(f\"mkdir -p {plot_dir}/cutflows/\")\n", + "_ = os.system(f\"mkdir -p {plot_dir}/templates/\")\n", "_ = os.system(f\"mkdir -p {plot_dir}/ControlPlots/{year}/\")\n", "# _ = os.system(f\"mkdir -p {plot_dir}/templates/\")\n", "# _ = os.system(f\"mkdir -p {plot_dir}/templates/wshifts\")\n", "# _ = os.system(f\"mkdir -p {plot_dir}/templates/jshifts\")\n", "# _ = os.system(f\"mkdir -p {templates_dir}\")\n", "\n", + "(templates_dir / \"cutflows\" / year).mkdir(exist_ok=True, parents=True)\n", "selection_regions = postprocessing.get_nonres_selection_regions(year)" ] }, @@ -111,6 +112,8 @@ " # \"qqHH_CV_1_C2V_2_kl_1_HHbbVV\": \"VBF_HHTobbVV_CV_1_C2V_2_C3_1\",\n", "}\n", "\n", + "mc_samples = {key: val for key, val in samples.items() if key not in [data_key]}\n", + "\n", "# bg_keys = [\"QCD\", \"TT\", \"Data\"]\n", "# samples = {key: val for key, val in samples.items() if key in bg_keys}" ] @@ -135,20 +138,37 @@ "cutflow = pd.DataFrame(index=list(samples.keys()) + list(nonres_samples.keys()))\n", "\n", "events_dict = postprocessing.load_samples(\n", - " # samples_dir, {**nonres_samples, **samples}, year, filters, hem_cleaning=False, variations=False\n", " samples_dir,\n", - " {**nonres_samples},\n", + " {**nonres_samples, **samples},\n", " year,\n", " filters,\n", " hem_cleaning=False,\n", " variations=False,\n", + " # samples_dir, {**nonres_samples, **mc_samples}, year, filters, hem_cleaning=False, variations=False\n", + " # samples_dir,\n", + " # {**nonres_samples},\n", + " # year,\n", + " # filters,\n", + " # hem_cleaning=False,\n", + " # variations=False,\n", ")\n", - "# events_dict |= postprocessing.load_samples(samples_dir, {\"Data\": \"JetHT\"}, year, filters, hem_cleaning=False)\n", + "# events_dict |= postprocessing.load_samples(MAIN_DIR / \"../data/skimmer/24Jul4Event\", {\"Data\": \"JetHT\"}, year, filters, hem_cleaning=False)\n", "\n", "utils.add_to_cutflow(events_dict, \"Preselection\", \"finalWeight\", cutflow)\n", "cutflow" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datanew = postprocessing.load_samples(\n", + " MAIN_DIR / \"../data/skimmer/24Jul4Event\", {\"Data\": \"JetHT\"}, year, filters, hem_cleaning=False\n", + ")" + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -425,7 +445,7 @@ "source": [ "postprocessing.lpsfs(\n", " list(nonres_samples.keys()),\n", - " selection_regions[\"lpsf_passggf\"],\n", + " selection_regions[\"lpsf_passvbf\"],\n", " systematics,\n", " events_dict,\n", " bb_masks,\n", @@ -539,18 +559,21 @@ "metadata": {}, "outputs": [], "source": [ - "h, tsysts = postprocessing.get_templates(\n", + "h = postprocessing.get_templates(\n", " events_dict,\n", " bb_masks,\n", " year,\n", - " nonres_sig_keys,\n", - " selection_regions,\n", + " list(nonres_samples.keys()),\n", + " {\"passvbf\": selection_regions[\"passvbf\"]},\n", " nonres_shape_vars,\n", " systematics,\n", + " templates_dir,\n", + " lpsfs=False,\n", " bg_keys=bg_keys,\n", " plot_dir=f\"{plot_dir}/templates\",\n", " prev_cutflow=cutflow,\n", " weight_shifts={},\n", + " blind=False,\n", " jshift=\"\",\n", " plot_shifts=False,\n", " show=True,\n", @@ -608,6 +631,162 @@ " templates_dict[year] = pickle.load(f)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get display events" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sel, cf = utils.make_selection(\n", + " selection_regions[\"passvbf\"].cuts,\n", + " events_dict,\n", + " bb_masks,\n", + " prev_cutflow=None,\n", + " jshift=\"\",\n", + " weight_key=\"finalWeight\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sel_events = events_dict[\"Data\"][sel[\"Data\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.sum(\n", + " (datanew[\"Data\"][\"ak8FatJetMsd\"][1].to_numpy() == sel_events[\"ak8FatJetMsd\"][1].to_numpy()[0])\n", + " * (datanew[\"Data\"][\"ak8FatJetPt\"][1].to_numpy() == sel_events[\"ak8FatJetPt\"][1].to_numpy()[0])\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "event2bool = (\n", + " datanew[\"Data\"][\"ak8FatJetMsd\"][1].to_numpy() == sel_events[\"ak8FatJetMsd\"][1].to_numpy()[0]\n", + ") * (datanew[\"Data\"][\"ak8FatJetPt\"][1].to_numpy() == sel_events[\"ak8FatJetPt\"][1].to_numpy()[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "event1bool = (\n", + " datanew[\"Data\"][\"ak8FatJetMsd\"][1].to_numpy() == sel_events[\"ak8FatJetMsd\"][1].to_numpy()[2]\n", + ") * (datanew[\"Data\"][\"ak8FatJetPt\"][1].to_numpy() == sel_events[\"ak8FatJetPt\"][1].to_numpy()[2])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rundir = MAIN_DIR / \"../data/skimmer/24Jul4Event/2016APV/JetHT_Run2016B_ver2_HIPM/parquet\"\n", + "files = [f for f in rundir.iterdir() if f.is_file()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "\n", + "event_id = 310609526\n", + "\n", + "for f in tqdm(files):\n", + " events = pd.read_parquet(f).event.to_numpy()\n", + "\n", + " if np.isin(event_id, events):\n", + " eventmatch = True\n", + " print(f\"Found event {event_id} in {f}!\")\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "event1 = datanew[\"Data\"][event1bool]\n", + "print(event1[\"event\"])\n", + "print(event1[\"run\"])\n", + "print(event1[\"luminosityBlock\"])\n", + "print(event1[\"ak8FatJetPt\"])\n", + "print(event1[\"VBFJetEta\"])\n", + "print(event1[\"ak8FatJetParticleNetMD_Txbb\"])\n", + "print(event1[\"VVFatJetParTMD_THWWvsT\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "event2 = datanew[\"Data\"][event2bool]\n", + "print(event2[\"event\"])\n", + "print(event2[\"run\"])\n", + "print(event2[\"luminosityBlock\"])\n", + "print(event2[\"ak8FatJetPt\"])\n", + "print(event2[\"ak8FatJetEta\"])\n", + "print(event2[\"ak8FatJetPhi\"])\n", + "print(event2[\"VBFJetEta\"])\n", + "print(event2[\"ak8FatJetParticleNetMD_Txbb\"])\n", + "print(event2[\"VVFatJetParTMD_THWWvsT\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "event2[\"ak8FatJetParticleNetMD_Txbb\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "events_dict[\"Data\"][sel[\"Data\"]][\"ak8FatJetParticleNetMass\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "events_dict[\"Data\"][sel[\"Data\"]][\"ak8FatJetParticleNetMD_Txbb\"]" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/src/HHbbVV/postprocessing/plotting.py b/src/HHbbVV/postprocessing/plotting.py index 52b8b7db..20f57791 100644 --- a/src/HHbbVV/postprocessing/plotting.py +++ b/src/HHbbVV/postprocessing/plotting.py @@ -44,6 +44,8 @@ "qqHH_CV_1_C2V_1_kl_1_HHbbVV": "VBF HHbbVV", "qqHH_CV_1_C2V_0_kl_1_HHbbVV": r"VBF HHbbVV ($\kappa_{2V} = 0$)", "qqHH_CV_1_C2V_2_kl_1_HHbbVV": r"VBF HHbbVV ($\kappa_{2V} = 2$)", + "ST": r"Single-$t$", + "TT": r"$t\bar{t}$", } colours = { @@ -137,7 +139,7 @@ def _process_samples(sig_keys, bg_keys, bg_colours, sig_scale_dict, bg_order, sy # set up samples, colours and labels bg_keys = [key for key in bg_order if key in bg_keys] bg_colours = [colours[bg_colours[sample]] for sample in bg_keys] - bg_labels = deepcopy(bg_keys) + bg_labels = [sample_label_map.get(bg_key, bg_key) for bg_key in bg_keys] if sig_scale_dict is None: sig_scale_dict = OrderedDict([(sig_key, 1.0) for sig_key in sig_keys]) @@ -149,7 +151,7 @@ def _process_samples(sig_keys, bg_keys, bg_colours, sig_scale_dict, bg_order, sy label = sample_label_map.get(sig_key, sig_key) if sig_scale != 1: - if sig_scale <= 100: + if sig_scale <= 10000: label = f"{label} $\\times$ {sig_scale:.0f}" else: label = f"{label} $\\times$ {sig_scale:.1e}" @@ -211,17 +213,17 @@ def _asimov_significance(s, b): return np.sqrt(2 * ((s + b) * np.log(1 + (s / b)) - s)) -def add_cms_label(ax, year): +def add_cms_label(ax, year, label=None): if year == "all": hep.cms.label( - "Preliminary", + label, data=True, lumi=f"{np.sum(list(LUMI.values())) / 1e3:.0f}", year=None, ax=ax, ) else: - hep.cms.label("Preliminary", data=True, lumi=f"{LUMI[year] / 1e3:.0f}", year=year, ax=ax) + hep.cms.label(label, data=True, lumi=f"{LUMI[year] / 1e3:.0f}", year=year, ax=ax) def ratioHistPlot( @@ -251,6 +253,8 @@ def ratioHistPlot( significance_dir: str = "right", plot_ratio: bool = True, axrax: tuple = None, + ncol: int = None, + cmslabel: str = None, ): """ Makes and saves a histogram plot, with backgrounds stacked, signal separate (and optionally @@ -289,6 +293,7 @@ def ratioHistPlot( plot_significance (bool): plot Asimov significance below ratio plot significance_dir (str): "Direction" for significance. i.e. a > cut ("right"), a < cut ("left"), or per-bin ("bin"). axrax (Tuple): optionally input ax and rax instead of creating new ones + ncol (int): # of legend columns. By default, it is 2 for log-plots and 1 for non-log-plots. """ if ratio_ylims is None: @@ -297,6 +302,8 @@ def ratioHistPlot( bg_colours = BG_COLOURS if sig_colours is None: sig_colours = SIG_COLOURS + if ncol is None: + ncol = 2 if log else 1 # copy hists and bg_keys so input objects are not changed hists, bg_keys = deepcopy(hists), deepcopy(bg_keys) @@ -458,9 +465,9 @@ def ratioHistPlot( if log: ax.set_yscale("log") # two column legend - ax.legend(fontsize=16, ncol=2) + ax.legend(fontsize=20, ncol=2) else: - ax.legend(fontsize=16) + ax.legend(fontsize=20, ncol=ncol) y_lowlim = 0 if not log else 1e-5 if ylim is not None: @@ -472,10 +479,20 @@ def ratioHistPlot( if plot_ratio: if plot_data: bg_tot = sum([pre_divide_hists[sample, :] for sample in bg_keys]) - yerr = ratio_uncertainty( - pre_divide_hists[data_key, :].values(), bg_tot.values(), "poisson" + # new: plotting data errors (black lines) and background errors (shaded) separately + yerr = np.nan_to_num( + np.abs( + poisson_interval(pre_divide_hists[data_key, ...]) + - pre_divide_hists[data_key, ...] + ) + / (bg_tot.values() + 1e-5) ) + # old version: using Garwood ratio intervals + # yerr = ratio_uncertainty( + # pre_divide_hists[data_key, :].values(), bg_tot.values(), "poisson" + # ) + hep.histplot( pre_divide_hists[data_key, :] / (bg_tot.values() + 1e-5), yerr=yerr, @@ -500,6 +517,10 @@ def ratioHistPlot( rax.set_xlabel(hists.axes[1].label) rax.set_ylabel("Data/MC") + # rax.set_yscale("log") + # formatter = mticker.ScalarFormatter(useOffset=False) + # formatter.set_scientific(False) + # rax.yaxis.set_major_formatter(formatter) rax.set_ylim(ratio_ylims) rax.grid() @@ -539,7 +560,7 @@ def ratioHistPlot( if title is not None: ax.set_title(title, y=1.08) - add_cms_label(ax, year) + add_cms_label(ax, year, label=cmslabel) if axrax is None: if len(name): diff --git a/src/HHbbVV/postprocessing/templates/24Jul4Event/cutflows/2016APV/passvbf_cutflow.csv b/src/HHbbVV/postprocessing/templates/24Jul4Event/cutflows/2016APV/passvbf_cutflow.csv new file mode 100644 index 00000000..08d77844 --- /dev/null +++ b/src/HHbbVV/postprocessing/templates/24Jul4Event/cutflows/2016APV/passvbf_cutflow.csv @@ -0,0 +1,17 @@ +,Preselection,QCD SF,bbFatJetPt >= 300,VVFatJetPt >= 300,BDTScoreVBF >= 0.999,bbFatJetParticleNetMD_Txbb >= 0.9883 +QCD,900603.372757249,1219440.0804636534,1208187.047601593,1199914.6854996895,7.71705682833504,6.049274062699175 +TT,76537.02908224265,76537.02908224265,76036.67089183381,75504.25522211792,3.027786048276932,0.26235626208860474 +ST,6617.229257123121,6617.229257123121,6568.071623368754,6530.558860743446,0.262844709582459,0.0 +W+Jets,12421.273275458932,12421.273275458932,12341.31450378544,12265.115729916284,0.8767605906549117,0.0 +Z+Jets,14717.02364266734,14717.02364266734,14601.426751424733,14517.101697865306,0.0641416456478138,0.0 +Diboson,703.6912877316817,703.6912877316817,699.1389217855917,695.3097641927543,0.0,0.0 +ggFHbb,138.81856362723408,138.81856362723408,138.12124620347993,137.14696515108136,0.0,0.0 +VBFHbb,40.60062332311162,40.60062332311162,40.47235839402518,40.3369080970762,0.0,0.0 +ZHbb,38.56092725636813,38.56092725636813,38.30734801182328,38.14508043229702,0.0,0.0 +WHbb,66.232275837835,66.232275837835,65.79568909543664,65.5789510146088,0.0,0.0 +ggZHbb,5.921431593700421,5.921431593700421,5.88900772329133,5.855043713430598,0.0,0.0 +ttHbb,187.9810602386041,187.9810602386041,186.85674951555848,185.63841488932138,0.006165574380285853,0.0 +HWW,97.55810924622651,97.55810924622651,97.00857794271565,96.26976864081334,0.12565653995308684,0.022886908957980946 +Data,1331012.0,1331012.0,1331012.0,1331012.0,33.0,3.0 +HHbbVV,1.108127280079604,1.108127280079604,1.1005594143174928,1.0940812392241102,0.011009117010780157,0.005530963961569239 +qqHH_CV_1_C2V_0_kl_1_HHbbVV,11.015595087816134,11.015595087816134,10.992704362069707,10.974097162767547,2.057637098933057,1.2400244607049622 diff --git a/src/HHbbVV/processors/bbVVSkimmer.py b/src/HHbbVV/processors/bbVVSkimmer.py index 099736ab..f4916c83 100644 --- a/src/HHbbVV/processors/bbVVSkimmer.py +++ b/src/HHbbVV/processors/bbVVSkimmer.py @@ -73,6 +73,7 @@ class bbVVSkimmer(SkimmerABC): """ # key is name in nano files, value will be the name in the skimmed output + # IMPORTANT!! REMEMBER TO ADD NEW VARIABLES TO min_branches IF NEEDED skim_vars = { # noqa: RUF012 "FatJet": { **P4, @@ -84,7 +85,13 @@ class bbVVSkimmer(SkimmerABC): }, "Jet": P4, "GenHiggs": P4, - "other": {"MET_pt": "MET_pt", "MET_phi": "MET_phi"}, + "other": { + "MET_pt": "MET_pt", + "MET_phi": "MET_phi", + "event": "event", + "run": "run", + "luminosityBlock": "luminosityBlock", + }, } preselection = { # noqa: RUF012 @@ -145,6 +152,9 @@ class bbVVSkimmer(SkimmerABC): "ak8FatJetLowestWTaggedTxbb", "ak8FatJetWTaggedMsd", "ak8FatJetWTaggedParticleNetMass", + "event", + "run", + "luminosityBlock", ] for shift in jec_shifts: @@ -384,10 +394,13 @@ def process(self, events: ak.Array): skimmed_events["nGoodVBFJets"] = np.array(ak.sum(vbf_jet_mask, axis=1)) - otherVars = { - key: events[var.split("_")[0]]["_".join(var.split("_")[1:])].to_numpy() - for (var, key) in self.skim_vars["other"].items() - } + otherVars = {} + + for var, key in self.skim_vars["other"].items(): + if "_" in var: + otherVars[key] = events[var.split("_")[0]]["_".join(var.split("_")[1:])].to_numpy() + else: + otherVars[key] = events[var].to_numpy() skimmed_events = {**skimmed_events, **ak8FatJetVars, **VBFJetVars, **dijetVars, **otherVars} diff --git a/src/binder/VBFPlots.ipynb b/src/binder/VBFPlots.ipynb index 6fdd8083..97903808 100644 --- a/src/binder/VBFPlots.ipynb +++ b/src/binder/VBFPlots.ipynb @@ -51,7 +51,7 @@ "metadata": {}, "outputs": [], "source": [ - "plot_dir = Path(\"../../plots/VBF/24May28\")\n", + "plot_dir = Path(\"../../plots/VBF/24Jul18\")\n", "plot_dir.mkdir(parents=True, exist_ok=True)" ] }, @@ -311,20 +311,32 @@ "metadata": {}, "outputs": [], "source": [ - "fig, ax = plt.subplots(1, 1, figsize=(12, 8))\n", + "plot_interference = False\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(12, 12 if plot_interference else 8))\n", "\n", "bin_centers = (bins[1:] + bins[:-1]) / 2\n", "scs = []\n", "\n", "colors = [\"blue\", \"orange\", \"red\", \"purple\", \"green\"]\n", "\n", + "# for i, (sample, label) in enumerate(\n", + "# [\n", + "# ((1, 1, 1), \"SM\"),\n", + "# ((1, 0, 1), r\"No HHVV diagram ($\\kappa_{2V}=0$)\"),\n", + "# ((0, 1, 0), r\"HHVV diagram ($\\kappa_{V}=\\kappa_\\lambda=0$)\"),\n", + "# ((1, 0, 0), r\"(HVV)$^2$ diagram ($\\kappa_{2V}=\\kappa_\\lambda=0$)\"),\n", + "# ((1, 2, 1), r\"Enhanced $\\kappa_{2V}=2$ Coupling\"),\n", + "# ]\n", + "# ):\n", + "\n", "for i, (sample, label) in enumerate(\n", " [\n", " ((1, 1, 1), \"SM\"),\n", - " ((1, 0, 1), r\"No HHVV diagram ($\\kappa_{2V}=0$)\"),\n", - " ((0, 1, 0), r\"HHVV diagram ($\\kappa_{V}=\\kappa_\\lambda=0$)\"),\n", - " ((1, 0, 0), r\"(HVV)$^2$ diagram ($\\kappa_{2V}=\\kappa_\\lambda=0$)\"),\n", - " ((1, 2, 1), r\"Enhanced $\\kappa_{2V}=2$ Coupling\"),\n", + " ((1, 0, 1), r\"$\\kappa_{2V}=0$\"),\n", + " ((0, 1, 0), r\"$\\kappa_{V}=\\kappa_\\lambda=0$\"),\n", + " ((1, 0, 0), r\"$\\kappa_{2V}=\\kappa_\\lambda=0$\"),\n", + " ((1, 2, 1), r\"$\\kappa_{2V}=2$\"),\n", " ]\n", "):\n", " from scipy.interpolate import interp1d, CubicSpline, UnivariateSpline, splrep, BSpline, Rbf\n", @@ -345,25 +357,32 @@ " ax.plot(new_bin_centers, smooth_counts, label=label, color=colors[i])\n", " # ax.plot(bin_centers, interp_counts, label=f\"CV={sample[0]}, C2V={sample[1]}, kl={sample[2]}\")\n", "\n", - "# ax.plot(\n", - "# new_bin_centers,\n", - "# # -np.sqrt(np.power(scs[1], 2) + np.power(scs[2], 2) - np.power(scs[0], 2)),\n", - "# -(scs[1] + scs[2] - scs[0]),\n", - "# label=\"Interference\",\n", - "# color=\"gray\",\n", - "# )\n", + "if plot_interference:\n", + " ax.plot(\n", + " new_bin_centers,\n", + " # -np.sqrt(np.power(scs[1], 2) + np.power(scs[2], 2) - np.power(scs[0], 2)),\n", + " -(scs[1] + scs[2] - scs[0]),\n", + " label=\"Interference\",\n", + " color=\"gray\",\n", + " )\n", "\n", "ax.set_xlim(bin_centers.min(), 800)\n", "ax.hlines(0, bin_centers.min(), 800, linestyle=\"--\", color=\"gray\")\n", - "# ax.set_ylim(-0.012, 0.012)\n", - "ax.set_ylim(0, 0.012)\n", + "ax.set_ylim(-0.012 if plot_interference else 0, 0.012)\n", "ax.set_ylabel(r\"d$\\sigma$/d$m_{HH}$ [fb/GeV]\")\n", "ax.set_xlabel(r\"$m_{HH}$ [GeV]\")\n", - "hep.cms.label(data=False, com=\"13\", ax=ax, label=\"Preliminary\")\n", + "hep.cms.label(label=\"Preliminary\", data=False, com=\"13\", ax=ax)\n", "ax.legend()\n", - "plt.savefig(plot_dir / \"diagrams_nointerference.pdf\", bbox_inches=\"tight\")\n", + "plt.savefig(plot_dir / \"diagrams_prelim.pdf\", bbox_inches=\"tight\")\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {