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.

1107 lines
388 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. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 29,
  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": 30,
  26. "metadata": {},
  27. "outputs": [
  28. {
  29. "data": {
  30. "text/plain": [
  31. "10522"
  32. ]
  33. },
  34. "execution_count": 30,
  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": 31,
  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": 32,
  82. "metadata": {},
  83. "outputs": [
  84. {
  85. "data": {
  86. "text/html": [
  87. "<pre>{energy: 4.62e+04,\n",
  88. " photon_length: 10,\n",
  89. " brem_photons_pe: [3.26e+03, 4.45e+03, 178, ..., 825, 8.99e+03, 3.48e+03],\n",
  90. " brem_vtx_z: [162, 187, 387, 487, ..., 9.49e+03, 1.21e+04, 1.21e+04, 1.21e+04]}\n",
  91. "-------------------------------------------------------------------------------\n",
  92. "type: {\n",
  93. " energy: float64,\n",
  94. " photon_length: int64,\n",
  95. " brem_photons_pe: var * float64,\n",
  96. " brem_vtx_z: var * float64\n",
  97. "}</pre>"
  98. ],
  99. "text/plain": [
  100. "<Record {energy: 4.62e+04, ...} type='{energy: float64, photon_length: int6...'>"
  101. ]
  102. },
  103. "execution_count": 32,
  104. "metadata": {},
  105. "output_type": "execute_result"
  106. }
  107. ],
  108. "source": [
  109. "#try excluding all photons that originate from a vtx @ z>9500mm\n",
  110. "#ignore all brem vertices @ z>9500mm \n",
  111. "\n",
  112. "#found\n",
  113. "\n",
  114. "brem_e_f = found[\"brem_photons_pe\"]\n",
  115. "brem_z_f = found[\"brem_vtx_z\"]\n",
  116. "e_f = found[\"energy\"]\n",
  117. "length_f = found[\"brem_vtx_z_length\"]\n",
  118. "\n",
  119. "brem_f = ak.ArrayBuilder()\n",
  120. "\n",
  121. "for itr in range(ak.num(found,axis=0)):\n",
  122. " brem_f.begin_record()\n",
  123. " #[:,\"energy\"] energy\n",
  124. " brem_f.field(\"energy\").append(e_f[itr])\n",
  125. " #[:,\"photon_length\"] number of vertices\n",
  126. " brem_f.field(\"photon_length\").integer(length_f[itr])\n",
  127. " #[:,\"brem_photons_pe\",:] photon energy \n",
  128. " brem_f.field(\"brem_photons_pe\").append(brem_e_f[itr])\n",
  129. " #[:,\"brem_vtx_z\",:] brem vtx z\n",
  130. " brem_f.field(\"brem_vtx_z\").append(brem_z_f[itr])\n",
  131. " brem_f.end_record()\n",
  132. "\n",
  133. "brem_f = ak.Array(brem_f)\n",
  134. "\n",
  135. "#lost\n",
  136. "\n",
  137. "brem_e_l = lost[\"brem_photons_pe\"]\n",
  138. "brem_z_l = lost[\"brem_vtx_z\"]\n",
  139. "e_l = lost[\"energy\"]\n",
  140. "length_l = lost[\"brem_vtx_z_length\"]\n",
  141. "\n",
  142. "brem_l = ak.ArrayBuilder()\n",
  143. "\n",
  144. "for itr in range(ak.num(lost,axis=0)):\n",
  145. " brem_l.begin_record()\n",
  146. " #[:,\"energy\"] energy\n",
  147. " brem_l.field(\"energy\").append(e_l[itr])\n",
  148. " #[:,\"photon_length\"] number of vertices\n",
  149. " brem_l.field(\"photon_length\").integer(length_l[itr])\n",
  150. " #[:,\"brem_photons_pe\",:] photon energy \n",
  151. " brem_l.field(\"brem_photons_pe\").append(brem_e_l[itr])\n",
  152. " #[:,\"brem_vtx_z\",:] brem vtx z\n",
  153. " brem_l.field(\"brem_vtx_z\").append(brem_z_l[itr])\n",
  154. " brem_l.end_record()\n",
  155. "\n",
  156. "brem_l = ak.Array(brem_l)\n",
  157. "\n",
  158. "\n",
  159. "\n",
  160. "\n",
  161. "brem_f[0]"
  162. ]
  163. },
  164. {
  165. "cell_type": "code",
  166. "execution_count": 33,
  167. "metadata": {},
  168. "outputs": [],
  169. "source": [
  170. "acc_brem_found = ak.ArrayBuilder()\n",
  171. "\n",
  172. "for itr in range(ak.num(brem_f, axis=0)):\n",
  173. " acc_brem_found.begin_record()\n",
  174. " acc_brem_found.field(\"energy\").real(brem_f[itr,\"energy\"])\n",
  175. " \n",
  176. " acc_brem_found.field(\"brem_photons_pe\")\n",
  177. " acc_brem_found.begin_list()\n",
  178. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  179. " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n",
  180. " continue\n",
  181. " else:\n",
  182. " acc_brem_found.real(brem_f[itr,\"brem_photons_pe\", jentry])\n",
  183. " \n",
  184. " #acc_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
  185. " acc_brem_found.end_list()\n",
  186. " \n",
  187. " acc_brem_found.field(\"brem_vtx_z\")\n",
  188. " acc_brem_found.begin_list()\n",
  189. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  190. " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n",
  191. " continue\n",
  192. " else:\n",
  193. " acc_brem_found.real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
  194. " acc_brem_found.end_list()\n",
  195. " \n",
  196. "\n",
  197. " \n",
  198. " acc_brem_found.end_record()\n",
  199. "\n",
  200. "acc_brem_found = ak.Array(acc_brem_found)\n",
  201. "\n",
  202. "\n",
  203. "\n",
  204. "acc_brem_lost = ak.ArrayBuilder()\n",
  205. "\n",
  206. "for itr in range(ak.num(brem_l, axis=0)):\n",
  207. " acc_brem_lost.begin_record()\n",
  208. " acc_brem_lost.field(\"energy\").real(brem_l[itr,\"energy\"])\n",
  209. " \n",
  210. " acc_brem_lost.field(\"brem_photons_pe\")\n",
  211. " acc_brem_lost.begin_list()\n",
  212. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  213. " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n",
  214. " continue\n",
  215. " else:\n",
  216. " acc_brem_lost.real(brem_l[itr,\"brem_photons_pe\", jentry])\n",
  217. " \n",
  218. " #acc_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
  219. " acc_brem_lost.end_list()\n",
  220. " \n",
  221. " acc_brem_lost.field(\"brem_vtx_z\")\n",
  222. " acc_brem_lost.begin_list()\n",
  223. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  224. " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n",
  225. " continue\n",
  226. " else:\n",
  227. " acc_brem_lost.real(brem_l[itr, \"brem_vtx_z\",jentry])\n",
  228. " acc_brem_lost.end_list()\n",
  229. " \n",
  230. " acc_brem_lost.end_record()\n",
  231. "\n",
  232. "acc_brem_lost = ak.Array(acc_brem_lost)\n"
  233. ]
  234. },
  235. {
  236. "cell_type": "code",
  237. "execution_count": 34,
  238. "metadata": {},
  239. "outputs": [
  240. {
  241. "data": {
  242. "text/plain": [
  243. "9056"
  244. ]
  245. },
  246. "execution_count": 34,
  247. "metadata": {},
  248. "output_type": "execute_result"
  249. }
  250. ],
  251. "source": [
  252. "ak.num(acc_brem_found,axis=0)"
  253. ]
  254. },
  255. {
  256. "cell_type": "code",
  257. "execution_count": 35,
  258. "metadata": {},
  259. "outputs": [
  260. {
  261. "data": {
  262. "text/plain": [
  263. "'\\nph_e = found[\"brem_photons_pe\"]\\nevent_cut = ak.all(ph_e<cutoff_energy,axis=1)\\nph_e = ph_e[event_cut]\\n'"
  264. ]
  265. },
  266. "execution_count": 35,
  267. "metadata": {},
  268. "output_type": "execute_result"
  269. }
  270. ],
  271. "source": [
  272. "\n",
  273. "\"\"\"\n",
  274. "ph_e = found[\"brem_photons_pe\"]\n",
  275. "event_cut = ak.all(ph_e<cutoff_energy,axis=1)\n",
  276. "ph_e = ph_e[event_cut]\n",
  277. "\"\"\"\n",
  278. "\n"
  279. ]
  280. },
  281. {
  282. "cell_type": "code",
  283. "execution_count": 36,
  284. "metadata": {},
  285. "outputs": [
  286. {
  287. "name": "stdout",
  288. "output_type": "stream",
  289. "text": [
  290. "sample size: 322\n",
  291. "eff (cutoff = 0 ) = 0.9379 +/- 0.0135\n",
  292. "sample size: 322\n",
  293. "eff (cutoff = 25 ) = 0.9379 +/- 0.0135\n",
  294. "sample size: 322\n",
  295. "eff (cutoff = 50 ) = 0.9379 +/- 0.0135\n",
  296. "sample size: 322\n",
  297. "eff (cutoff = 75 ) = 0.9379 +/- 0.0135\n",
  298. "sample size: 322\n",
  299. "eff (cutoff = 100 ) = 0.9379 +/- 0.0135\n",
  300. "sample size: 384\n",
  301. "eff (cutoff = 125 ) = 0.9453 +/- 0.0116\n",
  302. "sample size: 433\n",
  303. "eff (cutoff = 150 ) = 0.9423 +/- 0.0112\n",
  304. "sample size: 485\n",
  305. "eff (cutoff = 175 ) = 0.9443 +/- 0.0104\n",
  306. "sample size: 529\n",
  307. "eff (cutoff = 200 ) = 0.949 +/- 0.0096\n",
  308. "sample size: 581\n",
  309. "eff (cutoff = 225 ) = 0.9501 +/- 0.009\n",
  310. "sample size: 644\n",
  311. "eff (cutoff = 250 ) = 0.9519 +/- 0.0084\n",
  312. "sample size: 705\n",
  313. "eff (cutoff = 275 ) = 0.9475 +/- 0.0084\n",
  314. "sample size: 757\n",
  315. "eff (cutoff = 300 ) = 0.9498 +/- 0.0079\n",
  316. "sample size: 802\n",
  317. "eff (cutoff = 325 ) = 0.9451 +/- 0.008\n",
  318. "sample size: 846\n",
  319. "eff (cutoff = 350 ) = 0.9433 +/- 0.008\n",
  320. "sample size: 876\n",
  321. "eff (cutoff = 375 ) = 0.9452 +/- 0.0077\n",
  322. "sample size: 919\n",
  323. "eff (cutoff = 400 ) = 0.9467 +/- 0.0074\n",
  324. "sample size: 972\n",
  325. "eff (cutoff = 425 ) = 0.9475 +/- 0.0072\n",
  326. "sample size: 1019\n",
  327. "eff (cutoff = 450 ) = 0.949 +/- 0.0069\n",
  328. "sample size: 1067\n",
  329. "eff (cutoff = 475 ) = 0.9475 +/- 0.0068\n",
  330. "sample size: 1117\n",
  331. "eff (cutoff = 500 ) = 0.9418 +/- 0.007\n",
  332. "sample size: 1144\n",
  333. "eff (cutoff = 525 ) = 0.9423 +/- 0.0069\n",
  334. "sample size: 1184\n",
  335. "eff (cutoff = 550 ) = 0.9409 +/- 0.0069\n",
  336. "sample size: 1234\n",
  337. "eff (cutoff = 575 ) = 0.9408 +/- 0.0067\n",
  338. "sample size: 1268\n",
  339. "eff (cutoff = 600 ) = 0.9416 +/- 0.0066\n",
  340. "sample size: 1303\n",
  341. "eff (cutoff = 625 ) = 0.9417 +/- 0.0065\n",
  342. "sample size: 1342\n",
  343. "eff (cutoff = 650 ) = 0.9404 +/- 0.0065\n",
  344. "sample size: 1381\n",
  345. "eff (cutoff = 675 ) = 0.9399 +/- 0.0064\n",
  346. "sample size: 1416\n",
  347. "eff (cutoff = 700 ) = 0.9407 +/- 0.0063\n",
  348. "sample size: 1444\n",
  349. "eff (cutoff = 725 ) = 0.9418 +/- 0.0062\n",
  350. "sample size: 1484\n",
  351. "eff (cutoff = 750 ) = 0.942 +/- 0.0061\n",
  352. "sample size: 1523\n",
  353. "eff (cutoff = 775 ) = 0.9402 +/- 0.0061\n",
  354. "sample size: 1557\n",
  355. "eff (cutoff = 800 ) = 0.939 +/- 0.0061\n",
  356. "sample size: 1593\n",
  357. "eff (cutoff = 825 ) = 0.9379 +/- 0.006\n",
  358. "sample size: 1628\n",
  359. "eff (cutoff = 850 ) = 0.9373 +/- 0.006\n",
  360. "sample size: 1656\n",
  361. "eff (cutoff = 875 ) = 0.9384 +/- 0.0059\n",
  362. "sample size: 1690\n",
  363. "eff (cutoff = 900 ) = 0.9385 +/- 0.0058\n",
  364. "sample size: 1721\n",
  365. "eff (cutoff = 925 ) = 0.9378 +/- 0.0058\n",
  366. "sample size: 1745\n",
  367. "eff (cutoff = 950 ) = 0.9381 +/- 0.0058\n",
  368. "sample size: 1769\n",
  369. "eff (cutoff = 975 ) = 0.9378 +/- 0.0057\n",
  370. "sample size: 1796\n",
  371. "eff (cutoff = 1000 ) = 0.9365 +/- 0.0058\n",
  372. "sample size: 1838\n",
  373. "eff (cutoff = 1025 ) = 0.9374 +/- 0.0056\n",
  374. "\n",
  375. "cutoff energy = 350MeV, sample size: 846\n",
  376. "eff = 0.9433 +/- 0.008\n"
  377. ]
  378. }
  379. ],
  380. "source": [
  381. "#finden wir die elektronen die keine bremsstrahlung gemacht haben mit hoher effizienz?\n",
  382. "#von energie der photonen abmachen\n",
  383. "#scan ab welcher energie der photonen die effizienz abfällt\n",
  384. "\n",
  385. "#abhängigkeit vom ort der emission untersuchen <- noch nicht gemacht\n",
  386. "\n",
  387. "\n",
  388. "\n",
  389. "#idea: we make an event cut st all events that contain a photon of energy > cutoff_energy are not included\n",
  390. "\"\"\"\n",
  391. "ph_e = acc_brem_found[\"brem_photons_pe\"]\n",
  392. "event_cut = ak.all(ph_e<cutoff_energy,axis=1)\n",
  393. "ph_e = ph_e[event_cut]\n",
  394. "\"\"\"\n",
  395. "\n",
  396. "efficiencies_found = ak.ArrayBuilder()\n",
  397. "\n",
  398. "\n",
  399. "\n",
  400. "for cutoff_energy in range(0,1050,25):\n",
  401. "\tnobrem_f = acc_brem_found[ak.all(acc_brem_found[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  402. "\tnobrem_l = acc_brem_lost[ak.all(acc_brem_lost[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  403. "\n",
  404. "\n",
  405. "\n",
  406. "\tprint(\"sample size: \",ak.num(nobrem_f,axis=0)+ak.num(nobrem_l,axis=0))\n",
  407. "\tprint(\"eff (cutoff = \",str(cutoff_energy),\") = \",np.round(t_eff(nobrem_f,nobrem_l),4), \"+/-\", np.round(eff_err(nobrem_f, nobrem_l),4))\n",
  408. "\n",
  409. "\"\"\"\n",
  410. "we see that a cutoff energy of xxxMeV is ideal because the efficiency drops significantly for higher values\n",
  411. "\"\"\"\n",
  412. "cutoff_energy = 350.0 #MeV\n",
  413. "\n",
  414. "\"\"\"\n",
  415. "better statistics: cutoff=xxxMeV - sample size: xxx events and efficiency=xxxx\n",
  416. "\"\"\"\n",
  417. "nobrem_found = acc_brem_found[ak.all(acc_brem_found[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  418. "nobrem_lost = acc_brem_lost[ak.all(acc_brem_lost[\"brem_photons_pe\"]<cutoff_energy,axis=1)]\n",
  419. "\n",
  420. "print(\"\\ncutoff energy = 350MeV, sample size:\",ak.num(nobrem_found,axis=0)+ak.num(nobrem_lost,axis=0))\n",
  421. "print(\"eff = \",np.round(t_eff(nobrem_found, nobrem_lost),4), \"+/-\", np.round(eff_err(nobrem_found, nobrem_lost),4))"
  422. ]
  423. },
  424. {
  425. "cell_type": "code",
  426. "execution_count": 37,
  427. "metadata": {},
  428. "outputs": [
  429. {
  430. "name": "stdout",
  431. "output_type": "stream",
  432. "text": [
  433. "eff = 0.8535 +/- 0.0036\n"
  434. ]
  435. },
  436. {
  437. "data": {
  438. "text/html": [
  439. "<pre>[{energy: 2.58e+04, brem_photons_pe: [9.97e+03, ...], brem_vtx_z: [...]},\n",
  440. " {energy: 8.03e+04, brem_photons_pe: [4.91e+03, ...], brem_vtx_z: [...]},\n",
  441. " {energy: 5.6e+03, brem_photons_pe: [320, ..., 392], brem_vtx_z: [...]},\n",
  442. " {energy: 6.36e+03, brem_photons_pe: [273, ...], brem_vtx_z: [...]},\n",
  443. " {energy: 4.67e+04, brem_photons_pe: [8.96e+03, ...], brem_vtx_z: [...]},\n",
  444. " {energy: 7.16e+04, brem_photons_pe: [544, ..., 142], brem_vtx_z: [...]},\n",
  445. " {energy: 5.15e+04, brem_photons_pe: [384, ...], brem_vtx_z: [...]},\n",
  446. " {energy: 4.07e+04, brem_photons_pe: [2.7e+04, ...], brem_vtx_z: [...]},\n",
  447. " {energy: 2.77e+04, brem_photons_pe: [2.24e+03, ...], brem_vtx_z: [...]},\n",
  448. " {energy: 6.4e+04, brem_photons_pe: [686, ..., 796], brem_vtx_z: [...]},\n",
  449. " ...,\n",
  450. " {energy: 5.59e+03, brem_photons_pe: [901, ...], brem_vtx_z: [...]},\n",
  451. " {energy: 2.13e+04, brem_photons_pe: [787, ...], brem_vtx_z: [...]},\n",
  452. " {energy: 9.34e+03, brem_photons_pe: [762, ...], brem_vtx_z: [...]},\n",
  453. " {energy: 5.08e+04, brem_photons_pe: [711, ...], brem_vtx_z: [...]},\n",
  454. " {energy: 6.41e+04, brem_photons_pe: [4.17e+03, ...], brem_vtx_z: [...]},\n",
  455. " {energy: 1.01e+04, brem_photons_pe: [220, ..., 156], brem_vtx_z: [...]},\n",
  456. " {energy: 1.96e+04, brem_photons_pe: [1.66e+03, ...], brem_vtx_z: [...]},\n",
  457. " {energy: 2.98e+04, brem_photons_pe: [8.32e+03, ...], brem_vtx_z: [...]},\n",
  458. " {energy: 3.97e+04, brem_photons_pe: [9.36e+03, ...], brem_vtx_z: [...]}]\n",
  459. "-------------------------------------------------------------------------\n",
  460. "type: 1418 * {\n",
  461. " energy: float64,\n",
  462. " brem_photons_pe: var * float64,\n",
  463. " brem_vtx_z: var * float64\n",
  464. "}</pre>"
  465. ],
  466. "text/plain": [
  467. "<Array [{energy: 2.58e+04, ...}, ..., {...}] type='1418 * {energy: float64,...'>"
  468. ]
  469. },
  470. "execution_count": 37,
  471. "metadata": {},
  472. "output_type": "execute_result"
  473. }
  474. ],
  475. "source": [
  476. "#wie viel energie relativ zur anfangsenergie verlieren die elektronen durch bremstrahlung und hat das einen einfluss darauf ob wir sie finden oder nicht?\n",
  477. "#if any photon of an electron has an energy higher the cutoff then it is included\n",
  478. "cutoff_energy=350\n",
  479. "\n",
  480. "brem_found = acc_brem_found[ak.any(acc_brem_found[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
  481. "energy_found = ak.to_numpy(brem_found[\"energy\"])\n",
  482. "eph_found = ak.to_numpy(ak.sum(brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  483. "residual_found = energy_found - eph_found\n",
  484. "energyloss_found = eph_found/energy_found\n",
  485. "\n",
  486. "brem_lost = acc_brem_lost[ak.any(acc_brem_lost[\"brem_photons_pe\"]>=cutoff_energy,axis=1)]\n",
  487. "energy_lost = ak.to_numpy(brem_lost[\"energy\"])\n",
  488. "eph_lost = ak.to_numpy(ak.sum(brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  489. "residual_lost = energy_lost - eph_lost\n",
  490. "energyloss_lost = eph_lost/energy_lost\n",
  491. "\n",
  492. "print(\"eff = \", np.round(t_eff(brem_found,brem_lost),4), \"+/-\", np.round(eff_err(brem_found, brem_lost),4))\n",
  493. "brem_lost"
  494. ]
  495. },
  496. {
  497. "cell_type": "code",
  498. "execution_count": 38,
  499. "metadata": {},
  500. "outputs": [
  501. {
  502. "name": "stdout",
  503. "output_type": "stream",
  504. "text": [
  505. "mean energyloss relative to initial energy (found): 0.4107345449771658\n",
  506. "mean energyloss relative to initial energy (lost): 0.7300783757368142\n"
  507. ]
  508. }
  509. ],
  510. "source": [
  511. "mean_energyloss_found = ak.mean(energyloss_found)\n",
  512. "mean_energyloss_lost = ak.mean(energyloss_lost)\n",
  513. "print(\"mean energyloss relative to initial energy (found): \", mean_energyloss_found)\n",
  514. "print(\"mean energyloss relative to initial energy (lost): \", mean_energyloss_lost)"
  515. ]
  516. },
  517. {
  518. "cell_type": "code",
  519. "execution_count": 39,
  520. "metadata": {},
  521. "outputs": [
  522. {
  523. "data": {
  524. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAHMCAYAAAD7xYOxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/vklEQVR4nO3deXxTZdr/8W/aphulBQqFApV9kUUYQbG4gWNBUNFnHFxQRHAd+YmIjyButC6D6OO4jaKigqMy4sgioyhUpQVEFgs6siiIKMUBS1naQqVNm/P7AxtJ0yVJk5zT9vN+vfKiuc997nOdq4Fc3GezGYZhCAAAwILCzA4AAACgOhQqAADAsihUAACAZVGoAAAAy6JQAQAAlkWhAgAALItCBQAAWBaFCgAAsCwKFQAAYFkUKgAAwLIoVAAAgGVRqACos2XLlslms1X7eu211wKynfLyciUlJenpp58O+bYBmCPC7AAA1H+bNm2SJL3//vtKSkryWN6rV6+AbGfVqlU6cOCA/vSnP4V82wDMQaECoM42bdqk+Ph4XXrppbLZbEHbznvvvaeBAweqQ4cOId82AHNw6AdAneXk5Khfv35BLRQMw9DixYt1xRVXhHzbAMxDoQKgTg4ePKg9e/aob9++Kisr83gZhhGQ7axdu1b79u1zK1RCtW0A5qFQAVAnFeeIvPjii7Lb7R6vbdu21TqGYRiKj49Xfn5+tX3ee+899e3bV926dfN52wcOHNDFF1+sJk2aqHv37srMzKzLLgMIIc5RAVAnOTk5kqRFixYpJSXFY7k3J7Pu3LlTrVq1UsuWLavts2jRIk2YMMGvbU+cOFFt2rTRgQMH9Mknn+jKK6/U999/r8TExFpjA2AuChUAdbJp0yZFR0dr1KhRCg8Pr7bfyy+/rH/961+y2+1av3692rZtq3fffVe9evXSpk2b1L9/f916661asGCB2rZtq6VLl6pr166SpA0bNmjPnj0e56d4s+2jR49qyZIl2rVrl2JjYzVq1Cj169dP77//vkfhA8B6OPQDoE42bdqkPn361FikSNKWLVu0ceNGTZ48Wb/88osGDRqkBx54QJK0efNmffnllxo/frwOHTqk008/XXPmzHGtu3DhQnXv3l19+vTxeds7d+5UXFyc24xL3759tXXrVn92F0CIUagA8FtBQYF++OEH9evXr9a+W7Zs0QMPPKDhw4fLbrfr2muv1Y4dOySdKFQyMjJ01llnKSwsTF26dHE7EXbhwoUesynebvvo0aOKj493a4uPj9fRo0e93U0AJuLQDwC/bdq0SYZhqEmTJlq3bp3H8nbt2rlmMrZu3ep2l9i8vDzXOSmbN2/WW2+95Vq2detWjRw5UpL01VdfadeuXVUe9vFm23FxcSosLHRbVlhYqLi4OD/3GkAoMaMCwG8VV90899xzSk1N9XitWLFC0omi5MCBA253jl28eLFGjBih3NxcRUREuC37z3/+o9NOO03SidmUDh06aMCAAX5tu1u3bjp69Kj27t3rWnfLli3q3bt3EDICINBsBjcaABBkn376qYYPH66XXnpJ48aN0z/+8Q898sgj+vrrr5Wdna0XXnhBy5cvlyQVFxerWbNmKigoUExMjHr16qURI0boqaee8nv7o0ePVkJCgp5//nl9+umnGjt2rHbu3FnjVUYArIFDPwCCbsuWLZowYYLeeecdTZkyRQMGDFBmZqYSEhK0efNm1+yJdOKwT5cuXRQTEyNJXt2HpTYvvviixo0bp8TERLVr104LFiygSAHqCWZUAATdzTffrIEDB+rWW281OxQA9QznqAAIui1btqhnz55mhwGgHmJGBUDQJSQkaMeOHWrdurXZoQCoZ0ydUSkqKtLkyZPVoUMHxcTEaPDgwdq4caOZIQEIgoKCAooUAH4xtVC56aablJmZqTfffFPffPONhg0bpgsvvFA///yzmWEBAACLMO3Qz6+//qqmTZvq/fff18UXX+xq79+/vy655BI9+uijZoQFAAAsxLTLk8vKylReXq7o6Gi39piYGK1Zs6bKdUpKSlRSUuJ673Q6dejQISUmJspmswU1XgAAEBiGYaioqEht27ZVWFgtB3cME6Wmphrnn3++8fPPPxtlZWXGm2++adhsNqN79+5V9p8xY4YhiRcvXrx48eLVAF65ubm11gqmXvWza9cuTZgwQatWrVJ4eLhOP/10de/eXZs2baryJk+VZ1QKCgp0yimnaPfu3WratGnA4nI4HFq5cqWGDh0qu90esHHhjjyHDrkODfIcOuQ6NIKV56KiInXq1ElHjhxRQkJCjX1NvTNtly5dlJ2drWPHjqmwsFDJycm66qqr1KlTpyr7R0VFKSoqyqO9RYsWHk9HrQuHw6HY2FglJibyFyCIyHPokOvQIM+hQ65DI1h5rhjLm9M2LHHDtyZNmig5OVmHDx/W8uXLddlll5kdEgAAsABTZ1SWL18uwzDUo0cPff/997rnnnvUo0cPjR8/3sywAACARZg6o1JQUKCJEyeqZ8+euv7663XOOedoxYoVTOMBAABJJs+oXHnllbryyivNDAEA0IiVl5fL4XCYHYZlORwORURE6Pjx4yovL/d6PbvdrvDw8IDEYGqhAgCAGQzD0P79+3XkyBGzQ7E0wzDUpk0b5ebm+ny/smbNmqlNmzZ1vs8ZhQoAoNGpKFKSkpIUGxvLTUOr4XQ6dfToUcXFxdV+Y7bfGIah4uJi5eXlSZKSk5PrFAOFCgCgUSkvL3cVKYmJiWaHY2lOp1OlpaWKjo72ulCRTtxlXpLy8vKUlJRUp8NAlrg8GQCAUKk4JyU2NtbkSBq2ivzW9RwgChUAQKPE4Z7gClR+KVQAAIBlUagAAFBPDBkyRJMnTzY7jJDiZFoAACqsTQ/t9gaHeHu/ycrK0tChQ3X48GE1a9bMlBi8xYwKAACwLAoVAADqocOHD+v6669X8+bNFRsbqxEjRmjnzp2u5T/99JMuvfRSNW/eXE2aNFHv3r21bNky/fjjjxo6dKgkqXnz5rLZbLrhhhtM2ovacegHAIB66IYbbtDOnTu1dOlSxcfHa9q0aRo5cqS2bdsmu92uiRMnqrS0VKtWrVKTJk20bds2xcXFKSUlRQsXLtQVV1yh7777TvHx8a77nlgRhQoAAPVMRYHy+eefa/DgwZKkt99+WykpKVqyZIlGjx6tPXv26IorrlDfvn0lSZ07d3at36JFC0lSUlIS56gAAIDA2r59uyIiIjRo0CBXW2Jionr06KHt27dLkiZNmqRHH31UZ599tmbMmKH//Oc/ZoVbJxQqAADUM4ZhVNtecaO1m266ST/88IPGjh2rb775RgMHDtTzzz8fyjADgkIFAIB6plevXiorK9P69etdbQcPHtSOHTt06qmnutpSUlJ02223adGiRbr77rs1Z84cSVJkZKSkE889sjoKFQAA6plu3brpsssu080336w1a9bo66+/1nXXXad27drpsssukyRNnjxZy5cv1+7du7Vp0yZ99tlnriKmQ4cOstls+uCDD3TgwAEdPXrUzN2pESfTAgBQwaQbsPlj7ty5uvPOO3XJJZeotLRU5513npYtWya73S7pxGzJxIkTtXfvXsXHx+uiiy7S008/LUlq166dMjIydO+992r8+PG6/vrrNW/ePBP3pnoUKgAA1BNZWVmun5s3b65//OMf1fat7XyUBx98UA8++GCgQgsaDv0AAADLolABAACWRaECAAAsi0IFAABYFoUKAACwLAoVAABgWRQqAADAsihUAACAZVGoAAAAy6JQAQCgnjAMQ7fccotatGghm82mr776yrRYhgwZosmTJwd9O9xCHwCA36SnW3t7H3/8sebNm6esrCx17txZLVu2DEpcVkKhAgBAPbFr1y4lJydr8ODBZocSMqYe+ikrK9MDDzygTp06KSYmRp07d9bDDz8sp9NpZlgAAFjODTfcoDvuuEN79uyRzWZTx44dVVJSokmTJikpKUnR0dE655xztHHjRtc68+bNU7NmzdzGWbJkiWw2m+t9enq6+vfvrzfffFMdO3ZUQkKCrr76ahUVFbn
  525. "text/plain": [
  526. "<Figure size 640x480 with 1 Axes>"
  527. ]
  528. },
  529. "metadata": {},
  530. "output_type": "display_data"
  531. }
  532. ],
  533. "source": [
  534. "#in abhängigkeit von der energie der elektronen\n",
  535. "plt.hist(energyloss_lost, bins=200, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
  536. "plt.hist(energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  537. "plt.xticks(np.arange(0,1.1,0.1), minor=True,)\n",
  538. "plt.yticks(np.arange(0,10,1), minor=True)\n",
  539. "plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
  540. "plt.ylabel(\"counts (normed)\")\n",
  541. "plt.title(r'$E_{ph}/E_0$')\n",
  542. "plt.legend()\n",
  543. "plt.grid()\n",
  544. "\n",
  545. "\"\"\"\n",
  546. "\n",
  547. "\"\"\"\n",
  548. "\n",
  549. "plt.show()"
  550. ]
  551. },
  552. {
  553. "cell_type": "code",
  554. "execution_count": 40,
  555. "metadata": {},
  556. "outputs": [
  557. {
  558. "data": {
  559. "image/png": "iVBORw0KGgoAAAANSUhEUgAABjYAAAJOCAYAAAAUHj4bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADYY0lEQVR4nOzdd3xUxf7/8feSkEJIllBDlKqIVEFQmld6u0SuBVBQpCiigIiCBZVioSiI3gti4SooXS7CVUGkKYpUQUTKFQsKSlVCAkiAJPP7g1/265J2Njmbba/n47EP5ezsnJlz5pyds5OZj8MYYwQAAAAAAAAAABAAivm6AAAAAAAAAAAAAFYxsAEAAAAAAAAAAAIGAxsAAAAAAAAAACBgMLABAAAAAAAAAAACBgMbAAAAAAAAAAAgYDCwAQAAAAAAAAAAAgYDGwAAAAAAAAAAIGAwsAEAAAAAAAAAAAIGAxsAAAAAAAAAACBgMLABAAAAAAAAAAACBgMbAAAg6PXt21ezZs3ydTFg0c6dO3XgwAFfFwMAAAAA4KcY2AAAAIBfefPNN7V27VpfFwMAAAAA4KcY2AAAAMjHwoULVadOHUVHR8vhcGjHjh2+LlKeli9fLofD4faKi4tTo0aN9N577xXZ/t9991237cnJyercubMiIiI0bdo0t/c+//xzDRgwQMeOHXNt27Nnj2699VYdPXrU62UOJJ999lm285v12rRpU7b0O3fu1D333KMrrrhC0dHRio6OVo0aNTRw4EB99dVXBSrDLbfcoujoaJ08eTLXNHfeeaeKFy/u8/M3a9YsORwO/fzzz0W+77Fjx8rhcOj333+3Lc8NGzZo7NixeR77QJaRkaHy5cvr5ZdfzjWNN45rIAjmc79lyxZ17NhRsbGxKlmypFq3bq0vv/wyWzpP73+nT5/WsGHDlJiYqKioKDVo0EALFiwocDoAAOA/GNgAAABBKSkpSaVKlVKpUqU0b948DRo0yPXviRMnWs7n+PHj6t27t6644gqtWLFCGzdu1FVXXeXFkhfe9u3bJUn//e9/tXHjRm3YsEEzZszQmTNn1LNnT+3cubNI9t+oUSPXtp07d6px48b6+uuvtXbtWg0ZMsTtM40aNVKFChVUv359rVmzRtOmTVP79u3VqVMnlStXzqvlDVTjx4/Xxo0b3V5169Z1S/PGG2+oUaNG2rx5sx566CF99NFHWrZsmYYNG6bdu3fruuuu048//ujxvu+55x6lpaVp3rx5Ob6fkpKiJUuWKCkpSRUqVChQ/ZCzDRs26JlnngnKH7eli4Ocx48f16233urrovidYD33W7du1Y033qizZ89q9uzZmj17ttLS0tS2bVtt3Lgxx89Yuf9J0q233qp33nlHY8aM0ccff6zrrrtOPXv2zHbvspoOAAD4j3BfFwAAAMAbPvroI9f/9+3bV61atVLfvn09zmffvn26cOGC7rrrLrVs2TLXdH/++adKlChRkKLabvv27XI6neratatrW7NmzZSenq677rpLX3/9terXr+/V/UdHR+vqq6+WJC1YsED33HOP6tevr8WLFysxMTHbZ2JiYvTss88qMzNTEyZMULFixTR37lzdcccdXiunL5w4cUKZmZkqW7ZsofOqUaOGmjZtmuv7X375pQYNGqQuXbroP//5jyIiIlzvtWnTRoMHD9aiRYsUHR3t8b47d+6sxMREvf322xo0aFC29+fPn6+zZ8/qnnvu8ThvhLb//Oc/aty4sapUqeK1ffjT/TpUHD58WDExMYqLi8v23qhRo1SqVCmtWLHCdV7atWun6tWra8SIETnO3Mjv/iddnD24atUqzZs3Tz179pQktW7dWr/88oseffRR3X777QoLC7OcDgAA+BdmbAAAgICxfv16dejQQU6nU/Hx8erSpYu+//57r+2vb9++uuGGGyRJt99+uxwOh1q1auVaBmX79u3q1q2b4uPjdcUVV7iVs23btoqNjVWJEiXUvHlzLVu2zC3vrDx27typ7t27y+l0qnTp0nrkkUeUnp6u7777Tp06dVJsbKyqVq2qF1980XK5t23bpgYNGmTb/uuvv0qSatWqVYCjIb388staunSpR/sfMWKEevbsqTvvvFPr1q3LcVBDkr799ltde+212r59u/7+97+rf//+GjdunLp06ZLvcjNW24Xd7eemm25S48aNNWPGDF1zzTWKjo5WpUqVNGbMGGVmZub4mZ07d6pixYrq3Lmz3n33XZ06darA+8/P+PHjFRYWpjfeeMNtUOOvunfvnu2cfP/99+rVq5fKly+vyMhI1apVS6+++qpbmrCwMPXp00fbtm3Tt99+my3fmTNnuupZEJ5cQ7t371bPnj3ldDpVoUIF9e/fXykpKbnm/cUXX8jhcGj+/PnZ3nv33XflcDi0devWXD+ftd+vv/5at956q+Li4uR0OnXXXXfp+PHjOX7m6NGj+ZbRap0fffRRSVK1atVcS/B89tlnXjlux48f13333adKlSopMjJS5cqVU4sWLbR69epcj8/u3bvlcDi0aNEi17Zt27bJ4XCoTp06bmm7du3qNrPLGKMlS5botttuyzX/vzp48GC+5yC/+7WV9u7N+7UkLV26VA6HQ2vWrMn23muvvSaHw6Fbb70113Oflpamhg0b6sorr3Q7h0eOHFFCQoJatWqljIwMS2XJbZmngiznlpycrLfeekvt2rXT5Zdfrp9++inHdF9++aVatWrlNtgUGxurG2+8URs2bNDhw4c92m+WJUuWqGTJkurevbvb9n79+unQoUPavHmzR+mkwrcFb7clAABCigEAAAgAY8aMMcWKFTP9+/c3y5YtM//5z39MvXr1TKVKlcypU6e8ss8ffvjBvPrqq0aSGT9+vNm4caPZvXu3GTNmjJFkqlSpYh5//HGzatUqs3TpUmOMMZ999pkpXry4adSokVm4cKFZunSp6dChg3E4HGbBggVu9ZFkatasaZ577jmzatUq89hjjxlJZsiQIebqq682//rXv8yqVatMv379jCSzePHifMv8+++/G0lm6NCh5sKFC+bChQvm6NGj5t133zWxsbHm3nvvLfDx6NWrlylevLhZsmRJvvu//fbbTZs2bUxkZKSZMWNGvnkfPHjQfPjhh8YYYwYPHmxmzpxp0tPTzaxZs8z58+dz/ZzVduGN9lOxYkUTExNjatWqZWbPnm1Wrlxp7rjjDiMp1zqfPXvWzJ0719x0000mIiLCREVFmW7dupnFixebtLQ0S/v99NNPjSRTvnx5ExYWZmJjY02HDh3MF1984UqTnp5uoqOjTbNmzTyq0+7du43T6TT16tUz7777rlm5cqUZPny4KVasmBk7dqxb2u+//944HA4zbNiwbHlIMk888YRH+85SkGto9OjRZtWqVWbKlCkmMjLS9OvXz5Vu5syZRpLZv3+/a1vDhg1NixYtsu37uuuuM9ddd12e5fvr9f/oo4+aTz75xEyZMsXExMSYhg0burVXq2W0WueDBw+aBx980Egy77//vtm4caPZuHGjSUlJsf24GWNMx44dTbly5cybb75pPvvsM7N06VIzevRot/xyUrFiRXPfffe5/j1x4kQTHR1tJJnffvvNGGPMhQsXTFxcnHnsscdc6davX28kmX379tl+DnK6X1tt7966X2e5cOGCKV++vLnzzjuzvXf99deba6+9Ns9zb4wx+/btM7GxsebWW281xhiTkZFh2rRpY8qXL28OHTpkuSxZ+Wa91q5day677DKTkJDg2ldezpw5YxYsWGC6du1qIiIiTHR0tLntttvMokWLzLlz53L8TEREhLn77ruzbe/Zs6eRZD755BPXNiv3vyxNmzbN8XretWuXkWTeeOMNj9IZU/i24O22BABAKGFgAwAA+L0PP/zQSDIvvvii2/Z9+/YZSWbOnDnZPtOpUycTExOT42vcuHGW9531I8qiRYtc27J+mBg9enS29E2bNjXly5d3+7E8PT3d1K1b11x++eUmMzPTLY+XXnrJ7fMNGjRw/XCV5cKFC6ZcuXKuH6zysnLlSiMp2ys8PNw8//zzluudk/T09Hw
  560. "text/plain": [
  561. "<Figure size 2000x600 with 3 Axes>"
  562. ]
  563. },
  564. "metadata": {},
  565. "output_type": "display_data"
  566. }
  567. ],
  568. "source": [
  569. "#energyloss in abh von der energie der elektronen\n",
  570. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  571. "\n",
  572. "a0=ax0.hist2d(energyloss_found, energy_found, bins=(np.linspace(0,1,70), np.linspace(0,1.5e5,105)), cmap=plt.cm.jet, cmin=1, vmax=7)\n",
  573. "ax0.set_ylim(0,1.5e5)\n",
  574. "ax0.set_xlim(0,1)\n",
  575. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  576. "ax0.set_ylabel(r\"$E_0$\")\n",
  577. "ax0.set_title(\"found energyloss wrt electron energy\")\n",
  578. "\n",
  579. "a1=ax1.hist2d(energyloss_lost, energy_lost, bins=(np.linspace(0,1,70), np.linspace(0,1.5e5,105)), cmap=plt.cm.jet, cmin=1, vmax=7) \n",
  580. "ax1.set_ylim(0,1.5e5)\n",
  581. "ax1.set_xlim(0,1)\n",
  582. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  583. "ax1.set_ylabel(r\"$E_0$\")\n",
  584. "ax1.set_title(\"lost energyloss wrt electron energy\")\n",
  585. "\n",
  586. "fig.colorbar(a1[3],ax=ax1)\n",
  587. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, only photons w/ brem_vtx_z$<9500$mm\")\n",
  588. "\n",
  589. "\"\"\"\n",
  590. "we can see that high energy electrons are often found even though they emit a lot of their energy through bremsstrahlung\n",
  591. "\"\"\"\n",
  592. "plt.show()"
  593. ]
  594. },
  595. {
  596. "cell_type": "code",
  597. "execution_count": 41,
  598. "metadata": {},
  599. "outputs": [
  600. {
  601. "data": {
  602. "image/png": "iVBORw0KGgoAAAANSUhEUgAABk4AAAJOCAYAAADxgPt3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADVm0lEQVR4nOzdd3hUxf7H8c+mh5CEUEOQLr03aSogXZooRdBIU1FEQMGCCgFFEJCiYLteBUSaXKQXIVRFkC5X9AoqCCoBVAhFShLm9wdkfywpe5KchE3yfj3PPrpn58x8Z87Zw5zMzhmHMcYIAAAAAAAAAAAA8rrVAQAAAAAAAAAAAHgKBk4AAAAAAAAAAACuY+AEAAAAAAAAAADgOgZOAAAAAAAAAAAArmPgBAAAAAAAAAAA4DoGTgAAAAAAAAAAAK5j4AQAAAAAAAAAAOA6Bk4AAAAAAAAAAACuY+AEAAAAAAAAAADgOgZOAAAAAAAAAAAArmPgBAAA5Bq9e/fWzJkzb3UYsGj//v06evTorQ4DAAAAAJDLMHACAAAAj/Svf/1LGzZsuNVhAAAAAAByGQZOAAAALFqwYIGqVKmiwMBAORwO7du371aHlKpVq1bJ4XC4vEJCQlSnTh199tlnWVb+J5984rL99OnTatu2rfz8/DR9+nSXz7Zs2aLHHntMJ0+edG77/vvvdf/99+vEiROZHnN2smnTpiTHN/G1ffv2JOn379+vfv36qWzZsgoMDFRgYKDKlSun/v37a9euXemKoXPnzgoMDNSZM2dSTPPQQw/J19f3lh+/mTNnyuFw6MiRI1le9qhRo+RwOPTnn3/alufXX3+tUaNGpdr22VlCQoIKFy6sKVOmpJgmM9o1O8jJx37Hjh1q3bq1goODlTdvXjVr1kxbt25Nki6t17/z589ryJAhioiIUEBAgGrWrKn58+enOx0AAMj5GDgBAAA5Wvv27ZUvXz7ly5dPc+fO1YABA5zv33jjDcv5nDp1SpGRkSpbtqzWrFmjbdu2qXz58pkYecbt2bNHkrR06VJt27ZNX3/9tT788ENduHBBPXr00P79+7Ok/Dp16ji37d+/X3Xr1tXevXu1YcMGDRw40GWfOnXqqEiRIqpevbrWr1+v6dOnq2XLlmrTpo0KFSqUqfFmV2PHjtW2bdtcXlWrVnVJ88EHH6hOnTr65ptvNHjwYK1YsUIrV67UkCFDdODAAdWrV08///xzmsvu16+fLl26pLlz5yb7eWxsrBYvXqz27durSJEi6aofkvf1119r9OjROfKP59K1QdRTp07p/vvvv9WheJyceux37typu+++WxcvXtTs2bM1e/ZsXbp0Sc2bN9e2bduS3cfK9U+S7r//fs2aNUtRUVFavXq16tWrpx49eiS5dllNBwAAcj6fWx0AAABAZlqxYoXz/3v37q2mTZuqd+/eac7n4MGDiouL08MPP6wmTZqkmO6ff/5Rnjx50hOq7fbs2aPQ0FB17NjRua1hw4aKj4/Xww8/rL1796p69eqZWn5gYKAqVqwoSZo/f7769eun6tWra9GiRYqIiEiyT1BQkF599VVdvXpV48aNk5eXl+bMmaMHH3ww0+K8Ff7++29dvXpVBQsWzHBe5cqVU4MGDVL8fOvWrRowYIDatWun//znP/Lz83N+ds899+ipp57SwoULFRgYmOay27Ztq4iICH388ccaMGBAks/nzZunixcvql+/fmnOG7nbf/7zH9WtW1clS5bMtDI86XqdWxw/flxBQUEKCQlJ8tmIESOUL18+rVmzxnlcWrRooTJlymjYsGHJzjxxd/2Trs1+XLdunebOnasePXpIkpo1a6Zff/1Vzz33nLp37y5vb2/L6QAAQO7AjBMAAJDtfPXVV2rVqpVCQ0MVFhamdu3a6dChQ5lWXu/evXXnnXdKkrp37y6Hw6GmTZs6HxOzZ88edenSRWFhYSpbtqxLnM2bN1dwcLDy5MmjRo0aaeXKlS55J+axf/9+de3aVaGhocqfP7+effZZxcfH68cff1SbNm0UHBysUqVKacKECZbj3r17t2rWrJlk+2+//SZJqlSpUjpaQ5oyZYqWLFmSpvKHDRumHj166KGHHtLmzZuTHTSRpP/+97+qXbu29uzZo3vvvVd9+/bV66+/rnbt2rl9HI/V88Lu86dDhw6qW7euPvzwQ9WoUUOBgYEqXry4oqKidPXq1WT32b9/v4oWLaq2bdvqk08+0blz59Jdvjtjx46Vt7e3PvjgA5dBkxt17do1yTE5dOiQevbsqcKFC8vf31+VKlXSO++845LG29tbvXr10u7du/Xf//43Sb4zZsxw1jM90vIdOnDggHr06KHQ0FAVKVJEffv2VWxsbIp5f/nll3I4HJo3b16Szz755BM5HA7t3Lkzxf0Ty927d6/uv/9+hYSEKDQ0VA8//LBOnTqV7D4nTpxwG6PVOj/33HOSpNKlSzsfUbRp06ZMabdTp07p8ccfV/HixeXv769ChQqpcePGio6OTrF9Dhw4IIfDoYULFzq37d69Ww6HQ1WqVHFJ27FjR5eZacYYLV68WA888ECK+d/o2LFjbo+Bu+u1lfM9M6/XkrRkyRI5HA6tX78+yWfvvfeeHA6H7r///hSP/aVLl1SrVi3dfvvtLscwJiZG4eHhatq0qRISEizFktJjsNLzuLvTp0/ro48+UosWLXTbbbfpl19+STbd1q1b1bRpU5fBrODgYN199936+uuvdfz48TSVm2jx4sXKmzevunbt6rK9T58++uOPP/TNN9+kKZ2U8XMhs88lAABgAwMAAJCNREVFGS8vL9O3b1+zcuVK85///MdUq1bNFC9e3Jw7dy5Tyvzpp5/MO++8YySZsWPHmm3btpkDBw6YqKgoI8mULFnSvPDCC2bdunVmyZIlxhhjNm3aZHx9fU2dOnXMggULzJIlS0yrVq2Mw+Ew8+fPd6mPJFOhQgXz2muvmXXr1pnnn3/eSDIDBw40FStWNG+//bZZt26d6dOnj5FkFi1a5DbmP//800gygwYNMnFxcSYuLs6cOHHCfPLJJyY4ONg8+uij6W6Pnj17Gl9fX7N48WK35Xfv3t3cc889xt/f33z44Ydu8z527JhZvny5McaYp556ysyYMcPEx8ebmTNnmitXrqS4n9XzIjPOn6JFi5qgoCBTqVIlM3v2bLN27Vrz4IMPGkkp1vnixYtmzpw5pkOHDsbPz88EBASYLl26mEWLFplLly5ZKnfjxo1GkilcuLDx9vY2wcHBplWrVubLL790pomPjzeBgYGmYcOGaarTgQMHTGhoqKlWrZr55JNPzNq1a83QoUONl5eXGTVqlEvaQ4cOGYfDYYYMGZIkD0nmxRdfTFPZidLzHRo5cqRZt26dmTx5svH39zd9+vRxppsxY4aRZA4fPuzcVqtWLdO4ceMkZderV8/Uq1cv1fhu/P4/99xz5osvvjCTJ082QUFBplatWi7nq9UYrdb52LFj5umnnzaSzOeff262bdtmtm3bZmJjY21vN2OMad26tSlUqJD517/+ZTZt2mSWLFliRo4c6ZJfcooWLWoef/xx5/s33njDBAYGGknm999/N8YYExcXZ0JCQszzzz/vTPfVV18ZSebgwYO2H4PkrtdWz/fMul4niouLM4ULFzYPPfRQks/uuOMOU7t27VSPvTHGHDx40AQHB5v777/fGGNMQkKCueeee0zhwoXNH3/8YTmWxHwTXxs2bDDFihUz4eHhzrJSc+HCBTN//nzTsWNH4+fnZwIDA80DDzxgFi5caC5fvpzsPn5+fuaRRx5Jsr1Hjx5Gkvniiy+c26xc/xI1aNAg2e/zd999ZySZDz74IE3pjMn4uZDZ5xIAAMg4Bk4AAEC2sXz5ciPJTJgwwWX7wYMHjSTz6aefJtmnTZs2JigoKNnX66+/brnsxD/SLFy40Lkt8Q8fI0eOTJK+QYMGpnDhwi5/jI+PjzdVq1Y1t912m7l69apLHpMmTXLZv2bNms4/jCWKi4szhQoVcv5BLDVr1641kpK8fHx8zJgxYyzXOznx8fFuB09uLD8gIMBs3749zeU
  603. "text/plain": [
  604. "<Figure size 2000x600 with 3 Axes>"
  605. ]
  606. },
  607. "metadata": {},
  608. "output_type": "display_data"
  609. }
  610. ],
  611. "source": [
  612. "#plot residual energy against energyloss and try to find a good split (eg energyloss before and after the magnet)\n",
  613. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  614. "\n",
  615. "a0=ax0.hist2d(energyloss_found, residual_found, bins=(np.linspace(0,1,80), np.linspace(0,1e5,80)), cmap=plt.cm.jet, cmin=1, vmax=20)\n",
  616. "ax0.set_ylim(0,1e5)\n",
  617. "ax0.set_xlim(0,1)\n",
  618. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  619. "ax0.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  620. "ax0.set_title(\"found energyloss wrt residual electron energy\")\n",
  621. "\n",
  622. "a1=ax1.hist2d(energyloss_lost, residual_lost, bins=(np.linspace(0,1,80), np.linspace(0,1e5,80)), cmap=plt.cm.jet, cmin=1, vmax=20) \n",
  623. "ax1.set_ylim(0,1e5)\n",
  624. "ax1.set_xlim(0,1)\n",
  625. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  626. "ax1.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  627. "ax1.set_title(\"lost energyloss wrt residual electron energy\")\n",
  628. "\n",
  629. "fig.colorbar(a1[3],ax=ax1)\n",
  630. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, only photons w/ brem_vtx_z$<9500$mm\")\n",
  631. "\n",
  632. "\"\"\"\n",
  633. "\"\"\"\n",
  634. "plt.show()"
  635. ]
  636. },
  637. {
  638. "cell_type": "code",
  639. "execution_count": null,
  640. "metadata": {},
  641. "outputs": [],
  642. "source": []
  643. },
  644. {
  645. "cell_type": "code",
  646. "execution_count": 42,
  647. "metadata": {},
  648. "outputs": [],
  649. "source": [
  650. "#ist die shape der teilspur im scifi anders? (koenntest du zum beispiel durch vergleich der verteilungen der fit parameter studieren,\n",
  651. "#in meiner thesis findest du das fitmodell -- ist einfach ein polynom dritten grades)\n",
  652. "z_ref=8520 #mm\n",
  653. "\n",
  654. "def scifi_track(z, a, b, c, d):\n",
  655. " return a + b*(z-z_ref) + c*(z-z_ref)**2 + d*(z-z_ref)**3\n",
  656. "\n",
  657. "def z_mag(xv, zv, tx, a, b):\n",
  658. " \"\"\" optical centre of the magnet is defined as the intersection between the trajectory tangents before and after the magnet\n",
  659. "\n",
  660. " Args:\n",
  661. " xv (double): velo x track\n",
  662. " zv (double): velo z track\n",
  663. " tx (double): velo x slope\n",
  664. " a (double): ax parameter of track fit\n",
  665. " b (double): bx parameter of track fit\n",
  666. "\n",
  667. " Returns:\n",
  668. " double: z_mag\n",
  669. " \"\"\"\n",
  670. " return (xv-tx*zv-a+b*z_ref)/(b-tx)"
  671. ]
  672. },
  673. {
  674. "cell_type": "code",
  675. "execution_count": 43,
  676. "metadata": {},
  677. "outputs": [],
  678. "source": [
  679. "scifi_found = found[found[\"scifi_hit_pos_x_length\"]>3]\n",
  680. "scifi_lost = lost[lost[\"scifi_hit_pos_x_length\"]>3]\n",
  681. "#should be fulfilled by all candidates\n",
  682. "\n",
  683. "scifi_x_found = scifi_found[\"scifi_hit_pos_x\"]\n",
  684. "scifi_z_found = scifi_found[\"scifi_hit_pos_z\"]\n",
  685. "\n",
  686. "tx_found = scifi_found[\"velo_track_tx\"]\n",
  687. "\n",
  688. "scifi_x_lost = scifi_lost[\"scifi_hit_pos_x\"]\n",
  689. "scifi_z_lost = scifi_lost[\"scifi_hit_pos_z\"]\n",
  690. "\n",
  691. "tx_lost = scifi_lost[\"velo_track_tx\"]\n",
  692. "\n",
  693. "xv_found = scifi_found[\"velo_track_x\"]\n",
  694. "zv_found = scifi_found[\"velo_track_z\"]\n",
  695. "\n",
  696. "xv_lost = scifi_lost[\"velo_track_x\"]\n",
  697. "zv_lost = scifi_lost[\"velo_track_z\"]\n",
  698. "\n",
  699. "\n",
  700. "\n",
  701. "sf_energy_found = ak.to_numpy(scifi_found[\"energy\"])\n",
  702. "sf_eph_found = ak.to_numpy(ak.sum(scifi_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  703. "sf_vtx_type_found = scifi_found[\"all_endvtx_types\"]\n",
  704. "\n",
  705. "\n",
  706. "sf_energy_lost = ak.to_numpy(scifi_lost[\"energy\"])\n",
  707. "sf_eph_lost = ak.to_numpy(ak.sum(scifi_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  708. "sf_vtx_type_lost = scifi_lost[\"all_endvtx_types\"]\n",
  709. "\n",
  710. "\n",
  711. "\n",
  712. "#ak.num(scifi_found[\"energy\"], axis=0)\n",
  713. "#scifi_found.snapshot()"
  714. ]
  715. },
  716. {
  717. "cell_type": "code",
  718. "execution_count": 44,
  719. "metadata": {},
  720. "outputs": [
  721. {
  722. "data": {
  723. "text/html": [
  724. "<pre>[101,\n",
  725. " 101,\n",
  726. " 101,\n",
  727. " 101,\n",
  728. " 101,\n",
  729. " 101,\n",
  730. " 101,\n",
  731. " 101,\n",
  732. " 101,\n",
  733. " 101,\n",
  734. " 0]\n",
  735. "------------------\n",
  736. "type: 11 * float32</pre>"
  737. ],
  738. "text/plain": [
  739. "<Array [101, 101, 101, 101, 101, ..., 101, 101, 101, 0] type='11 * float32'>"
  740. ]
  741. },
  742. "execution_count": 44,
  743. "metadata": {},
  744. "output_type": "execute_result"
  745. }
  746. ],
  747. "source": [
  748. "ak.num(scifi_found[\"energy\"], axis=0)\n",
  749. "scifi_found[\"all_endvtx_types\"][1,:]"
  750. ]
  751. },
  752. {
  753. "cell_type": "code",
  754. "execution_count": 45,
  755. "metadata": {},
  756. "outputs": [],
  757. "source": [
  758. "scifi_fitpars_found = ak.ArrayBuilder()\n",
  759. "vtx_types_found = ak.ArrayBuilder()\n",
  760. "\n",
  761. "for i in range(0,ak.num(scifi_found, axis=0)):\n",
  762. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]))\n",
  763. " scifi_fitpars_found.begin_list()\n",
  764. " scifi_fitpars_found.real(popt[0])\n",
  765. " scifi_fitpars_found.real(popt[1])\n",
  766. " scifi_fitpars_found.real(popt[2])\n",
  767. " scifi_fitpars_found.real(popt[3])\n",
  768. " #[:,4] -> energy \n",
  769. " scifi_fitpars_found.real(sf_energy_found[i])\n",
  770. " #[:,5] -> photon energy\n",
  771. " scifi_fitpars_found.real(sf_eph_found[i])\n",
  772. " scifi_fitpars_found.end_list()\n",
  773. " \n",
  774. " vtx_types_found.begin_list()\n",
  775. " #[:,0] -> endvtx_type\n",
  776. " vtx_types_found.extend(sf_vtx_type_found[i,:])\n",
  777. " vtx_types_found.end_list()\n",
  778. " \n",
  779. "\n",
  780. "scifi_fitpars_lost = ak.ArrayBuilder()\n",
  781. "vtx_types_lost = ak.ArrayBuilder()\n",
  782. "\n",
  783. "for i in range(0,ak.num(scifi_lost, axis=0)):\n",
  784. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]))\n",
  785. " scifi_fitpars_lost.begin_list()\n",
  786. " scifi_fitpars_lost.real(popt[0])\n",
  787. " scifi_fitpars_lost.real(popt[1])\n",
  788. " scifi_fitpars_lost.real(popt[2])\n",
  789. " scifi_fitpars_lost.real(popt[3])\n",
  790. " #[:,4] -> energy \n",
  791. " scifi_fitpars_lost.real(sf_energy_lost[i])\n",
  792. " #[:,5] -> photon energy\n",
  793. " scifi_fitpars_lost.real(sf_eph_lost[i])\n",
  794. " scifi_fitpars_lost.end_list()\n",
  795. " \n",
  796. " vtx_types_lost.begin_list()\n",
  797. " #endvtx_type\n",
  798. " vtx_types_lost.extend(sf_vtx_type_lost[i,:])\n",
  799. " vtx_types_lost.end_list()\n",
  800. " \n",
  801. "\n",
  802. "\n",
  803. "scifi_fitpars_lost = ak.to_numpy(scifi_fitpars_lost)\n",
  804. "scifi_fitpars_found = ak.to_numpy(scifi_fitpars_found)\n",
  805. "\n",
  806. "vtx_types_lost = ak.Array(vtx_types_lost)\n",
  807. "vtx_types_found = ak.Array(vtx_types_found)\n",
  808. "\n"
  809. ]
  810. },
  811. {
  812. "cell_type": "code",
  813. "execution_count": 46,
  814. "metadata": {},
  815. "outputs": [
  816. {
  817. "data": {
  818. "text/html": [
  819. "<pre>[101,\n",
  820. " 101,\n",
  821. " 101,\n",
  822. " 101,\n",
  823. " 101,\n",
  824. " 101,\n",
  825. " 101,\n",
  826. " 101,\n",
  827. " 101,\n",
  828. " 101,\n",
  829. " 0]\n",
  830. "------------------\n",
  831. "type: 11 * float64</pre>"
  832. ],
  833. "text/plain": [
  834. "<Array [101, 101, 101, 101, 101, ..., 101, 101, 101, 0] type='11 * float64'>"
  835. ]
  836. },
  837. "execution_count": 46,
  838. "metadata": {},
  839. "output_type": "execute_result"
  840. }
  841. ],
  842. "source": [
  843. "vtx_types_found[0]"
  844. ]
  845. },
  846. {
  847. "cell_type": "code",
  848. "execution_count": null,
  849. "metadata": {},
  850. "outputs": [],
  851. "source": [
  852. "\n",
  853. "\n"
  854. ]
  855. },
  856. {
  857. "cell_type": "code",
  858. "execution_count": 47,
  859. "metadata": {},
  860. "outputs": [
  861. {
  862. "data": {
  863. "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
  864. "text/plain": [
  865. "<Figure size 1800x600 with 4 Axes>"
  866. ]
  867. },
  868. "metadata": {},
  869. "output_type": "display_data"
  870. }
  871. ],
  872. "source": [
  873. "#b parameter des fits [:,1] hat für lost eine breitere Verteilung. Warum?\n",
  874. "#evtl multiple scattering candidates (lost); findet man einen gewissen endvtx_type (mult scattering)\n",
  875. "#steiler velo winkel (eta)? vertex type? evtl bremsstrahlung?\n",
  876. "\n",
  877. "#isolate b parameters for analysis\n",
  878. "b_found = scifi_fitpars_found[:,1]\n",
  879. "b_lost = scifi_fitpars_lost[:,1]\n",
  880. "\n",
  881. "brem_energy_found = scifi_fitpars_found[:,5]\n",
  882. "brem_energy_lost = scifi_fitpars_lost[:,5]\n",
  883. "\n",
  884. "\n",
  885. "bs_found, vtx_types_found = ak.broadcast_arrays(b_found, vtx_types_found)\n",
  886. "bs_found = ak.to_numpy(ak.ravel(bs_found))\n",
  887. "vtx_types_found = ak.to_numpy(ak.ravel(vtx_types_found))\n",
  888. "\n",
  889. "bs_lost, vtx_types_lost = ak.broadcast_arrays(b_lost, vtx_types_lost)\n",
  890. "bs_lost = ak.to_numpy(ak.ravel(bs_lost))\n",
  891. "vtx_types_lost = ak.to_numpy(ak.ravel(vtx_types_lost))\n",
  892. "\n",
  893. "\n",
  894. "\n",
  895. "\n",
  896. "#Erste Annahme ist Bremsstrahlung\n",
  897. "\n",
  898. "fig = plt.figure(figsize=(18,6))\n",
  899. "axes = ImageGrid(fig, 111, # similar to subplot(111)\n",
  900. " nrows_ncols=(1, 2), # creates 2x2 grid of axes\n",
  901. " axes_pad=1, # pad between axes in inch.\n",
  902. " cbar_mode=\"single\",\n",
  903. " cbar_location=\"right\",\n",
  904. " cbar_pad=0.1,\n",
  905. " aspect=False\n",
  906. " )\n",
  907. "\n",
  908. "\n",
  909. "h0 = axes[0].hist2d(b_found, brem_energy_found, bins=200, cmap=plt.cm.jet, cmin=1,vmax=30)\n",
  910. "axes[0].set_xlim(-1,1)\n",
  911. "axes[0].set_xlabel(\"b parameter [mm]\")\n",
  912. "axes[0].set_ylabel(r\"$E_{ph}$\")\n",
  913. "axes[0].set_title(\"found photon energy wrt b parameter\")\n",
  914. "\n",
  915. "h1 = axes[1].hist2d(b_lost, brem_energy_lost, bins=200, cmap=plt.cm.jet, cmin=1,vmax=30)\n",
  916. "axes[1].set_xlim(-1,1)\n",
  917. "axes[1].set_xlabel(\"b parameter [mm]\")\n",
  918. "axes[1].set_ylabel(r\"$E_{ph}$\")\n",
  919. "axes[1].set_title(\"lost photon energy wrt b parameter\")\n",
  920. "\n",
  921. "fig.colorbar(h0[3], cax=axes.cbar_axes[0], orientation='vertical')\n",
  922. "\n",
  923. "\"\"\"\n",
  924. "\"\"\"\n",
  925. "\n",
  926. "plt.show()"
  927. ]
  928. },
  929. {
  930. "cell_type": "code",
  931. "execution_count": null,
  932. "metadata": {},
  933. "outputs": [],
  934. "source": []
  935. },
  936. {
  937. "cell_type": "code",
  938. "execution_count": 48,
  939. "metadata": {},
  940. "outputs": [
  941. {
  942. "data": {
  943. "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
  944. "text/plain": [
  945. "<Figure size 1800x600 with 3 Axes>"
  946. ]
  947. },
  948. "metadata": {},
  949. "output_type": "display_data"
  950. }
  951. ],
  952. "source": [
  953. "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18,6))\n",
  954. "\n",
  955. "a0=ax[0].hist2d(bs_found, vtx_types_found, bins=110, density=True, cmap=plt.cm.jet, cmin=1e-20,vmax=2)\n",
  956. "ax[0].set_ylim(0,110)\n",
  957. "ax[0].set_xlim(-1,1)\n",
  958. "ax[0].set_xlabel(\"b\")\n",
  959. "ax[0].set_ylabel(\"endvtx id\")\n",
  960. "ax[0].set_title(\"found endvtx id wrt b parameter\")\n",
  961. "ax[0].set_yticks(np.arange(0,110,1),minor=True)\n",
  962. "\n",
  963. "a1=ax[1].hist2d(bs_lost, vtx_types_lost, bins=110, density=True, cmap=plt.cm.jet, cmin=1e-20,vmax=2)\n",
  964. "ax[1].set_ylim(0,110)\n",
  965. "ax[1].set_xlim(-1,1)\n",
  966. "ax[1].set_xlabel(\"b\")\n",
  967. "ax[1].set_ylabel(\"endvtx id\")\n",
  968. "ax[1].set_title(\"lost endvtx id wrt b paraneter\")\n",
  969. "ax[1].set_yticks(np.arange(0,110,1), minor=True)\n",
  970. "\n",
  971. "\"\"\"\n",
  972. "vtx_id: 101 - Bremsstrahlung\n",
  973. "B:\n",
  974. "wir können nicht wirklich sagen dass bei den lost teilchen jegliche endvertex types überwiegen, im gegensatz zu den found \n",
  975. "\"\"\"\n",
  976. "fig.colorbar(a0[3], ax=ax, orientation='vertical')\n",
  977. "plt.show()"
  978. ]
  979. },
  980. {
  981. "cell_type": "code",
  982. "execution_count": null,
  983. "metadata": {},
  984. "outputs": [],
  985. "source": []
  986. },
  987. {
  988. "cell_type": "code",
  989. "execution_count": 49,
  990. "metadata": {},
  991. "outputs": [
  992. {
  993. "data": {
  994. "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
  995. "text/plain": [
  996. "<Figure size 1500x1000 with 4 Axes>"
  997. ]
  998. },
  999. "metadata": {},
  1000. "output_type": "display_data"
  1001. }
  1002. ],
  1003. "source": [
  1004. "fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(15,10))\n",
  1005. "\n",
  1006. "ax0.hist(scifi_fitpars_found[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$a_x$ found\")\n",
  1007. "ax0.hist(scifi_fitpars_lost[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$a_x$ lost\")\n",
  1008. "ax0.set_xlabel(\"a\")\n",
  1009. "ax0.set_ylabel(\"normed\")\n",
  1010. "ax0.set_title(\"fitparameter a der scifi track\")\n",
  1011. "ax0.legend()\n",
  1012. "\n",
  1013. "ax1.hist(scifi_fitpars_found[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$b_x$ found\")\n",
  1014. "ax1.hist(scifi_fitpars_lost[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$b_x$ lost\")\n",
  1015. "ax1.set_xticks(np.arange(-1,1,0.1),minor=True)\n",
  1016. "ax1.set_xlabel(\"b\")\n",
  1017. "ax1.set_ylabel(\"normed\")\n",
  1018. "ax1.set_title(\"fitparameter b der scifi track\")\n",
  1019. "ax1.legend()\n",
  1020. "#evtl multiple scattering candidates (lost); findet man einen gewissen endvtx_type (mult scattering)\n",
  1021. "#steiler velo winkel (eta)? vertex type? evtl bremsstrahlung?\n",
  1022. "\n",
  1023. "\n",
  1024. "ax2.hist(scifi_fitpars_found[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$c_x$ found\")\n",
  1025. "ax2.hist(scifi_fitpars_lost[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$c_x$ lost\")\n",
  1026. "ax2.set_xlim([-3e-5,3e-5])\n",
  1027. "ax2.set_xticks(np.arange(-3e-5,3.5e-5,1e-5),minor=False)\n",
  1028. "ax2.set_xlabel(\"c\")\n",
  1029. "ax2.set_ylabel(\"normed\")\n",
  1030. "ax2.set_title(\"fitparameter c der scifi track\")\n",
  1031. "ax2.legend()\n",
  1032. "\n",
  1033. "ax3.hist(scifi_fitpars_found[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$d_x$ found\")\n",
  1034. "ax3.hist(scifi_fitpars_lost[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$d_x$ lost\")\n",
  1035. "ax3.set(xlim=(-5e-8,5e-8))\n",
  1036. "ax3.text(-4e-8,3e8,\"d negligible <1e-7\")\n",
  1037. "ax3.set_xlabel(\"d\")\n",
  1038. "ax3.set_ylabel(\"normed\")\n",
  1039. "ax3.set_title(\"fitparameter d der scifi track\")\n",
  1040. "ax3.legend()\n",
  1041. "\n",
  1042. "\"\"\"\n",
  1043. "a_x: virtual hit on the reference plane\n",
  1044. "\"\"\"\n",
  1045. "\n",
  1046. "plt.show()"
  1047. ]
  1048. },
  1049. {
  1050. "cell_type": "code",
  1051. "execution_count": null,
  1052. "metadata": {},
  1053. "outputs": [],
  1054. "source": []
  1055. },
  1056. {
  1057. "cell_type": "code",
  1058. "execution_count": null,
  1059. "metadata": {},
  1060. "outputs": [],
  1061. "source": []
  1062. },
  1063. {
  1064. "cell_type": "code",
  1065. "execution_count": null,
  1066. "metadata": {},
  1067. "outputs": [],
  1068. "source": []
  1069. },
  1070. {
  1071. "cell_type": "code",
  1072. "execution_count": null,
  1073. "metadata": {},
  1074. "outputs": [],
  1075. "source": []
  1076. },
  1077. {
  1078. "cell_type": "code",
  1079. "execution_count": null,
  1080. "metadata": {},
  1081. "outputs": [],
  1082. "source": []
  1083. }
  1084. ],
  1085. "metadata": {
  1086. "kernelspec": {
  1087. "display_name": "env1",
  1088. "language": "python",
  1089. "name": "python3"
  1090. },
  1091. "language_info": {
  1092. "codemirror_mode": {
  1093. "name": "ipython",
  1094. "version": 3
  1095. },
  1096. "file_extension": ".py",
  1097. "mimetype": "text/x-python",
  1098. "name": "python",
  1099. "nbconvert_exporter": "python",
  1100. "pygments_lexer": "ipython3",
  1101. "version": "3.11.5"
  1102. },
  1103. "orig_nbformat": 4
  1104. },
  1105. "nbformat": 4,
  1106. "nbformat_minor": 2
  1107. }