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.

437 lines
1.0 MiB

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": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "import uproot\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. "%matplotlib inline"
  20. ]
  21. },
  22. {
  23. "cell_type": "code",
  24. "execution_count": 2,
  25. "metadata": {},
  26. "outputs": [
  27. {
  28. "data": {
  29. "text/plain": [
  30. "410"
  31. ]
  32. },
  33. "execution_count": 2,
  34. "metadata": {},
  35. "output_type": "execute_result"
  36. }
  37. ],
  38. "source": [
  39. "file = uproot.open(\"tracking_losses_ntuple_Bd2KstEE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n",
  40. "\n",
  41. "\n",
  42. "\n",
  43. "#selektiere Kaonen und Pionen aus K*->Kpi - B->K*ee - und nur solche mit einem momentum von ueber 5 GeV \n",
  44. "allcolumns = file.arrays()\n",
  45. "found = allcolumns[((allcolumns.isPion) | (allcolumns.isKaon)) & (~allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p>5e3)] #B: 8126\n",
  46. "lost = allcolumns[((allcolumns.isPion) | (allcolumns.isKaon)) & (allcolumns.lost) & (allcolumns.fromSignal) & (allcolumns.p>5e3)] #B: 410\n",
  47. "\n",
  48. "ak.num(lost, axis=0)\n",
  49. "#ak.count(found, axis=None)\n"
  50. ]
  51. },
  52. {
  53. "cell_type": "code",
  54. "execution_count": 3,
  55. "metadata": {},
  56. "outputs": [
  57. {
  58. "data": {
  59. "text/plain": [
  60. "0.9519681349578257"
  61. ]
  62. },
  63. "execution_count": 3,
  64. "metadata": {},
  65. "output_type": "execute_result"
  66. }
  67. ],
  68. "source": [
  69. "def t_eff(found, lost):\n",
  70. " sel = found[\"energy\"]\n",
  71. " des = lost[\"energy\"]\n",
  72. " return ak.count(sel,axis=None)/(ak.count(sel,axis=None)+ak.count(des,axis=None))\n",
  73. "\n",
  74. "t_eff(found, lost)\n"
  75. ]
  76. },
  77. {
  78. "cell_type": "code",
  79. "execution_count": 4,
  80. "metadata": {},
  81. "outputs": [],
  82. "source": [
  83. "#ist die shape der teilspur im scifi anders? (koenntest du zum beispiel durch vergleich der verteilungen der fit parameter studieren,\n",
  84. "#in meiner thesis findest du das fitmodell -- ist einfach ein polynom dritten grades)\n",
  85. "z_ref=8520 #mm\n",
  86. "\n",
  87. "def scifi_track(z, a, b, c, d):\n",
  88. " return a + b*(z-z_ref) + c*(z-z_ref)**2 + d*(z-z_ref)**3\n",
  89. "\n",
  90. "def z_mag(xv, zv, tx, a, b):\n",
  91. " \"\"\" optical centre of the magnet is defined as the intersection between the trajectory tangents before and after the magnet\n",
  92. "\n",
  93. " Args:\n",
  94. " xv (double): velo x track\n",
  95. " zv (double): velo z track\n",
  96. " tx (double): velo x slope\n",
  97. " a (double): ax parameter of track fit\n",
  98. " b (double): bx parameter of track fit\n",
  99. "\n",
  100. " Returns:\n",
  101. " double: z_mag\n",
  102. " \"\"\"\n",
  103. " return (xv-tx*zv-a+b*z_ref)/(b-tx)"
  104. ]
  105. },
  106. {
  107. "cell_type": "code",
  108. "execution_count": 5,
  109. "metadata": {},
  110. "outputs": [],
  111. "source": [
  112. "scifi_found = found[found[\"scifi_hit_pos_x_length\"]>3]\n",
  113. "scifi_lost = lost[lost[\"scifi_hit_pos_x_length\"]>3]\n",
  114. "\n",
  115. "scifi_x_found = scifi_found[\"scifi_hit_pos_x\"]\n",
  116. "scifi_z_found = scifi_found[\"scifi_hit_pos_z\"]\n",
  117. "\n",
  118. "tx_found = scifi_found[\"velo_track_tx\"]\n",
  119. "\n",
  120. "scifi_x_lost = scifi_lost[\"scifi_hit_pos_x\"]\n",
  121. "scifi_z_lost = scifi_lost[\"scifi_hit_pos_z\"]\n",
  122. "\n",
  123. "tx_lost = scifi_lost[\"velo_track_tx\"]\n",
  124. "\n",
  125. "xv_found = scifi_found[\"velo_track_x\"]\n",
  126. "zv_found = scifi_found[\"velo_track_z\"]\n",
  127. "\n",
  128. "xv_lost = scifi_lost[\"velo_track_x\"]\n",
  129. "zv_lost = scifi_lost[\"velo_track_z\"]\n",
  130. "\n",
  131. "\n",
  132. "\n",
  133. "#ak.num(scifi_found[\"energy\"], axis=0)\n",
  134. "#scifi_found.snapshot()"
  135. ]
  136. },
  137. {
  138. "cell_type": "code",
  139. "execution_count": 6,
  140. "metadata": {},
  141. "outputs": [],
  142. "source": [
  143. "scifi_fitpars_found = ak.ArrayBuilder()\n",
  144. "\n",
  145. "for i in range(0,ak.num(scifi_found[\"energy\"], axis=0)):\n",
  146. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]))\n",
  147. " scifi_fitpars_found.begin_list()\n",
  148. " scifi_fitpars_found.real(popt[0])\n",
  149. " scifi_fitpars_found.real(popt[1])\n",
  150. " scifi_fitpars_found.real(popt[2])\n",
  151. " scifi_fitpars_found.real(popt[3])\n",
  152. " scifi_fitpars_found.end_list()\n",
  153. "\n",
  154. "scifi_fitpars_lost = ak.ArrayBuilder()\n",
  155. "\n",
  156. "for i in range(0,ak.num(scifi_lost[\"energy\"], axis=0)):\n",
  157. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]))\n",
  158. " scifi_fitpars_lost.begin_list()\n",
  159. " scifi_fitpars_lost.real(popt[0])\n",
  160. " scifi_fitpars_lost.real(popt[1])\n",
  161. " scifi_fitpars_lost.real(popt[2])\n",
  162. " scifi_fitpars_lost.real(popt[3])\n",
  163. " scifi_fitpars_lost.end_list()\n",
  164. "\n",
  165. "\n",
  166. "scifi_fitpars_lost = scifi_fitpars_lost.to_numpy()\n",
  167. "scifi_fitpars_found = scifi_fitpars_found.to_numpy()\n"
  168. ]
  169. },
  170. {
  171. "cell_type": "code",
  172. "execution_count": 7,
  173. "metadata": {},
  174. "outputs": [
  175. {
  176. "data": {
  177. "image/png": "iVBORw0KGgoAAAANSUhEUgAABPwAAANVCAYAAADsieBeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADt1ElEQVR4nOzdeVyU5f7/8ffI7oY7iyuaG26VpEEqmKm5ZaVHrY5ZqWVmplQmpom22GL+yHLJssjK5ZxjVqfM1I6QJi0qmqZtHhQjyMwUNWWR6/eHX+Y4MCDgwAzD6/l4zKPui899Xdd93zPw8TP3YjHGGAEAAAAAAABwC9WcPQEAAAAAAAAAjkPBDwAAAAAAAHAjFPwAAAAAAAAAN0LBDwAAAAAAAHAjFPwAAAAAAAAAN0LBDwAAAAAAAHAjFPwAAAAAAAAAN0LBDwAAAAAAAHAjFPwAAAAAAAAAN0LBD6ik1qxZow4dOsjPz08Wi0W7d+9WbGysLBaLTdzixYsVHx/vnEm6uJUrVyouLs7Z07hsCQkJslgsSkhIcPZUSiw+Pl4Wi0WHDh2yaZ85c6aaNWsmT09P1alTR5IUFRWlqKioS/bpCu91i8WiSZMmOXUOAIDKjzzv8jkjz4uKilLHjh0d3m+LFi101113Obzf8mSxWBQbG2vT9tlnnyksLEw1atSQxWLR+++/X2ROWND27dsVGxurEydOlNucL+Wuu+5SzZo1nTY+UFoU/IBK6Pfff9fo0aPVqlUrbdiwQUlJSWrTpo3GjRunpKQkm1gSwaK5S8GvMho0aJCSkpIUFBRkbfvggw/09NNP684771RiYqI2b94s6cJ7ePHixZfsk/c6AMAdkOc5BnmecyUlJWncuHHWZWOMRowYIS8vL3344YdKSkpSZGSk3ZzQnu3bt2vOnDlOLfgBlY2nsycAoPR+/PFH5eTk6O9//7siIyOt7dWrV1eTJk2cOLPCzp49K19f30LfSLuzs2fPys/Pz9nTKLO//vpL1atXL9cxGjZsqIYNG9q07du3T5I0efJkNWrUyNoeGhrq8PFzcnJksVjk6cmfQQCAayHPc22VPc87f/68cnNz5ePjU67jXHvttTbLv/76q44fP65bbrlFffr0sflZwZzQESr7cQIcgTP8gErmrrvuUo8ePSRJI0eOlMVisV7uWPBSjxYtWui7775TYmKiLBaLLBaLWrRoIel/l4G+8847io6OVmBgoPz8/BQZGank5GSbMXfs2KFRo0apRYsW8vPzU4sWLXTbbbfp8OHDNnH5p+Rv3LhR99xzjxo2bKjq1asrKytLP//8s+6++261bt1a1atXV+PGjTVkyBDt3bvXpo/8ea1cuVKPPfaYgoKCVLNmTQ0ZMkS//fabTp06pXvvvVcNGjRQgwYNdPfdd+v06dM2fRhjtHjxYl155ZXy8/NT3bp1NXz4cP33v/+1xkRFRenjjz/W4cOHrfvm4n2XnZ2tp556Su3atZOPj48aNmyou+++W7///rvNWC1atNDgwYP13nvv6aqrrpKvr6/mzJlT5PHbtGmThg4dqiZNmsjX11dXXHGF7rvvPh07dqzIdS72/fff68Ybb1T16tXVoEEDTZgwQadOnbIbu3nzZvXp00e1a9dW9erVdd111+mzzz6zicl/z+zatUvDhw9X3bp11apVqyLH/+uvv/TII48oJCREvr6+qlevnsLCwrRq1SqbuK+++kpDhgxR/fr15evrq1atWmnKlCnWnxe8fKNFixaaOXOmJCkgIMDmMpCSXNJbkvf622+/rYcffliNGzeWj4+Pfv75Z/3++++aOHGiQkNDVbNmTTVq1EjXX3+9tm7dWmiMrKwszZ07V+3bt5evr6/q16+v3r17a/v27UXOyxijGTNmyMvLS6+99lqx2wAAAHle5c7z8m3dulXXXnut/Pz81LhxY82aNUvnz5+/5Ho5OTmaNm2aAgMDVb16dfXo0UNff/213diMjAzdd999atKkiby9vRUSEqI5c+YoNzfXGnPo0CFZLBY9//zzeuqppxQSEiIfHx9t2bKlyDn885//VPfu3eXv76/q1aurZcuWuueee2xiTpw4oYcfflgtW7aUj4+PGjVqpIEDB+r777+3xlycy8XGxlqL1Y899pjNe7Ukl/TGxsbq0UcflSSFhIRYj2f+7WyKO06LFi1Sr1691KhRI9WoUUOdOnXS888/r5ycnELjbNiwQX369LFue/v27TVv3rwi5yVJX3zxhRo0aKDBgwfrzJkzxcYCFY1TG4BKZtasWerWrZseeOABPfPMM+rdu7dq165tN3bdunUaPny4/P39rZdEFvw2b8aMGbr66qv1+uuv6+TJk4qNjVVUVJSSk5PVsmVLSReShbZt22rUqFGqV6+e0tPTtWTJEl1zzTXav3+/GjRoYNPnPffco0GDBuntt9/WmTNn5OXlpV9//VX169fXs88+q4YNG+r48eN666231L17dyUnJ6tt27aF5tW7d2/Fx8fr0KFDeuSRR3TbbbfJ09NTXbp00apVq5ScnKwZM2aoVq1aWrhwoXXd++67T/Hx8Zo8ebKee+45HT9+XHPnzlVERIT27NmjgIAALV68WPfee68OHjyodevW2Yydl5enoUOHauvWrZo2bZoiIiJ0+PBhzZ49W1FRUdqxY4fNN4a7du3SgQMHNHPmTIWEhKhGjRpFHr+DBw8qPDxc48aNk7+/vw4dOqQFCxaoR48e2rt3r7y8vIpc97ffflNkZKS8vLy0ePFiBQQE6N1337V7z7h33nlHd955p4YOHaq33npLXl5eevXVV9W/f399+umnhb5ZvfXWWzVq1ChNmDCh2GQlOjpab7/9tp566ildddVVOnPmjPbt26c//vjDGvPpp59qyJAhat++vRYsWKBmzZrp0KFD2rhxY5H9rlu3TosWLdLy5cu1YcMG+fv7l+oshpK812NiYhQeHq6lS5eqWrVqatSokTWxnz17tgIDA3X69GmtW7dOUVFR+uyzz6z/yMrNzdWAAQO0detWTZkyRddff71yc3P15ZdfKjU1VREREYXmlJWVpbvuuksff/yx/v3vf+vGG28s8fYAAKom8rzKnedJFwpxo0aN0vTp0zV37lx9/PHHeuqpp/Tnn3/qlVdeKXbd8ePHa8WKFXrkkUfUt29f7du3T7feemuhL3czMjLUrVs3VatWTU888YRatWqlpKQkPfXUUzp06JDefPNNm/iFCxeqTZs2mj9/vmrXrq3WrVvbHT8pKUkjR47UyJEjFRsbK19fXx0+fFj/+c9/rDGnTp1Sjx49dOjQIT322GPq3r27Tp8+rc8//1zp6elq165doX7HjRunLl266NZbb9WDDz6o22+/vVRnGI4bN07Hjx/Xyy+/rPfee896+e/FV4EUdZwOHjyo22+/XSEhIfL29taePXv09NNP6/vvv9cbb7xhXX/58uUaP368IiMjtXTpUjVq1Eg//vij9QoUe/7xj3/ozjvv1D333KOXX35ZHh4eJd4moEIYAJXOli1bjCTzz3/+06Z99uzZpuDHukOHDiYyMrLIPq6++mqTl5dnbT906JDx8vIy48aNK3L83Nxcc/r0aVOjRg3z0ksvWdvffPNNI8nceeedl9yG3Nxck52dbVq3bm2mTp1aaF5DhgyxiZ8yZYqRZCZPnmzTfvPNN5t69epZl5OSkowk8+KLL9rEHTlyxPj5+Zlp06ZZ2wYNGmSaN29eaG6rVq0ykszatWtt2r/55hsjySxevNja1rx5c+Ph4WF++OGHS25zQXl5eSYnJ8ccPnzYSDIffPBBsfGPPfaYsVgsZvfu3Tbtffv2NZLMli1bjDHGnDlzxtSrV6/QPjx//rzp0qWL6datm7Ut/z3zxBNPlGjOHTt2NDfffHOxMa1atTKtWrUyZ8+eLTIm/72SkpJSaC6///67TWxkZKTd93BBl3qv9+rV65J95ObmmpycHNOnTx9zyy23WNtXrFhhJJnXXnut2PUlmQceeMD88ccfpkePHqZx48aFjhcAAMUhz/ufypbnRUZG2s3pxo8fb6pVq2YOHz5c5LoHDhwwkmz
  178. "text/plain": [
  179. "<Figure size 1500x1000 with 4 Axes>"
  180. ]
  181. },
  182. "metadata": {},
  183. "output_type": "display_data"
  184. }
  185. ],
  186. "source": [
  187. "fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(15,10))\n",
  188. "\n",
  189. "ax0.hist(scifi_fitpars_found[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$a_x$ found\")\n",
  190. "ax0.hist(scifi_fitpars_lost[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$a_x$ lost\")\n",
  191. "ax0.set_xlabel(\"a\")\n",
  192. "ax0.set_ylabel(\"normed\")\n",
  193. "ax0.set_title(\"fitparameter a der scifi track\")\n",
  194. "ax0.legend()\n",
  195. "\n",
  196. "ax1.hist(scifi_fitpars_found[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$b_x$ found\")\n",
  197. "ax1.hist(scifi_fitpars_lost[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$b_x$ lost\")\n",
  198. "ax1.set_xlabel(\"b\")\n",
  199. "ax1.set_ylabel(\"normed\")\n",
  200. "ax1.set_title(\"fitparameter b der scifi track\")\n",
  201. "ax1.legend()\n",
  202. "\n",
  203. "ax2.hist(scifi_fitpars_found[:,2], bins=200, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$c_x$ found\")\n",
  204. "ax2.hist(scifi_fitpars_lost[:,2], bins=200, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$c_x$ lost\")\n",
  205. "ax2.set_xlim([-1e-5,1e-5])\n",
  206. "ax2.set_xticks(np.arange(-1e-5,1.5e-5,5e-6),minor=False)\n",
  207. "ax2.set_xlabel(\"c\")\n",
  208. "ax2.set_ylabel(\"normed\")\n",
  209. "ax2.set_title(\"fitparameter c der scifi track\")\n",
  210. "ax2.legend()\n",
  211. "\n",
  212. "ax3.hist(scifi_fitpars_found[:,3], bins=200, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$d_x$ found\")\n",
  213. "ax3.hist(scifi_fitpars_lost[:,3], bins=200, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$d_x$ lost\")\n",
  214. "ax3.set(xlim=(-2e-8,2e-8))\n",
  215. "ax3.set_xlabel(\"d\")\n",
  216. "ax3.set_ylabel(\"normed\")\n",
  217. "ax3.set_title(\"fitparameter d der scifi track\")\n",
  218. "ax3.legend()\n",
  219. "\n",
  220. "\"\"\"\n",
  221. "a_x: virtual hit on the reference plane\n",
  222. "\"\"\"\n",
  223. "\n",
  224. "plt.show()"
  225. ]
  226. },
  227. {
  228. "cell_type": "code",
  229. "execution_count": 8,
  230. "metadata": {},
  231. "outputs": [
  232. {
  233. "name": "stdout",
  234. "output_type": "stream",
  235. "text": [
  236. "found\n",
  237. "a = 1.3758753561567658\n",
  238. "b = 1.4867317350363123e-05\n",
  239. "c = 1.0611928711675984e-09\n",
  240. "d = 2.524323901023556e-12\n",
  241. "lost\n",
  242. "a = 19.655460959039587\n",
  243. "b = -0.0007972008149349264\n",
  244. "c = -1.6113881305735422e-07\n",
  245. "d = 8.074893917737833e-11\n"
  246. ]
  247. }
  248. ],
  249. "source": [
  250. "\"\"\"\n",
  251. "Electrons\n",
  252. "found\n",
  253. "a = -0.6718207391527037 b = 0.0013778237292529144 c = 3.3126998287416195e-08 d = -1.0330674442255529e-10\n",
  254. "lost\n",
  255. "a = -36.98764338200992 b = -0.015685137956233643 c = -8.265859479503501e-07 d = -1.541510766903436e-11\n",
  256. "\n",
  257. "Kaon and Pions\n",
  258. "found\n",
  259. "a = 1.3758753561567658 b = 1.4867317350363123e-05 c = 1.0611928711675984e-09 d = 2.524323901023556e-12\n",
  260. "lost\n",
  261. "a = 19.655460959039587 b = -0.0007972008149349264 c = -1.6113881305735422e-07 d = 8.074893917737833e-11\n",
  262. "\n",
  263. "Kaons\n",
  264. "found\n",
  265. "a = 1.553371699292705\t\tb = 8.625619976952656e-05\t\tc = 3.1024420569192613e-09\t\td = -2.028183118694356e-13\n",
  266. "lost\n",
  267. "a = 50.918713410777336\t\tb = 0.005102900113795297\t\tc = -7.416239379215659e-09\t\td = 5.64633728533602e-11\n",
  268. "\n",
  269. "Pions\n",
  270. "found\n",
  271. "a = 1.1512709788236055\t\tb = -7.54683774644083e-05\t\tc = -1.5218096529826036e-09\t\td = 5.975257412125118e-12\n",
  272. "lost\n",
  273. "a = -3.625684483743866\t\tb = -0.005190892995904242\t\tc = -2.7561307005171267e-07\t\td = 9.883393537611524e-11\n",
  274. "\"\"\"\n",
  275. "\n",
  276. "print(\"found\")\n",
  277. "print(\"a = \", str(np.mean(scifi_fitpars_found[:,0])))\n",
  278. "print(\"b = \", str(np.mean(scifi_fitpars_found[:,1])))\n",
  279. "print(\"c = \", str(np.mean(scifi_fitpars_found[:,2])))\n",
  280. "print(\"d = \", str(np.mean(scifi_fitpars_found[:,3])))\n",
  281. "\n",
  282. "print(\"lost\")\n",
  283. "print(\"a = \", str(np.mean(scifi_fitpars_lost[:,0])))\n",
  284. "print(\"b = \", str(np.mean(scifi_fitpars_lost[:,1])))\n",
  285. "print(\"c = \", str(np.mean(scifi_fitpars_lost[:,2])))\n",
  286. "print(\"d = \", str(np.mean(scifi_fitpars_lost[:,3])))\n"
  287. ]
  288. },
  289. {
  290. "cell_type": "code",
  291. "execution_count": 9,
  292. "metadata": {},
  293. "outputs": [
  294. {
  295. "data": {
  296. "image/png": "iVBORw0KGgoAAAANSUhEUgAABQEAAAIhCAYAAAD+cXzUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5gcV5X4/W/nnKd7ctaMsjSyspMsy3KSwcY2wYADmTWwGLwsLPsDTFgbzO7Cy4JhEzmYZddEY4NzkmRla0YTNTl2T+fcVV1V7x9jDRaSbVkOsuT7eR4/fqa6uupWd4/6zKl7z9FpmqYhCIIgCIIgCIIgCIIgCMIZS3+qByAIgiAIgiAIgiAIgiAIwqtLJAEFQRAEQRAEQRAEQRAE4QwnkoCCIAiCIAiCIAiCIAiCcIYTSUBBEARBEARBEARBEARBOMOJJKAgCIIgCIIgCIIgCIIgnOFEElAQBEEQBEEQBEEQBEEQznAiCSgIgiAIgiAIgiAIgiAIZziRBBQEQRAEQRAEQRAEQRCEM5xIAgqCIAiCIAiCIAiCIAjCGU4kAQXhDeaXv/wlS5cuxWazodPpOHDgwKke0nHddttt6HS6F93v5z//Od/85jdf/QG9gKamJq644opTOgaAeDzOO97xDkKhEDqdjquuuupVP2dTUxM33XTTUdv279/Ppk2b8Hg86HQ6vvnNb/Loo4+i0+l49NFHX/B4P/zhD9HpdOzZs+dFz33BBRdwwQUXzP+cz+e57bbbXvQcgiAIgvBGdOQ7dmRk5FU5/l133cUPf/jDE97/9ttv5ze/+c2rMpYTMTIygk6n45//+Z9P2RiOOF7s9Go6cu1//X4d7++EE43Jb7rpJpxO5wmdX6fTcdttt83/3N3dzW233faqfTYFQfgL46kegCAIr53Z2Vmuv/56Lr30Uu666y4sFgvt7e2nelgvy89//nO6urq45ZZbTvVQTrkvf/nL/PrXv+b73/8+ra2t+P3+V/2cv/71r3G73Udte+9730sul+Puu+/G5/PR1NSE3W5nx44dLFmy5BU791133XXUz/l8ni9+8YsARyUHBUEQBEF49d11111UVFQcc3Pw+dx+++1ce+21r8lNy9e748VOr6bq6mp27NhBa2vr/Lbn+zvh/e9/P5deeukrev4dO3ZQV1c3/3N3dzdf/OIXueCCC171axeENzqRBBSEN5D+/n5kWebd7343mzZtOtXDec0pikK5XMZisZzqobwqurq6aG1t5V3vetdrds5Vq1Yddxwf+MAHuOyyy47avmHDhlf03K9kQlEQBEEQhNevQqGA1Wo9oRlpp6Pni51eLRaL5Zi47Pn+TrDb7Ucl7F4Jr3RMKAjCiRPLgQXhDeKmm27i3HPPBeDtb387Op3uqNlSv/vd79i4cSN2ux2Xy8XWrVvZsWPHMcc43t254y0T0Ol0fPSjH+UnP/kJixcvxm63s3LlSv7whz8c8/x7772Xjo4OLBYLzc3NJ7ws44ILLuDee+9ldHQUnU43/x/8ZZnDnXfeyVe+8hWam5uxWCw88sgjFItFbr31Vjo6OvB4PPj9fjZu3Mhvf/vbY86hqir/9m//RkdHBzabDa/Xy4YNG/jd7373gmO76667MBqNfOELX5jf9t3vfpeVK1fidDpxuVwsWrSIz372sy96nfF4nJtvvpna2lrMZjMtLS384z/+I6VS6ahrffDBB+np6Zl/HV5oWezDDz/MBRdcQCAQwGaz0dDQwDXXXEM+n5/fp1Qq8aUvfYnFixdjtVoJBAJs3ryZ7du3z+/z3OXAR5YZlctlvvvd7x71fpzocuAjMpkMf/M3f0NFRQWBQICrr76aqampo/Z57nLgkZERgsEgAF/84hfnz31kbLOzs3zwgx+kvr4ei8VCMBjknHPO4cEHHzyh8QiCIAjCmer73/8+K1euxGq14vf7ectb3kJPT89R+wwNDfGOd7yDmpoaLBYLlZWVbNmyZb6sTFNTE4cOHeKxxx6b/w5+oRldOp2OXC7Hj370o/n9j3ynH4kn/vznP/Pe976XYDCI3W6nVCpx+PBh3vOe99DW1obdbqe2tpY3velNdHZ2HnOOZDLJrbfeSktLCxaLhVAoxOWXX05vb+/zjkuWZW688UacTud8zJrP5/m7v/s7mpub51+jNWvW8Itf/OJFX9uuri6uvPJKfD4fVquVjo4OfvSjH80//kKx0/M5kXhycnJyPu4xm83U1NRw7bXXEg6HgWOXA7/Q3wknuhz4iMOHD3P55ZfjdDqpr6/n1ltvnY9Zj3jucuAf/vCHvPWtbwVg8+bN86/BkbHt37+fK664glAohMVioaamhm3btjExMXHCYxIE4S/ETEBBeIP43Oc+x7p16/jIRz7C7bffzubNm+eXcf785z/nXe96FxdffDG/+MUvKJVK3HnnnVxwwQU89NBD80HBS3Xvvfeye/duvvSlL+F0Ornzzjt5y1veQl9fHy0tLQA89NBDXHnllWzcuJG7774bRVG4884754OUF3LXXXfxwQ9+kMHBQX79618fd59vfetbtLe388///M+43W7a2toolUrE43H+7u/+jtraWiRJ4sEHH+Tqq6/mBz/4ATfccMP882+66SZ++tOf8r73vY8vfelLmM1m9u3b97w1SzRN41Of+hTf+ta3+K//+q/5JNTdd9/NzTffzMc+9jH++Z//Gb1ez+HDh+nu7n7BaywWi2zevJnBwUG++MUvsmLFCp544gnuuOMODhw4wL333ju/pOPmm28mlUrxs5/9DHj+mXIjIyNs27aN8847j+9///t4vV4mJye5//77kSQJu91OuVzmsssu44knnuCWW27hwgsvpFwus3PnTsbGxjj77LOPOe62bdvYsWMHGzdu5Nprr+XWW299wWt7Ie9///vZtm0bP//5zxkfH+dTn/oU7373u3n44YePu391dTX3338/l156Ke973/t4//vfDzCfGLz++uvZt28f//RP/0R7ezvJZJJ9+/YRi8VOeoyCIAiCcLq74447+OxnP8t1113HHXfcQSwW47bbbmPjxo3s3r2btrY2AC6//PL5GK2hoYFoNMr27dtJJpPAXHmQa6+9Fo/HM1+u44VWXuzYsYMLL7yQzZs387nPfQ7guOVFtm3bxk9+8hNyuRwmk4mpqSkCgQBf/epXCQaDxONxfvSjH7F+/Xr279/PwoULgbmbieeeey4jIyN8+tOfZv369WSzWR5//HGmp6dZtGjRMWNKJpNcffXV9PT08Nhjj7F69WoAPvnJT/KTn/yEr3zlK6xatYpcLkdXV9eLxhB9fX2cffbZhEIhvvWtbxEIBPjpT3/KTTfdRDgc5u///u9fcux0IvHk5OQka9euRZZlPvvZz7JixQpisRh/+tOfSCQSVFZWHnPcF/o74aWQZZk3v/nNvO997+PWW2/l8ccf58tf/jIej4fPf/7zx33Otm3buP322/nsZz/Ld77zHc466ywAWltbyeVybN26lebmZr7zne9QWVnJzMwMjzzyCJlM5iWPTxAEQBME4Q3jkUce0QDtV7/61fw2RVG0mpoabfny5ZqiKPPbM5mMFgqFtLPPPnt+24033qg1NjYec9wvfOEL2l//cwJolZWVWjqdnt82MzOj6fV67Y477pjftn79eq2mpkYrFArz29LptOb3+4855vFs27btuGMaHh7WAK21tVWTJOkFj1EulzVZlrX3ve992qpVq+a3P/744xqg/eM//uMLPr+xsVHbtm2bls/ntWuuuUbzeDzagw8+eNQ+H/3oRzWv1/ui1/PXvve972mA9j//8z9Hbf/a176mAdqf//zn+W2bNm3Sli5d+qLH/N///V8N0A4cOPC8+/z4xz/WAO0///M/X/BYjY2N2o033njUNkD7yEc+ctS2I5+9Rx555AWP94Mf/EADtJtvvvmo7XfeeacGaNPT0/PbNm3apG3atGn+59nZWQ3QvvCFLxxzXKfTqd1yyy0veG5BEARBOJMd+Y4dHh7WNE3TEomEZrPZtMsvv/yo/cbGxjSLxaK9853v1DRN06LRqAZo3/zmN1/w+EuXLj3
  297. "text/plain": [
  298. "<Figure size 1500x600 with 2 Axes>"
  299. ]
  300. },
  301. "metadata": {},
  302. "output_type": "display_data"
  303. }
  304. ],
  305. "source": [
  306. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(15,6))\n",
  307. "\n",
  308. "for i in range(0,ak.num(scifi_found[\"energy\"], axis=0)):\n",
  309. " z_coord = np.linspace(scifi_z_found[i,0],12000,300)\n",
  310. " fit = scifi_track(z_coord, *scifi_fitpars_found[i])\n",
  311. " ax0.plot(z_coord, fit, \"-\", lw=0.5)\n",
  312. " ax0.errorbar(ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]),fmt=\".\",ms=2)\n",
  313. "\n",
  314. "#ax0.legend()\n",
  315. "ax0.set_xlabel(\"z [mm]\")\n",
  316. "ax0.set_ylabel(\"x [mm]\")\n",
  317. "ax0.set_title(\"found tracks of scifi hits\")\n",
  318. "ax0.set(xlim=(7e3,12000), ylim=(-4000,4000))\n",
  319. "ax0.grid()\n",
  320. "\n",
  321. "for i in range(0,ak.num(scifi_lost[\"energy\"], axis=0)):\n",
  322. " z_coord = np.linspace(scifi_z_lost[i,0],12000,300)\n",
  323. " fit = scifi_track(z_coord, *scifi_fitpars_lost[i])\n",
  324. " ax1.plot(z_coord, fit, \"-\", lw=0.5)\n",
  325. " ax1.errorbar(ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]),fmt=\".\",ms=2)\n",
  326. "\n",
  327. "#ax1.legend()\n",
  328. "ax1.set_xlabel(\"z [mm]\")\n",
  329. "ax1.set_ylabel(\"x [mm]\")\n",
  330. "ax1.set_title(\"lost tracks of scifi hits\")\n",
  331. "ax1.set(xlim=(7e3,12000), ylim=(-4000,4000))\n",
  332. "ax1.grid()\n",
  333. "\n",
  334. "plt.show()"
  335. ]
  336. },
  337. {
  338. "cell_type": "code",
  339. "execution_count": 10,
  340. "metadata": {},
  341. "outputs": [
  342. {
  343. "name": "stdout",
  344. "output_type": "stream",
  345. "text": [
  346. "found \n",
  347. "zmag = 5196.312017664934\n",
  348. "lost \n",
  349. "zmag = 5200.71031871899\n"
  350. ]
  351. }
  352. ],
  353. "source": [
  354. "#vergleich der zmag werte\n",
  355. "zmag_found = z_mag(xv_found, zv_found, tx_found, scifi_fitpars_found[:,0], scifi_fitpars_found[:,1])\n",
  356. "zmag_lost = z_mag(xv_lost, zv_lost, tx_lost, scifi_fitpars_lost[:,0], scifi_fitpars_lost[:,1])\n",
  357. "zmag_lost = zmag_lost[~np.isnan(zmag_lost)]\n",
  358. "zmag_found = zmag_found[~np.isnan(zmag_found)]\n",
  359. "\n",
  360. "print(\"found \\nzmag = \", str(np.mean(zmag_found)))\n",
  361. "print(\"lost \\nzmag = \", str(np.mean(zmag_lost)))"
  362. ]
  363. },
  364. {
  365. "cell_type": "code",
  366. "execution_count": null,
  367. "metadata": {},
  368. "outputs": [],
  369. "source": []
  370. },
  371. {
  372. "cell_type": "code",
  373. "execution_count": 12,
  374. "metadata": {},
  375. "outputs": [
  376. {
  377. "data": {
  378. "image/png": "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
  379. "text/plain": [
  380. "<Figure size 640x480 with 1 Axes>"
  381. ]
  382. },
  383. "metadata": {},
  384. "output_type": "display_data"
  385. }
  386. ],
  387. "source": [
  388. "plt.hist(zmag_found, bins=2000, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  389. "plt.hist(zmag_lost, bins=500, density=True, alpha=0.5, histtype=\"bar\",color=\"darkorange\", label=\"lost\")\n",
  390. "plt.xlabel(\"$z_{mag}$ [mm]\")\n",
  391. "plt.ylabel(\"normed\")\n",
  392. "plt.title(\"magnet kick position $z_{mag}$ for $K$ and $\\pi$\")\n",
  393. "plt.legend()\n",
  394. "plt.xticks(np.arange(4900,5405,5), minor=True)\n",
  395. "plt.yticks(np.arange(0,0.015,0.001), minor=True)\n",
  396. "plt.xlim(4900,5400)\n",
  397. "\n",
  398. "\"\"\"\n",
  399. "the distribution for lost K and pi has a peak at around the same zmag value as found but its less compact and seems chaotic outside the range of the peak.\n",
  400. "the distribution for found particles appears compact around the peak.\n",
  401. "\n",
  402. "\"\"\"\n",
  403. "\n",
  404. "plt.show()"
  405. ]
  406. },
  407. {
  408. "cell_type": "code",
  409. "execution_count": null,
  410. "metadata": {},
  411. "outputs": [],
  412. "source": []
  413. }
  414. ],
  415. "metadata": {
  416. "kernelspec": {
  417. "display_name": "env1",
  418. "language": "python",
  419. "name": "python3"
  420. },
  421. "language_info": {
  422. "codemirror_mode": {
  423. "name": "ipython",
  424. "version": 3
  425. },
  426. "file_extension": ".py",
  427. "mimetype": "text/x-python",
  428. "name": "python",
  429. "nbconvert_exporter": "python",
  430. "pygments_lexer": "ipython3",
  431. "version": "3.11.5"
  432. },
  433. "orig_nbformat": 4
  434. },
  435. "nbformat": 4,
  436. "nbformat_minor": 2
  437. }