{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import uproot\t\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits import mplot3d\n", "import awkward as ak\n", "from scipy.optimize import curve_fit\n", "import mplhep\n", "mplhep.style.use([\"LHCbTex2\"])\n", "\n", "plt.rcParams[\"savefig.dpi\"] = 600\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "file = uproot.open(\n", " \"/work/cetin/Projektpraktikum/trackinglosses_B_photon_cuts.root\")\n", "\n", "# selektiere nur elektronen von B->K*ee\n", "allcolumns = []\n", "for i in range(11):\n", " allcolumns.append(file[\"Tree\" + str(i)].arrays())" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
{oneCut_event_id: 1,\n",
       " oneCut_lost: False,\n",
       " oneCut_rad_length_frac: 0.148,\n",
       " oneCut_energy: 1.28e+04,\n",
       " noneCut_brem_photons_pe: 1,\n",
       " oneCut_brem_photons_pe: [7.42e+03],\n",
       " noneCut_brem_vtx_x: 1,\n",
       " oneCut_brem_vtx_x: [-3.61],\n",
       " noneCut_brem_vtx_z: 1,\n",
       " oneCut_brem_vtx_z: [35.6],\n",
       " oneCut_photon_length: 1}\n",
       "------------------------------------------\n",
       "type: {\n",
       "    oneCut_event_id: int64,\n",
       "    oneCut_lost: bool,\n",
       "    oneCut_rad_length_frac: float64,\n",
       "    oneCut_energy: float64,\n",
       "    noneCut_brem_photons_pe: int32,\n",
       "    oneCut_brem_photons_pe: var * float64,\n",
       "    noneCut_brem_vtx_x: int32,\n",
       "    oneCut_brem_vtx_x: var * float64,\n",
       "    noneCut_brem_vtx_z: int32,\n",
       "    oneCut_brem_vtx_z: var * float64,\n",
       "    oneCut_photon_length: int64\n",
       "}
" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "allcolumns[1][1]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def cutdict():\n", " basedict = {\n", " \"0\": {},\n", " \"1\": {},\n", " \"2\": {},\n", " \"3\": {},\n", " \"4\": {},\n", " \"5\": {},\n", " \"6\": {},\n", " \"7\": {},\n", " \"8\": {},\n", " \"9\": {},\n", " \"10\": {},\n", " }\n", "\n", " basedict[\"0\"] = \"no\"\n", " basedict[\"1\"] = \"one\"\n", " basedict[\"2\"] = \"two\"\n", " basedict[\"3\"] = \"three\"\n", " basedict[\"4\"] = \"four\"\n", " basedict[\"5\"] = \"five\"\n", " basedict[\"6\"] = \"six\"\n", " basedict[\"7\"] = \"seven\"\n", " basedict[\"8\"] = \"eight\"\n", " basedict[\"9\"] = \"nine\"\n", " basedict[\"10\"] = \"ten\"\n", "\n", " return basedict\n", "\n", "\n", "Cuts = cutdict()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# electrons = []\n", "# for jcut in range(11):\n", "\n", "jcut = 4 # cut 0.2*E\n", "\n", "energy_emissions = ak.ArrayBuilder()\n", "\n", "for jelec in range(ak.num(allcolumns[jcut], axis=0)):\n", " energy_emissions.begin_record()\n", " energy_emissions.field(\"lost\").boolean(\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"lost\"]\n", " )\n", " energy_emissions.field(\"rad_length_frac\").real(\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"rad_length_frac\"]\n", " )\n", " energy_emissions.field(\"energy\").real(\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"energy\"]\n", " )\n", "\n", " tmp_velo = 0\n", " tmp_richut = 0\n", " tmp_neither = 0\n", " tmp_velo_length = 0\n", " tmp_richut_length = 0\n", " tmp_neither_length = 0\n", "\n", " for jphoton in range(\n", " ak.num(\n", " allcolumns[jcut][jelec][Cuts[str(jcut)] + \"Cut_\" + \"brem_photons_pe\"],\n", " axis=0,\n", " )\n", " ):\n", " if (\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\", jphoton]\n", " <= 770\n", " ):\n", " tmp_velo += allcolumns[jcut][\n", " jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_photons_pe\", jphoton\n", " ]\n", " tmp_velo_length += 1\n", " elif (\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\", jphoton]\n", " > 770\n", " ) and (\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\", jphoton]\n", " <= 2700\n", " ):\n", " tmp_richut += allcolumns[jcut][\n", " jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_photons_pe\", jphoton\n", " ]\n", " tmp_richut_length += 1\n", " else:\n", " tmp_neither += allcolumns[jcut][\n", " jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_photons_pe\", jphoton\n", " ]\n", " tmp_neither_length += 1\n", "\n", " energy_emissions.field(\"velo_length\").integer(tmp_velo_length)\n", " energy_emissions.field(\"velo\").real(tmp_velo)\n", "\n", " energy_emissions.field(\"rich_length\").integer(tmp_richut_length)\n", " energy_emissions.field(\"rich\").real(tmp_richut)\n", "\n", " energy_emissions.field(\"neither_length\").integer(tmp_neither_length)\n", " energy_emissions.field(\"downstream\").real(tmp_neither)\n", "\n", " energy_emissions.field(\"photon_length\").integer(tmp_richut_length + tmp_velo_length)\n", "\n", " if (\n", " (tmp_velo == 0)\n", " and (tmp_richut == 0)\n", " or (\n", " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"energy\"] - tmp_velo\n", " < 3000\n", " )\n", " ):\n", " energy_emissions.field(\"quality\").integer(0)\n", " else:\n", " energy_emissions.field(\"quality\").integer(1)\n", "\n", " energy_emissions.end_record()\n", "\n", "energy_emissions = ak.Array(energy_emissions)\n", "# electrons.append(energy_emissions)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "velo_found = ak.to_numpy(\n", " energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality == 1)][\"velo\"]\n", ")\n", "rich_found = ak.to_numpy(\n", " energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality == 1)][\"rich\"]\n", ")\n", "energy_found = ak.to_numpy(\n", " energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality == 1)][\n", " \"energy\"\n", " ]\n", ")\n", "\n", "velo_lost = ak.to_numpy(\n", " energy_emissions[(energy_emissions.lost) & (energy_emissions.quality == 1)][\"velo\"]\n", ")\n", "rich_lost = ak.to_numpy(\n", " energy_emissions[(energy_emissions.lost) & (energy_emissions.quality == 1)][\"rich\"]\n", ")\n", "energy_lost = ak.to_numpy(\n", " energy_emissions[(energy_emissions.lost) & (energy_emissions.quality == 1)][\n", " \"energy\"\n", " ]\n", ")\n", "\n", "diff_found = velo_found - rich_found\n", "diff_lost = velo_lost - rich_lost\n", "\n", "xlim = 20000\n", "nbins = 60\n", "\n", "plt.hist(\n", " diff_lost,\n", " bins=nbins,\n", " density=True,\n", " alpha=0.5,\n", " histtype=\"bar\",\n", " color=\"#F05342\",\n", " label=\"lost\",\n", " range=[-xlim, xlim],\n", ")\n", "plt.hist(\n", " diff_found,\n", " bins=nbins,\n", " density=True,\n", " alpha=0.5,\n", " histtype=\"bar\",\n", " color=\"#2A9D8F\", # \"#107E7D\",\n", " label=\"found\",\n", " range=[-xlim, xlim],\n", ")\n", "# plt.xlim(-20000, 20000)\n", "# plt.yscale(\"log\")\n", "# plt.title(\"emitted energy difference\")\n", "plt.xlabel(r\"$\\Delta E_{VELO} - \\Delta E_{RICH1+UT}$ [MeV]\")\n", "plt.ylabel(\"a.u.\")\n", "plt.legend(title=\"LHCb Simulation\")\n", "# plt.show()\n", "plt.savefig(\n", " \"/work/cetin/Projektpraktikum/thesis/emitted_energy_difference.pdf\", format=\"PDF\"\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "nbins = 6\n", "quality_cut = electrons[jcut].quality != -1\n", "\n", "### all split in velo and rich\n", "\n", "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n", "ax = axs.ravel()\n", "for jcut, ax in enumerate(ax):\n", "ax.hist(\n", "ak.to_numpy(electrons[jcut][quality_cut][\"velo_length\"]),\n", "bins=nbins,\n", "density=True,\n", "alpha=0.5,\n", "color=\"darkorange\",\n", "histtype=\"bar\",\n", "label=\"velo\",\n", "range=[0, nbins],\n", ")\n", "ax.hist(\n", "ak.to_numpy(electrons[jcut][quality_cut][\"rich_length\"]),\n", "bins=nbins,\n", "density=True,\n", "alpha=0.5,\n", "color=\"blue\",\n", "histtype=\"bar\",\n", "label=\"rich\",\n", "range=[0, nbins],\n", ")\n", "ax.set_xlim(0, nbins)\n", "ax.set_ylim(0, 1)\n", "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n", "ax.set_xlabel(\"number of photons\")\n", "ax.set_ylabel(\"a.u.\")\n", "plt.suptitle(\"number of photons in velo and rich\")\n", "plt.legend()\n", "plt.tight_layout()\n", "plt.show()\n", "\n", "### found\n", "\n", "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n", "ax = axs.ravel()\n", "for jcut, ax in enumerate(ax):\n", "ax.hist(\n", "ak.to_numpy(\n", "electrons[jcut]~(electrons[jcut].lost) & quality_cut][\"velo_length\"]\n", "),\n", "bins=nbins,\n", "density=True,\n", "alpha=0.5,\n", "color=\"darkorange\",\n", "histtype=\"bar\",\n", "label=\"velo\",\n", "range=[0, nbins],\n", ")\n", "ax.hist(\n", "ak.to_numpy(\n", "electrons[jcut]~(electrons[jcut].lost) & quality_cut][\"rich_length\"]\n", "),\n", "bins=nbins,\n", "density=True,\n", "alpha=0.5,\n", "color=\"blue\",\n", "histtype=\"bar\",\n", "label=\"rich\",\n", "range=[0, nbins],\n", ")\n", "ax.set_xlim(0, nbins)\n", "ax.set_ylim(0, 1)\n", "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n", "ax.set_xlabel(\"number of photons\")\n", "ax.set_ylabel(\"a.u.\")\n", "plt.suptitle(\"number of photons of found electrons\")\n", "plt.legend()\n", "plt.tight_layout()\n", "plt.show()\n", "\n", "### lost\n", "\n", "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n", "ax = axs.ravel()\n", "for jcut, ax in enumerate(ax):\n", "ax.hist(\n", "ak.to_numpy(\n", "electrons[jcut](electrons[jcut].lost) & quality_cut][\"velo_length\"]\n", "),\n", "bins=nbins,\n", "density=True,\n", "alpha=0.5,\n", "color=\"darkorange\",\n", "histtype=\"bar\",\n", "label=\"velo\",\n", "range=[0, nbins],\n", ")\n", "ax.hist(\n", "ak.to_numpy(\n", "electrons[jcut](electrons[jcut].lost) & quality_cut][\"rich_length\"]\n", "),\n", "bins=nbins,\n", "density=True,\n", "alpha=0.5,\n", "color=\"blue\",\n", "histtype=\"bar\",\n", "label=\"rich\",\n", "range=[0, nbins],\n", ")\n", "ax.set_xlim(0, nbins)\n", "ax.set_ylim(0, 1)\n", "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n", "ax.set_xlabel(\"number of photons\")\n", "ax.set_ylabel(\"a.u.\")\n", "plt.suptitle(\"number of photons of lost electrons\")\n", "plt.legend()\n", "plt.tight_layout()\n", "plt.show()\n", "quality_cut = electrons[jcut].quality != -1\n", "\n", "### all split in lost and found\n", "\n", "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n", "ax = axs.ravel()\n", "for jcut, ax in enumerate(ax):\n", "ax.hist(\n", "ak.to_numpy(\n", "electrons[jcut](electrons[jcut].lost) & (quality_cut)][\"photon_length\"]\n", "),\n", "bins=10,\n", "density=True,\n", "alpha=0.5,\n", "color=\"darkorange\",\n", "histtype=\"bar\",\n", "label=\"lost\",\n", "range=[0, 10],\n", ")\n", "ax.hist(\n", "ak.to_numpy(\n", "electrons[jcut](~electrons[jcut].lost) & (quality_cut)][\"photon_length\"]\n", "),\n", "bins=10,\n", "density=True,\n", "alpha=0.5,\n", "color=\"blue\",\n", "histtype=\"bar\",\n", "label=\"found\",\n", "range=[0, 10],\n", ")\n", "ax.set_xlim(0, 10) # ax.set_ylim(0,1) # ax.set_yscale('log')\n", "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n", "ax.set_xlabel(\"number of photons\")\n", "ax.set_ylabel(\"a.u.\")\n", "plt.suptitle(\"number of photons in lost and found\")\n", "plt.legend()\n", "plt.tight_layout()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "tuner", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }