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
1020 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
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
11 months ago
11 months ago
1 year ago
11 months 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": "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
  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": "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
  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": 11,
  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.10.12"
  432. },
  433. "orig_nbformat": 4
  434. },
  435. "nbformat": 4,
  436. "nbformat_minor": 2
  437. }