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.

766 lines
150 KiB

9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 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. "%matplotlib inline"
  16. ]
  17. },
  18. {
  19. "cell_type": "code",
  20. "execution_count": 2,
  21. "metadata": {},
  22. "outputs": [
  23. {
  24. "data": {
  25. "text/plain": [
  26. "31630"
  27. ]
  28. },
  29. "execution_count": 2,
  30. "metadata": {},
  31. "output_type": "execute_result"
  32. }
  33. ],
  34. "source": [
  35. "# file = uproot.open(\"tracking_losses_ntuple_Bd2KstEE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n",
  36. "file = uproot.open(\n",
  37. " \"tracking_losses_ntuple_B_default.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\"\n",
  38. ")\n",
  39. "\n",
  40. "# selektiere nur elektronen von B->K*ee\n",
  41. "allcolumns = file.arrays()\n",
  42. "found = allcolumns[\n",
  43. " (allcolumns.isElectron) & (~allcolumns.lost) & (allcolumns.fromSignal)\n",
  44. "] # B: 9056\n",
  45. "lost = allcolumns[\n",
  46. " (allcolumns.isElectron) & (allcolumns.lost) & (allcolumns.fromSignal)\n",
  47. "] # B: 1466\n",
  48. "\n",
  49. "ak.num(found, axis=0) + ak.num(lost, axis=0)\n",
  50. "# ak.count(found, axis=None)"
  51. ]
  52. },
  53. {
  54. "cell_type": "code",
  55. "execution_count": 3,
  56. "metadata": {},
  57. "outputs": [],
  58. "source": [
  59. "# found\n",
  60. "\n",
  61. "brem_e_f = found[\"brem_photons_pe\"]\n",
  62. "brem_z_f = found[\"brem_vtx_z\"]\n",
  63. "brem_x_f = found[\"brem_vtx_x\"]\n",
  64. "e_f = found[\"energy\"]\n",
  65. "length_f = found[\"brem_vtx_z_length\"]\n",
  66. "\n",
  67. "brem_f = ak.ArrayBuilder()\n",
  68. "\n",
  69. "for itr in range(ak.num(found, axis=0)):\n",
  70. " brem_f.begin_record()\n",
  71. " # [:,\"energy\"] energy\n",
  72. " brem_f.field(\"energy\").append(e_f[itr])\n",
  73. " # [:,\"photon_length\"] number of vertices\n",
  74. " brem_f.field(\"photon_length\").integer(length_f[itr])\n",
  75. " # [:,\"brem_photons_pe\",:] photon energy\n",
  76. " brem_f.field(\"brem_photons_pe\").append(brem_e_f[itr])\n",
  77. " # [:,\"brem_vtx_z\",:] brem vtx z\n",
  78. " brem_f.field(\"brem_vtx_x\").append(brem_x_f[itr])\n",
  79. " brem_f.field(\"brem_vtx_z\").append(brem_z_f[itr])\n",
  80. " brem_f.end_record()\n",
  81. "\n",
  82. "brem_f = ak.Array(brem_f)\n",
  83. "\n",
  84. "# lost\n",
  85. "\n",
  86. "brem_e_l = lost[\"brem_photons_pe\"]\n",
  87. "brem_z_l = lost[\"brem_vtx_z\"]\n",
  88. "brem_x_l = lost[\"brem_vtx_x\"]\n",
  89. "e_l = lost[\"energy\"]\n",
  90. "length_l = lost[\"brem_vtx_z_length\"]\n",
  91. "\n",
  92. "brem_l = ak.ArrayBuilder()\n",
  93. "\n",
  94. "for itr in range(ak.num(lost, axis=0)):\n",
  95. " brem_l.begin_record()\n",
  96. " # [:,\"energy\"] energy\n",
  97. " brem_l.field(\"energy\").append(e_l[itr])\n",
  98. " # [:,\"photon_length\"] number of vertices\n",
  99. " brem_l.field(\"photon_length\").integer(length_l[itr])\n",
  100. " # [:,\"brem_photons_pe\",:] photon energy\n",
  101. " brem_l.field(\"brem_photons_pe\").append(brem_e_l[itr])\n",
  102. " # [:,\"brem_vtx_z\",:] brem vtx z\n",
  103. " brem_l.field(\"brem_vtx_x\").append(brem_x_l[itr])\n",
  104. " brem_l.field(\"brem_vtx_z\").append(brem_z_l[itr])\n",
  105. " brem_l.end_record()\n",
  106. "\n",
  107. "brem_l = ak.Array(brem_l)"
  108. ]
  109. },
  110. {
  111. "cell_type": "code",
  112. "execution_count": 4,
  113. "metadata": {},
  114. "outputs": [],
  115. "source": [
  116. "photon_cut = 0\n",
  117. "photon_cut_ratio = 0.1\n",
  118. "\n",
  119. "cut_brem_found = ak.ArrayBuilder()\n",
  120. "\n",
  121. "for itr in range(ak.num(brem_f, axis=0)):\n",
  122. " cut_brem_found.begin_record()\n",
  123. " cut_brem_found.field(\"energy\").real(brem_f[itr, \"energy\"])\n",
  124. "\n",
  125. " tmp_energy = brem_f[itr, \"energy\"]\n",
  126. "\n",
  127. " cut_brem_found.field(\"brem_photons_pe\")\n",
  128. " cut_brem_found.begin_list()\n",
  129. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  130. " if (\n",
  131. " brem_f[itr, \"brem_vtx_z\", jentry] > 5000\n",
  132. " or brem_f[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  133. " or brem_f[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  134. " ):\n",
  135. " continue\n",
  136. " else:\n",
  137. " cut_brem_found.real(brem_f[itr, \"brem_photons_pe\", jentry])\n",
  138. " tmp_energy -= brem_f[itr, \"brem_photons_pe\", jentry]\n",
  139. " cut_brem_found.end_list()\n",
  140. "\n",
  141. " tmp_energy = brem_f[itr, \"energy\"]\n",
  142. "\n",
  143. " cut_brem_found.field(\"brem_vtx_x\")\n",
  144. " cut_brem_found.begin_list()\n",
  145. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  146. " if (\n",
  147. " brem_f[itr, \"brem_vtx_z\", jentry] > 5000\n",
  148. " or brem_f[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  149. " or brem_f[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  150. " ):\n",
  151. " continue\n",
  152. " else:\n",
  153. " cut_brem_found.real(brem_f[itr, \"brem_vtx_x\", jentry])\n",
  154. " tmp_energy -= brem_f[itr, \"brem_photons_pe\", jentry]\n",
  155. " cut_brem_found.end_list()\n",
  156. "\n",
  157. " tmp_energy = brem_f[itr, \"energy\"]\n",
  158. "\n",
  159. " cut_brem_found.field(\"brem_vtx_z\")\n",
  160. " cut_brem_found.begin_list()\n",
  161. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  162. " if (\n",
  163. " brem_f[itr, \"brem_vtx_z\", jentry] > 5000\n",
  164. " or brem_f[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  165. " or brem_f[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  166. " ):\n",
  167. " continue\n",
  168. " else:\n",
  169. " cut_brem_found.real(brem_f[itr, \"brem_vtx_z\", jentry])\n",
  170. " tmp_energy -= brem_f[itr, \"brem_photons_pe\", jentry]\n",
  171. " cut_brem_found.end_list()\n",
  172. "\n",
  173. " cut_brem_found.end_record()\n",
  174. "\n",
  175. "tuple_found = ak.Array(cut_brem_found)\n",
  176. "\n",
  177. "cut_brem_lost = ak.ArrayBuilder()\n",
  178. "\n",
  179. "for itr in range(ak.num(brem_l, axis=0)):\n",
  180. " cut_brem_lost.begin_record()\n",
  181. " cut_brem_lost.field(\"energy\").real(brem_l[itr, \"energy\"])\n",
  182. "\n",
  183. " tmp_energy = brem_l[itr, \"energy\"]\n",
  184. "\n",
  185. " cut_brem_lost.field(\"brem_photons_pe\")\n",
  186. " cut_brem_lost.begin_list()\n",
  187. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  188. " if (\n",
  189. " brem_l[itr, \"brem_vtx_z\", jentry] > 5000\n",
  190. " or brem_l[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  191. " or brem_l[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  192. " ):\n",
  193. " continue\n",
  194. " else:\n",
  195. " cut_brem_lost.real(brem_l[itr, \"brem_photons_pe\", jentry])\n",
  196. " tmp_energy -= brem_l[itr, \"brem_photons_pe\", jentry]\n",
  197. " cut_brem_lost.end_list()\n",
  198. "\n",
  199. " tmp_energy = brem_l[itr, \"energy\"]\n",
  200. "\n",
  201. " cut_brem_lost.field(\"brem_vtx_x\")\n",
  202. " cut_brem_lost.begin_list()\n",
  203. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  204. " if (\n",
  205. " brem_l[itr, \"brem_vtx_z\", jentry] > 5000\n",
  206. " or brem_l[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  207. " or brem_l[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  208. " ):\n",
  209. " continue\n",
  210. " else:\n",
  211. " cut_brem_lost.real(brem_l[itr, \"brem_vtx_x\", jentry])\n",
  212. " tmp_energy -= brem_l[itr, \"brem_photons_pe\", jentry]\n",
  213. " cut_brem_lost.end_list()\n",
  214. "\n",
  215. " tmp_energy = brem_l[itr, \"energy\"]\n",
  216. "\n",
  217. " cut_brem_lost.field(\"brem_vtx_z\")\n",
  218. " cut_brem_lost.begin_list()\n",
  219. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  220. " if (\n",
  221. " brem_l[itr, \"brem_vtx_z\", jentry] > 5000\n",
  222. " or brem_l[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  223. " or brem_l[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  224. " ):\n",
  225. " continue\n",
  226. " else:\n",
  227. " cut_brem_lost.real(brem_l[itr, \"brem_vtx_z\", jentry])\n",
  228. " tmp_energy -= brem_l[itr, \"brem_photons_pe\", jentry]\n",
  229. " cut_brem_lost.end_list()\n",
  230. "\n",
  231. " cut_brem_lost.end_record()\n",
  232. "\n",
  233. "tuple_lost = ak.Array(cut_brem_lost)"
  234. ]
  235. },
  236. {
  237. "cell_type": "code",
  238. "execution_count": 5,
  239. "metadata": {},
  240. "outputs": [
  241. {
  242. "data": {
  243. "text/html": [
  244. "<pre>{energy: 3.26e+04,\n",
  245. " brem_photons_pe: [1.26e+04, 4.49e+03],\n",
  246. " brem_vtx_x: [-33.8, -133],\n",
  247. " brem_vtx_z: [601, 2.33e+03]}\n",
  248. "---------------------------------------\n",
  249. "type: {\n",
  250. " energy: float64,\n",
  251. " brem_photons_pe: var * float64,\n",
  252. " brem_vtx_x: var * float64,\n",
  253. " brem_vtx_z: var * float64\n",
  254. "}</pre>"
  255. ],
  256. "text/plain": [
  257. "<Record {energy: 3.26e+04, ...} type='{energy: float64, brem_photons_pe: va...'>"
  258. ]
  259. },
  260. "execution_count": 5,
  261. "metadata": {},
  262. "output_type": "execute_result"
  263. }
  264. ],
  265. "source": [
  266. "# data in cut_brem_found and cut_brem_lost\n",
  267. "\n",
  268. "length_found = ak.num(tuple_found[\"brem_photons_pe\"], axis=-1)\n",
  269. "length_lost = ak.num(tuple_lost[\"brem_photons_pe\"], axis=-1)\n",
  270. "\n",
  271. "tuple_found[1]"
  272. ]
  273. },
  274. {
  275. "cell_type": "code",
  276. "execution_count": 6,
  277. "metadata": {},
  278. "outputs": [
  279. {
  280. "data": {
  281. "text/html": [
  282. "<pre>{energy: 2.12e+04,\n",
  283. " brem_photons_pe: [],\n",
  284. " brem_vtx_x: [],\n",
  285. " brem_vtx_z: []}\n",
  286. "-----------------------------------\n",
  287. "type: {\n",
  288. " energy: float64,\n",
  289. " brem_photons_pe: var * float64,\n",
  290. " brem_vtx_x: var * float64,\n",
  291. " brem_vtx_z: var * float64\n",
  292. "}</pre>"
  293. ],
  294. "text/plain": [
  295. "<Record {energy: 2.12e+04, ...} type='{energy: float64, brem_photons_pe: va...'>"
  296. ]
  297. },
  298. "execution_count": 6,
  299. "metadata": {},
  300. "output_type": "execute_result"
  301. }
  302. ],
  303. "source": [
  304. "tuple_found[3]"
  305. ]
  306. },
  307. {
  308. "cell_type": "code",
  309. "execution_count": 7,
  310. "metadata": {},
  311. "outputs": [],
  312. "source": [
  313. "Z_found = ak.to_numpy(\n",
  314. " ak.sum(tuple_found[\"brem_photons_pe\"], axis=-1, keepdims=False)\n",
  315. ") / ak.to_numpy(tuple_found[\"energy\"])\n",
  316. "Z_lost = ak.to_numpy(\n",
  317. " ak.sum(tuple_lost[\"brem_photons_pe\"], axis=-1, keepdims=False)\n",
  318. ") / ak.to_numpy(tuple_lost[\"energy\"])"
  319. ]
  320. },
  321. {
  322. "cell_type": "code",
  323. "execution_count": 8,
  324. "metadata": {},
  325. "outputs": [
  326. {
  327. "data": {
  328. "image/png": "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
  329. "text/plain": [
  330. "<Figure size 640x480 with 1 Axes>"
  331. ]
  332. },
  333. "metadata": {},
  334. "output_type": "display_data"
  335. }
  336. ],
  337. "source": [
  338. "plt.hist(\n",
  339. " Z_lost,\n",
  340. " bins=100,\n",
  341. " density=True,\n",
  342. " alpha=0.5,\n",
  343. " histtype=\"bar\",\n",
  344. " color=\"darkorange\",\n",
  345. " label=\"lost\",\n",
  346. ")\n",
  347. "plt.hist(\n",
  348. " Z_found,\n",
  349. " bins=100,\n",
  350. " density=True,\n",
  351. " alpha=0.5,\n",
  352. " histtype=\"bar\",\n",
  353. " color=\"blue\",\n",
  354. " label=\"found\",\n",
  355. ")\n",
  356. "plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
  357. "plt.ylabel(\"a.u.\")\n",
  358. "plt.title(r\"$E_{ph}/E_0$\")\n",
  359. "plt.legend()\n",
  360. "plt.show()"
  361. ]
  362. },
  363. {
  364. "cell_type": "code",
  365. "execution_count": 9,
  366. "metadata": {},
  367. "outputs": [
  368. {
  369. "name": "stdout",
  370. "output_type": "stream",
  371. "text": [
  372. "found: 24074 , lost: 2400\n",
  373. "0.09969261443881366\n"
  374. ]
  375. }
  376. ],
  377. "source": [
  378. "brem_x_found = ak.to_numpy(ak.flatten(tuple_found[\"brem_vtx_x\"]))\n",
  379. "brem_z_found = ak.to_numpy(ak.flatten(tuple_found[\"brem_vtx_z\"]))\n",
  380. "\n",
  381. "brem_x_lost = ak.to_numpy(ak.flatten(tuple_lost[\"brem_vtx_x\"]))\n",
  382. "brem_z_lost = ak.to_numpy(ak.flatten(tuple_lost[\"brem_vtx_z\"]))\n",
  383. "\n",
  384. "n_found = len(brem_x_found)\n",
  385. "n_lost = len(brem_x_lost)\n",
  386. "print(\"found: \", n_found, \", lost: \", n_lost)\n",
  387. "stretch_factor = n_lost / n_found\n",
  388. "print(stretch_factor)"
  389. ]
  390. },
  391. {
  392. "cell_type": "code",
  393. "execution_count": 10,
  394. "metadata": {},
  395. "outputs": [
  396. {
  397. "data": {
  398. "image/png": "iVBORw0KGgoAAAANSUhEUgAABkgAAALACAYAAADYJP6YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACWPUlEQVR4nOz9f3hkZ54Q9n7L7XFvDx5b1sA4xrDMlGYDO3cgpqoXQrjBsKOCEGYDTEttwvDDCTtSJmL54TCt9Z2bp91P7jxCvXPhBkdPkHpzszfJPMEj9ZJ7JwsJ0m4wMWRhWoUXHBayo9qZZc3iZaYttx1r2271uX+0Jbda5xyVjqpO/fp8nqeebp3vOe/7PadOVb1vvfWeU0mSJAkAAAAAAIARcl+vEwAAAAAAACibARIAAAAAAGDkGCABAAAAAABGjgESAAAAAABg5BggAQAAAAAARo4BEoA+tr293esUAACAAaH/AADHY4AEoI9tbGzExsZGr9MAAAAGgP4DAByPARIAAAAAAGDkGCABoKeazWasrKwcuV6r1YqVlRWXDQAAgCGm3Q9AmQyQAAyxZrMZ8/PzMT09HRMTE3H58uVep7Sv1WrF9PR01Ov1WF5ezl338uXLMTExEbOzs3H9+vWSMhwurVYrHnnkkbYGowAAGB17fYZ6vR71er2nuWj3n5x2P8Dx3N/rBAB43+zs7IG/W61WRESsrq4eWH7UgELEnY7Opz71qXj99dcjImJ+fj62trY6lOnJVavVWF1djUqlcuS6Fy5ciK9//euxtrZWQmaDr9Vqxfj4eIyNje0v297eju3t7b46BwAAOJlO9B9qtVpE3Bmc2Pt/N6S1Ue+l3X882v0AJ2eABKCP3NtxWVtbi7GxsZicnDx2WQsLCzE+Pr7/9+Li4onz66W794V809PTsbq6eqCjVKvVIkmS3iUFAEDHdar/0M2BkT1pbdQ02v3t0+4HODmX2AIYUs1ms9cp0APT09OeewAA+oo2auc5pgCdYYAEYMisrKzE9PR0tFqt/ft8TE9Px8bGxv4629vbMTs7G/Pz89FoNKLRaByIr62txSOPPBKVSmW/0b2xsRHT09NRqVRienp6v5yVlZWo1+uxtrYWGxsbUa/XD6xzt7169x5F7omyV8YjjzwSjzzyyKHLCqytre3vz8rKyqF1ms1mTE9PR6PRiImJiZifnz9Q9srKSjQajVhZWYlWqxWNRiMeeeSRaDQa+zeK3Ls28iOPPHJg+yzNZnP/eNbr9f1LH0TcufRZpVI5cCzycszbx7W1tf3na3Z29kCnaW1tbf9cyDqms7Oz++fDvZ2to3K6+5yanZ2NiYkJ1z0GABgCR/Ud7l3n3rZgXhu1nXq1+7X7AboqAaB0q6uryczMTHLhwoWkVqslW1tbmeutr68XqqNarSbVavXQ8s3NzWRsbCzZ3NzcX7a8vJxERLK4uLi/bGZmJomIA+ttbW0lEZFMTU3t/z01NZVERDI5OZlcuHAh2dzc3N/27vK2traSsbGxA/uzuLiYRERSq9WO3J+9MicnJ5OZmZlkeXk5qdVq+8uS5M7xqlarSUQcOL575W9ubu6vu7f+3rp7Od5dz97+rK+vH6h7fX39wL7ffYyy7NW1d+zuPi5353RUjkft44ULF5KIOHBObW1t7R/ru8vei1Wr1QPrj42NJWNjY23nlCRJMjU1lVy4cGH/7+Xl5QPPPwAAxZXRf0hrl7fbdziqLZjWRs2i3a/dD1AmAyQAJZuZmTnQWB4bG0uWl5f3Y3c/Jicn9xvndz/akTVAUqvVDjWW95bf3cDea3Df3Ql4/fXXDzX29xrN9zaK722UT01NpdZ73AGS1dXVQ/sZEfsdwb0Owd2N9rv38d5OzdjYWBIRyeuvv54kyZ1Owb2dgL1t7+2A7K3bbodgL9e7LS4uHtindnLM28e8zmdaR6lWqx3Kf6/8vfrayWlsbOxQPjpKAAAnV1b/Ia1d3m7f4ai2YJEBEu1+7X6AMrhJO0CJGo1GXLt2LX7+538+Iu5Mf97e3t6/ieK9N1nstFarFc1mMy5cuHAotjfVenl5udAN3dNutnj9+vX9etfW1jpyo/h7byC5N717fX09Jicn9/P4vu/7vgPr7e37wsJCarnXrl07cDPLe/enWq1Gs9k8cNPIarUaERFbW1tt5b6X69raWkxNTUVExAsvvBCbm5vHyjFrH49rr74rV64cWH7hwoX9c6TdnKrValy+fDk+/OEP72+bdp4BANC+XvYfjtN36EZbULtfux+gDAZIAEqysrISGxsbsbq6GmNjY7GyshKLi4uxvr6+3+Dutrxr/Z49ezYi4sB1cjtlr8xu7Ode5+bevO/t6Ozt++rqasdzaNfMzEzMz8/H8vJyTE1NRbPZ3D/uEcfPMW1Q6jj26ssrp92cVldXo16v7+/f6urqoU4tAADt63X/4Th9hzLagtr9xWn3A2Rzk3aAkuzdMLDVau3f6G5ra+vAr5fKsnfTwbvtNZbv/qVUp+x1YvZmlHTSXt5HdRL3cujGAFC7xsbGYmpqKjY2NqLVasULL7xw4EaSZefYTn3t5lStVuPnf/7nY3JyMlqtVtTrdTdrBAA4gX7pP7TTdyijLajdX5x2P0A2AyQAJdjY2IiIO78kunDhQiwuLsbMzEzpeez9smcvn7vtdXwmJiY6Xu9eJ2ZvSnkn7eV91LTzvRzW1tZS42nHpBueffbZiLhzOYRms3ng11Zl57hXd9avxFqtVts5tVqtGBsbi/X19f3y7u4EAgDQvn7oPxyn71BGW1C7vzjtfoBsBkgASpQ2+NCtXw1dv3790IyNarUatVotWq3WoXqvXbsWY2Nj+x2vD3/4w4fy2/t/2q/I8uxNJ19ZWUnd9rjl3W1jYyOq1er+tX2z7P3Sbn5+/tDlAsr8xVOtVtu/bu/09HTXcmznmN79vNzbCZufn4/x8fG2c7r7/jJTU1P718Pu5S/3AAAGXZn9h3sdp+/QbltQu7/zOWr3A5yMARKAEuw1SPd+PRRx5xqvly9f7solrfLsXcP47l/5bG9vx+LiYly5cmV/6vrer4zm5+djY2MjVlZW9hu/Gxsb0Wg0IqK9y2aNjY3t37ivXq/vTzXfu1RAq9WKy5cvH1nG3rp7Wq3W/nVv796Xu//NymF6ejouX74cjUbjwKUKsvZnr7y743v/P+6lw/aO/fnz5wvlmLWPEe93opeXl6PVau3/Aiwt/7Gxsf0OTqPRiOnp6Zifn496vR4TExMxNjbWdk5f/epXDzw329vbUa1WS7u/DgDAMOmX/kO7fYej2oJZbdQ02v3a/QClSgAoxfr6elKtVpOISGq1WrK8vNyVejY3N5OZmZkkIpKISGZmZpL19fUD67z++uvJ1NRUMjk5mczMzCQzMzPJ5ubmobIWFxeTsbGxZGxsLLlw4UKSJElSrVaTCxcuJJubm8nm5mZSq9WSiEiq1Wqyvr6evP766wfqX1xc3C9veXn5wDHY2traL29rayt3v15//fXkwoULyeTk5IG8X3/99f11VldX98uvVqupx3hxcTFznc3NzWRycjKJiGRsbCxZXV3dz3tvf6amppLNzc1ka2srmZqa2l/3OM/n3jHKkpdjO/tYq9WSsbGx/To2Nzf3c917Tu49bnvPY61WO3S+HJVTkiTJ5OTk/nN54cKFZGpq6kAdAAAcT6/6D/e2FdvpO7TTFry3jZpFu7/9fdTuBzi5SpIkSbcHYQAAAAAAAPqJS2wBAAAAAAAj5/5eJ9Ap29vbsbCwEBEHbxi1p9lsxsLCQlSr1dje3o5Go3Hoxl6dWgcAAKDf6DMBANAP1tbWYmFhIZrNZlSr1VheXt6/19GestqdQzFAsrGxEcvLy7G2thYzMzOH4q1WK+r1emxubu7fdHhiYiKuX7++v36n1gEAAOg3+kwAAPSDlZWV2Nzc3P/Bzvz8fDQajdja2opqtRoR5bY7h+oeJJVKJWZmZmJ5efnA8kajERER6+vr+8tWVlZidnY29na/U+sAAAD0K30mAAB66fLly3HhwoX9v5vNZtTr9VhdXd2f/VFmu3Po70Gyvb0
  399. "text/plain": [
  400. "<Figure size 2000x800 with 3 Axes>"
  401. ]
  402. },
  403. "metadata": {},
  404. "output_type": "display_data"
  405. }
  406. ],
  407. "source": [
  408. "vmax = 300\n",
  409. "nbins = 100\n",
  410. "\n",
  411. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20, 8))\n",
  412. "\n",
  413. "a0 = ax0.hist2d(\n",
  414. " brem_z_found,\n",
  415. " brem_x_found,\n",
  416. " density=False,\n",
  417. " bins=nbins,\n",
  418. " cmap=plt.cm.jet,\n",
  419. " cmin=1,\n",
  420. " vmax=vmax,\n",
  421. " range=[[-200, 4000], [-1000, 1000]],\n",
  422. ")\n",
  423. "ax0.vlines([770, 990, 2700], -1000, 1000)\n",
  424. "ax0.set_ylim(-1000, 1000)\n",
  425. "ax0.set_xlim(-200, 4000)\n",
  426. "ax0.set_xlabel(\"z [mm]\")\n",
  427. "ax0.set_ylabel(\"x [mm]\")\n",
  428. "ax0.set_title(r\"$e^\\pm$ found brem vertices\")\n",
  429. "\n",
  430. "a1 = ax1.hist2d(\n",
  431. " brem_z_lost,\n",
  432. " brem_x_lost,\n",
  433. " density=False,\n",
  434. " bins=nbins,\n",
  435. " cmap=plt.cm.jet,\n",
  436. " cmin=1,\n",
  437. " vmax=vmax * stretch_factor,\n",
  438. " range=[[-200, 4000], [-1000, 1000]],\n",
  439. ")\n",
  440. "ax1.vlines([770, 990, 2700], -1000, 1000)\n",
  441. "ax1.set_ylim(-1000, 1000)\n",
  442. "ax1.set_xlim(-200, 4000)\n",
  443. "ax1.set_xlabel(\"z [mm]\")\n",
  444. "ax1.set_ylabel(\"x [mm]\")\n",
  445. "ax1.set_title(r\"$e^\\pm$ lost brem vertices\")\n",
  446. "# ax1.set(xlim=(0,4000), ylim=(-1000,1000))\n",
  447. "\n",
  448. "plt.colorbar(a0[3], ax=ax1)\n",
  449. "\n",
  450. "plt.show()"
  451. ]
  452. },
  453. {
  454. "cell_type": "code",
  455. "execution_count": 11,
  456. "metadata": {},
  457. "outputs": [],
  458. "source": [
  459. "tuple_found[1]\n",
  460. "\n",
  461. "\n",
  462. "def ratio(nominator, denom):\n",
  463. " denominator = ak.num(denom[\"energy\"], axis=0)\n",
  464. " return nominator / denominator\n",
  465. "\n",
  466. "\n",
  467. "def eff(found, lost):\n",
  468. " return found / (found + lost)"
  469. ]
  470. },
  471. {
  472. "cell_type": "code",
  473. "execution_count": 12,
  474. "metadata": {},
  475. "outputs": [
  476. {
  477. "name": "stdout",
  478. "output_type": "stream",
  479. "text": [
  480. "ratio of lost electrons emitting in Velo: 0.3855211513301352\n",
  481. "ratio of lost electrons emitting in Rich1+UT: 0.3475795900566943\n"
  482. ]
  483. }
  484. ],
  485. "source": [
  486. "n_elec_lost = ak.num(tuple_lost, axis=0)\n",
  487. "\n",
  488. "velo_lost = 0\n",
  489. "\n",
  490. "richut_lost = 0\n",
  491. "\n",
  492. "for jelec in range(ak.num(tuple_lost, axis=0)):\n",
  493. " veloemitted = False\n",
  494. " richemitted = False\n",
  495. " for jphoton in range(ak.num(tuple_lost[jelec][\"brem_photons_pe\"], axis=0)):\n",
  496. " if (tuple_lost[jelec, \"brem_vtx_z\", jphoton] <= 850) and (veloemitted == False):\n",
  497. " velo_lost += 1\n",
  498. " veloemitted = True\n",
  499. " elif (\n",
  500. " (tuple_lost[jelec, \"brem_vtx_z\", jphoton] > 850)\n",
  501. " and (tuple_lost[jelec, \"brem_vtx_z\", jphoton] <= 3000)\n",
  502. " and (richemitted == False)\n",
  503. " ):\n",
  504. " richut_lost += 1\n",
  505. " richemitted = True\n",
  506. "\n",
  507. "print(\"ratio of lost electrons emitting in Velo: \", ratio(velo_lost, brem_l))\n",
  508. "print(\"ratio of lost electrons emitting in Rich1+UT: \", ratio(richut_lost, brem_l))"
  509. ]
  510. },
  511. {
  512. "cell_type": "code",
  513. "execution_count": 19,
  514. "metadata": {},
  515. "outputs": [],
  516. "source": [
  517. "electrons_lost = ak.ArrayBuilder()\n",
  518. "\n",
  519. "for jelec in range(ak.num(tuple_lost, axis=0)):\n",
  520. " electrons_lost.begin_record()\n",
  521. " electrons_lost.field(\"energy\").real(tuple_lost[jelec, \"energy\"])\n",
  522. "\n",
  523. " tmp_velo = 0\n",
  524. " tmp_richut = 0\n",
  525. " for jphoton in range(ak.num(tuple_lost[jelec][\"brem_photons_pe\"], axis=0)):\n",
  526. " if tuple_lost[jelec, \"brem_vtx_z\", jphoton] <= 850:\n",
  527. " tmp_velo += tuple_lost[jelec, \"brem_photons_pe\", jphoton]\n",
  528. " elif (tuple_lost[jelec, \"brem_vtx_z\", jphoton] > 850) and (\n",
  529. " tuple_lost[jelec, \"brem_vtx_z\", jphoton] <= 3000\n",
  530. " ):\n",
  531. " tmp_richut += tuple_lost[jelec, \"brem_photons_pe\", jphoton]\n",
  532. "\n",
  533. " electrons_lost.field(\"velo\").real(tmp_velo)\n",
  534. "\n",
  535. " electrons_lost.field(\"rich\").real(tmp_richut)\n",
  536. "\n",
  537. " electrons_lost.end_record()\n",
  538. "\n",
  539. "electrons_lost = ak.Array(electrons_lost)\n",
  540. "\n",
  541. "electrons_found = ak.ArrayBuilder()\n",
  542. "\n",
  543. "for jelec in range(ak.num(tuple_found, axis=0)):\n",
  544. " electrons_found.begin_record()\n",
  545. " electrons_found.field(\"energy\").real(tuple_found[jelec, \"energy\"])\n",
  546. "\n",
  547. " tmp_velo = 0\n",
  548. " tmp_richut = 0\n",
  549. " for jphoton in range(ak.num(tuple_found[jelec][\"brem_photons_pe\"], axis=0)):\n",
  550. " if tuple_found[jelec, \"brem_vtx_z\", jphoton] <= 850:\n",
  551. " tmp_velo += tuple_found[jelec, \"brem_photons_pe\", jphoton]\n",
  552. " elif (tuple_found[jelec, \"brem_vtx_z\", jphoton] > 850) and (\n",
  553. " tuple_found[jelec, \"brem_vtx_z\", jphoton] <= 3000\n",
  554. " ):\n",
  555. " tmp_richut += tuple_found[jelec, \"brem_photons_pe\", jphoton]\n",
  556. "\n",
  557. " electrons_found.field(\"velo\").real(tmp_velo)\n",
  558. "\n",
  559. " electrons_found.field(\"rich\").real(tmp_richut)\n",
  560. "\n",
  561. " electrons_found.end_record()\n",
  562. "\n",
  563. "electrons_found = ak.Array(electrons_found)"
  564. ]
  565. },
  566. {
  567. "cell_type": "code",
  568. "execution_count": 21,
  569. "metadata": {},
  570. "outputs": [
  571. {
  572. "name": "stdout",
  573. "output_type": "stream",
  574. "text": [
  575. "VELO energy emission, eff: 0.9318135969336292\n",
  576. "RICH1+UT energy emission, eff: 0.9119065010956903\n"
  577. ]
  578. }
  579. ],
  580. "source": [
  581. "num_velo_found = 0\n",
  582. "num_rich_found = 0\n",
  583. "for itr in range(ak.num(electrons_found, axis=0)):\n",
  584. " if electrons_found[itr, \"velo\"] >= electrons_found[itr, \"rich\"]:\n",
  585. " num_velo_found += 1\n",
  586. " else:\n",
  587. " num_rich_found += 1\n",
  588. "\n",
  589. "num_velo_lost = 0\n",
  590. "num_rich_lost = 0\n",
  591. "for itr in range(ak.num(electrons_lost, axis=0)):\n",
  592. " if electrons_lost[itr, \"velo\"] >= electrons_lost[itr, \"rich\"]:\n",
  593. " num_velo_lost += 1\n",
  594. " else:\n",
  595. " num_rich_lost += 1\n",
  596. "\n",
  597. "print(\"VELO energy emission, eff: \", eff(num_velo_found, num_velo_lost))\n",
  598. "\n",
  599. "print(\"RICH1+UT energy emission, eff: \", eff(num_rich_found, num_rich_lost))"
  600. ]
  601. },
  602. {
  603. "cell_type": "code",
  604. "execution_count": null,
  605. "metadata": {},
  606. "outputs": [],
  607. "source": []
  608. },
  609. {
  610. "cell_type": "markdown",
  611. "metadata": {},
  612. "source": []
  613. },
  614. {
  615. "cell_type": "code",
  616. "execution_count": null,
  617. "metadata": {},
  618. "outputs": [],
  619. "source": []
  620. },
  621. {
  622. "cell_type": "code",
  623. "execution_count": null,
  624. "metadata": {},
  625. "outputs": [],
  626. "source": []
  627. },
  628. {
  629. "cell_type": "code",
  630. "execution_count": null,
  631. "metadata": {},
  632. "outputs": [],
  633. "source": []
  634. },
  635. {
  636. "cell_type": "code",
  637. "execution_count": null,
  638. "metadata": {},
  639. "outputs": [],
  640. "source": []
  641. },
  642. {
  643. "cell_type": "code",
  644. "execution_count": null,
  645. "metadata": {},
  646. "outputs": [],
  647. "source": []
  648. },
  649. {
  650. "cell_type": "code",
  651. "execution_count": 56,
  652. "metadata": {},
  653. "outputs": [],
  654. "source": [
  655. "cut = 4000\n",
  656. "\n",
  657. "tf = tuple_found[ak.sum(\n",
  658. " tuple_found[\"brem_photons_pe\"], axis=-1, keepdims=False) > cut]\n",
  659. "tl = tuple_lost[ak.sum(tuple_lost[\"brem_photons_pe\"], axis=-1, keepdims=False)\n",
  660. " > cut]\n",
  661. "\n",
  662. "cut_x_found = ak.to_numpy(ak.flatten(tf[\"brem_vtx_x\"]))\n",
  663. "cut_z_found = ak.to_numpy(ak.flatten(tf[\"brem_vtx_z\"]))\n",
  664. "\n",
  665. "cut_x_lost = ak.to_numpy(ak.flatten(tf[\"brem_vtx_x\"]))\n",
  666. "cut_z_lost = ak.to_numpy(ak.flatten(tf[\"brem_vtx_z\"]))\n",
  667. "\n",
  668. "# how many tracks of all are included?\n",
  669. "ratio_f = tuple_found[ak.sum(\n",
  670. " tuple_found[\"brem_photons_pe\"], axis=-1, keepdims=False) > cut]\n",
  671. "ratio_l = tuple_lost[ak.sum(\n",
  672. " tuple_lost[\"brem_photons_pe\"], axis=-1, keepdims=False) > cut]"
  673. ]
  674. },
  675. {
  676. "cell_type": "code",
  677. "execution_count": 57,
  678. "metadata": {},
  679. "outputs": [
  680. {
  681. "data": {
  682. "image/png": "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
  683. "text/plain": [
  684. "<Figure size 2000x800 with 3 Axes>"
  685. ]
  686. },
  687. "metadata": {},
  688. "output_type": "display_data"
  689. }
  690. ],
  691. "source": [
  692. "vmax = 500\n",
  693. "\n",
  694. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20, 8))\n",
  695. "\n",
  696. "a0 = ax0.hist2d(\n",
  697. " cut_z_found,\n",
  698. " cut_x_found,\n",
  699. " density=False,\n",
  700. " bins=200,\n",
  701. " cmap=plt.cm.jet,\n",
  702. " cmin=1,\n",
  703. " vmax=vmax,\n",
  704. ")\n",
  705. "ax0.set_ylim(-1000, 1000)\n",
  706. "ax0.set_xlim(-200, 4000)\n",
  707. "ax0.set_xlabel(\"z [mm]\")\n",
  708. "ax0.set_ylabel(\"x [mm]\")\n",
  709. "ax0.set_title(r\"$e^\\pm$ found brem vertices\")\n",
  710. "\n",
  711. "a1 = ax1.hist2d(cut_z_lost,\n",
  712. " cut_x_lost,\n",
  713. " density=False,\n",
  714. " bins=200,\n",
  715. " cmap=plt.cm.jet,\n",
  716. " cmin=1,\n",
  717. " vmax=vmax)\n",
  718. "ax1.set_ylim(-1000, 1000)\n",
  719. "ax1.set_xlim(-200, 4000)\n",
  720. "ax1.set_xlabel(\"z [mm]\")\n",
  721. "ax1.set_ylabel(\"x [mm]\")\n",
  722. "ax1.set_title(r\"$e^\\pm$ lost brem vertices\")\n",
  723. "# ax1.set(xlim=(0,4000), ylim=(-1000,1000))\n",
  724. "\n",
  725. "plt.colorbar(a0[3], ax=ax1)\n",
  726. "\n",
  727. "plt.show()"
  728. ]
  729. },
  730. {
  731. "cell_type": "code",
  732. "execution_count": null,
  733. "metadata": {},
  734. "outputs": [],
  735. "source": []
  736. },
  737. {
  738. "cell_type": "code",
  739. "execution_count": null,
  740. "metadata": {},
  741. "outputs": [],
  742. "source": []
  743. }
  744. ],
  745. "metadata": {
  746. "kernelspec": {
  747. "display_name": "tuner",
  748. "language": "python",
  749. "name": "python3"
  750. },
  751. "language_info": {
  752. "codemirror_mode": {
  753. "name": "ipython",
  754. "version": 3
  755. },
  756. "file_extension": ".py",
  757. "mimetype": "text/x-python",
  758. "name": "python",
  759. "nbconvert_exporter": "python",
  760. "pygments_lexer": "ipython3",
  761. "version": "3.10.12"
  762. }
  763. },
  764. "nbformat": 4,
  765. "nbformat_minor": 2
  766. }