You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

743 lines
299 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 66,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "import uproot\t\n",
  10. "import numpy as np\n",
  11. "import sys\n",
  12. "import os\n",
  13. "import matplotlib\n",
  14. "import matplotlib.pyplot as plt\n",
  15. "from mpl_toolkits import mplot3d\n",
  16. "import itertools\n",
  17. "import awkward as ak\n",
  18. "from scipy.optimize import curve_fit\n",
  19. "from mpl_toolkits.axes_grid1 import ImageGrid\n",
  20. "%matplotlib inline"
  21. ]
  22. },
  23. {
  24. "cell_type": "code",
  25. "execution_count": 67,
  26. "metadata": {},
  27. "outputs": [
  28. {
  29. "data": {
  30. "text/plain": [
  31. "10522"
  32. ]
  33. },
  34. "execution_count": 67,
  35. "metadata": {},
  36. "output_type": "execute_result"
  37. }
  38. ],
  39. "source": [
  40. "file = uproot.open(\"tracking_losses_ntuple_Bd2KstEE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n",
  41. "\n",
  42. "#selektiere nur elektronen von B->K*ee und nur solche mit einem momentum von ueber 5 GeV \n",
  43. "allcolumns = file.arrays()\n",
  44. "found = allcolumns[(allcolumns.isElectron) & (~allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p > 5e3)] #B: 9056\n",
  45. "lost = allcolumns[(allcolumns.isElectron) & (allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p > 5e3)] #B: 1466\n",
  46. "\n",
  47. "ak.num(found, axis=0) + ak.num(lost, axis=0)\n",
  48. "#ak.count(found, axis=None)"
  49. ]
  50. },
  51. {
  52. "cell_type": "code",
  53. "execution_count": 68,
  54. "metadata": {},
  55. "outputs": [
  56. {
  57. "name": "stdout",
  58. "output_type": "stream",
  59. "text": [
  60. "eff all = 0.8606728758791105 +/- 0.003375885792719708\n"
  61. ]
  62. }
  63. ],
  64. "source": [
  65. "def t_eff(found, lost, axis = 0):\n",
  66. " sel = ak.num(found, axis=axis)\n",
  67. " des = ak.num(lost, axis=axis)\n",
  68. " return sel/(sel + des)\n",
  69. "\n",
  70. "def eff_err(found, lost):\n",
  71. " n_f = ak.num(found, axis=0)\n",
  72. " n_all = ak.num(found, axis=0) + ak.num(lost,axis=0)\n",
  73. " return 1/n_all * np.sqrt(np.abs(n_f*(1-n_f/n_all)))\n",
  74. "\n",
  75. "\n",
  76. "print(\"eff all = \", t_eff(found, lost), \"+/-\", eff_err(found, lost))"
  77. ]
  78. },
  79. {
  80. "cell_type": "code",
  81. "execution_count": 74,
  82. "metadata": {},
  83. "outputs": [
  84. {
  85. "name": "stdout",
  86. "output_type": "stream",
  87. "text": [
  88. "sample size: 32\n",
  89. "eff (cutoff = 0 ) = 0.9688 +/- 0.0308\n",
  90. "sample size: 32\n",
  91. "eff (cutoff = 100 ) = 0.9688 +/- 0.0308\n",
  92. "sample size: 65\n",
  93. "eff (cutoff = 200 ) = 0.9692 +/- 0.0214\n",
  94. "sample size: 129\n",
  95. "eff (cutoff = 300 ) = 0.9457 +/- 0.0199\n",
  96. "sample size: 169\n",
  97. "eff (cutoff = 400 ) = 0.9408 +/- 0.0181\n",
  98. "sample size: 227\n",
  99. "eff (cutoff = 500 ) = 0.9207 +/- 0.0179\n",
  100. "\n",
  101. "cutoff energy = 350MeV, sample size: 150\n",
  102. "eff = 0.9533 +/- 0.0172\n"
  103. ]
  104. }
  105. ],
  106. "source": [
  107. "#finden wir die elektronen die keine bremsstrahlung gemacht haben mit hoher effizienz?\n",
  108. "#von energie der photonen abmachen\n",
  109. "#scan ab welcher energie der photonen die effizienz abfällt\n",
  110. "\n",
  111. "#abhängigkeit vom ort der emission untersuchen <- noch nicht gemacht\n",
  112. "\n",
  113. "\n",
  114. "\n",
  115. "#idea: we make an event cut st all events that contain a photon of energy > cutoff_energy are not included\n",
  116. "\"\"\"\n",
  117. "ph_e = found[\"brem_photons_pe\"]\n",
  118. "event_cut = ak.all(ph_e<cutoff_energy,axis=1)\n",
  119. "ph_e = ph_e[event_cut]\n",
  120. "\"\"\"\n",
  121. "\n",
  122. "\n",
  123. "\n",
  124. "\n",
  125. "for cutoff_energy in range(0,550,100):\n",
  126. "\tnobrem_f = found[ak.all(found[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  127. "\tnobrem_l = lost[ak.all(lost[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  128. "\tprint(\"sample size: \",ak.num(nobrem_f,axis=0)+ak.num(nobrem_l,axis=0))\n",
  129. "\tprint(\"eff (cutoff = \",str(cutoff_energy),\") = \",str(np.round(t_eff(nobrem_f,nobrem_l),4)), \"+/-\", np.round(eff_err(nobrem_f, nobrem_l),4))\n",
  130. "\n",
  131. "\"\"\"\n",
  132. "we see that a cutoff energy of 350MeV is ideal because the efficiency drops significantly for higher values\n",
  133. "\"\"\"\n",
  134. "cutoff_energy = 350.0 #MeV\n",
  135. "\n",
  136. "\"\"\"\n",
  137. "better statistics: cutoff=350MeV - sample size: 150 events and efficiency=0.9533\n",
  138. "\"\"\"\n",
  139. "nobrem_found = found[ak.all(found[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  140. "nobrem_lost = lost[ak.all(lost[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  141. "\n",
  142. "print(\"\\ncutoff energy = 350MeV, sample size:\",ak.num(nobrem_found,axis=0)+ak.num(nobrem_lost,axis=0))\n",
  143. "print(\"eff = \",np.round(t_eff(nobrem_found, nobrem_lost),4), \"+/-\", np.round(eff_err(nobrem_found, nobrem_lost),4))"
  144. ]
  145. },
  146. {
  147. "cell_type": "code",
  148. "execution_count": null,
  149. "metadata": {},
  150. "outputs": [],
  151. "source": []
  152. },
  153. {
  154. "cell_type": "code",
  155. "execution_count": 75,
  156. "metadata": {},
  157. "outputs": [
  158. {
  159. "name": "stdout",
  160. "output_type": "stream",
  161. "text": [
  162. "eff = 0.8593 +/- 0.0034\n"
  163. ]
  164. }
  165. ],
  166. "source": [
  167. "#wie viel energie relativ zur anfangsenergie verlieren die elektronen durch bremstrahlung und hat das einen einfluss darauf ob wir sie finden oder nicht?\n",
  168. "#if any photon of an electron has an energy higher the cutoff then it is included\n",
  169. "cutoff_energy=350\n",
  170. "\n",
  171. "brem_found = found[ak.any(found[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
  172. "energy_found = ak.to_numpy(brem_found[\"energy\"])\n",
  173. "eph_found = ak.to_numpy(ak.sum(brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  174. "energyloss_found = eph_found/energy_found\n",
  175. "\n",
  176. "brem_lost = lost[ak.any(lost[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
  177. "energy_lost = ak.to_numpy(brem_lost[\"energy\"])\n",
  178. "eph_lost = ak.to_numpy(ak.sum(brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  179. "energyloss_lost = eph_lost/energy_lost\n",
  180. "\n",
  181. "print(\"eff = \", np.round(t_eff(brem_found,brem_lost),4), \"+/-\", np.round(eff_err(brem_found, brem_lost),4))"
  182. ]
  183. },
  184. {
  185. "cell_type": "code",
  186. "execution_count": 71,
  187. "metadata": {},
  188. "outputs": [
  189. {
  190. "name": "stdout",
  191. "output_type": "stream",
  192. "text": [
  193. "mean energyloss relative to initial energy (found): 0.6551043170507098\n",
  194. "mean energyloss relative to initial energy (lost): 0.8273131179948844\n"
  195. ]
  196. }
  197. ],
  198. "source": [
  199. "mean_energyloss_found = ak.mean(energyloss_found)\n",
  200. "mean_energyloss_lost = ak.mean(energyloss_lost)\n",
  201. "print(\"mean energyloss relative to initial energy (found): \", mean_energyloss_found)\n",
  202. "print(\"mean energyloss relative to initial energy (lost): \", mean_energyloss_lost)"
  203. ]
  204. },
  205. {
  206. "cell_type": "code",
  207. "execution_count": 72,
  208. "metadata": {},
  209. "outputs": [
  210. {
  211. "data": {
  212. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHMCAYAAAAgfimTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA51klEQVR4nO3deXhU9d3+8XuSTDZCAgTCmrIGNAFBASngglZQUbFPfVyKIiJuNT8hxbK5JlYakaooD0JBlC5SaRWQKgqpkgAiWwhWDAIClaDQsCaBSBgy5/cHZkrINnMy20ner+vKFebMWT7zadq5+z3fc47NMAxDAAAAFhUS6AIAAADqgzADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADwC9WrFghm81W48+CBQu8cpzy8nIlJCTolVde8fuxAQRGWKALANA4bN26VZL0/vvvKyEhocr7ycnJXjnOmjVrdPjwYf3iF7/w+7EBBAZhBoBfbN26VbGxsbrllltks9l8dpx3331X/fr1U8eOHf1+bACBwWkmAH6Rm5ur3r17+zRMGIahpUuX6rbbbvP7sQEEDmEGgM8dPXpU+/fvV69evXT27NkqP4ZheOU469ev18GDByuFGX8dG0DgEGYA+FzFnJXXX39ddru9yk9+fn6d+zAMQ7GxsTpy5EiN67z77rvq1auXkpKSPD724cOHddNNN6lJkybq3r27srKy6vORAfgRc2YA+Fxubq4kacmSJUpMTKzyvjsTcHfv3q1WrVqpZcuWNa6zZMkS3X///aaOnZqaqjZt2ujw4cP65z//qTvuuEPffPON4uPj66wNQGARZgD43NatWxUZGakRI0YoNDS0xvX+8Ic/6O9//7vsdrs2btyodu3a6W9/+5uSk5O1detW9enTRw8//LAWL16sdu3aafny5erWrZskadOmTdq/f3+V+TLuHPvkyZNatmyZ9uzZo+joaI0YMUK9e/fW+++/XyUcAQg+nGYC4HNbt25Vz549aw0ykrR9+3Zt3rxZaWlp+s9//qMBAwboqaeekiTl5eVpy5YtGjNmjI4dO6bLLrtM8+fPd2373nvvqXv37urZs6fHx969e7diYmIqjdz06tVLX331lZmPC8DPCDMAfKqoqEh79+5V796961x3+/bt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
  213. "text/plain": [
  214. "<Figure size 640x480 with 1 Axes>"
  215. ]
  216. },
  217. "metadata": {},
  218. "output_type": "display_data"
  219. }
  220. ],
  221. "source": [
  222. "#in abhängigkeit von der energie der elektronen\n",
  223. "plt.hist(energyloss_lost, bins=200, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
  224. "plt.hist(energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  225. "plt.xticks(np.arange(0,1.1,0.1), minor=True,)\n",
  226. "plt.yticks(np.arange(0,10,1), minor=True)\n",
  227. "plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
  228. "plt.ylabel(\"counts (normed)\")\n",
  229. "plt.title(r'$E_{ph}/E_0$')\n",
  230. "plt.legend()\n",
  231. "plt.grid()\n",
  232. "\n",
  233. "\"\"\"\n",
  234. "\n",
  235. "\"\"\"\n",
  236. "\n",
  237. "plt.show()"
  238. ]
  239. },
  240. {
  241. "cell_type": "code",
  242. "execution_count": 73,
  243. "metadata": {},
  244. "outputs": [
  245. {
  246. "data": {
  247. "image/png": "iVBORw0KGgoAAAANSUhEUgAABj8AAAIhCAYAAAARqaheAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADUMklEQVR4nOzdf1yV9f3/8ecR5AgIJ/wBeIzUmpGGVtNCtM/QFNCJbmvliiSpZi5dzsBV1pY/lmim5D5aVs6l+SNbn6bfyiLQSnOKkj+aqNNampogVgjqFBTf3z8cVx1BFDvI4ZzH/Xa7bnmu63Wu631d50DvF+/r9b5sxhgjAAAAAAAAAAAAL9GkoRsAAAAAAAAAAADgTgx+AAAAAAAAAAAAr8LgBwAAAAAAAAAA8CoMfgAAAAAAAAAAAK/C4AcAAAAAAAAAAPAqDH4AAAAAAAAAAACvwuAHAAAAAAAAAADwKgx+AAAAAAAAAAAAr8LgBwAAAAAAAAAA8CoMfgAN5PXXX9f111+vwMBA2Ww2bd26taGbVKMJEybIZrM1dDM8Rlpamtq3b9/Qzah37777riZMmOD2/c6fP182m0179+51+74laceOHZowYUK97R8AAACeo777li+88ILmz59fL/tuzNq3b6+0tLSGbka9q6/Pv75zyvrK5QCgMWLwA2gAhw8fVmpqqq655hplZ2dr/fr1uvbaaxu6WYDl3Xff1cSJExu6GXW2Y8cOTZw4kcEPAAAA/GAMfvi2xvr5N9ZcDgDqA4MfQAPYvXu3Tp06paFDhyo+Pl49evRQUFBQQzfLq/znP/9p6CY0Sr523XztfL/vxIkTMsY0dDMAAABQD4wxOnHiREM3o1HypRzB178nvvRZA76KwQ/gMktLS9Ott94qSfrVr34lm82m3r17W9vfeustxcXFKSgoSCEhIUpISND69eur7aOmMtmapqiy2Wz67W9/q4ULF6pTp04KCgrSDTfcoHfeeafa+1esWKEbb7xRdrtdHTp00PTp0+t0bitXrlTfvn0VGhqqoKAg9erVS6tWraqxjdu3b9fdd98th8OhiIgI3X///SotLXWJNcbohRde0I033qjAwECFhYXpjjvu0BdffOES17t3b8XExGjNmjXq2bOngoKCdP/990uSDhw4oDvuuEMhISG64oordM899yg/P182m826i2fhwoWy2WzVrrMkTZo0SU2bNtXBgwfPe94nT57UuHHj1KFDBwUEBKht27YaNWqUjhw54hL3wQcfqHfv3mrZsqUCAwN11VVX6Ze//KVLh2vOnDm64YYb1Lx5c4WEhOi6667TE088Uet1v/nmmzVw4ECXdV26dJHNZlN+fr617u9//7tsNpu2bdsm6bvPYvPmzbrjjjsUFhama665RmlpaXr++eclnf3+VC0Xqqa4mM//h773X//6l+6++25FRETIbrfrqquu0r333qvy8nLNnz9fd955pySpT58+VrurPufavif79u3T0KFDFR4eLrvdrk6dOmnGjBk6c+aMdey9e/fKZrNp+vTpysrKUocOHdS8eXPFxcUpLy/vos6zqKhII0aM0JVXXqmAgAB16NBBEydO1OnTpy/5OJ988okGDx6sFi1aqFmzZrrpppv0t7/9zSWmakqInJwc3X///WrdurWCgoJUXl4uY4wyMzPVrl07NWvWTN27d1dubq569+5t/W46duyYrrjiCo0YMaLa8ffu3Ss/Pz89++yzF3UNAAAA6ttf//pX3XDDDWrWrJlatGihX/ziF9q5c6dLzBdffKG77rpLTqdTdrtdERER6tu3rzUdcfv27bV9+3atXr3a6ldeaKqiuuYv+fn5+p//+R8FBQXp6quv1tSpU136n5JUVlamsWPHuuQaY8aM0fHjx13iqvK+F198UZ06dZLdbteCBQskSWvXrlVcXJyaNWumtm3b6o9//KP+8pe/uPTxH3jgAbVo0aLGPwbfdtttuv7662s994vpT0sXznf+85//WOdb9fl1795dr7322nmPXVZWJn9/f5f+6Ndff60mTZrI4XC49LVHjx6t1q1bWzcBnS9HqM/P/4e+Nzs7W3379pXD4VBQUJA6deqkKVOmSNIFc7kLfU/69u2rkJAQBQUFqWfPnlqxYoXLsavyig8//FAPPfSQWrVqpZYtW+r222+vNWf+vrrkLxd7nNdff11xcXEKDg5W8+bNlZSUpC1btrjEpKWlqXnz5tq2bZsSExMVEhKivn37SpKOHDli/Qw0b95cAwcO1BdffCGbzWZNIfbxxx/LZrPV+F189dVXq+XfADyEAXBZff755+b55583kkxmZqZZv3692b59uzHGmMWLFxtJJjEx0Sxfvty8/vrrplu3biYgIMB8/PHH1j6GDRtm2rVrV23f48ePN+f+WEsy7du3N7fccov529/+Zt59913Tu3dv4+/vb/79739bcStXrjR+fn7m1ltvNX//+9/NG2+8YW6++WZz1VVXVdtnTRYuXGhsNpv5+c9/bv7+97+bt99+2yQnJxs/Pz+zcuXKam2Mjo42Tz31lMnNzTVZWVnGbreb++67z2Wfw4cPN02bNjUZGRkmOzvbLFmyxFx33XUmIiLCFBUVWXHx8fGmRYsWJioqysyaNct8+OGHZvXq1ebYsWPmRz/6kWnRooV5/vnnzfvvv28eeeQR06FDByPJvPLKK8YYY8rLy01kZKS55557XI5/6tQp43Q6zZ133nnea3/mzBmTlJRk/P39zR//+EeTk5Njpk+fboKDg81NN91kTp48aYwxZs+ePaZZs2YmISHBLF++3Hz00Udm8eLFJjU11ZSUlBhjjHnttdeMJPPwww+bnJwcs3LlSvPiiy+a0aNH13rtH3/8cdO8eXNTUVFhjDGmqKjISDKBgYFm8uTJVtxDDz1kIiIiqn0W7dq1M4899pjJzc01y5cvN59//rm54447jCSzfv16a6k6l5pc7Of/yiuvGElmz549dX7v1q1bTfPmzU379u3Niy++aFatWmUWLVpkhgwZYsrKykxxcbHJzMw0kszzzz9vtbu4uNgYc/7vSXFxsWnbtq1p3bq1efHFF012drb57W9/aySZhx56yDr+nj17rJ+n/v37m+XLl5vly5ebLl26mLCwMHPkyJFaP6fCwkITFRVl2rVrZ1566SWzcuVK86c//cnY7XaTlpZ2Scf54IMPTEBAgPmf//kf8/rrr5vs7GyTlpbm8v3+/nVv27atefDBB817771n/u///s+cPn3ajBs3zkgyDz74oMnOzjZz5841V111lWnTpo2Jj4+39vHII4+Y4ODgauf5+9//3jRr1sx8/fXXtZ4/AACAu9XUt6zqD959991mxYoV5tVXXzVXX321cTgcZvfu3VZcdHS0+dGPfmQWLlxoVq9ebd58802TkZFhPvzwQ2OMMZs3bzZXX321uemmm6x+5ebNm2ttT13yl5YtW5qOHTuaF1980eTm5pqRI0caSWbBggVW3PHjx82NN95oWrVqZbKysszKlSvNn//8Z+NwOMxtt91mzpw5Y8VW9fW6du1qlixZYj744ANTUFBgPv30U9OsWTPTtWtXs3TpUvPWW2+Zn/70p6Z9+/Yu1+7TTz81kszcuXNdzmn79u1W/7pKu3btzLBhw6zXF9ufvph8Z8SIESYoKMhkZWWZDz/80Lzzzjtm6tSpZtasWbVe+x49epjExETr9dKlS02zZs2MzWYz//jHP6z1nTp1MkOGDHH5LGrKEerz868pn7/Y9/7lL38xNpvN9O7d2yxZssSsXLnSvPDCC2bkyJHGGHPBXO5835OPPvrING3a1HTr1s28/vrrZvny5SYxMdHYbDazdOlS6/hVP3NXX321efjhh837779v/vKXv5iwsDDTp0+fWq+PMXXPXy7mOJMnTzY2m83cf//95p133jF///vfTVxcnAkODrb+1lJ13Zs2bWrat29vpkyZYlatWmXef/99U1lZaW699VbTrFkzM3XqVJOTk2MmTpxoOnbsaCSZ8ePHW/u46aabTK9evaqd180332xuvvnmC54/gMuPwQ+gAXz44YdGknnjjTe
  248. "text/plain": [
  249. "<Figure size 2000x600 with 4 Axes>"
  250. ]
  251. },
  252. "metadata": {},
  253. "output_type": "display_data"
  254. }
  255. ],
  256. "source": [
  257. "#energyloss in abh von der energie der elektronen\n",
  258. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  259. "\n",
  260. "a0=ax0.hist2d(energyloss_found, energy_found, bins=200, cmap=plt.cm.jet, cmin=1, vmax=15)\n",
  261. "ax0.set_xlabel(\"energyloss\")\n",
  262. "ax0.set_ylabel(r\"$E_0$\")\n",
  263. "ax0.set_title(\"found energyloss wrt electron energy\")\n",
  264. "plt.colorbar(a0[3],ax=ax0)\n",
  265. "\n",
  266. "a1=ax1.hist2d(energyloss_lost, energy_lost, bins=200, cmap=plt.cm.jet, cmin=1, vmax=15) \n",
  267. "ax1.set_xlabel(\"energyloss\")\n",
  268. "ax1.set_ylabel(r\"$E_0$\")\n",
  269. "ax1.set_title(\"lost energyloss wrt electron energy\")\n",
  270. "plt.colorbar(a1[3],ax=ax1)\n",
  271. "\n",
  272. "\"\"\"\n",
  273. "\"\"\"\n",
  274. "plt.show()"
  275. ]
  276. },
  277. {
  278. "cell_type": "code",
  279. "execution_count": 58,
  280. "metadata": {},
  281. "outputs": [],
  282. "source": [
  283. "#ist die shape der teilspur im scifi anders? (koenntest du zum beispiel durch vergleich der verteilungen der fit parameter studieren,\n",
  284. "#in meiner thesis findest du das fitmodell -- ist einfach ein polynom dritten grades)\n",
  285. "z_ref=8520 #mm\n",
  286. "\n",
  287. "def scifi_track(z, a, b, c, d):\n",
  288. " return a + b*(z-z_ref) + c*(z-z_ref)**2 + d*(z-z_ref)**3\n",
  289. "\n",
  290. "def z_mag(xv, zv, tx, a, b):\n",
  291. " \"\"\" optical centre of the magnet is defined as the intersection between the trajectory tangents before and after the magnet\n",
  292. "\n",
  293. " Args:\n",
  294. " xv (double): velo x track\n",
  295. " zv (double): velo z track\n",
  296. " tx (double): velo x slope\n",
  297. " a (double): ax parameter of track fit\n",
  298. " b (double): bx parameter of track fit\n",
  299. "\n",
  300. " Returns:\n",
  301. " double: z_mag\n",
  302. " \"\"\"\n",
  303. " return (xv-tx*zv-a+b*z_ref)/(b-tx)"
  304. ]
  305. },
  306. {
  307. "cell_type": "code",
  308. "execution_count": 59,
  309. "metadata": {},
  310. "outputs": [],
  311. "source": [
  312. "scifi_found = found[found[\"scifi_hit_pos_x_length\"]>3]\n",
  313. "scifi_lost = lost[lost[\"scifi_hit_pos_x_length\"]>3]\n",
  314. "#should be fulfilled by all candidates\n",
  315. "\n",
  316. "scifi_x_found = scifi_found[\"scifi_hit_pos_x\"]\n",
  317. "scifi_z_found = scifi_found[\"scifi_hit_pos_z\"]\n",
  318. "\n",
  319. "tx_found = scifi_found[\"velo_track_tx\"]\n",
  320. "\n",
  321. "scifi_x_lost = scifi_lost[\"scifi_hit_pos_x\"]\n",
  322. "scifi_z_lost = scifi_lost[\"scifi_hit_pos_z\"]\n",
  323. "\n",
  324. "tx_lost = scifi_lost[\"velo_track_tx\"]\n",
  325. "\n",
  326. "xv_found = scifi_found[\"velo_track_x\"]\n",
  327. "zv_found = scifi_found[\"velo_track_z\"]\n",
  328. "\n",
  329. "xv_lost = scifi_lost[\"velo_track_x\"]\n",
  330. "zv_lost = scifi_lost[\"velo_track_z\"]\n",
  331. "\n",
  332. "\n",
  333. "\n",
  334. "sf_energy_found = ak.to_numpy(scifi_found[\"energy\"])\n",
  335. "sf_eph_found = ak.to_numpy(ak.sum(scifi_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  336. "sf_vtx_type_found = scifi_found[\"all_endvtx_types\"]\n",
  337. "\n",
  338. "\n",
  339. "brem_vtx_type_found = scifi_found[scifi_found[\"endvtx_type\"]==101]\n",
  340. "\n",
  341. "sf_energy_lost = ak.to_numpy(scifi_lost[\"energy\"])\n",
  342. "sf_eph_lost = ak.to_numpy(ak.sum(scifi_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  343. "sf_vtx_type_lost = scifi_lost[\"all_endvtx_types\"]\n",
  344. "brem_vtx_type_lost = scifi_lost[scifi_lost[\"endvtx_type\"]==101]\n",
  345. "\n",
  346. "\n",
  347. "\n",
  348. "#ak.num(scifi_found[\"energy\"], axis=0)\n",
  349. "#scifi_found.snapshot()"
  350. ]
  351. },
  352. {
  353. "cell_type": "code",
  354. "execution_count": 60,
  355. "metadata": {},
  356. "outputs": [
  357. {
  358. "data": {
  359. "text/html": [
  360. "<pre>[101,\n",
  361. " 101,\n",
  362. " 101,\n",
  363. " 101,\n",
  364. " 101,\n",
  365. " 101,\n",
  366. " 101,\n",
  367. " 101,\n",
  368. " 101,\n",
  369. " 101,\n",
  370. " 0]\n",
  371. "------------------\n",
  372. "type: 11 * float32</pre>"
  373. ],
  374. "text/plain": [
  375. "<Array [101, 101, 101, 101, 101, ..., 101, 101, 101, 0] type='11 * float32'>"
  376. ]
  377. },
  378. "execution_count": 60,
  379. "metadata": {},
  380. "output_type": "execute_result"
  381. }
  382. ],
  383. "source": [
  384. "ak.num(scifi_found[\"energy\"], axis=0)\n",
  385. "scifi_found[\"all_endvtx_types\"][1,:]"
  386. ]
  387. },
  388. {
  389. "cell_type": "code",
  390. "execution_count": 61,
  391. "metadata": {},
  392. "outputs": [],
  393. "source": [
  394. "scifi_fitpars_found = ak.ArrayBuilder()\n",
  395. "vtx_types_found = ak.ArrayBuilder()\n",
  396. "\n",
  397. "for i in range(0,ak.num(scifi_found, axis=0)):\n",
  398. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]))\n",
  399. " scifi_fitpars_found.begin_list()\n",
  400. " scifi_fitpars_found.real(popt[0])\n",
  401. " scifi_fitpars_found.real(popt[1])\n",
  402. " scifi_fitpars_found.real(popt[2])\n",
  403. " scifi_fitpars_found.real(popt[3])\n",
  404. " #[:,4] -> energy \n",
  405. " scifi_fitpars_found.real(sf_energy_found[i])\n",
  406. " #[:,5] -> photon energy\n",
  407. " scifi_fitpars_found.real(sf_eph_found[i])\n",
  408. " scifi_fitpars_found.end_list()\n",
  409. " \n",
  410. " vtx_types_found.begin_list()\n",
  411. " #[:,0] -> endvtx_type\n",
  412. " vtx_types_found.extend(sf_vtx_type_found[i,:])\n",
  413. " vtx_types_found.end_list()\n",
  414. " \n",
  415. "\n",
  416. "scifi_fitpars_lost = ak.ArrayBuilder()\n",
  417. "vtx_types_lost = ak.ArrayBuilder()\n",
  418. "\n",
  419. "for i in range(0,ak.num(scifi_lost, axis=0)):\n",
  420. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]))\n",
  421. " scifi_fitpars_lost.begin_list()\n",
  422. " scifi_fitpars_lost.real(popt[0])\n",
  423. " scifi_fitpars_lost.real(popt[1])\n",
  424. " scifi_fitpars_lost.real(popt[2])\n",
  425. " scifi_fitpars_lost.real(popt[3])\n",
  426. " #[:,4] -> energy \n",
  427. " scifi_fitpars_lost.real(sf_energy_lost[i])\n",
  428. " #[:,5] -> photon energy\n",
  429. " scifi_fitpars_lost.real(sf_eph_lost[i])\n",
  430. " scifi_fitpars_lost.end_list()\n",
  431. " \n",
  432. " vtx_types_lost.begin_list()\n",
  433. " #endvtx_type\n",
  434. " vtx_types_lost.extend(sf_vtx_type_lost[i,:])\n",
  435. " vtx_types_lost.end_list()\n",
  436. " \n",
  437. "\n",
  438. "\n",
  439. "scifi_fitpars_lost = ak.to_numpy(scifi_fitpars_lost)\n",
  440. "scifi_fitpars_found = ak.to_numpy(scifi_fitpars_found)\n",
  441. "\n",
  442. "vtx_types_lost = ak.Array(vtx_types_lost)\n",
  443. "vtx_types_found = ak.Array(vtx_types_found)\n",
  444. "\n"
  445. ]
  446. },
  447. {
  448. "cell_type": "code",
  449. "execution_count": 62,
  450. "metadata": {},
  451. "outputs": [
  452. {
  453. "data": {
  454. "text/html": [
  455. "<pre>[101,\n",
  456. " 101,\n",
  457. " 101,\n",
  458. " 101,\n",
  459. " 101,\n",
  460. " 101,\n",
  461. " 101,\n",
  462. " 101,\n",
  463. " 101,\n",
  464. " 101,\n",
  465. " 0]\n",
  466. "------------------\n",
  467. "type: 11 * float64</pre>"
  468. ],
  469. "text/plain": [
  470. "<Array [101, 101, 101, 101, 101, ..., 101, 101, 101, 0] type='11 * float64'>"
  471. ]
  472. },
  473. "execution_count": 62,
  474. "metadata": {},
  475. "output_type": "execute_result"
  476. }
  477. ],
  478. "source": [
  479. "vtx_types_found[0]"
  480. ]
  481. },
  482. {
  483. "cell_type": "code",
  484. "execution_count": null,
  485. "metadata": {},
  486. "outputs": [],
  487. "source": [
  488. "\n",
  489. "\n"
  490. ]
  491. },
  492. {
  493. "cell_type": "code",
  494. "execution_count": 63,
  495. "metadata": {},
  496. "outputs": [
  497. {
  498. "data": {
  499. "image/png": "iVBORw0KGgoAAAANSUhEUgAABfkAAAIhCAYAAAD96rC5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACyQUlEQVR4nOzde3wU1fnH8e+SyxJisoZLEoIIUTGCBEWwXLQGBIIoYMVbG41ELVJBKAZKC1YJVoIiohYUrT8rXqDYVrFeMQEEpBAMCAqoiC0IFAIUQwI05Mb5/YEZdpNNsgmb7G74vF+vfbE7++ycM7MDnDn7zDM2Y4wRAAAAAAAAAAAIOM183QEAAAAAAAAAAFA/TPIDAAAAAAAAABCgmOQHAAAAAAAAACBAMckPAAAAAAAAAECAYpIfAAAAAAAAAIAAxSQ/AAAAAAAAAAABikl+AAAAAAAAAAACFJP8AAAAAAAAAAAEKCb5AQAAAAAAAAAIUEzyA2ehN998U5deeqnCwsJks9m0efNmX3fJrYyMDNlsNq+tb9euXbLZbJo9e7bX1rl27VplZGToyJEjXlsnfGffvn3KyMjw+O/EggULZLPZtGHDhobtWBOWmZmpd955x9fdAACgwVSMF3bt2tUg63/++ee1YMECr6+3IcY5ixYt0jPPPOO19cG36noulJaWpnPOOadhO9WE1fVcBcDZhUl+4Cxz6NAhpaam6sILL9TSpUu1bt06XXzxxb7uVsBau3atpk+fziR/E7Fv3z5Nnz6dgXMjYpIfAIAz01CT/A2BSf6mhXOhxsW5CoCaBPu6AwAa17fffqvS0lLdeeedSkpK8nV30MQYY3TixAmFhYX5uit1Ul5errKyMl93o8H873//U4sWLXzdjUZT8X3a7XZfdwUAAKBapaWlstlsCg4OrKmZoqIiNW/e3NfdaDBFRUUBdz5zJiq+T29eRQ+g8ZHJD5xF0tLSdPXVV0uSbr/9dtlsNvXr1896/91331WfPn3UokULRUREaNCgQVq3bl2VdXTs2LHKut2V1rHZbHrggQf0+uuvq3PnzmrRooUuu+wyvf/++1U+/8EHH+jyyy+X3W5XfHx8nUrq9OvXT127dtWnn36q3r17KywsTO3atdPDDz+s8vJyt5+ZM2eO4uPjdc4556hPnz7KycmpElPb/sjIyNBvfvMbSVJ8fLxsNptsNptWrlwpSTp58qRmzZqlSy65RHa7XdHR0brrrru0d+9et/3Pzc3VT3/6U7Vo0UIXXHCBHn/8cZ08ebLW7TfG6Pnnn9fll1+usLAwRUVF6ZZbbtG///3verdTWFioSZMmKT4+XqGhoWrXrp0mTJig48ePu8RVfMcvvPCCOnfuLLvdrldffVWStGbNGvXp00fNmze3vo//+7//c7lc/d5771XLli31v//9r8p2XXvttbr00kur3e7nnntOzZo108GDB61lTz31lGw2m8aOHWstO3nypKKiojRx4kRJp8s2zZo1S4899pji4+Nlt9v1ySef6Morr5Qk3X333db3mZGRUcs3IOXn5+vuu+9Wy5YtFR4ermHDhlXZ/+5U/L3ZtGmTRowYocjISDkcDt155506dOiQS+ybb76p5ORktW3bVmFhYercubN+97vfVflOKi6D3rJli5KTkxUREaEBAwZIkrKzs3XjjTfqvPPOU/PmzXXRRRdp9OjR+u9//+u2X19++aVuvfVWORwOtWzZUunp6SorK9P27dt13XXXKSIiQh07dtSsWbOqbJsnx5DNZtPx48f16quvWvvb+d+kvLw8jR49Wuedd55CQ0MVHx+v6dOnu/wgU9P3CQCAP/vzn/+syy67TM2bN1fLli1100036euvv3aJ+fe//62f//zniouLk91uV0xMjAYMGGBl8nbs2FHbtm3TqlWrrP9L3Y3VnVWM31588UVdfPHFstvt6tKlixYvXuw2/ujRo7r//vvVunVrtWrVSiNGjNC+fftcYjwZ9/br108ffPCBvv/+e6uvzucPP/zwg8aMGaN27dopNDRUF1xwgR566CEVFxe77b8n5xju1HWc60k7O3bsUEpKiqKjo2W329W5c2c999xzLjErV66UzWbT66+/rokTJ6pdu3ay2+367rvvJEkvvfSSy/exaNEil3MvY4w6deqkwYMHV2n/2LFjcjgcLmPgym699dYqY+thw4bJZrPpb3/7m7Xs888/l81m03vvvSfpdNmmrKws3XPPPWrTpo1atGihKVOm1HguVJNt27ZpwIABCg8PV5s2bfTAAw+4PR+orC7nfdOnT1evXr3UsmVLRUZG6oorrtDLL78sY4xLXMeOHTV06FC9/fbb6t69u5o3b67p06dLOnW+cc011yg6Olrh4eFKTEzUrFmzVFpa6rZf69atU9++fRUWFqaOHTvqlVdekXTqXPeKK65QixYtlJiYqKVLl1bZttqOoZUrV9Z6rrJhwwYNHz5cLVu2VPPmzdW9e3f99a9/dWmnuu+z8t8zAAHIADhrfPfdd+a5554zkkxmZqZZt26d2bZtmzHGmIULFxpJJjk52bzzzjvmzTffND169DChoaHm008/tdYxcuRI06FDhyrrnjZtmqn8T4ok07FjR/OTn/zE/PWvfzUffvih6devnwkODjb/+te/rLhly5aZoKAgc/XVV5u3337b/O1vfzNXXnmlOf/886us052kpCTTqlUrExcXZ/74xz+ajz/+2IwfP95IMmPHjrXidu7cafXpuuuuM++884555513TGJioomKijJHjhyxYj3ZH3v27DHjxo0zkszbb79t1q1bZ9atW2cKCgqMMcbcd999RpJ54IEHzNKlS80LL7xg2rRpY9q3b28OHTpUpf+dOnUyL7zwgsnOzjZjxowxksyrr75a6/aPGjXKhISEmIkTJ5qlS5eaRYsWmUsuucTExMSYvLy8Ordz/Phxc/nll5vWrVubOXPmmGXLlplnn33WOBwOc+2115qTJ0+6fMft2rUz3bp1M4sWLTIrVqwwW7duNV988YVp3ry56datm1m8eLF59913zfXXX286duxoJJmdO3caY4z54osvjCTz0ksvuWzTtm3bjCTz3HPPVbvd33zzjZFkFi1aZC277rrrTFhYmOnUqZO1bP369UaS+fDDD12Og3bt2pn+/fubv//97yYrK8t88cUX5pVXXjGSzO9//3vr+9yzZ0+1faiIb9++vbnnnnvMRx99ZP70pz+Z6Oho0759e5Ofn1/jd1fx96ZDhw7mN7/5jfn444/NnDlzTHh4uOnevbspKSmxYv/whz+Yp59+2nzwwQdm5cqV5oUXXjDx8fGmf//+LuscOXKkCQkJMR07djQzZ840y5cvNx9//LExxpj58+ebmTNnmnfffdesWrXKvPrqq+ayyy4zCQkJLm1V9CshIcH84Q9/MNnZ2Wby5MnW8XzJJZeYP/7xjyY7O9vcfffdRpJ56623rM97egytW7fOhIWFmeuvv97a3xX/Ju3fv9+0b9/edOjQwbz44otm2bJl5g9/+IOx2+0mLS3Naqu677PiGAMAwNcqxgvO/zdlZmYaSeYXv/iF+eCDD8xrr71mLrjgAuNwOMy3335rxSUkJJiLLrrIvP7662bVqlXmrbfeMhMnTjSffPKJMcaYzz//3FxwwQWme/fu1v+ln3/+eY39qRi7dOnSxfzlL38x7777rrnuuuuMJPO3v/2tSr8vuOACM27cOPPxxx+b//u//zNRUVFVxh+ejHu3bdtmrrrqKhMbG2v1dd26dcYYY4qKiky3bt1MeHi4mT17tsnKyjIPP/ywCQ4ONtdff32V/ntyjuFOXce5nrSzbds243A4TGJionnttddMVlaWmThxomnWrJnJyMiw4j755BNrzHLLLbeYd99917z//vvm8OHD5sUXXzSSzM0332zef/99s3DhQnPxxRebDh06uJx7Pfvss8Zms7kcI8YY6xyvYhzlzgsvvGAkmX379hljjCktLTUREREmLCzMjBo1yop74oknTHBwsCksLDTGnD4O2rVrZ+677z7z0Ucfmb///e9m165dNZ4LuTNy5EgTGhp
  500. "text/plain": [
  501. "<Figure size 1800x600 with 4 Axes>"
  502. ]
  503. },
  504. "metadata": {},
  505. "output_type": "display_data"
  506. }
  507. ],
  508. "source": [
  509. "#b parameter des fits [:,1] hat für lost eine breitere Verteilung. Warum?\n",
  510. "#evtl multiple scattering candidates (lost); findet man einen gewissen endvtx_type (mult scattering)\n",
  511. "#steiler velo winkel (eta)? vertex type? evtl bremsstrahlung?\n",
  512. "\n",
  513. "#isolate b parameters for analysis\n",
  514. "b_found = scifi_fitpars_found[:,1]\n",
  515. "b_lost = scifi_fitpars_lost[:,1]\n",
  516. "\n",
  517. "brem_energy_found = scifi_fitpars_found[:,5]\n",
  518. "brem_energy_lost = scifi_fitpars_lost[:,5]\n",
  519. "\n",
  520. "\n",
  521. "bs_found, vtx_types_found = ak.broadcast_arrays(b_found, vtx_types_found)\n",
  522. "bs_found = ak.to_numpy(ak.ravel(bs_found))\n",
  523. "vtx_types_found = ak.to_numpy(ak.ravel(vtx_types_found))\n",
  524. "\n",
  525. "bs_lost, vtx_types_lost = ak.broadcast_arrays(b_lost, vtx_types_lost)\n",
  526. "bs_lost = ak.to_numpy(ak.ravel(bs_lost))\n",
  527. "vtx_types_lost = ak.to_numpy(ak.ravel(vtx_types_lost))\n",
  528. "\n",
  529. "\n",
  530. "\n",
  531. "\n",
  532. "#Erste Annahme ist Bremsstrahlung\n",
  533. "\n",
  534. "fig = plt.figure(figsize=(18,6))\n",
  535. "axes = ImageGrid(fig, 111, # similar to subplot(111)\n",
  536. " nrows_ncols=(1, 2), # creates 2x2 grid of axes\n",
  537. " axes_pad=1, # pad between axes in inch.\n",
  538. " cbar_mode=\"single\",\n",
  539. " cbar_location=\"right\",\n",
  540. " cbar_pad=0.1,\n",
  541. " aspect=False\n",
  542. " )\n",
  543. "\n",
  544. "\n",
  545. "h0 = axes[0].hist2d(b_found, brem_energy_found, bins=200, cmap=plt.cm.jet, cmin=1,vmax=30)\n",
  546. "axes[0].set_xlim(-1,1)\n",
  547. "axes[0].set_xlabel(\"b parameter [mm]\")\n",
  548. "axes[0].set_ylabel(r\"$E_{ph}$\")\n",
  549. "axes[0].set_title(\"found photon energy wrt b parameter\")\n",
  550. "\n",
  551. "h1 = axes[1].hist2d(b_lost, brem_energy_lost, bins=200, cmap=plt.cm.jet, cmin=1,vmax=30)\n",
  552. "axes[1].set_xlim(-1,1)\n",
  553. "axes[1].set_xlabel(\"b parameter [mm]\")\n",
  554. "axes[1].set_ylabel(r\"$E_{ph}$\")\n",
  555. "axes[1].set_title(\"lost photon energy wrt b parameter\")\n",
  556. "\n",
  557. "fig.colorbar(h0[3], cax=axes.cbar_axes[0], orientation='vertical')\n",
  558. "\n",
  559. "\"\"\"\n",
  560. "\"\"\"\n",
  561. "\n",
  562. "plt.show()"
  563. ]
  564. },
  565. {
  566. "cell_type": "code",
  567. "execution_count": null,
  568. "metadata": {},
  569. "outputs": [],
  570. "source": []
  571. },
  572. {
  573. "cell_type": "code",
  574. "execution_count": 64,
  575. "metadata": {},
  576. "outputs": [
  577. {
  578. "data": {
  579. "image/png": "iVBORw0KGgoAAAANSUhEUgAABS0AAAIhCAYAAACrEJ+KAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACFBUlEQVR4nOzdeXQUVdrH8V+TnSUNQUlAEEERDCgCRjbZZB9xXAfcEBAXxjiK6KiMC8R3BNEZRKVRcdS4DMsoq4qDoCwqUSObDnFjRGEwEWEgAWRL575/MGnpdCXpht5S/f2cU+fQlVu3blV19324fesphzHGCAAAAAAAAACiRK1INwAAAAAAAAAAjsWgJQAAAAAAAICowqAlAAAAAAAAgKjCoCUAAAAAAACAqMKgJQAAAAAAAICowqAlAAAAAAAAgKjCoCUAAAAAAACAqMKgJQAAAAAAAICowqAlAAAAAAAAgKjCoCVsb+7cuWrbtq1SUlLkcDi0YcOGSDfJ0sSJE+VwOCLdDC8Oh0MTJ04MeLslS5Yc13bV6d27t3r37l1tue+//14Oh0O5ublBb0N1ZsyYEdB+HQ6HbrvtttA1yOZC9V4DAIRPbm6uHA6Hvv/++5DUH2jfHC4rV66Uw+HQypUrA942VMfkb+wX6mtWmV9++UUTJ070+5yVn+M33ngjtA2zAWIqANGIQUvY2s8//6zhw4fr9NNP1z//+U/l5eXpzDPPjHSzbG/JkiXKyckJer0zZszQjBkzgl5vMEXrf4zsKlTvNQCAfdixbw7VMeXl5enGG28Mer3B8ssvvygnJ+e4BnpRNWIqANEoPtINAELpm2++0ZEjR3TdddepV69ekW4OTlBmZmakm1CpX375RbVr1450M0LiyJEjcjgcio+PnS7DztcTAIDKdOnSJdJNsGSM0cGDByPdjJCxc9xh52MDEHrMtIRtjRw5UhdccIEkadiwYXI4HF63Fi9evFhdu3ZV7dq1Va9ePfXv3195eXk+dZx22mk+dVvdyl1+m++rr76qs846S7Vr11b79u311ltv+Wz/9ttv69xzz1VSUpJatGihv/zlLwEd2/Lly9W3b1+lpqaqdu3a6t69u9577z3LNm7atElXX321nE6n0tPTdcMNN6i4uNirbElJiW666SY1bNhQdevW1aBBg/TNN994lVm4cKEcDofPfiTpmWeekcPh0Oeff66RI0fK5XJ5zkn58v3332vOnDlyOByaPn261/YTJkxQXFycli1bVuVxW90e/uOPP2ro0KGqV6+enE6nhg0bpqKioirrKT/m+Ph4Pf744551O3fuVK1ateR0OlVaWupZf/vtt+vkk0+WMcbTjnbt2mn16tXq1q2bateurRtuuEGnnXaaNm3apFWrVnmO2+r9Y+W5557TmWeeqaSkJGVmZmrOnDnVblN+G/xjjz2mRx55RKeeeqqSk5N13nnn+VynzZs3a9SoUWrVqpVq166tU045RRdffLG++OILr3Llt1G9+uqruuuuu3TKKacoKSlJmzdv1s8//6xbb71VmZmZqlu3rho1aqQLL7xQH3zwgWW7Hn/8cU2ZMkWnnXaaUlJS1Lt3b88PCffdd5+aNGkip9Opyy67TDt27PA5vrlz56pr166qU6eO6tatq4EDB2r9+vWev1f1XpOO/gdnxowZOvfcc5WSkqIGDRroyiuv1Hfffee1n8quJwAgsl588UW1b99eycnJSktL02WXXaYvv/zSq8x3332nq666Sk2aNFFSUpLS09PVt29fTzqg4+mbA+0/8vPz1aNHD9WuXVstW7bUo48+qrKyMq+yX331lQYNGqTatWvrpJNO0pgxY7R3716vMmPHjlWdOnVUUlLi06Zhw4YpPT1dR44cqfKYxowZo+TkZK1du9azbVlZmfr27av09HQVFhZWeexWt4d//PHH6t69u5KTk9WkSRONHz9eR44cqbIe6Wi863A4lJ+f71k3b948ORwOXXTRRV5lzznnHF1xxRVe7bjtttv07LPP6qyzzlJSUpJefvllnXzyyZKknJwcz7GPHDmy2rYcPHhQ48aNU0ZGhlJSUtSrVy+vmKIy5bfBL1u2TKNGjVJaWprq1Kmjiy++2Of9sGzZMl1yySVq2rSpkpOTdcYZZ+iWW27Rzp07vcqVx+jr1q3TlVdeqQYNGuj000+XJH322We66qqrPLHTaaedpquvvlo//PCDZbtWrFih3//+9zrppJPUsGFDXX755frxxx99joOYCkCNZQCb2rx5s3G5XEaSmTRpksnLyzObNm0yxhjz97//3UgyAwYMMAsXLjRz5841nTp1MomJieaDDz7w1DFixAjTvHlzn7onTJhgKn58JJnTTjvNnH/++eYf//iHWbJkiendu7eJj483//73vz3lli9fbuLi4swFF1xg5s+fb15//XWTlZVlTj31VJ86rbz66qvG4XCYSy+91MyfP9+8+eabZsiQISYuLs4sX77cp42tW7c2Dz30kFm2bJmZOnWqSUpKMqNGjfKUKysrM3369DFJSUnmkUceMe+++66ZMGGCadmypZFkJkyYYIwx5siRI6ZRo0bm2muv9WnT+eefbzp27Og571deeaWRZPLy8jzLwYMHjTHGjBkzxiQmJpr8/HxjjDHvvfeeqVWrlnnggQeqPfZevXqZXr16eV7/8ssv5qyzzjJOp9M8/fTTZunSpeb222/3nMuXXnqpyvq6dOliBgwY4Hk9Z84ck5ycbBwOh/noo48868866ywzdOhQr3akpaWZZs2amaefftqsWLHCrFq1yqxbt860bNnSdOjQwXPc69atq7INkkyzZs1MZmammT17tlm8eLEZNGiQkWRef/31KrfdsmWLZ/sLLrjAzJs3z/N+SkhIMGvWrPGUXbVqlbnrrrvMG2+8YVatWmUWLFhgLr30UpOSkmK++uorT7kVK1YYSeaUU04xV155pVm8eLF56623zK5du8xXX31lfv/735s5c+aYlStXmrfeesuMHj3a1KpVy6xYscKnXc2bNzcXX3yxeeutt8xrr71m0tPTzZlnnmmGDx9ubrjhBvPOO++YZ5991tStW9dcfPHFXsf2yCOPGIfDYW644Qbz1ltvmfnz55uuXbuaOnXqeD7H1b3XbrrpJpOQkGDuuusu889//tPMmjXLtGnTxqSnp5uioqJqrycAIDxeeuklI8ls2bLFs27SpElGkrn66qvN22+/bV555RXTsmVL43Q6zTfffOMp17p1a3PGGWeYV1991axatcrMmzfP3HXXXZ5+6Xj65kD6j4YNG5pWrVqZZ5991ixbtszceuutRpJ5+eWXPeWKiopMo0aNzCmnnGJeeukls2TJEnPttdd64pXytm7cuNFIMs8//7xXe3bv3m2SkpLMuHHjqj2mAwcOmHPPPde0bNnS7N692xhjzEMPPWRq1apl3n333WqvxbGxnzHGbNq0ydSuXdsTpyxatMgMHDjQ0/Zjr1lFe/fuNQkJCWbSpEmedWPGjDEpKSmmTp065vDhw8YYY3766SfjcDjMjBkzvNpxyimnmHPOOcfMmjXLvP/++2bDhg3mn//8p5FkRo8e7Tn2zZs3V9qG8rimWbNm5pJLLjFvvvmmee2118wZZ5xhUlNTvWJ0K+XvzWbNmnlil5kzZ5pGjRqZZs2aec6xMcY888wzZvLkyWbx4sVm1apV5uWXXzbt27c3rVu39hyrMb/G6M2bNzf33nuvWbZsmVm4cKExxpjXX3/dPPTQQ2bBggVm1apVZs6cOaZXr17m5JNPNj///LNPu1q2bGn+8Ic/mKVLl5q//e1vpkGDBqZPnz5ex0BMBaAmY9AStlYeqBw7+ON2u02TJk3M2Wefbdxut2f93r17TaNGjUy3bt086wIdtExPTzclJSWedUVFRaZWrVpm8uTJnnWdO3c2TZo0MQcOHPCsKykpMWlpadUOWu7fv9+kpaX5DPC43W7Tvn17c/755/u08bHHHvMqe+utt5rk5GRTVlZmjDHmnXfeMZLMk08+6VXukUce8Qlcx40bZ1JSUsyePXs86woKCowk8/TTT3vWZWdnV3osBw8
  580. "text/plain": [
  581. "<Figure size 1800x600 with 3 Axes>"
  582. ]
  583. },
  584. "metadata": {},
  585. "output_type": "display_data"
  586. }
  587. ],
  588. "source": [
  589. "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18,6))\n",
  590. "\n",
  591. "a0=ax[0].hist2d(bs_found, vtx_types_found, bins=110, density=True, cmap=plt.cm.jet, cmin=1e-20,vmax=2)\n",
  592. "ax[0].set_ylim(0,110)\n",
  593. "ax[0].set_xlim(-1,1)\n",
  594. "ax[0].set_xlabel(\"b\")\n",
  595. "ax[0].set_ylabel(\"endvtx id\")\n",
  596. "ax[0].set_title(\"found endvtx id wrt b parameter\")\n",
  597. "ax[0].set_yticks(np.arange(0,110,1),minor=True)\n",
  598. "\n",
  599. "a1=ax[1].hist2d(bs_lost, vtx_types_lost, bins=110, density=True, cmap=plt.cm.jet, cmin=1e-20,vmax=2)\n",
  600. "ax[1].set_ylim(0,110)\n",
  601. "ax[1].set_xlim(-1,1)\n",
  602. "ax[1].set_xlabel(\"b\")\n",
  603. "ax[1].set_ylabel(\"endvtx id\")\n",
  604. "ax[1].set_title(\"lost endvtx id wrt b paraneter\")\n",
  605. "ax[1].set_yticks(np.arange(0,110,1), minor=True)\n",
  606. "\n",
  607. "\"\"\"\n",
  608. "vtx_id: 101 - Bremsstrahlung\n",
  609. "B:\n",
  610. "wir können nicht wirklich sagen dass bei den lost teilchen jegliche endvertex types überwiegen, im gegensatz zu den found \n",
  611. "\"\"\"\n",
  612. "fig.colorbar(a0[3], ax=ax, orientation='vertical')\n",
  613. "plt.show()"
  614. ]
  615. },
  616. {
  617. "cell_type": "code",
  618. "execution_count": null,
  619. "metadata": {},
  620. "outputs": [],
  621. "source": []
  622. },
  623. {
  624. "cell_type": "code",
  625. "execution_count": 65,
  626. "metadata": {},
  627. "outputs": [
  628. {
  629. "data": {
  630. "image/png": "iVBORw0KGgoAAAANSUhEUgAABPEAAANVCAYAAAAZd2vuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD1n0lEQVR4nOzdeVyU5f7/8ffILiqubK5ouacZlkIumIm5ZabHpQ5qqWVmplQmpom22GIeslyyKCtLPeeorWZiCWrSoqJpLpVHxQwy3HBlkfv3Rz/m2zADDjgwA7yej8c8ai4+93Vd9z3D8PEz93XfJsMwDAEAAAAAAABwWVWcPQEAAAAAAAAARaOIBwAAAAAAALg4ingAAAAAAACAi6OIBwAAAAAAALg4ingAAAAAAACAi6OIBwAAAAAAALg4ingAAAAAAACAi6OIBwAAAAAAALg4ingAAAAAAACAi6OIB5RTq1atUps2beTj4yOTyaRdu3YpNjZWJpPJIm7RokVatmyZcybp4j788EPFxcU5exrXLDExUSaTSYmJic6eit2WLVsmk8mkI0eOWLTPmDFDjRo1kru7u2rWrClJioiIUERExFX7dIX3uslk0sSJE506BwBA+Ueed+2ckedFRESobdu2Du+3SZMmGj16tMP7LU0mk0mxsbEWbV999ZU6duwoX19fmUwmffTRR4XmhAVt27ZNsbGxOnPmTKnN+WpGjx6tatWqOW18QKKIB5RLf/75p6KiotSsWTOtX79eycnJat68ucaOHavk5GSLWJK7wlWUIl551K9fPyUnJysoKMjc9vHHH+u5557TyJEjlZSUpI0bN0r66z28aNGiq/bJex0AUBGQ5zkGeZ5zJScna+zYsebnhmFo6NCh8vDw0CeffKLk5GR1797dZk5oy7Zt2zR79mynFvEAV+Du7AkAKL6ff/5ZOTk5+uc//6nu3bub26tWraoGDRo4cWbWLl26JG9vb6tvjiuyS5cuycfHx9nTKLGLFy+qatWqpTpGvXr1VK9ePYu2vXv3SpImTZokf39/c3vr1q0dPn5OTo5MJpPc3fkzCABwLeR5rq2853lXrlxRbm6uvLy8SnWczp07Wzz//fffderUKQ0aNEg9e/a0+FnBnNARyvvrBBSGM/GAcmb06NHq0qWLJGnYsGEymUzmpYYFl1k0adJEP/30k5KSkmQymWQymdSkSRNJ/7cEc/ny5YqOjlZgYKB8fHzUvXt3paSkWIy5fft2DR8+XE2aNJGPj4+aNGmiESNG6OjRoxZx+afDb9iwQffff7/q1aunqlWrKisrS7/++qvuu+8+XX/99apatarq16+vAQMGaM+ePRZ95M/rww8/1JNPPqmgoCBVq1ZNAwYM0B9//KFz587pgQceUN26dVW3bl3dd999On/+vEUfhmFo0aJFuvHGG+Xj46NatWppyJAh+t///meOiYiI0Oeff66jR4+aj83fj112draeffZZtWzZUl5eXqpXr57uu+8+/fnnnxZjNWnSRP3799eaNWvUoUMHeXt7a/bs2YW+fgkJCRo4cKAaNGggb29vXXfddXrwwQeVkZFR6DZ/d+DAAd1xxx2qWrWq6tatq/Hjx+vcuXM2Yzdu3KiePXuqRo0aqlq1qm699VZ99dVXFjH575mdO3dqyJAhqlWrlpo1a1bo+BcvXtTjjz+ukJAQeXt7q3bt2urYsaNWrFhhEffdd99pwIABqlOnjry9vdWsWTNNnjzZ/POCSyeaNGmiGTNmSJICAgIslmDYs5zWnvf6+++/r8cee0z169eXl5eXfv31V/3555+aMGGCWrdurWrVqsnf31+33XabtmzZYjVGVlaW5syZo1atWsnb21t16tRRjx49tG3btkLnZRiGpk+fLg8PD7355ptF7gMAAOR55TvPy7dlyxZ17txZPj4+ql+/vmbOnKkrV65cdbucnBxNnTpVgYGBqlq1qrp06aLvv//eZmx6eroefPBBNWjQQJ6engoJCdHs2bOVm5trjjly5IhMJpNeeuklPfvsswoJCZGXl5c2bdpU6Bz+85//qFOnTvLz81PVqlXVtGlT3X///RYxZ86c0WOPPaamTZvKy8tL/v7+6tu3rw4cOGCO+XsuFxsbay5AP/nkkxbvVXuW08bGxuqJJ56QJIWEhJhfz/xLyRT1Oi1cuFDdunWTv7+/fH19dcMNN+ill15STk6O1Tjr169Xz549zfveqlUrzZ07t9B5SdI333yjunXrqn///rpw4UKRsYAjcAoCUM7MnDlTt9xyix5++GE9//zz6tGjh2rUqGEzdu3atRoyZIj8/PzMyxELfus2ffp03XTTTXrrrbd09uxZxcbGKiIiQikpKWratKmkvxKAFi1aaPjw4apdu7bS0tK0ePFi3Xzzzdq3b5/q1q1r0ef999+vfv366f3339eFCxfk4eGh33//XXXq1NELL7ygevXq6dSpU3r33XfVqVMnpaSkqEWLFlbz6tGjh5YtW6YjR47o8ccf14gRI+Tu7q727dtrxYoVSklJ0fTp01W9enUtWLDAvO2DDz6oZcuWadKkSXrxxRd16tQpzZkzR+Hh4dq9e7cCAgK0aNEiPfDAAzp06JDWrl1rMXZeXp4GDhyoLVu2aOrUqQoPD9fRo0c1a9YsRUREaPv27Rbf7O3cuVP79+/XjBkzFBISIl9f30Jfv0OHDiksLExjx46Vn5+fjhw5ovnz56tLly7as2ePPDw8Ct32jz/+UPfu3eXh4aFFixYpICBAH3zwgc1rsC1fvlwjR47UwIED9e6778rDw0NvvPGGevfurS+//NLqG9C7775bw4cP1/jx44tMQKKjo/X+++/r2WefVYcOHXThwgXt3btXJ0+eNMd8+eWXGjBggFq1aqX58+erUaNGOnLkiDZs2FBov2vXrtXChQsVHx+v9evXy8/Pr1hnG9jzXo+JiVFYWJiWLFmiKlWqyN/f35ysz5o1S4GBgTp//rzWrl2riIgIffXVV+Z/OOXm5qpPnz7asmWLJk+erNtuu025ubn69ttvlZqaqvDwcKs5ZWVlafTo0fr888/16aef6o477rB7fwAAlRN5XvnO86S/imvDhw/XtGnTNGfOHH3++ed69tlndfr0ab3++utFbjtu3Di99957evzxx9WrVy/t3btXd999t9UXtunp6brllltUpUoVPf3002rWrJmSk5P17LPP6siRI3rnnXcs4hcsWKDmzZtr3rx5qlGjhq6//nqb4ycnJ2vYsGEaNmyYYmNj5e3traNHj+rrr782x5w7d05dunTRkSNH9OSTT6pTp046f/68Nm/erLS0NLVs2dKq37Fjx6p9+/a6++679cgjj+iee+4p1pmAY8eO1alTp/Taa69pzZo15qW3f1+tUdjrdOjQId1zzz0KCQmRp6endu/ereeee04HDhzQ22+/bd4+Pj5e48aNU/fu3bVkyRL5+/vr559/Nq8UseXf//63Ro4cqfvvv1+vvfaa3Nzc7N4noMQMAOXOpk2bDEnGf/7zH4v2WbNmGQV/rdu0aWN079690D5uuukmIy8vz9x+5MgRw8PDwxg7dmyh4+fm5hrnz583fH19jVdffdXc/s477xiSjJEjR151H3Jzc43s7Gzj+uuvN6ZMmWI1rwEDBljET5482ZBkTJo0yaL9rrvuMmrXrm1+npycbEgyXnnlFYu4Y8eOGT4+PsbUqVPNbf369TMaN25sNbcVK1YYkozVq1dbtP/www+GJGPRokXmtsaNGxtubm7GwYMHr7rPBeXl5Rk5OTnG0aNHDUnGxx9/XGT8k08+aZhMJmPXrl0W7b169TIkGZs2bTIMwzAuXLhg1K5d2+oYXrlyxWjfvr1xyy23mNvy3zNPP/20XXNu27atcddddxUZ06xZM6NZs2bGpUuXCo3Jf68cPnzYai5//vmnRWz37t1tvocLutp7vVu3blftIzc318jJyTF69uxpDBo0yNz+3nvvGZKMN998s8jtJRkPP/ywcfLkSaNLly5G/fr1rV4vAACKQp73f8pbnte9e3ebOd24ceOMKlWqGEePHi102/379xuSLI6
  631. "text/plain": [
  632. "<Figure size 1500x1000 with 4 Axes>"
  633. ]
  634. },
  635. "metadata": {},
  636. "output_type": "display_data"
  637. }
  638. ],
  639. "source": [
  640. "fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(15,10))\n",
  641. "\n",
  642. "ax0.hist(scifi_fitpars_found[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$a_x$ found\")\n",
  643. "ax0.hist(scifi_fitpars_lost[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$a_x$ lost\")\n",
  644. "ax0.set_xlabel(\"a\")\n",
  645. "ax0.set_ylabel(\"normed\")\n",
  646. "ax0.set_title(\"fitparameter a der scifi track\")\n",
  647. "ax0.legend()\n",
  648. "\n",
  649. "ax1.hist(scifi_fitpars_found[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$b_x$ found\")\n",
  650. "ax1.hist(scifi_fitpars_lost[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$b_x$ lost\")\n",
  651. "ax1.set_xticks(np.arange(-1,1,0.1),minor=True)\n",
  652. "ax1.set_xlabel(\"b\")\n",
  653. "ax1.set_ylabel(\"normed\")\n",
  654. "ax1.set_title(\"fitparameter b der scifi track\")\n",
  655. "ax1.legend()\n",
  656. "#evtl multiple scattering candidates (lost); findet man einen gewissen endvtx_type (mult scattering)\n",
  657. "#steiler velo winkel (eta)? vertex type? evtl bremsstrahlung?\n",
  658. "\n",
  659. "\n",
  660. "ax2.hist(scifi_fitpars_found[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$c_x$ found\")\n",
  661. "ax2.hist(scifi_fitpars_lost[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$c_x$ lost\")\n",
  662. "ax2.set_xlim([-3e-5,3e-5])\n",
  663. "ax2.set_xticks(np.arange(-3e-5,3.5e-5,1e-5),minor=False)\n",
  664. "ax2.set_xlabel(\"c\")\n",
  665. "ax2.set_ylabel(\"normed\")\n",
  666. "ax2.set_title(\"fitparameter c der scifi track\")\n",
  667. "ax2.legend()\n",
  668. "\n",
  669. "ax3.hist(scifi_fitpars_found[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$d_x$ found\")\n",
  670. "ax3.hist(scifi_fitpars_lost[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$d_x$ lost\")\n",
  671. "ax3.set(xlim=(-5e-8,5e-8))\n",
  672. "ax3.text(-4e-8,3e8,\"d negligible <1e-7\")\n",
  673. "ax3.set_xlabel(\"d\")\n",
  674. "ax3.set_ylabel(\"normed\")\n",
  675. "ax3.set_title(\"fitparameter d der scifi track\")\n",
  676. "ax3.legend()\n",
  677. "\n",
  678. "\"\"\"\n",
  679. "a_x: virtual hit on the reference plane\n",
  680. "\"\"\"\n",
  681. "\n",
  682. "plt.show()"
  683. ]
  684. },
  685. {
  686. "cell_type": "code",
  687. "execution_count": null,
  688. "metadata": {},
  689. "outputs": [],
  690. "source": []
  691. },
  692. {
  693. "cell_type": "code",
  694. "execution_count": null,
  695. "metadata": {},
  696. "outputs": [],
  697. "source": []
  698. },
  699. {
  700. "cell_type": "code",
  701. "execution_count": null,
  702. "metadata": {},
  703. "outputs": [],
  704. "source": []
  705. },
  706. {
  707. "cell_type": "code",
  708. "execution_count": null,
  709. "metadata": {},
  710. "outputs": [],
  711. "source": []
  712. },
  713. {
  714. "cell_type": "code",
  715. "execution_count": null,
  716. "metadata": {},
  717. "outputs": [],
  718. "source": []
  719. }
  720. ],
  721. "metadata": {
  722. "kernelspec": {
  723. "display_name": "env1",
  724. "language": "python",
  725. "name": "python3"
  726. },
  727. "language_info": {
  728. "codemirror_mode": {
  729. "name": "ipython",
  730. "version": 3
  731. },
  732. "file_extension": ".py",
  733. "mimetype": "text/x-python",
  734. "name": "python",
  735. "nbconvert_exporter": "python",
  736. "pygments_lexer": "ipython3",
  737. "version": "3.11.5"
  738. },
  739. "orig_nbformat": 4
  740. },
  741. "nbformat": 4,
  742. "nbformat_minor": 2
  743. }