|
|
{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import uproot\t\n", "import numpy as np\n", "import sys\n", "import os\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits import mplot3d\n", "import itertools\n", "import awkward as ak\n", "from scipy.optimize import curve_fit\n", "from mpl_toolkits.axes_grid1 import ImageGrid\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10522" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "file = uproot.open(\"tracking_losses_ntuple_Bd2KstEE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n", "\n", "#selektiere nur elektronen von B->K*ee und nur solche mit einem momentum von ueber 5 GeV \n", "allcolumns = file.arrays()\n", "found = allcolumns[(allcolumns.isElectron) & (~allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p > 5e3)] #B: 9056\n", "lost = allcolumns[(allcolumns.isElectron) & (allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p > 5e3)] #B: 1466\n", "\n", "ak.num(found, axis=0) + ak.num(lost, axis=0)\n", "#ak.count(found, axis=None)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "eff all = 0.8606728758791105 +/- 0.003375885792719708\n" ] } ], "source": [ "def t_eff(found, lost, axis = 0):\n", " sel = ak.num(found, axis=axis)\n", " des = ak.num(lost, axis=axis)\n", " return sel/(sel + des)\n", "\n", "def eff_err(found, lost):\n", " n_f = ak.num(found, axis=0)\n", " n_all = ak.num(found, axis=0) + ak.num(lost,axis=0)\n", " return 1/n_all * np.sqrt(np.abs(n_f*(1-n_f/n_all)))\n", "\n", "\n", "print(\"eff all = \", t_eff(found, lost), \"+/-\", eff_err(found, lost))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#try excluding all photons that originate from a vtx @ z>9500mm\n", "#ignore all brem vertices @ z>9500mm \n", "\n", "#found\n", "\n", "brem_e_f = found[\"brem_photons_pe\"]\n", "brem_z_f = found[\"brem_vtx_z\"]\n", "e_f = found[\"energy\"]\n", "length_f = found[\"brem_vtx_z_length\"]\n", "\n", "brem_f = ak.ArrayBuilder()\n", "\n", "for itr in range(ak.num(found,axis=0)):\n", " brem_f.begin_record()\n", " #[:,\"energy\"] energy\n", " brem_f.field(\"energy\").append(e_f[itr])\n", " #[:,\"photon_length\"] number of vertices\n", " brem_f.field(\"photon_length\").integer(length_f[itr])\n", " #[:,\"brem_photons_pe\",:] photon energy \n", " brem_f.field(\"brem_photons_pe\").append(brem_e_f[itr])\n", " #[:,\"brem_vtx_z\",:] brem vtx z\n", " brem_f.field(\"brem_vtx_z\").append(brem_z_f[itr])\n", " brem_f.end_record()\n", "\n", "brem_f = ak.Array(brem_f)\n", "\n", "#lost\n", "\n", "brem_e_l = lost[\"brem_photons_pe\"]\n", "brem_z_l = lost[\"brem_vtx_z\"]\n", "e_l = lost[\"energy\"]\n", "length_l = lost[\"brem_vtx_z_length\"]\n", "\n", "brem_l = ak.ArrayBuilder()\n", "\n", "for itr in range(ak.num(lost,axis=0)):\n", " brem_l.begin_record()\n", " #[:,\"energy\"] energy\n", " brem_l.field(\"energy\").append(e_l[itr])\n", " #[:,\"photon_length\"] number of vertices\n", " brem_l.field(\"photon_length\").integer(length_l[itr])\n", " #[:,\"brem_photons_pe\",:] photon energy \n", " brem_l.field(\"brem_photons_pe\").append(brem_e_l[itr])\n", " #[:,\"brem_vtx_z\",:] brem vtx z\n", " brem_l.field(\"brem_vtx_z\").append(brem_z_l[itr])\n", " brem_l.end_record()\n", "\n", "brem_l = ak.Array(brem_l)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "cut_brem_found = ak.ArrayBuilder()\n", "\n", "for itr in range(ak.num(brem_f, axis=0)):\n", " cut_brem_found.begin_record()\n", " cut_brem_found.field(\"energy\").real(brem_f[itr,\"energy\"])\n", " \n", " cut_brem_found.field(\"brem_photons_pe\")\n", " cut_brem_found.begin_list()\n", " for jentry in range(brem_f[itr, \"photon_length\"]):\n", " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n", " continue\n", " else:\n", " cut_brem_found.real(brem_f[itr,\"brem_photons_pe\", jentry])\n", " \n", " #cut_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n", " cut_brem_found.end_list()\n", " \n", " cut_brem_found.field(\"brem_vtx_z\")\n", " cut_brem_found.begin_list()\n", " for jentry in range(brem_f[itr, \"photon_length\"]):\n", " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n", " continue\n", " else:\n", " cut_brem_found.real(brem_f[itr, \"brem_vtx_z\",jentry])\n", " cut_brem_found.end_list()\n", " \n", "\n", " \n", " cut_brem_found.end_record()\n", "\n", "cut_brem_found = ak.Array(cut_brem_found)\n", "\n", "\n", "\n", "cut_brem_lost = ak.ArrayBuilder()\n", "\n", "for itr in range(ak.num(brem_l, axis=0)):\n", " cut_brem_lost.begin_record()\n", " cut_brem_lost.field(\"energy\").real(brem_l[itr,\"energy\"])\n", " \n", " \n", " cut_brem_lost.field(\"brem_photons_pe\")\n", " cut_brem_lost.begin_list()\n", " for jentry in range(brem_l[itr, \"photon_length\"]):\n", " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n", " continue\n", " else:\n", " cut_brem_lost.real(brem_l[itr,\"brem_photons_pe\", jentry])\n", " \n", " #cut_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n", " cut_brem_lost.end_list()\n", " \n", " cut_brem_lost.field(\"brem_vtx_z\")\n", " cut_brem_lost.begin_list()\n", " for jentry in range(brem_l[itr, \"photon_length\"]):\n", " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n", " continue\n", " else:\n", " cut_brem_lost.real(brem_l[itr, \"brem_vtx_z\",jentry])\n", " cut_brem_lost.end_list()\n", " \n", " cut_brem_lost.end_record()\n", "\n", "cut_brem_lost = ak.Array(cut_brem_lost)\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<pre>{energy: 9.36e+03,\n", " brem_photons_pe: [2.47e+03, 170, 224, 388, 3.23e+03, 809, 172, 224],\n", " brem_vtx_z: [400, 501, 638, 667, 677, 709, 8.58e+03, 9.28e+03]}\n", "---------------------------------------------------------------------\n", "type: {\n", " energy: float64,\n", " brem_photons_pe: var * float64,\n", " brem_vtx_z: var * float64\n", "}</pre>" ], "text/plain": [ "<Record {energy: 9.36e+03, ...} type='{energy: float64, brem_photons_pe: va...'>" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#data in cut_brem_found and cut_brem_lost\n", "\n", "cut_length_found = ak.num(cut_brem_found[\"brem_photons_pe\"],axis=-1)\n", "cut_length_lost = ak.num(cut_brem_lost[\"brem_photons_pe\"], axis=-1)\n", "\n", "cut_brem_found[1]\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cut_length_found[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split in Upstream and Downstream Events and analyse separately" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#try to find a split between energy lost before and after the magnet (z~5000mm)\n", "\n", "upstream_found = ak.ArrayBuilder()\n", "downstream_found = ak.ArrayBuilder()\n", "\n", "for itr in range(ak.num(cut_brem_found, axis=0)):\n", " upstream_found.begin_record()\n", " upstream_found.field(\"energy\").real(cut_brem_found[itr,\"energy\"])\n", " \n", " downstream_found.begin_record()\n", " downstream_found.field(\"energy\").real(cut_brem_found[itr,\"energy\"])\n", " \n", " upstream_found.field(\"brem_photons_pe\")\n", " downstream_found.field(\"brem_photons_pe\")\n", " upstream_found.begin_list()\n", " downstream_found.begin_list()\n", " for jentry in range(cut_length_found[itr]):\n", " if (cut_brem_found[itr, \"brem_vtx_z\", jentry]>5000):\n", " if cut_brem_found[itr, \"brem_vtx_z\", jentry]<=9500:\n", " downstream_found.real(cut_brem_found[itr,\"brem_photons_pe\",jentry])\n", " else:\n", " continue\n", " else:\n", " upstream_found.real(cut_brem_found[itr,\"brem_photons_pe\", jentry]) \n", " upstream_found.end_list()\n", " downstream_found.end_list()\n", " \n", " upstream_found.field(\"brem_vtx_z\")\n", " downstream_found.field(\"brem_vtx_z\")\n", " upstream_found.begin_list()\n", " downstream_found.begin_list()\n", " for jentry in range(cut_length_found[itr]):\n", " if cut_brem_found[itr, \"brem_vtx_z\", jentry]>5000:\n", " if cut_brem_found[itr,\"brem_vtx_z\",jentry]<=9500:\n", " downstream_found.real(cut_brem_found[itr,\"brem_vtx_z\",jentry])\n", " else:\n", " continue\n", " else:\n", " upstream_found.real(cut_brem_found[itr, \"brem_vtx_z\",jentry])\n", " upstream_found.end_list()\n", " downstream_found.end_list()\n", " upstream_found.end_record()\n", " downstream_found.end_record()\n", " \n", "\n", "upstream_found = ak.Array(upstream_found)\n", "downstream_found = ak.Array(downstream_found)\n", "\n", "\n", "upstream_lost = ak.ArrayBuilder()\n", "downstream_lost = ak.ArrayBuilder()\n", "\n", "for itr in range(ak.num(cut_brem_lost, axis=0)):\n", " upstream_lost.begin_record()\n", " upstream_lost.field(\"energy\").real(cut_brem_lost[itr,\"energy\"])\n", " \n", " downstream_lost.begin_record()\n", " downstream_lost.field(\"energy\").real(cut_brem_lost[itr,\"energy\"])\n", " \n", " upstream_lost.field(\"brem_photons_pe\")\n", " downstream_lost.field(\"brem_photons_pe\")\n", " upstream_lost.begin_list()\n", " downstream_lost.begin_list()\n", " for jentry in range(cut_length_lost[itr]):\n", " if (cut_brem_lost[itr, \"brem_vtx_z\", jentry]>5000):\n", " if cut_brem_lost[itr, \"brem_vtx_z\", jentry]<=9500:\n", " downstream_lost.real(cut_brem_lost[itr,\"brem_photons_pe\",jentry])\n", " else:\n", " continue\n", " else:\n", " upstream_lost.real(cut_brem_lost[itr,\"brem_photons_pe\", jentry]) \n", " upstream_lost.end_list()\n", " downstream_lost.end_list()\n", " \n", " upstream_lost.field(\"brem_vtx_z\")\n", " downstream_lost.field(\"brem_vtx_z\")\n", " upstream_lost.begin_list()\n", " downstream_lost.begin_list()\n", " for jentry in range(cut_length_lost[itr]):\n", " if cut_brem_lost[itr, \"brem_vtx_z\", jentry]>5000:\n", " if cut_brem_lost[itr,\"brem_vtx_z\",jentry]<=9500:\n", " downstream_lost.real(cut_brem_lost[itr,\"brem_vtx_z\",jentry])\n", " else:\n", " continue\n", " else:\n", " upstream_lost.real(cut_brem_lost[itr, \"brem_vtx_z\",jentry])\n", " upstream_lost.end_list()\n", " downstream_lost.end_list()\n", " upstream_lost.end_record()\n", " downstream_lost.end_record()\n", " \n", "\n", "upstream_lost = ak.Array(upstream_lost)\n", "downstream_lost = ak.Array(downstream_lost)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<pre>{energy: 4.62e+04,\n", " brem_photons_pe: [3.26e+03, 4.45e+03, 178, 1.45e+04, 1.1e+03, 3.79e+03],\n", " brem_vtx_z: [162, 187, 387, 487, 1.34e+03, 2.32e+03]}\n", "-------------------------------------------------------------------------\n", "type: {\n", " energy: float64,\n", " brem_photons_pe: var * float64,\n", " brem_vtx_z: var * float64\n", "}</pre>" ], "text/plain": [ "<Record {energy: 4.62e+04, ...} type='{energy: float64, brem_photons_pe: va...'>" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "upstream_found[0]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "upstream: cutoff energy = 350MeV, sample size: 1562\n", "eff = 0.9181 +/- 0.007\n" ] } ], "source": [ "#plot efficiency against cutoff energy \n", "up_efficiencies = []\n", "up_deff = []\n", "\n", "\n", "for cutoff_energy in range(0,10050,200):\n", "\tup_nobrem_f = upstream_found[ak.sum(upstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "\tup_nobrem_l = upstream_lost[ak.sum(upstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "\t\n", "\tif ak.num(up_nobrem_f,axis=0)+ak.num(up_nobrem_l,axis=0)==0:\n", "\t\tup_efficiencies.append(0)\n", "\t\tup_deff.append(0)\n", "\t\tcontinue\n", "\n", "\teff = t_eff(up_nobrem_f,up_nobrem_l)\n", "\tdeff = eff_err(up_nobrem_f,up_nobrem_l)\n", "\tup_efficiencies.append(eff)\n", "\tup_deff.append(deff)\n", "\n", "\t#print(\"\\ncutoff = \",str(cutoff_energy),\"MeV, sample size: \",ak.num(up_nobrem_f,axis=0)+ak.num(up_nobrem_l,axis=0))\n", "\t#print(\"eff = \",np.round(eff,4), \"+/-\", np.round(eff_err(up_nobrem_f, up_nobrem_l),4))\n", "\n", "\"\"\"\n", "we see that a cutoff energy of xxxMeV is ideal because the efficiency drops significantly for higher values\n", "\"\"\"\n", "cutoff_energy = 350.0 #MeV\n", "\n", "\"\"\"\n", "better statistics: cutoff=xxxMeV - sample size: xxx events and efficiency=xxxx\n", "\"\"\"\n", "up_nobrem_found = upstream_found[ak.sum(upstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "up_nobrem_lost = upstream_lost[ak.sum(upstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "\n", "print(\"\\nupstream: cutoff energy = 350MeV, sample size:\",ak.num(up_nobrem_found,axis=0)+ak.num(up_nobrem_lost,axis=0))\n", "print(\"eff = \",np.round(t_eff(up_nobrem_found, up_nobrem_lost),4), \"+/-\", np.round(eff_err(up_nobrem_found, up_nobrem_lost),3))\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nobrem_vertices\n", "upstream: cutoff energy = 350MeV, sample size: 1562\n", "eff = 0.9181 +/- 0.007\n", "\n", "downstream: cutoff energy = 350MeV, sample size: 5131\n", "eff = 0.8864 +/- 0.004\n" ] } ], "source": [ "down_efficiencies = []\n", "down_deff = []\n", "\n", "for cutoff_energy in range(0,10050,200):\n", "\tdown_nobrem_f = downstream_found[ak.sum(downstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "\tdown_nobrem_l = downstream_lost[ak.sum(downstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "\n", "\tif ak.num(down_nobrem_f,axis=0)+ak.num(down_nobrem_l,axis=0)==0:\n", "\t\tdown_efficiencies.append(0)\n", "\t\tdown_deff.append(0)\n", "\t\tcontinue\n", "\teff = t_eff(down_nobrem_f,down_nobrem_l)\n", "\tdeff = eff_err(down_nobrem_f,down_nobrem_l)\n", "\tdown_efficiencies.append(eff)\n", "\tdown_deff.append(deff)\n", "\n", "\n", "\t#print(\"\\ncutoff = \",str(cutoff_energy),\"MeV, sample size: \",ak.num(down_nobrem_f,axis=0)+ak.num(down_nobrem_l,axis=0))\n", "\t#print(\"eff = \",np.round(eff,4), \"+/-\", np.round(eff_err(down_nobrem_f, down_nobrem_l),4))\n", "\n", "\"\"\"\n", "we see that a cutoff energy of xxxMeV is ideal because the efficiency drops significantly for higher values\n", "\"\"\"\n", "cutoff_energy = 350.0 #MeV\n", "\n", "\"\"\"\n", "better statistics: cutoff=xxxMeV - sample size: xxx events and efficiency=xxxx\n", "\"\"\"\n", "down_nobrem_found = downstream_found[ak.sum(downstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "down_nobrem_lost = downstream_lost[ak.sum(downstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n", "\n", "\n", "print(\"nobrem_vertices\\nupstream: cutoff energy = 350MeV, sample size:\",ak.num(up_nobrem_found,axis=0)+ak.num(up_nobrem_lost,axis=0))\n", "print(\"eff = \",np.round(t_eff(up_nobrem_found, up_nobrem_lost),4), \"+/-\", np.round(eff_err(up_nobrem_found, up_nobrem_lost),3))\n", "\n", "print(\"\\ndownstream: cutoff energy = 350MeV, sample size:\",ak.num(down_nobrem_found,axis=0)+ak.num(down_nobrem_lost,axis=0))\n", "print(\"eff = \",np.round(t_eff(down_nobrem_found, down_nobrem_lost),4), \"+/-\", np.round(eff_err(down_nobrem_found, down_nobrem_lost),3))\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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 "text/plain": [ "<Figure size 1800x600 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot efficiencies wrt cutoff energy\n", "fig, ax = plt.subplots(nrows=1,ncols=2,figsize=(18,6))\n", "x_ = np.arange(0,10050,step=200)\n", "\n", "ax[0].errorbar(x_,up_efficiencies,yerr=up_deff, ls=\"\", capsize=1,fmt=\".\")\n", "ax[0].set(xlabel=\"cutoff energy [MeV]\",ylabel=r\"$\\epsilon$\",title=\"upstream\", ylim=[0.8,1.0])\n", "#ax[0].set_yticks(np.arange(0.8,1.01,step=0.02),minor=False)\n", "#ax[0].set_xticks(np.arange(0,10100,step=200),minor=True)\n", "#ax[0].grid()\n", "\n", "ax[1].errorbar(x_,down_efficiencies,yerr=down_deff, ls=\"\", capsize=1,fmt=\".\")\n", "ax[1].set(xlabel=\"cutoff energy [MeV]\",ylabel=r\"$\\epsilon$\",title=\"downstream\", ylim=[0.8,1.0])\n", "#ax[1].set_yticks(np.arange(0.8,1.01,step=0.02),minor=False)\n", "#ax[1].set_xticks(np.arange(0,10100,step=200),minor=True)\n", "#ax[1].grid(True)\n", "\n", "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, nobrem electrons\")\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "brem vertices\n", "upstream eff = 0.851 +/- 0.004\n", "downstream eff = 0.836 +/- 0.005\n" ] } ], "source": [ "cutoff_energy=350\n", "#possibly: instead of checking if any photons exceed the cutoff, use the sum of all photon energies to separate nobrem and brem\n", "\n", "upstream_brem_found = upstream_found[ak.sum(upstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n", "up_energy_found = ak.to_numpy(upstream_brem_found[\"energy\"])\n", "up_eph_found = ak.to_numpy(ak.sum(upstream_brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n", "up_residual_found = up_energy_found - up_eph_found\n", "up_energyloss_found = up_eph_found/up_energy_found\n", "\n", "\n", "upstream_brem_lost = upstream_lost[ak.sum(upstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n", "up_energy_lost = ak.to_numpy(upstream_brem_lost[\"energy\"])\n", "up_eph_lost = ak.to_numpy(ak.sum(upstream_brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n", "up_residual_lost = up_energy_lost - up_eph_lost\n", "up_energyloss_lost = up_eph_lost/up_energy_lost\n", "\n", "\n", "print(\"brem vertices\\nupstream eff = \", np.round(t_eff(upstream_brem_found,upstream_brem_lost),3), \"+/-\", np.round(eff_err(upstream_brem_found, upstream_brem_lost),3))\n", "\n", "\n", "downstream_brem_found = downstream_found[ak.sum(downstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n", "down_energy_found = ak.to_numpy(downstream_brem_found[\"energy\"])\n", "down_eph_found = ak.to_numpy(ak.sum(downstream_brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n", "down_residual_found = down_energy_found - down_eph_found\n", "down_energyloss_found = down_eph_found/down_energy_found\n", "\n", "\n", "downstream_brem_lost = downstream_lost[ak.sum(downstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n", "down_energy_lost = ak.to_numpy(downstream_brem_lost[\"energy\"])\n", "down_eph_lost = ak.to_numpy(ak.sum(downstream_brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n", "down_residual_lost = down_energy_lost - down_eph_lost\n", "down_energyloss_lost = down_eph_lost/down_energy_lost\n", "\n", "\n", "print(\"downstream eff = \", np.round(t_eff(downstream_brem_found,downstream_brem_lost),3), \"+/-\", np.round(eff_err(downstream_brem_found, downstream_brem_lost),3))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "upstream:\n", "mean energyloss relative to initial energy (found): 0.33078325542598164\n", "mean energyloss relative to initial energy (lost): 0.5708618852236069\n", "downstream:\n", "mean energyloss relative to initial energy (found): 0.19104090843883118\n", "mean energyloss relative to initial energy (lost): 0.3051594568487781\n" ] } ], "source": [ "print(\"upstream:\\nmean energyloss relative to initial energy (found): \",ak.mean(up_energyloss_found))\n", "print(\"mean energyloss relative to initial energy (lost): \", ak.mean(up_energyloss_lost))\n", "\n", "print(\"downstream:\\nmean energyloss relative to initial energy (found): \",ak.mean(down_energyloss_found))\n", "print(\"mean energyloss relative to initial energy (lost): \", ak.mean(down_energyloss_lost))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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 "text/plain": [ "<Figure size 1800x600 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#in abhängigkeit von der energie der elektronen\n", "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18,6))\n", "\n", "\n", "ax[0].hist(up_energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n", "ax[0].hist(up_energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n", "#ax[0].set_xticks(np.arange(0,1.1,0.1), minor=True,)\n", "#ax[0].set_yticks(np.arange(0,11,1), minor=True)\n", "ax[0].set_xlabel(r\"$E_\\gamma/E_0$\")\n", "ax[0].set_ylabel(\"counts (normed)\")\n", "ax[0].set_title(\"Upstream\")\n", "ax[0].legend()\n", "#ax[0].grid()\n", "\n", "ax[1].hist(down_energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n", "ax[1].hist(down_energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n", "#ax[1].set_xticks(np.arange(0,1.1,0.1), minor=True,)\n", "#ax[1].set_yticks(np.arange(0,11,1), minor=True)\n", "ax[1].set_xlabel(r\"$E_\\gamma/E_0$\")\n", "ax[1].set_ylabel(\"counts (normed)\")\n", "ax[1].set_title(\"Downstream\")\n", "ax[1].legend()\n", "#ax[1].grid()\n", "\n", "\"\"\"\n", "most electrons lose little energy relative to their initial energy downstream\n", "\"\"\"\n", "fig.suptitle(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, photons w/ brem_vtx_z$<9500$mm\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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 "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(up_energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n", "plt.hist(up_energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n", "plt.xlabel(r\"$E_\\gamma/E_0$\")\n", "plt.ylabel(\"counts (normed)\")\n", "plt.title(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, photons w/ brem_vtx_z$<9500$mm\")\n", "plt.legend(title=\"LHCb Simulation\", title_fontsize=15)\n", "plt.text(0.35,2.0, \"Upstream\", size=15)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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 "text/plain": [ "<Figure size 2000x600 with 3 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#energyloss in abh von der energie der elektronen\n", "#upstream\n", "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", "\n", "a0=ax0.hist2d(up_energyloss_found, up_energy_found, bins=(np.linspace(0,1,80), np.linspace(0,5e4,80)), cmap=plt.cm.jet, cmin=1, vmax=15)\n", "ax0.set_ylim(0,5e4)\n", "ax0.set_xlim(0,1)\n", "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax0.set_ylabel(r\"$E_0$\")\n", "ax0.set_title(\"found energyloss wrt electron energy\")\n", "\n", "a1=ax1.hist2d(up_energyloss_lost, up_energy_lost, bins=(np.linspace(0,1,50), np.linspace(0,5e4,50)), cmap=plt.cm.jet, cmin=1, vmax=15)\n", "ax1.set_ylim(0,5e4)\n", "ax1.set_xlim(0,1)\n", "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax1.set_ylabel(r\"$E_0$\")\n", "ax1.set_title(\"lost energyloss wrt electron energy\")\n", "\n", "fig.colorbar(a1[3],ax=ax1)\n", "fig.suptitle(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, Upstream photons w/ brem_vtx_z$<9500$mm\")\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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 "text/plain": [ "<Figure size 2000x600 with 3 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#downstream\n", "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", "\n", "a0=ax0.hist2d(down_energyloss_found, down_energy_found, bins=(np.linspace(0,1,80), np.linspace(0,5e4,80)), cmap=plt.cm.jet, cmin=1, vmax=15)\n", "ax0.set_ylim(0,5e4)\n", "ax0.set_xlim(0,1)\n", "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax0.set_ylabel(r\"$E_0$\")\n", "ax0.set_title(\"found energyloss wrt electron energy\")\n", "\n", "a1=ax1.hist2d(down_energyloss_lost, down_energy_lost, bins=(np.linspace(0,1,50), np.linspace(0,5e4,50)), cmap=plt.cm.jet, cmin=1, vmax=15)\n", "ax1.set_ylim(0,5e4)\n", "ax1.set_xlim(0,1)\n", "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax1.set_ylabel(r\"$E_0$\")\n", "ax1.set_title(\"lost energyloss wrt electron energy\")\n", "\n", "fig.colorbar(a1[3],ax=ax1)\n", "fig.suptitle(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, Downstream photons w/ brem_vtx_z$<9500$mm\")\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABkMAAAJPCAYAAADPIqNiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACp7ElEQVR4nOz9f5Aj6X3feX6ye8hW743Z6KLsG/IubBVqGSHLskUmmjJHveYcOYB1Dt/KKzWq21qfbe4eByVvURZjJlRwa+/cbEWsS6jQcCmLdSbQf5gXsQ6rG2h5bYd2wwSGjKG3Nb5gAxpZ1o+zVChb55W4PqoKPR6r2cOuzvujmOj6gR/PF5UJJLLerwjETBe++eDJJ5988GQ+ePLxgiAIBAAAAAAAAAAAkFJnZp0BAAAAAAAAAACAODEYAgAAAAAAAAAAUo3BEAAAAAAAAAAAkGoMhgAAAAAAAAAAgFRjMAQAAAAAAAAAAKQagyEAAAAAAAAAACDVGAwBAAAAAAAAAACpxmAIAACIVK/Xm3UWAAAAAAAADmEwBAAARKrVaqnVas06GwAAAAAAAH0MhgAAAAAAAAAAgFRjMAQAAACIWafTmXUWkBK9Xk+1Wk3dbnfWWUmVbrerWq3Gox4hiTYbAIC0YjAEAAAkSqfTUblc1vLyspaWlrSxsTHrLI3U6/W0sbEhz/PkeZ4uXryo5eVlFQqFROa/VqtpaWmpn99CodB/rFmn01GhUOi/dzTv5XKZG7AOlpeX+2UYvsrl8sDYTqfTr+sXL15ULpdToVBQuVxWrVZTLpczfXar1Tp0fHO5nBqNxrG4RqOhXC7Xj3G98ddoNA7t38WLF1Uulw/dQO71eiqXywPrGE6mVqtpcXFRKysr3LQ3WllZGXo+bWxsaGlpSSsrK9rZ2ZlyzhCHbrerlZUVraysaHl5eeQ549pmh32T8Dt+2PehaxwAAJg+LwiCYNaZAAAA82tlZeXQv8OL/mw2e+jv1Wp1bFqdTkcvvviidnd3Jal/k9Vl21kLbyhXq1WVSiVJT28cF4tF1ev1GefwqY2NDZXLZWWzWW1tbR16r1AoaGdnR6+99poymYyk/RuwpVJJGxsbKhaL6vV62tnZUT6fn0Huk63X6ymXy8n3/UN/v379+rG/lcvlfplWKpX+ORMOJtRqNUmStbve6/V08eJFSTpUH4+q1Woql8v9883i4sWL6vV6qtfrKhaLA2M2NjZUrVaP1bGodLtdLSws9OvpaRHWm3a7faxOTeo0lOXFixdVqVSGng/Ly8tqNBra2to69v2VZmk89p1OR7lc7tA5Erap7Xb70PF1bbNzuZyy2Wz/u7zVaml5eVmvvfbaRHEAAGA2GAwBAACRajQaymQyE90oX15eVqfTie3maZzCm8NHb6R5nifJfkM7TisrK6rVasdulC8vL2thYeHY4FM4yCNJS0tL+oM/+ANdv349VTfPolIul/XhD3946ABBKLzxWqlUtLa2NjCmVqtpZWVloroT3jDP5/NqNpsDY1ZWVrS0tDT080dZWlpSt9tVs9kceq63Wi1Vq9XYBgJzuZzq9fqpunEtPR3MjHIwJO1l2Wq1VCgUtLu7O7TdCtvF0zYYksZjH84Aarfbh/7ued6xHye4tNlhe3q0/hz9HNc4AAAwOzwmCwAAJMa8PqO70+mo1+spm80OvaEU9SNtNjY2Jn70RvjIovAmdrfb7T+eadAsHN/3lcvl1O129Qd/8Ae6du1aKgZCwl8EhzMwohCu5TCqLjcaDTUaDfm+P3IgolQqTXyz+/r165L2j/WwvNy5c2for+STLhw4xcmdhrKsVqvyfT8V7VaU5u3Yh4/3G/XdF7a/ly5dOvZePp9Xo9E4tL1Lm12r1ZTNZo/Vn2vXrqnT6fS3dY0DAACzw2AIAACYuVqtpuXlZXW7XXW73f6ztsOb9o1Go7/uQK1W08WLFw89nqvX62llZUXlclmFQuHYGgXhgsOFQqF/46NQKOjixYsqFAr9gYrwufHhOgiujg4uhMK1GuK4CZfNZlWpVMzb9Xo9dbtdZTIZZbPZftneunVr5ONjstmsCoWCrl+/rtu3b0c6gDArmUxGr732mra2tiJZ32VjY6P/iKtcLqeLFy8OXK8jrFtHHzE3yKBZFeE6I+G6NIPqaiaT6f/SeX19/dj7jUZD+Xw+1pvDCwsLh/4dnoe5XK5/LofltLy8fGzdkfCcDmewhHWu0Wj0byqG6wGE/x7XVriU3cbGRv+zjw6WxdWWWMomtLOz04/zPE/Ly8sD0x3VNo4qS5ftD+a70Wio1WoNzc+oYzpMq9Xqr+EQptfpdPrr4hxd7yZc++HozfJGo+F0vh3M58WLF4/VnzCtSetY3N9F4edfvHixXz4HyyJcy2djY2PosQ/zFJZ7o9FQr9fr59PSTi4tLalQKPTX7Di4NodlYCBc66rZbOq1114bOYslTHdQ2xZuF8a4tNnhjx0GDUyHf7t9+7Zz3EnrwDTqEAAAqRYAAAA4qNfrQalUCtbW1gLf94Otra2hcc1mc6LPyGazQTabPZZeNpsNJB36fN/3gyAIgna7HWQymaDdbve3qVargaSgUqkEQRAEW1tbQalUCiQF+Xw+WFtbC9rtdtBsNvt/K5VKQbPZDLa2toJisRhIOpTmKPl8PpAU1Ov1Q/mWNLKsTupoWbkIyyafzwfFYjHI5/PB7u6u07ZhuY3iUk9c65KLer0e5PP5IJPJBPV6PahWq4Hv+4GkoFgsmtKqVCpBNpsN1tbWnMvkoN3d3aBerwdra2v9OhvW29DW1lb/75OcJ+12O8jn8/1/h/Xs4GcM+qyj++P7/sTnaRAE/f0blUa73T50DMJz8OB5WK/X++fbwfpcLBaDtbW1/r+r1Wr/fA6C/boo6VDdcWkrxpVdmG4obCPC/YyrLbGUTaVS6cdVKpWg3W73tz9YRi5t47CydN3+4D4eLI9B+Rl3TIcJ83ewroXlfTC9MM2jfwuP87hz+uBxLZVKh9qSsN6ctI7F/V109HOPtoFbW1uH8jfs2AfB03M8fC+fz5vzcbRdCuvuoPZqkEna5LAsB7X/4f6G9c6lzQ7r/KA8t9vt/me5xp20DkyrDgEAkFYMhgAAgLFKpdKhGwuZTCaoVqv99w6+8vl8/2L84MvFoMGQIHh6A+XoTa4g2L+pe/DmzsG/H7yRE96MOJqXo3EHY11u1AVB0L+BEt4UkxRkMpkT3Wx2EQ4EWIQ3RjKZjGkfgyAYO2gxqp5YYqzCG0MHB2vCm16D6sw41Wo1yGazQalUmmhQJBTekDx4Ize8YTXq5my73Q4qlcqhV7i97/vHbmqFx3JQeuFA3cFy2NraCjKZzMT7FQSTDYYEwdNz+egxPzqgmMlkjh07lxv449qKcWUXDqyFdnd3j6UXV1viWjbD4g7etA/z49I2DitL1+3Den50H4/mZ9wxHSYc1DtalzKZzLHvi/Bm89G/ubSTYTtycFA7CI7X9ZPWsTi/iwbl+6BKpXJo/0YNhhy90T9JW3qwfQjPpUwmM7Jd3d3d7Q9OTLLf4ecM+t1nuL/DvnMGtdmjjndYN33fd44LgpPXgWnVIQAA0ojHZAEAgJEKhYLu3LmjW7duSVL/kRnhI6Gq1eqhV7PZVLPZPPb3kwgfd/HhD3/40N/D53wPeixF+NiSo5999NEZ4WMzDj7SJ/yby0Lu4SNjfN9Xu93uvyQde6RM1IrFYv/RNa5rkoT5ee211yTtPzbFddtRjyYZV09cYyZx//59SfvPZQ/rwrVr1yRponVVSqWStra2VCgU9OKLL2plZWWidIrFYn/xcss54Pu+SqWSyuVy//Em+Xy+X9/X19f7j5I7+CiisBwOCrc/+DiiSqXSX1NkVo7WpfB8Dcsrm81qY2Pj0CN5XBZ6H9dWjCu7er1+aJHj8O+DzpGo25Kj24SOlk3o6JoImUymX08naRsPiqJtlfYf5RWa9Jhms1n5vj/wkXPhoxWl/WMUrt10UKPRGPgIsWGO7vPR8j9pHQvFVX+O5vtgud2+fXvkQuEHhe1Qo9FQpVKZ6LGMB9v2l156SdJ++zOornS "text/plain": [ "<Figure size 2000x600 with 3 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plot residual energy against energyloss and try to find a good split (eg energyloss before and after the magnet)\n", "#upstream\n", "nbins=60\n", "\n", "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", "\n", "a0=ax0.hist2d(up_energyloss_found, up_residual_found, bins=(np.linspace(0,1,nbins), np.linspace(0,5e4,nbins)), cmap=plt.cm.jet, cmin=1, vmax=20)\n", "ax0.set_ylim(0,5e4)\n", "ax0.set_xlim(0,1)\n", "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax0.set_ylabel(r\"$E_0-E_\\gamma$\")\n", "ax0.set_title(\"found energyloss wrt residual electron energy\")\n", "\n", "a1=ax1.hist2d(up_energyloss_lost, up_residual_lost, bins=(np.linspace(0,1,nbins), np.linspace(0,5e4,nbins)), cmap=plt.cm.jet, cmin=1, vmax=20) \n", "ax1.set_ylim(0,5e4)\n", "ax1.set_xlim(0,1)\n", "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax1.set_ylabel(r\"$E_0-E_\\gamma$\")\n", "ax1.set_title(\"lost energyloss wrt residual electron energy\")\n", "\n", "fig.colorbar(a1[3],ax=ax1)\n", "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, Upstream photons w/ brem_vtx_z$<9500$mm\")\n", "\n", "\"\"\"\n", "\"\"\"\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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 "text/plain": [ "<Figure size 2000x600 with 3 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#downstream\n", "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n", "\n", "a0=ax0.hist2d(down_energyloss_found, down_residual_found, bins=(np.linspace(0,1,60), np.linspace(0,5e4,60)), cmap=plt.cm.jet, cmin=1, vmax=25)\n", "ax0.set_ylim(0,5e4)\n", "ax0.set_xlim(0,1)\n", "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax0.set_ylabel(r\"$E_0-E_\\gamma$\")\n", "ax0.set_title(\"found energyloss wrt residual electron energy\")\n", "\n", "a1=ax1.hist2d(down_energyloss_lost, down_residual_lost, bins=(np.linspace(0,1,60), np.linspace(0,5e4,60)), cmap=plt.cm.jet, cmin=1, vmax=20) \n", "ax1.set_ylim(0,5e4)\n", "ax1.set_xlim(0,1)\n", "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n", "ax1.set_ylabel(r\"$E_0-E_\\gamma$\")\n", "ax1.set_title(\"lost energyloss wrt residual electron energy\")\n", "\n", "fig.colorbar(a0[3],ax=ax1)\n", "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, Downstream photons w/ brem_vtx_z$<9500$mm\")\n", "\n", "\"\"\"\n", "\"\"\"\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "env1", "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 }
|