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.

521 lines
72 KiB

9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "import uproot\t\n",
  10. "import numpy as np\n",
  11. "import matplotlib.pyplot as plt\n",
  12. "from mpl_toolkits import mplot3d\n",
  13. "import awkward as ak\n",
  14. "from scipy.optimize import curve_fit\n",
  15. "import mplhep\n",
  16. "mplhep.style.use([\"LHCbTex2\"])\n",
  17. "\n",
  18. "plt.rcParams[\"savefig.dpi\"] = 600\n",
  19. "%matplotlib inline"
  20. ]
  21. },
  22. {
  23. "cell_type": "code",
  24. "execution_count": 2,
  25. "metadata": {},
  26. "outputs": [],
  27. "source": [
  28. "file = uproot.open(\n",
  29. " \"/work/cetin/Projektpraktikum/trackinglosses_B_photon_cuts.root\")\n",
  30. "\n",
  31. "# selektiere nur elektronen von B->K*ee\n",
  32. "allcolumns = []\n",
  33. "for i in range(11):\n",
  34. " allcolumns.append(file[\"Tree\" + str(i)].arrays())"
  35. ]
  36. },
  37. {
  38. "cell_type": "code",
  39. "execution_count": 3,
  40. "metadata": {},
  41. "outputs": [
  42. {
  43. "data": {
  44. "text/html": [
  45. "<pre>{oneCut_event_id: 1,\n",
  46. " oneCut_lost: False,\n",
  47. " oneCut_rad_length_frac: 0.148,\n",
  48. " oneCut_energy: 1.28e+04,\n",
  49. " noneCut_brem_photons_pe: 1,\n",
  50. " oneCut_brem_photons_pe: [7.42e+03],\n",
  51. " noneCut_brem_vtx_x: 1,\n",
  52. " oneCut_brem_vtx_x: [-3.61],\n",
  53. " noneCut_brem_vtx_z: 1,\n",
  54. " oneCut_brem_vtx_z: [35.6],\n",
  55. " oneCut_photon_length: 1}\n",
  56. "------------------------------------------\n",
  57. "type: {\n",
  58. " oneCut_event_id: int64,\n",
  59. " oneCut_lost: bool,\n",
  60. " oneCut_rad_length_frac: float64,\n",
  61. " oneCut_energy: float64,\n",
  62. " noneCut_brem_photons_pe: int32,\n",
  63. " oneCut_brem_photons_pe: var * float64,\n",
  64. " noneCut_brem_vtx_x: int32,\n",
  65. " oneCut_brem_vtx_x: var * float64,\n",
  66. " noneCut_brem_vtx_z: int32,\n",
  67. " oneCut_brem_vtx_z: var * float64,\n",
  68. " oneCut_photon_length: int64\n",
  69. "}</pre>"
  70. ],
  71. "text/plain": [
  72. "<Record {oneCut_event_id: 1, ...} type='{oneCut_event_id: int64, oneCut_los...'>"
  73. ]
  74. },
  75. "execution_count": 3,
  76. "metadata": {},
  77. "output_type": "execute_result"
  78. }
  79. ],
  80. "source": [
  81. "allcolumns[1][1]"
  82. ]
  83. },
  84. {
  85. "cell_type": "code",
  86. "execution_count": 4,
  87. "metadata": {},
  88. "outputs": [],
  89. "source": [
  90. "def cutdict():\n",
  91. " basedict = {\n",
  92. " \"0\": {},\n",
  93. " \"1\": {},\n",
  94. " \"2\": {},\n",
  95. " \"3\": {},\n",
  96. " \"4\": {},\n",
  97. " \"5\": {},\n",
  98. " \"6\": {},\n",
  99. " \"7\": {},\n",
  100. " \"8\": {},\n",
  101. " \"9\": {},\n",
  102. " \"10\": {},\n",
  103. " }\n",
  104. "\n",
  105. " basedict[\"0\"] = \"no\"\n",
  106. " basedict[\"1\"] = \"one\"\n",
  107. " basedict[\"2\"] = \"two\"\n",
  108. " basedict[\"3\"] = \"three\"\n",
  109. " basedict[\"4\"] = \"four\"\n",
  110. " basedict[\"5\"] = \"five\"\n",
  111. " basedict[\"6\"] = \"six\"\n",
  112. " basedict[\"7\"] = \"seven\"\n",
  113. " basedict[\"8\"] = \"eight\"\n",
  114. " basedict[\"9\"] = \"nine\"\n",
  115. " basedict[\"10\"] = \"ten\"\n",
  116. "\n",
  117. " return basedict\n",
  118. "\n",
  119. "\n",
  120. "Cuts = cutdict()"
  121. ]
  122. },
  123. {
  124. "cell_type": "code",
  125. "execution_count": 5,
  126. "metadata": {},
  127. "outputs": [],
  128. "source": [
  129. "# electrons = []\n",
  130. "# for jcut in range(11):\n",
  131. "\n",
  132. "jcut = 4 # cut 0.2*E\n",
  133. "\n",
  134. "energy_emissions = ak.ArrayBuilder()\n",
  135. "\n",
  136. "for jelec in range(ak.num(allcolumns[jcut], axis=0)):\n",
  137. " energy_emissions.begin_record()\n",
  138. " energy_emissions.field(\"lost\").boolean(\n",
  139. " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"lost\"])\n",
  140. " energy_emissions.field(\"rad_length_frac\").real(\n",
  141. " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"rad_length_frac\"])\n",
  142. " energy_emissions.field(\"energy\").real(\n",
  143. " allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"energy\"])\n",
  144. "\n",
  145. " tmp_velo = 0\n",
  146. " tmp_richut = 0\n",
  147. " tmp_neither = 0\n",
  148. " tmp_velo_length = 0\n",
  149. " tmp_richut_length = 0\n",
  150. " tmp_neither_length = 0\n",
  151. "\n",
  152. " for jphoton in range(\n",
  153. " ak.num(\n",
  154. " allcolumns[jcut][jelec][Cuts[str(jcut)] + \"Cut_\" +\n",
  155. " \"brem_photons_pe\"],\n",
  156. " axis=0,\n",
  157. " )):\n",
  158. " if (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\",\n",
  159. " jphoton] <= 770):\n",
  160. " tmp_velo += allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
  161. " \"brem_photons_pe\", jphoton]\n",
  162. " tmp_velo_length += 1\n",
  163. " elif (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\",\n",
  164. " jphoton]\n",
  165. " > 770) and (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
  166. " \"brem_vtx_z\", jphoton] <= 2700):\n",
  167. " tmp_richut += allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
  168. " \"brem_photons_pe\", jphoton]\n",
  169. " tmp_richut_length += 1\n",
  170. " else:\n",
  171. " tmp_neither += allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
  172. " \"brem_photons_pe\", jphoton]\n",
  173. " tmp_neither_length += 1\n",
  174. "\n",
  175. " energy_emissions.field(\"velo_length\").integer(tmp_velo_length)\n",
  176. " energy_emissions.field(\"velo\").real(tmp_velo)\n",
  177. "\n",
  178. " energy_emissions.field(\"rich_length\").integer(tmp_richut_length)\n",
  179. " energy_emissions.field(\"rich\").real(tmp_richut)\n",
  180. "\n",
  181. " energy_emissions.field(\"neither_length\").integer(tmp_neither_length)\n",
  182. " energy_emissions.field(\"downstream\").real(tmp_neither)\n",
  183. "\n",
  184. " energy_emissions.field(\"photon_length\").integer(tmp_richut_length +\n",
  185. " tmp_velo_length)\n",
  186. "\n",
  187. " if ((tmp_velo == 0) and (tmp_richut == 0)\n",
  188. " or (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"energy\"] -\n",
  189. " tmp_velo < 3000)):\n",
  190. " energy_emissions.field(\"quality\").integer(0)\n",
  191. " else:\n",
  192. " energy_emissions.field(\"quality\").integer(1)\n",
  193. "\n",
  194. " energy_emissions.end_record()\n",
  195. "\n",
  196. "energy_emissions = ak.Array(energy_emissions)\n",
  197. "# electrons.append(energy_emissions)"
  198. ]
  199. },
  200. {
  201. "cell_type": "code",
  202. "execution_count": 6,
  203. "metadata": {},
  204. "outputs": [
  205. {
  206. "data": {
  207. "image/png": "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
  208. "text/plain": [
  209. "<Figure size 1200x900 with 1 Axes>"
  210. ]
  211. },
  212. "metadata": {},
  213. "output_type": "display_data"
  214. }
  215. ],
  216. "source": [
  217. "velo_found = ak.to_numpy(\n",
  218. " energy_emissions[(~energy_emissions.lost)\n",
  219. " & (energy_emissions.quality == 1)][\"velo\"])\n",
  220. "rich_found = ak.to_numpy(\n",
  221. " energy_emissions[(~energy_emissions.lost)\n",
  222. " & (energy_emissions.quality == 1)][\"rich\"])\n",
  223. "energy_found = ak.to_numpy(\n",
  224. " energy_emissions[(~energy_emissions.lost)\n",
  225. " & (energy_emissions.quality == 1)][\"energy\"])\n",
  226. "\n",
  227. "velo_lost = ak.to_numpy(\n",
  228. " energy_emissions[(energy_emissions.lost)\n",
  229. " & (energy_emissions.quality == 1)][\"velo\"])\n",
  230. "rich_lost = ak.to_numpy(\n",
  231. " energy_emissions[(energy_emissions.lost)\n",
  232. " & (energy_emissions.quality == 1)][\"rich\"])\n",
  233. "energy_lost = ak.to_numpy(\n",
  234. " energy_emissions[(energy_emissions.lost)\n",
  235. " & (energy_emissions.quality == 1)][\"energy\"])\n",
  236. "\n",
  237. "diff_found = velo_found - rich_found\n",
  238. "diff_lost = velo_lost - rich_lost\n",
  239. "\n",
  240. "xlim = 20000\n",
  241. "nbins = 60\n",
  242. "\n",
  243. "plt.hist(\n",
  244. " diff_lost,\n",
  245. " bins=nbins,\n",
  246. " density=True,\n",
  247. " alpha=0.5,\n",
  248. " histtype=\"bar\",\n",
  249. " color=\"#F05342\",\n",
  250. " label=\"lost\",\n",
  251. " range=[-xlim, xlim],\n",
  252. ")\n",
  253. "plt.hist(\n",
  254. " diff_found,\n",
  255. " bins=nbins,\n",
  256. " density=True,\n",
  257. " alpha=0.5,\n",
  258. " histtype=\"bar\",\n",
  259. " color=\"#2A9D8F\", # \"#107E7D\",\n",
  260. " label=\"found\",\n",
  261. " range=[-xlim, xlim],\n",
  262. ")\n",
  263. "# plt.xlim(-20000, 20000)\n",
  264. "# plt.yscale(\"log\")\n",
  265. "# plt.title(\"emitted energy difference\")\n",
  266. "plt.xlabel(r\"$\\Delta E_{VELO} - \\Delta E_{RICH1+UT}$ [MeV]\")\n",
  267. "plt.ylabel(\"Number of Tracks (normalised)\")\n",
  268. "plt.legend(loc=\"best\")\n",
  269. "mplhep.lhcb.text(\"Simulation\")\n",
  270. "# plt.show()\n",
  271. "plt.savefig(\n",
  272. " \"/work/cetin/Projektpraktikum/thesis/emitted_energy_difference.pdf\",\n",
  273. " format=\"PDF\")"
  274. ]
  275. },
  276. {
  277. "cell_type": "code",
  278. "execution_count": null,
  279. "metadata": {},
  280. "outputs": [],
  281. "source": []
  282. },
  283. {
  284. "cell_type": "code",
  285. "execution_count": null,
  286. "metadata": {},
  287. "outputs": [],
  288. "source": []
  289. },
  290. {
  291. "cell_type": "code",
  292. "execution_count": null,
  293. "metadata": {},
  294. "outputs": [],
  295. "source": []
  296. },
  297. {
  298. "cell_type": "code",
  299. "execution_count": null,
  300. "metadata": {},
  301. "outputs": [],
  302. "source": []
  303. },
  304. {
  305. "cell_type": "code",
  306. "execution_count": null,
  307. "metadata": {},
  308. "outputs": [],
  309. "source": []
  310. },
  311. {
  312. "cell_type": "markdown",
  313. "metadata": {},
  314. "source": [
  315. "nbins = 6\n",
  316. "quality_cut = electrons[jcut].quality != -1\n",
  317. "\n",
  318. "### all split in velo and rich\n",
  319. "\n",
  320. "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
  321. "ax = axs.ravel()\n",
  322. "for jcut, ax in enumerate(ax):\n",
  323. "ax.hist(\n",
  324. "ak.to_numpy(electrons[jcut][quality_cut][\"velo_length\"]),\n",
  325. "bins=nbins,\n",
  326. "density=True,\n",
  327. "alpha=0.5,\n",
  328. "color=\"darkorange\",\n",
  329. "histtype=\"bar\",\n",
  330. "label=\"velo\",\n",
  331. "range=[0, nbins],\n",
  332. ")\n",
  333. "ax.hist(\n",
  334. "ak.to_numpy(electrons[jcut][quality_cut][\"rich_length\"]),\n",
  335. "bins=nbins,\n",
  336. "density=True,\n",
  337. "alpha=0.5,\n",
  338. "color=\"blue\",\n",
  339. "histtype=\"bar\",\n",
  340. "label=\"rich\",\n",
  341. "range=[0, nbins],\n",
  342. ")\n",
  343. "ax.set_xlim(0, nbins)\n",
  344. "ax.set_ylim(0, 1)\n",
  345. "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
  346. "ax.set_xlabel(\"number of photons\")\n",
  347. "ax.set_ylabel(\"a.u.\")\n",
  348. "plt.suptitle(\"number of photons in velo and rich\")\n",
  349. "plt.legend()\n",
  350. "plt.tight_layout()\n",
  351. "plt.show()\n",
  352. "\n",
  353. "### found\n",
  354. "\n",
  355. "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
  356. "ax = axs.ravel()\n",
  357. "for jcut, ax in enumerate(ax):\n",
  358. "ax.hist(\n",
  359. "ak.to_numpy(\n",
  360. "electrons[jcut]~(electrons[jcut].lost) & quality_cut][\"velo_length\"]\n",
  361. "),\n",
  362. "bins=nbins,\n",
  363. "density=True,\n",
  364. "alpha=0.5,\n",
  365. "color=\"darkorange\",\n",
  366. "histtype=\"bar\",\n",
  367. "label=\"velo\",\n",
  368. "range=[0, nbins],\n",
  369. ")\n",
  370. "ax.hist(\n",
  371. "ak.to_numpy(\n",
  372. "electrons[jcut]~(electrons[jcut].lost) & quality_cut][\"rich_length\"]\n",
  373. "),\n",
  374. "bins=nbins,\n",
  375. "density=True,\n",
  376. "alpha=0.5,\n",
  377. "color=\"blue\",\n",
  378. "histtype=\"bar\",\n",
  379. "label=\"rich\",\n",
  380. "range=[0, nbins],\n",
  381. ")\n",
  382. "ax.set_xlim(0, nbins)\n",
  383. "ax.set_ylim(0, 1)\n",
  384. "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
  385. "ax.set_xlabel(\"number of photons\")\n",
  386. "ax.set_ylabel(\"a.u.\")\n",
  387. "plt.suptitle(\"number of photons of found electrons\")\n",
  388. "plt.legend()\n",
  389. "plt.tight_layout()\n",
  390. "plt.show()\n",
  391. "\n",
  392. "### lost\n",
  393. "\n",
  394. "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
  395. "ax = axs.ravel()\n",
  396. "for jcut, ax in enumerate(ax):\n",
  397. "ax.hist(\n",
  398. "ak.to_numpy(\n",
  399. "electrons[jcut](electrons[jcut].lost) & quality_cut][\"velo_length\"]\n",
  400. "),\n",
  401. "bins=nbins,\n",
  402. "density=True,\n",
  403. "alpha=0.5,\n",
  404. "color=\"darkorange\",\n",
  405. "histtype=\"bar\",\n",
  406. "label=\"velo\",\n",
  407. "range=[0, nbins],\n",
  408. ")\n",
  409. "ax.hist(\n",
  410. "ak.to_numpy(\n",
  411. "electrons[jcut](electrons[jcut].lost) & quality_cut][\"rich_length\"]\n",
  412. "),\n",
  413. "bins=nbins,\n",
  414. "density=True,\n",
  415. "alpha=0.5,\n",
  416. "color=\"blue\",\n",
  417. "histtype=\"bar\",\n",
  418. "label=\"rich\",\n",
  419. "range=[0, nbins],\n",
  420. ")\n",
  421. "ax.set_xlim(0, nbins)\n",
  422. "ax.set_ylim(0, 1)\n",
  423. "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
  424. "ax.set_xlabel(\"number of photons\")\n",
  425. "ax.set_ylabel(\"a.u.\")\n",
  426. "plt.suptitle(\"number of photons of lost electrons\")\n",
  427. "plt.legend()\n",
  428. "plt.tight_layout()\n",
  429. "plt.show()\n",
  430. "quality_cut = electrons[jcut].quality != -1\n",
  431. "\n",
  432. "### all split in lost and found\n",
  433. "\n",
  434. "fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
  435. "ax = axs.ravel()\n",
  436. "for jcut, ax in enumerate(ax):\n",
  437. "ax.hist(\n",
  438. "ak.to_numpy(\n",
  439. "electrons[jcut](electrons[jcut].lost) & (quality_cut)][\"photon_length\"]\n",
  440. "),\n",
  441. "bins=10,\n",
  442. "density=True,\n",
  443. "alpha=0.5,\n",
  444. "color=\"darkorange\",\n",
  445. "histtype=\"bar\",\n",
  446. "label=\"lost\",\n",
  447. "range=[0, 10],\n",
  448. ")\n",
  449. "ax.hist(\n",
  450. "ak.to_numpy(\n",
  451. "electrons[jcut](~electrons[jcut].lost) & (quality_cut)][\"photon_length\"]\n",
  452. "),\n",
  453. "bins=10,\n",
  454. "density=True,\n",
  455. "alpha=0.5,\n",
  456. "color=\"blue\",\n",
  457. "histtype=\"bar\",\n",
  458. "label=\"found\",\n",
  459. "range=[0, 10],\n",
  460. ")\n",
  461. "ax.set_xlim(0, 10) # ax.set_ylim(0,1) # ax.set_yscale('log')\n",
  462. "ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
  463. "ax.set_xlabel(\"number of photons\")\n",
  464. "ax.set_ylabel(\"a.u.\")\n",
  465. "plt.suptitle(\"number of photons in lost and found\")\n",
  466. "plt.legend()\n",
  467. "plt.tight_layout()\n",
  468. "plt.show()\n"
  469. ]
  470. },
  471. {
  472. "cell_type": "code",
  473. "execution_count": null,
  474. "metadata": {},
  475. "outputs": [],
  476. "source": []
  477. },
  478. {
  479. "cell_type": "code",
  480. "execution_count": null,
  481. "metadata": {},
  482. "outputs": [],
  483. "source": []
  484. },
  485. {
  486. "cell_type": "code",
  487. "execution_count": null,
  488. "metadata": {},
  489. "outputs": [],
  490. "source": []
  491. },
  492. {
  493. "cell_type": "code",
  494. "execution_count": null,
  495. "metadata": {},
  496. "outputs": [],
  497. "source": []
  498. }
  499. ],
  500. "metadata": {
  501. "kernelspec": {
  502. "display_name": "tuner",
  503. "language": "python",
  504. "name": "python3"
  505. },
  506. "language_info": {
  507. "codemirror_mode": {
  508. "name": "ipython",
  509. "version": 3
  510. },
  511. "file_extension": ".py",
  512. "mimetype": "text/x-python",
  513. "name": "python",
  514. "nbconvert_exporter": "python",
  515. "pygments_lexer": "ipython3",
  516. "version": "3.10.12"
  517. }
  518. },
  519. "nbformat": 4,
  520. "nbformat_minor": 2
  521. }