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.

1064 lines
414 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 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
12 months ago
1 year ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 50,
  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": 51,
  26. "metadata": {},
  27. "outputs": [
  28. {
  29. "data": {
  30. "text/plain": [
  31. "10522"
  32. ]
  33. },
  34. "execution_count": 51,
  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": 52,
  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": 53,
  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": 53,
  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": 54,
  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": 55,
  238. "metadata": {},
  239. "outputs": [
  240. {
  241. "data": {
  242. "text/plain": [
  243. "9056"
  244. ]
  245. },
  246. "execution_count": 55,
  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": 56,
  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": 56,
  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": 72,
  284. "metadata": {},
  285. "outputs": [
  286. {
  287. "name": "stdout",
  288. "output_type": "stream",
  289. "text": [
  290. "\n",
  291. "cutoff energy = 350MeV, sample size: 693\n",
  292. "eff = 0.9481 +/- 0.0084\n"
  293. ]
  294. }
  295. ],
  296. "source": [
  297. "#finden wir die elektronen die keine bremsstrahlung gemacht haben mit hoher effizienz?\n",
  298. "#von energie der photonen abmachen\n",
  299. "#scan ab welcher energie der photonen die effizienz abfällt\n",
  300. "\n",
  301. "#abhängigkeit vom ort der emission untersuchen <- noch nicht gemacht\n",
  302. "\n",
  303. "\n",
  304. "\n",
  305. "#idea: we make an event cut st all events that contain a photon of energy > cutoff_energy are not included\n",
  306. "\"\"\"\n",
  307. "ph_e = acc_brem_found[\"brem_photons_pe\"]\n",
  308. "event_cut = ak.all(ph_e<cutoff_energy,axis=1)\n",
  309. "ph_e = ph_e[event_cut]\n",
  310. "\"\"\"\n",
  311. "\n",
  312. "efficiencies_found = []\n",
  313. "deff_found = []\n",
  314. "\n",
  315. "\n",
  316. "for cutoff_energy in range(0,10050,200):\n",
  317. "\tnobrem_f = acc_brem_found[ak.sum(acc_brem_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  318. "\tnobrem_l = acc_brem_lost[ak.sum(acc_brem_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  319. "\n",
  320. "\tif ak.num(nobrem_f,axis=0)+ak.num(nobrem_l,axis=0)==0:\n",
  321. "\t\tefficiencies_found.append(0)\n",
  322. "\t\tdeff_found.append(0)\n",
  323. "\t\tcontinue\n",
  324. "\t\n",
  325. "\teff = t_eff(nobrem_f, nobrem_l)\n",
  326. "\tdeff = eff_err(nobrem_f,nobrem_l)\n",
  327. "\tefficiencies_found.append(eff)\n",
  328. "\tdeff_found.append(deff)\n",
  329. "\t#print(\"cutoff = \",str(cutoff_energy) ,\"MeV, sample size: \",ak.num(nobrem_f,axis=0)+ak.num(nobrem_l,axis=0))\n",
  330. "\t#print(\"eff = \",np.round(t_eff(nobrem_f,nobrem_l),4), \"+/-\", np.round(eff_err(nobrem_f, nobrem_l),4))\n",
  331. "\n",
  332. "\"\"\"\n",
  333. "we see that a cutoff energy of xxxMeV is ideal because the efficiency drops significantly for higher values\n",
  334. "\"\"\"\n",
  335. "cutoff_energy = 350.0 #MeV\n",
  336. "\n",
  337. "\"\"\"\n",
  338. "better statistics: cutoff=xxxMeV - sample size: xxx events and efficiency=xxxx\n",
  339. "\"\"\"\n",
  340. "nobrem_found = acc_brem_found[ak.sum(acc_brem_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  341. "nobrem_lost = acc_brem_lost[ak.sum(acc_brem_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  342. "\n",
  343. "print(\"\\ncutoff energy = 350MeV, sample size:\",ak.num(nobrem_found,axis=0)+ak.num(nobrem_lost,axis=0))\n",
  344. "print(\"eff = \",np.round(t_eff(nobrem_found, nobrem_lost),4), \"+/-\", np.round(eff_err(nobrem_found, nobrem_lost),4))"
  345. ]
  346. },
  347. {
  348. "cell_type": "code",
  349. "execution_count": 80,
  350. "metadata": {},
  351. "outputs": [
  352. {
  353. "data": {
  354. "image/png": "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
  355. "text/plain": [
  356. "<Figure size 640x480 with 1 Axes>"
  357. ]
  358. },
  359. "metadata": {},
  360. "output_type": "display_data"
  361. }
  362. ],
  363. "source": [
  364. "x_ = np.arange(0,10050,step=200)\n",
  365. "\n",
  366. "plt.errorbar(x_,efficiencies_found, yerr=deff_found, ls=\"\", capsize=1,fmt=\".\")\t\n",
  367. "plt.xlabel(\"cutoff energy [MeV]\")\n",
  368. "plt.ylabel(r\"$\\epsilon$\")\n",
  369. "plt.title(r'$B\\rightarrow K^\\ast ee$, $p>5$GeV, photons w/ brem_vtx_z$<9500$mm')\n",
  370. "plt.ylim([0.8,1])\n",
  371. "plt.xlim([0,10100])\n",
  372. "plt.yticks(np.arange(0.8,1.01,step=0.02),minor=False)\n",
  373. "plt.xticks(np.arange(0,10100,step=200),minor=True)\n",
  374. "plt.grid()\n",
  375. "plt.show()"
  376. ]
  377. },
  378. {
  379. "cell_type": "code",
  380. "execution_count": null,
  381. "metadata": {},
  382. "outputs": [],
  383. "source": []
  384. },
  385. {
  386. "cell_type": "code",
  387. "execution_count": 25,
  388. "metadata": {},
  389. "outputs": [
  390. {
  391. "name": "stdout",
  392. "output_type": "stream",
  393. "text": [
  394. "eff = 0.8545 +/- 0.0036\n"
  395. ]
  396. },
  397. {
  398. "data": {
  399. "text/html": [
  400. "<pre>[{energy: 2.58e+04, brem_photons_pe: [9.97e+03, ...], brem_vtx_z: [...]},\n",
  401. " {energy: 8.03e+04, brem_photons_pe: [4.91e+03, ...], brem_vtx_z: [...]},\n",
  402. " {energy: 5.6e+03, brem_photons_pe: [320, ..., 392], brem_vtx_z: [...]},\n",
  403. " {energy: 6.36e+03, brem_photons_pe: [273, ...], brem_vtx_z: [...]},\n",
  404. " {energy: 4.67e+04, brem_photons_pe: [8.96e+03, ...], brem_vtx_z: [...]},\n",
  405. " {energy: 7.16e+04, brem_photons_pe: [544, ..., 142], brem_vtx_z: [...]},\n",
  406. " {energy: 5.15e+04, brem_photons_pe: [384, ...], brem_vtx_z: [...]},\n",
  407. " {energy: 4.07e+04, brem_photons_pe: [2.7e+04, ...], brem_vtx_z: [...]},\n",
  408. " {energy: 2.77e+04, brem_photons_pe: [2.24e+03, ...], brem_vtx_z: [...]},\n",
  409. " {energy: 6.4e+04, brem_photons_pe: [686, ..., 796], brem_vtx_z: [...]},\n",
  410. " ...,\n",
  411. " {energy: 5.59e+03, brem_photons_pe: [901, ...], brem_vtx_z: [...]},\n",
  412. " {energy: 2.13e+04, brem_photons_pe: [787, ...], brem_vtx_z: [...]},\n",
  413. " {energy: 9.34e+03, brem_photons_pe: [762, ...], brem_vtx_z: [...]},\n",
  414. " {energy: 5.08e+04, brem_photons_pe: [711, ...], brem_vtx_z: [...]},\n",
  415. " {energy: 6.41e+04, brem_photons_pe: [4.17e+03, ...], brem_vtx_z: [...]},\n",
  416. " {energy: 1.01e+04, brem_photons_pe: [220, ..., 156], brem_vtx_z: [...]},\n",
  417. " {energy: 1.96e+04, brem_photons_pe: [1.66e+03, ...], brem_vtx_z: [...]},\n",
  418. " {energy: 2.98e+04, brem_photons_pe: [8.32e+03, ...], brem_vtx_z: [...]},\n",
  419. " {energy: 3.97e+04, brem_photons_pe: [9.36e+03, ...], brem_vtx_z: [...]}]\n",
  420. "-------------------------------------------------------------------------\n",
  421. "type: 1430 * {\n",
  422. " energy: float64,\n",
  423. " brem_photons_pe: var * float64,\n",
  424. " brem_vtx_z: var * float64\n",
  425. "}</pre>"
  426. ],
  427. "text/plain": [
  428. "<Array [{energy: 2.58e+04, ...}, ..., {...}] type='1430 * {energy: float64,...'>"
  429. ]
  430. },
  431. "execution_count": 25,
  432. "metadata": {},
  433. "output_type": "execute_result"
  434. }
  435. ],
  436. "source": [
  437. "#wie viel energie relativ zur anfangsenergie verlieren die elektronen durch bremstrahlung und hat das einen einfluss darauf ob wir sie finden oder nicht?\n",
  438. "#if any photon of an electron has an energy higher the cutoff then it is included\n",
  439. "cutoff_energy=350\n",
  440. "\n",
  441. "brem_found = acc_brem_found[ak.sum(acc_brem_found[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n",
  442. "energy_found = ak.to_numpy(brem_found[\"energy\"])\n",
  443. "eph_found = ak.to_numpy(ak.sum(brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  444. "residual_found = energy_found - eph_found\n",
  445. "energyloss_found = eph_found/energy_found\n",
  446. "\n",
  447. "brem_lost = acc_brem_lost[ak.sum(acc_brem_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n",
  448. "energy_lost = ak.to_numpy(brem_lost[\"energy\"])\n",
  449. "eph_lost = ak.to_numpy(ak.sum(brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  450. "residual_lost = energy_lost - eph_lost\n",
  451. "energyloss_lost = eph_lost/energy_lost\n",
  452. "\n",
  453. "print(\"eff = \", np.round(t_eff(brem_found,brem_lost),4), \"+/-\", np.round(eff_err(brem_found, brem_lost),4))\n",
  454. "brem_lost"
  455. ]
  456. },
  457. {
  458. "cell_type": "code",
  459. "execution_count": 26,
  460. "metadata": {},
  461. "outputs": [
  462. {
  463. "name": "stdout",
  464. "output_type": "stream",
  465. "text": [
  466. "mean energyloss relative to initial energy (found): 0.40459562244424735\n",
  467. "mean energyloss relative to initial energy (lost): 0.7244570697471976\n"
  468. ]
  469. }
  470. ],
  471. "source": [
  472. "mean_energyloss_found = ak.mean(energyloss_found)\n",
  473. "mean_energyloss_lost = ak.mean(energyloss_lost)\n",
  474. "print(\"mean energyloss relative to initial energy (found): \", mean_energyloss_found)\n",
  475. "print(\"mean energyloss relative to initial energy (lost): \", mean_energyloss_lost)"
  476. ]
  477. },
  478. {
  479. "cell_type": "code",
  480. "execution_count": 27,
  481. "metadata": {},
  482. "outputs": [
  483. {
  484. "data": {
  485. "image/png": "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
  486. "text/plain": [
  487. "<Figure size 640x480 with 1 Axes>"
  488. ]
  489. },
  490. "metadata": {},
  491. "output_type": "display_data"
  492. }
  493. ],
  494. "source": [
  495. "#in abhängigkeit von der energie der elektronen\n",
  496. "plt.hist(energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
  497. "plt.hist(energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  498. "plt.xticks(np.arange(0,1.1,0.1), minor=True,)\n",
  499. "plt.yticks(np.arange(0,5.5,0.5), minor=True)\n",
  500. "plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
  501. "plt.ylabel(\"counts (normed)\")\n",
  502. "plt.title(r'$E_{ph}/E_0$')\n",
  503. "plt.legend()\n",
  504. "plt.grid()\n",
  505. "\n",
  506. "\"\"\"\n",
  507. "\n",
  508. "\"\"\"\n",
  509. "\n",
  510. "plt.show()"
  511. ]
  512. },
  513. {
  514. "cell_type": "code",
  515. "execution_count": 28,
  516. "metadata": {},
  517. "outputs": [
  518. {
  519. "data": {
  520. "image/png": "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vSbHcbR69ep8P5+T7pdffqkrrrhCSUlJ8ng8uvbaa7V79+48P7Nz506/ebQt8z333CNJql69uvcWPB9++GFQ6m337t266aabVLlyZcXGxqps2bJq1aqVli1blm/9bNy4UY7jaO7cud5ja9euleM4qlevnk/YXr16+ezsMsborbfe0pVXXplv/CfaunWr3zbwN17b9PdgjteSNH/+fDmOo/fffz/Xey+88IIcx9EVV1yRb9sfOnRIjRs31rnnnuvThjt27FCFChXUtm1bZWdnW+Ulv9s8ncrt3NLT0/XKK6+oY8eOOuecc/Tzzz/nGe7TTz9V27ZtfRabEhMTdemll+qzzz7T9u3bA0o3x1tvvaXixYurT58+PsdTUlL0+++/6/PPPw8onFT4vhDsvgQAAE5iAAAAQiw1NdUUKVLEDB482CxatMj8+9//Ng0aNDCVK1c2+/btC0qaP/74o3n++eeNJDNmzBizcuVKs3HjRpOammokmapVq5r77rvPLF261MyfP98YY8yHH35oihYtapo0aWLmzJlj5s+fbzp37mwcxzGzZ8/2KY8kU7t2bfPYY4+ZpUuXmnvvvddIMrfffrs5//zzzb/+9S+zdOlSk5KSYiSZefPm+c3zH3/8YSSZoUOHmqNHj5qjR4+anTt3mtdee80kJiaaG2644ZTro3///qZo0aLmrbfe8pv+VVddZdq3b29iY2PNlClT/Ma9detWs3DhQmOMMbfddptJS0szWVlZZtq0aebIkSP5fs62XwSj/1SsWNEkJCSYOnXqmOnTp5slS5aYq6++2kjKt8wHDx40r7/+uunZs6eJiYkxcXFxpnfv3mbevHnm0KFDVul+8MEHRpIpV66ciYqKMomJiaZz587m448/9obJysoy8fHxpkWLFgGVaePGjcbj8ZgGDRqY1157zSxZssQMHz7cFClSxIwcOdIn7A8//GAcxzHDhg3LFYckc//99weUdo5TOYceffRRs3TpUvPMM8+Y2NhYk5KS4g2XlpZmJJnNmzd7jzVu3Ni0atUqV9oXXXSRueiiiwrM34nn/z333GPee+8988wzz5iEhATTuHFjn/5qm0fbMm/dutXccccdRpJ58803zcqVK83KlStNRkaG6/VmjDFdunQxZcuWNS+99JL58MMPzfz5882jjz7qE19eKlasaG666Sbvv8eNG2fi4+ONJPPbb78ZY4w5evSoSUpKMvfee6833CeffGIkme+//971NshrvLbt78Ear3McPXrUlCtXzlxzzTW53rv44ovNhRdeWGDbG2PM999/bxITE80VV1xhjDEmOzvbtG/f3pQrV878/vvv1nnJiTfntXz5clOpUiVToUIFb1oFOXDggJk9e7bp1auXiYmJMfHx8ebKK680c+fONYcPH87zMzExMea6667Ldbxfv35Gknnvvfe8x2zGvxzNmzfP83z+5ptvjCTz4osvBhTOmML3hWD3JQAA4IuFDQAAEFILFy40ksz48eN9jn///fdGkpkxY0auz3Tt2tUkJCTk+Ro9erR12jk/osydO9d7LOeHiUcffTRX+ObNm5ty5cr5/FielZVl6tevb8455xxz7Ngxnziefvppn883atTI+8NVjqNHj5qyZct6f7AqyJIlS4ykXK/o6Gjz+OOPW5c7L1lZWX4XN05MPy4
  521. "text/plain": [
  522. "<Figure size 2000x600 with 3 Axes>"
  523. ]
  524. },
  525. "metadata": {},
  526. "output_type": "display_data"
  527. }
  528. ],
  529. "source": [
  530. "#energyloss in abh von der energie der elektronen\n",
  531. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  532. "\n",
  533. "a0=ax0.hist2d(energyloss_found, energy_found, bins=(np.linspace(0,1,70), np.linspace(0,5e4,70)), cmap=plt.cm.jet, cmin=1, vmax=10)\n",
  534. "ax0.set_ylim(0,5e4)\n",
  535. "ax0.set_xlim(0,1)\n",
  536. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  537. "ax0.set_ylabel(r\"$E_0$\")\n",
  538. "ax0.set_title(\"found energyloss wrt electron energy\")\n",
  539. "\n",
  540. "a1=ax1.hist2d(energyloss_lost, energy_lost, bins=(np.linspace(0,1,70), np.linspace(0,5e4,70)), cmap=plt.cm.jet, cmin=1, vmax=10) \n",
  541. "ax1.set_ylim(0,5e4)\n",
  542. "ax1.set_xlim(0,1)\n",
  543. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  544. "ax1.set_ylabel(r\"$E_0$\")\n",
  545. "ax1.set_title(\"lost energyloss wrt electron energy\")\n",
  546. "\n",
  547. "fig.colorbar(a1[3],ax=ax1)\n",
  548. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, only photons w/ brem_vtx_z$<9500$mm\")\n",
  549. "\n",
  550. "\"\"\"\n",
  551. "we can see that high energy electrons are often found even though they emit a lot of their energy through bremsstrahlung\n",
  552. "\"\"\"\n",
  553. "plt.show()"
  554. ]
  555. },
  556. {
  557. "cell_type": "code",
  558. "execution_count": 29,
  559. "metadata": {},
  560. "outputs": [
  561. {
  562. "data": {
  563. "image/png": "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srRp06Zs989Id+vWrbruuusUGRkpl8ulW265RQcPHsxyn/3793vNo90yP/jgg5Kk6tWrux/N88UXXxRIvR08eFB33HGHKleurJCQEJUrV06tW7fWqlWrsq2f7du3y7Isffjhh+5tmzdvlmVZatCggUfYnj17esz0MsZo4cKFuv7667ON/1x79uzx2gbeztd2+ntBnq8ladGiRbIsS59//nmm915//XVZlqXrrrsu27Y/deqUmjZtqosvvtijDRMTExUTE6O2bdsqLS3NVl6ye/xTXh7zlpSUpHfeeUcdOnTQRRddpN9//z3LcN98843atm3rMegUERGhq666SuvWrdO+fftylW6GhQsXqlSpUurbt6/H9kGDBumvv/7St99+m6twUv77QkH3JQAAcB4DAADgJxISEkyJEiXM4MGDzdKlS82//vUv06hRI1O5cmVz7NixAknzt99+M6+++qqRZMaPH2/Wr19vtm/fbhISEowkU7VqVfPwww+blStXmkWLFhljjPniiy9MUFCQadasmXn//ffNokWLTKdOnYxlWWb+/Pke5ZFk6tSpY55++mmzcuVK89BDDxlJ5p577jF169Y1L7/8slm5cqUZNGiQkWQWLFjgNc9///23kWSGDx9uUlJSTEpKitm/f7957733TEREhLntttvyXB/9+/c3QUFBZuHChV7Tv/HGG83VV19tQkJCzLRp07zGvWfPHrN48WJjjDF33323mT59uklNTTUzZswwZ86cyXY/u/2iIPpPxYoVTXh4uKlXr56ZNWuWWbFihbnpppuMpGzLfPLkSTNnzhzTo0cPExwcbEJDQ02fPn3MggULzKlTp2ylu2bNGiPJlC9f3gQEBJiIiAjTqVMn89VXX7nDpKammrCwMNOyZctclWn79u3G5XKZRo0amffee8+sWLHCjBw50pQoUcKMGTPGI+yvv/5qLMsyI0aMyBSHJPPII4/kKu0MeTmGRo8ebVauXGleeOEFExISYgYNGuQON336dCPJ7Ny5072tadOmpnXr1pnSvuyyy8xll12WY/7OPf4ffPBB89lnn5kXXnjBhIeHm6ZNm3r0V7t5tFvmPXv2mHvvvddIMh999JFZv369Wb9+vUlOTna83owxpnPnzqZcuXLmrbfeMl988YVZtGiRGT16tEd8WalYsaK544473H8/++yzJiwszEgyf/75pzHGmJSUFBMZGWkeeughd7ivv/7aSDI7duxwvA2yOl/b7e8Fdb7OkJKSYsqXL29uvvnmTO9dfvnl5pJLLsmx7Y0xZseOHSYiIsJcd911xhhj0tLSzNVXX23Kly9v/vrrL9t5yYg347V69WpTqVIlExMT404rJydOnDDz5883PXv2NMHBwSYsLMxcf/315sMPPzSnT5/Ocp/g4GBz6623Ztrer18/I8l89tln7m12zn8ZWrRokeXx/OOPPxpJ5s0338xVOGPy3xcKui8BAABPDHAAAAC/sHjxYiPJTJw40WP7jh07jCQze/bsTPt06dLFhIeHZ/l65plnbKed8WXKhx9+6N6W8QXF6NGjM4Vv0aKFKV++vMeX5qmpqaZhw4bmoosuMunp6R5xTJ482WP/Jk2auL/AypCSkmLKlSvn/uIqJytWrDCSMr0CAwPNuHHjbJc7K6mpqV4HOc5NPzQ01GzYsCH
  564. "text/plain": [
  565. "<Figure size 2000x600 with 3 Axes>"
  566. ]
  567. },
  568. "metadata": {},
  569. "output_type": "display_data"
  570. }
  571. ],
  572. "source": [
  573. "#plot residual energy against energyloss and try to find a good split (eg energyloss before and after the magnet)\n",
  574. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  575. "\n",
  576. "a0=ax0.hist2d(energyloss_found, residual_found, bins=(np.linspace(0,1,80), np.linspace(0,6e4,80)), cmap=plt.cm.jet, cmin=1, vmax=15)\n",
  577. "ax0.set_ylim(0,6e4)\n",
  578. "ax0.set_xlim(0,1)\n",
  579. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  580. "ax0.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  581. "ax0.set_title(\"found energyloss wrt residual electron energy\")\n",
  582. "\n",
  583. "a1=ax1.hist2d(energyloss_lost, residual_lost, bins=(np.linspace(0,1,80), np.linspace(0,6e4,80)), cmap=plt.cm.jet, cmin=1, vmax=15) \n",
  584. "ax1.set_ylim(0,6e4)\n",
  585. "ax1.set_xlim(0,1)\n",
  586. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  587. "ax1.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  588. "ax1.set_title(\"lost energyloss wrt residual electron energy\")\n",
  589. "\n",
  590. "fig.colorbar(a1[3],ax=ax1)\n",
  591. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, only photons w/ brem_vtx_z$<9500$mm\")\n",
  592. "\n",
  593. "\"\"\"\n",
  594. "\"\"\"\n",
  595. "plt.show()"
  596. ]
  597. },
  598. {
  599. "cell_type": "code",
  600. "execution_count": null,
  601. "metadata": {},
  602. "outputs": [],
  603. "source": []
  604. },
  605. {
  606. "cell_type": "code",
  607. "execution_count": 30,
  608. "metadata": {},
  609. "outputs": [],
  610. "source": [
  611. "#ist die shape der teilspur im scifi anders? (koenntest du zum beispiel durch vergleich der verteilungen der fit parameter studieren,\n",
  612. "#in meiner thesis findest du das fitmodell -- ist einfach ein polynom dritten grades)\n",
  613. "z_ref=8520 #mm\n",
  614. "\n",
  615. "def scifi_track(z, a, b, c, d):\n",
  616. " return a + b*(z-z_ref) + c*(z-z_ref)**2 + d*(z-z_ref)**3\n",
  617. "\n",
  618. "def z_mag(xv, zv, tx, a, b):\n",
  619. " \"\"\" optical centre of the magnet is defined as the intersection between the trajectory tangents before and after the magnet\n",
  620. "\n",
  621. " Args:\n",
  622. " xv (double): velo x track\n",
  623. " zv (double): velo z track\n",
  624. " tx (double): velo x slope\n",
  625. " a (double): ax parameter of track fit\n",
  626. " b (double): bx parameter of track fit\n",
  627. "\n",
  628. " Returns:\n",
  629. " double: z_mag\n",
  630. " \"\"\"\n",
  631. " return (xv-tx*zv-a+b*z_ref)/(b-tx)"
  632. ]
  633. },
  634. {
  635. "cell_type": "code",
  636. "execution_count": 31,
  637. "metadata": {},
  638. "outputs": [],
  639. "source": [
  640. "scifi_found = found[found[\"scifi_hit_pos_x_length\"]>3]\n",
  641. "scifi_lost = lost[lost[\"scifi_hit_pos_x_length\"]>3]\n",
  642. "#should be fulfilled by all candidates\n",
  643. "\n",
  644. "scifi_x_found = scifi_found[\"scifi_hit_pos_x\"]\n",
  645. "scifi_z_found = scifi_found[\"scifi_hit_pos_z\"]\n",
  646. "\n",
  647. "tx_found = scifi_found[\"velo_track_tx\"]\n",
  648. "\n",
  649. "scifi_x_lost = scifi_lost[\"scifi_hit_pos_x\"]\n",
  650. "scifi_z_lost = scifi_lost[\"scifi_hit_pos_z\"]\n",
  651. "\n",
  652. "tx_lost = scifi_lost[\"velo_track_tx\"]\n",
  653. "\n",
  654. "xv_found = scifi_found[\"velo_track_x\"]\n",
  655. "zv_found = scifi_found[\"velo_track_z\"]\n",
  656. "\n",
  657. "xv_lost = scifi_lost[\"velo_track_x\"]\n",
  658. "zv_lost = scifi_lost[\"velo_track_z\"]\n",
  659. "\n",
  660. "\n",
  661. "\n",
  662. "sf_energy_found = ak.to_numpy(scifi_found[\"energy\"])\n",
  663. "sf_eph_found = ak.to_numpy(ak.sum(scifi_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  664. "sf_vtx_type_found = scifi_found[\"all_endvtx_types\"]\n",
  665. "\n",
  666. "\n",
  667. "sf_energy_lost = ak.to_numpy(scifi_lost[\"energy\"])\n",
  668. "sf_eph_lost = ak.to_numpy(ak.sum(scifi_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  669. "sf_vtx_type_lost = scifi_lost[\"all_endvtx_types\"]\n",
  670. "\n",
  671. "\n",
  672. "\n",
  673. "#ak.num(scifi_found[\"energy\"], axis=0)\n",
  674. "#scifi_found.snapshot()"
  675. ]
  676. },
  677. {
  678. "cell_type": "code",
  679. "execution_count": 32,
  680. "metadata": {},
  681. "outputs": [
  682. {
  683. "data": {
  684. "text/html": [
  685. "<pre>[101,\n",
  686. " 101,\n",
  687. " 101,\n",
  688. " 101,\n",
  689. " 101,\n",
  690. " 101,\n",
  691. " 101,\n",
  692. " 101,\n",
  693. " 101,\n",
  694. " 101,\n",
  695. " 0]\n",
  696. "------------------\n",
  697. "type: 11 * float32</pre>"
  698. ],
  699. "text/plain": [
  700. "<Array [101, 101, 101, 101, 101, ..., 101, 101, 101, 0] type='11 * float32'>"
  701. ]
  702. },
  703. "execution_count": 32,
  704. "metadata": {},
  705. "output_type": "execute_result"
  706. }
  707. ],
  708. "source": [
  709. "ak.num(scifi_found[\"energy\"], axis=0)\n",
  710. "scifi_found[\"all_endvtx_types\"][1,:]"
  711. ]
  712. },
  713. {
  714. "cell_type": "code",
  715. "execution_count": 40,
  716. "metadata": {},
  717. "outputs": [],
  718. "source": [
  719. "scifi_fitpars_found = ak.ArrayBuilder()\n",
  720. "vtx_types_found = ak.ArrayBuilder()\n",
  721. "\n",
  722. "for i in range(0,ak.num(scifi_found, axis=0)):\n",
  723. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_found[i,:]),ak.to_numpy(scifi_x_found[i,:]))\n",
  724. " scifi_fitpars_found.begin_list()\n",
  725. " scifi_fitpars_found.real(popt[0])\n",
  726. " scifi_fitpars_found.real(popt[1])\n",
  727. " scifi_fitpars_found.real(popt[2])\n",
  728. " scifi_fitpars_found.real(popt[3])\n",
  729. " #[:,4] -> energy \n",
  730. " scifi_fitpars_found.real(sf_energy_found[i])\n",
  731. " #[:,5] -> photon energy\n",
  732. " scifi_fitpars_found.real(sf_eph_found[i])\n",
  733. " scifi_fitpars_found.end_list()\n",
  734. " \n",
  735. " vtx_types_found.begin_list()\n",
  736. " #[:,0] -> endvtx_type\n",
  737. " vtx_types_found.extend(sf_vtx_type_found[i,:])\n",
  738. " vtx_types_found.end_list()\n",
  739. " \n",
  740. "\n",
  741. "scifi_fitpars_lost = ak.ArrayBuilder()\n",
  742. "vtx_types_lost = ak.ArrayBuilder()\n",
  743. "\n",
  744. "for i in range(0,ak.num(scifi_lost, axis=0)):\n",
  745. " popt, pcov = curve_fit(scifi_track,ak.to_numpy(scifi_z_lost[i,:]),ak.to_numpy(scifi_x_lost[i,:]))\n",
  746. " scifi_fitpars_lost.begin_list()\n",
  747. " scifi_fitpars_lost.real(popt[0])\n",
  748. " scifi_fitpars_lost.real(popt[1])\n",
  749. " scifi_fitpars_lost.real(popt[2])\n",
  750. " scifi_fitpars_lost.real(popt[3])\n",
  751. " #[:,4] -> energy \n",
  752. " scifi_fitpars_lost.real(sf_energy_lost[i])\n",
  753. " #[:,5] -> photon energy\n",
  754. " scifi_fitpars_lost.real(sf_eph_lost[i])\n",
  755. " scifi_fitpars_lost.end_list()\n",
  756. " \n",
  757. " vtx_types_lost.begin_list()\n",
  758. " #endvtx_type\n",
  759. " vtx_types_lost.extend(sf_vtx_type_lost[i,:])\n",
  760. " vtx_types_lost.end_list()\n",
  761. " \n",
  762. "\n",
  763. "\n",
  764. "scifi_fitpars_lost = ak.to_numpy(scifi_fitpars_lost)\n",
  765. "scifi_fitpars_found = ak.to_numpy(scifi_fitpars_found)\n",
  766. "\n",
  767. "vtx_types_lost = ak.Array(vtx_types_lost)\n",
  768. "vtx_types_found = ak.Array(vtx_types_found)\n",
  769. "\n"
  770. ]
  771. },
  772. {
  773. "cell_type": "code",
  774. "execution_count": 34,
  775. "metadata": {},
  776. "outputs": [
  777. {
  778. "data": {
  779. "text/html": [
  780. "<pre>[101,\n",
  781. " 101,\n",
  782. " 101,\n",
  783. " 101,\n",
  784. " 101,\n",
  785. " 101,\n",
  786. " 101,\n",
  787. " 101,\n",
  788. " 101,\n",
  789. " 101,\n",
  790. " 0]\n",
  791. "------------------\n",
  792. "type: 11 * float64</pre>"
  793. ],
  794. "text/plain": [
  795. "<Array [101, 101, 101, 101, 101, ..., 101, 101, 101, 0] type='11 * float64'>"
  796. ]
  797. },
  798. "execution_count": 34,
  799. "metadata": {},
  800. "output_type": "execute_result"
  801. }
  802. ],
  803. "source": [
  804. "vtx_types_found[0]"
  805. ]
  806. },
  807. {
  808. "cell_type": "code",
  809. "execution_count": null,
  810. "metadata": {},
  811. "outputs": [],
  812. "source": [
  813. "\n",
  814. "\n"
  815. ]
  816. },
  817. {
  818. "cell_type": "code",
  819. "execution_count": 49,
  820. "metadata": {},
  821. "outputs": [
  822. {
  823. "data": {
  824. "image/png": "iVBORw0KGgoAAAANSUhEUgAABbEAAAIhCAYAAABwh/ftAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACuWElEQVR4nOzde3xUxf3/8feSkBAiWRMwhCgCKiIIKEWL4AUQuSlitWprFMG2SouIKKhVi4IKFEXUivef9crF9qt4QUVQAaWgIogUa7W2iFRFLAkJUExIMr8/aFaXnDns5WT3bPb1fDz28ZA558zMuezu7Dj5fALGGCMAAAAAAAAAAHyoSbI7AAAAAAAAAACADZPYAAAAAAAAAADfYhIbAAAAAAAAAOBbTGIDAAAAAAAAAHyLSWwAAAAAAAAAgG8xiQ0AAAAAAAAA8C0msQEAAAAAAAAAvsUkNgAAAAAAAADAt5jEBgAAAAAAAAD4FpPYAPTMM8/o6KOPVk5OjgKBgNatW5fsLjmaPHmyAoGAZ/V9/vnnCgQCmjlzpmd1rly5UpMnT9b27ds9qxPJ89VXX2ny5MkRvycef/xxBQIBvf/++w3bsUZs2rRpev7555PdDQBAGqj73v78888bpP77779fjz/+uOf1NsR4Y+7cubr77rs9qw/JFe1vklGjRumAAw5o2E41YtH+ZgAQGyaxgTT37bffasSIETr88MO1aNEirVq1SkceeWSyu5WyVq5cqSlTpjCJ3Uh89dVXmjJlCgPSBGISGwDQWDTUJHZDYBK7ceE3SWLxmwFIjMxkdwBAcn366afas2ePLrroIvXt2zfZ3UEjY4zRd999p5ycnGR3JSo1NTWqrq5OdjcazH//+181b9482d1ImLr7mZ2dneyuAACAFLBnzx4FAgFlZqbWlMnu3bvVrFmzZHejwezevTvlflfEo+5+evnXyEAqYyU2kMZGjRqlk046SZL0s5/9TIFAQP369Qttf/HFF9W7d281b95cLVq00MCBA7Vq1ap6dbRv375e3U6hPwKBgMaOHaunnnpKnTt3VvPmzXXMMcdo4cKF9Y5/+eWXdeyxxyo7O1sdOnSIKuRHv3791LVrV7399ts64YQTlJOTo4MPPliTJk1STU2N4zGzZs1Shw4ddMABB6h3795655136u2zv+sxefJkXXPNNZKkDh06KBAIKBAIaNmyZZKk2tpa3X777TrqqKOUnZ2twsJCXXzxxfr3v//t2P/Vq1fr5JNPVvPmzXXYYYfp97//vWpra/d7/sYY3X///Tr22GOVk5Oj/Px8nXvuufrXv/4VczsVFRWaOHGiOnTooKysLB188MEaP368du3aFbZf3T1+8MEH1blzZ2VnZ+uJJ56QJK1YsUK9e/dWs2bNQvfj//2//xf2Z7y//OUvVVBQoP/+97/1zuvUU0/V0UcfbT3v++67T02aNNHWrVtDZXfeeacCgYAuv/zyUFltba3y8/M1YcIESd+Hlbn99tt12223qUOHDsrOztbSpUt1/PHHS5IuueSS0P2cPHnyfu6AVFZWpksuuUQFBQXKzc3VmWeeWe/6O6l733zwwQc655xzlJeXp2AwqIsuukjffvtt2L7PPPOMBg0apDZt2ignJ0edO3fWb3/723r3pO7PQ//6179q0KBBatGihQYMGCBJWrJkic466ywdcsghatasmY444giNHj1a//nPfxz7tX79ep133nkKBoMqKCjQ1Vdfrerqan3yyScaMmSIWrRoofbt2+v222+vd26RPEOBQEC7du3SE088EbreP/xM2rJli0aPHq1DDjlEWVlZ6tChg6ZMmRL2Pxzc7icAAJH44x//qGOOOUbNmjVTQUGBzj77bH388cdh+/zrX//Sz3/+cxUXFys7O1utW7fWgAEDQisx27dvr48++kjLly8Pfac5jZl/qG4c9dBDD+nII49Udna2unTpovnz5zvuv2PHDv3mN79Rq1at1LJlS51zzjn66quvwvaJZPzZr18/vfzyy9q0aVOorz8cx5eWlmrMmDE6+OCDlZWVpcMOO0w33nijKisrHfsfyVjfSbTjzUja+cc//qGSkhIVFhYqOztbnTt31n333Re2z7JlyxQIBPTUU09pwoQJOvjgg5Wdna3PPvtMkvTII4+E3Y+5c+eG/QYyxqhjx44aPHhwvfZ37typYDAYNhbd13nnnVdvjHvmmWcqEAjoz3/+c6hs7dq1CgQCeumllyR9H1Zm8eLF+sUvfqGDDjpIzZs31/XXX+/6m8TNRx99pAEDBig3N1cHHXSQxo4d6zgu31c0v7+mTJmiXr16qaCgQHl5efrRj36kRx99VMaYsP3at2+vYcOG6bnnnlOPHj3UrFkzTZkyRdLecf8pp5yiwsJC5ebmqlu3brr99tu1Z88ex36tWrVKffr0UU5Ojtq3b6/HHntM0t7fnD/60Y/UvHlzdevWTYsWLap3bvt7hpYtW7bf3wzvv/++hg8froKCAjVr1kw9evTQn/70p7B2bPdz3/cZkNYMgLT12Wefmfvuu89IMtOmTTOrVq0yH330kTHGmDlz5hhJZtCgQeb55583zzzzjOnZs6fJysoyb7/9dqiOkSNHmnbt2tWr++abbzb7fsRIMu3btzc//vGPzZ/+9CfzyiuvmH79+pnMzEzzz3/+M7Tf66+/bjIyMsxJJ51knnvuOfPnP//ZHH/88ebQQw+tV6eTvn37mpYtW5ri4mLzhz/8wbz22mtm3LhxRpK5/PLLQ/tt3Lgx1KchQ4aY559/3jz//POmW7duJj8/32zfvj20byTXY/PmzeaKK64wksxzzz1nVq1aZVatWmXKy8uNMcZcdtllRpIZO3asWbRokXnwwQfNQQcdZNq2bWu+/fbbev3v2LGjefDBB82SJUvMmDFjjCTzxBNP7Pf8L730UtO0aVMzYcIEs2jRIjN37lxz1FFHmdatW5stW7ZE3c6uXbvMsccea1q1amVmzZplXn/9dXPPPfeYYDBoTj31VFNbWxt2jw8++GDTvXt3M3fuXPPmm2+aDRs2mA8//NA0a9bMdO/e3cyfP9+8+OKL5vTTTzft27c3kszGjRuNMcZ8+OGHRpJ55JFHws7po48+MpLMfffdZz3vv//970aSmTt3bqhsyJAhJicnx3Ts2DFU9u677xpJ5pVXXgl7Dg4++GDTv39/83//939m8eLF5sMPPzSPPfaYkWR+97vfhe7n5s2brX2o279t27bmF7/4hXn11VfNww8/bAoLC03btm1NWVmZ672re9+0a9fOXHPNNea1114zs2bNMrm5uaZHjx6mqqoqtO+tt95q7rrrLvPyyy+bZcuWmQcffNB06NDB9O/fP6zOkSNHmqZNm5r27dub6dOnmzfeeMO89tprxhhjHnjgATN9+nTz4osvmuXLl5snnnjCHHPMMaZTp05hbdX1q1OnTubWW281S5YsMddee23oeT7qqKPMH/7wB7NkyRJzySWXGEnm2WefDR0f6TO0atUqk5OTY04//fTQ9a77TPr6669N27ZtTbt27cxDDz1kXn/9dXPrrbea7OxsM2rUqFBbtvtZ94wBAFCn7nv7h98R06ZNM5LMBRdcYF5++WXz5JNPmsMOO8wEg0Hz6aefhvbr1KmTOeKII8xTTz1lli9fbp599lkzYcIEs3TpUmOMMWvXrjWHHXaY6dGjR+g7be3ata79qRtDdOnSxcybN8+8+OKLZsiQIUaS+fOf/1yv34cddpi54oorzGuvvWb+3//7fyY/P7/eOCCS8edHH31kTjzxRFNUVBTq66pVq4wxxuzevdt0797d5ObmmpkzZ5rFixebSZMmmczMTHP66afX638kY30n0Y43I2nno48+MsFg0HTr1s08+eSTZvHixWbChAmmSZMmZvLkyaH9li5dGho7nHvuuebFF180CxcuNNu2bTMPPfSQkWR++tOfmoULF5o5c+aYI4880rRr1y7sN9A999xjAoFA2DNijAn91qobzzh58MEHjSTz1VdfGWOM2bNnj2nRooXJyckxl156aWi/GTNmmMzMTFNRUWGM+f45OPjgg81
  825. "text/plain": [
  826. "<Figure size 1800x600 with 3 Axes>"
  827. ]
  828. },
  829. "metadata": {},
  830. "output_type": "display_data"
  831. }
  832. ],
  833. "source": [
  834. "#b parameter des fits [:,1] hat für lost eine breitere Verteilung. Warum?\n",
  835. "#evtl multiple scattering candidates (lost); findet man einen gewissen endvtx_type (mult scattering)\n",
  836. "#steiler velo winkel (eta)? vertex type? evtl bremsstrahlung?\n",
  837. "\n",
  838. "#isolate b parameters for analysis\n",
  839. "b_found = scifi_fitpars_found[:,1]\n",
  840. "b_lost = scifi_fitpars_lost[:,1]\n",
  841. "\n",
  842. "brem_energy_found = scifi_fitpars_found[:,5]\n",
  843. "brem_energy_lost = scifi_fitpars_lost[:,5]\n",
  844. "\n",
  845. "\n",
  846. "bs_found, vtxs_types_found = ak.broadcast_arrays(b_found, vtx_types_found)\n",
  847. "bs_found = ak.to_numpy(ak.ravel(bs_found))\n",
  848. "vtxs_types_found = ak.to_numpy(ak.ravel(vtxs_types_found))\n",
  849. "\n",
  850. "bs_lost, vtxs_types_lost = ak.broadcast_arrays(b_lost, vtx_types_lost)\n",
  851. "bs_lost = ak.to_numpy(ak.ravel(bs_lost))\n",
  852. "vtxs_types_lost = ak.to_numpy(ak.ravel(vtxs_types_lost))\n",
  853. "\n",
  854. "\n",
  855. "\n",
  856. "\n",
  857. "#Erste Annahme ist Bremsstrahlung\n",
  858. "\n",
  859. "fig, axes = plt.subplots(nrows=1,ncols=2,figsize=(18,6))\n",
  860. "\n",
  861. "\n",
  862. "n_bins = (np.linspace(-1,1,100), np.linspace(0,1e5,100))\n",
  863. "\n",
  864. "h0 = axes[0].hist2d(b_found, brem_energy_found, bins=n_bins, cmap=plt.cm.jet, cmin=1,vmax=15)\n",
  865. "axes[0].set_xlim(-1,1)\n",
  866. "axes[0].set_ylim(0,1e5)\n",
  867. "axes[0].set_xlabel(\"b parameter [mm]\")\n",
  868. "axes[0].set_ylabel(r\"$E_{ph}$\")\n",
  869. "axes[0].set_title(\"found photon energy wrt b parameter\")\n",
  870. "\n",
  871. "h1 = axes[1].hist2d(b_lost, brem_energy_lost, bins=n_bins, cmap=plt.cm.jet, cmin=1,vmax=15)\n",
  872. "axes[1].set_xlim(-1,1)\n",
  873. "axes[1].set_ylim(0,1e5)\n",
  874. "axes[1].set_xlabel(\"b parameter [mm]\")\n",
  875. "axes[1].set_ylabel(r\"$E_{ph}$\")\n",
  876. "axes[1].set_title(\"lost photon energy wrt b parameter\")\n",
  877. "\n",
  878. "fig.colorbar(h1[3], ax=axes[1])\n",
  879. "\n",
  880. "\"\"\"\n",
  881. "\"\"\"\n",
  882. "\n",
  883. "plt.show()"
  884. ]
  885. },
  886. {
  887. "cell_type": "code",
  888. "execution_count": null,
  889. "metadata": {},
  890. "outputs": [],
  891. "source": []
  892. },
  893. {
  894. "cell_type": "code",
  895. "execution_count": 20,
  896. "metadata": {},
  897. "outputs": [
  898. {
  899. "data": {
  900. "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
  901. "text/plain": [
  902. "<Figure size 1800x600 with 3 Axes>"
  903. ]
  904. },
  905. "metadata": {},
  906. "output_type": "display_data"
  907. }
  908. ],
  909. "source": [
  910. "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18,6))\n",
  911. "\n",
  912. "a0=ax[0].hist2d(bs_found, vtx_types_found, bins=110, density=True, cmap=plt.cm.jet, cmin=1e-20,vmax=2)\n",
  913. "ax[0].set_ylim(0,110)\n",
  914. "ax[0].set_xlim(-1,1)\n",
  915. "ax[0].set_xlabel(\"b\")\n",
  916. "ax[0].set_ylabel(\"endvtx id\")\n",
  917. "ax[0].set_title(\"found endvtx id wrt b parameter\")\n",
  918. "ax[0].set_yticks(np.arange(0,110,1),minor=True)\n",
  919. "\n",
  920. "a1=ax[1].hist2d(bs_lost, vtx_types_lost, bins=110, density=True, cmap=plt.cm.jet, cmin=1e-20,vmax=2)\n",
  921. "ax[1].set_ylim(0,110)\n",
  922. "ax[1].set_xlim(-1,1)\n",
  923. "ax[1].set_xlabel(\"b\")\n",
  924. "ax[1].set_ylabel(\"endvtx id\")\n",
  925. "ax[1].set_title(\"lost endvtx id wrt b paraneter\")\n",
  926. "ax[1].set_yticks(np.arange(0,110,1), minor=True)\n",
  927. "\n",
  928. "\"\"\"\n",
  929. "vtx_id: 101 - Bremsstrahlung\n",
  930. "B:\n",
  931. "wir können nicht wirklich sagen dass bei den lost teilchen jegliche endvertex types überwiegen, im gegensatz zu den found \n",
  932. "\"\"\"\n",
  933. "fig.colorbar(a0[3], ax=ax, orientation='vertical')\n",
  934. "plt.show()"
  935. ]
  936. },
  937. {
  938. "cell_type": "code",
  939. "execution_count": null,
  940. "metadata": {},
  941. "outputs": [],
  942. "source": []
  943. },
  944. {
  945. "cell_type": "code",
  946. "execution_count": 21,
  947. "metadata": {},
  948. "outputs": [
  949. {
  950. "data": {
  951. "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
  952. "text/plain": [
  953. "<Figure size 1500x1000 with 4 Axes>"
  954. ]
  955. },
  956. "metadata": {},
  957. "output_type": "display_data"
  958. }
  959. ],
  960. "source": [
  961. "fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2, figsize=(15,10))\n",
  962. "\n",
  963. "ax0.hist(scifi_fitpars_found[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$a_x$ found\")\n",
  964. "ax0.hist(scifi_fitpars_lost[:,0], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$a_x$ lost\")\n",
  965. "ax0.set_xlabel(\"a\")\n",
  966. "ax0.set_ylabel(\"normed\")\n",
  967. "ax0.set_title(\"fitparameter a der scifi track\")\n",
  968. "ax0.legend()\n",
  969. "\n",
  970. "ax1.hist(scifi_fitpars_found[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$b_x$ found\")\n",
  971. "ax1.hist(scifi_fitpars_lost[:,1], bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$b_x$ lost\")\n",
  972. "ax1.set_xticks(np.arange(-1,1,0.1),minor=True)\n",
  973. "ax1.set_xlabel(\"b\")\n",
  974. "ax1.set_ylabel(\"normed\")\n",
  975. "ax1.set_title(\"fitparameter b der scifi track\")\n",
  976. "ax1.legend()\n",
  977. "#evtl multiple scattering candidates (lost); findet man einen gewissen endvtx_type (mult scattering)\n",
  978. "#steiler velo winkel (eta)? vertex type? evtl bremsstrahlung?\n",
  979. "\n",
  980. "\n",
  981. "ax2.hist(scifi_fitpars_found[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$c_x$ found\")\n",
  982. "ax2.hist(scifi_fitpars_lost[:,2], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$c_x$ lost\")\n",
  983. "ax2.set_xlim([-3e-5,3e-5])\n",
  984. "ax2.set_xticks(np.arange(-3e-5,3.5e-5,1e-5),minor=False)\n",
  985. "ax2.set_xlabel(\"c\")\n",
  986. "ax2.set_ylabel(\"normed\")\n",
  987. "ax2.set_title(\"fitparameter c der scifi track\")\n",
  988. "ax2.legend()\n",
  989. "\n",
  990. "ax3.hist(scifi_fitpars_found[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=r\"$d_x$ found\")\n",
  991. "ax3.hist(scifi_fitpars_lost[:,3], bins=500, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=r\"$d_x$ lost\")\n",
  992. "ax3.set(xlim=(-5e-8,5e-8))\n",
  993. "ax3.text(-4e-8,3e8,\"d negligible <1e-7\")\n",
  994. "ax3.set_xlabel(\"d\")\n",
  995. "ax3.set_ylabel(\"normed\")\n",
  996. "ax3.set_title(\"fitparameter d der scifi track\")\n",
  997. "ax3.legend()\n",
  998. "\n",
  999. "\"\"\"\n",
  1000. "a_x: virtual hit on the reference plane\n",
  1001. "\"\"\"\n",
  1002. "\n",
  1003. "plt.show()"
  1004. ]
  1005. },
  1006. {
  1007. "cell_type": "code",
  1008. "execution_count": null,
  1009. "metadata": {},
  1010. "outputs": [],
  1011. "source": []
  1012. },
  1013. {
  1014. "cell_type": "code",
  1015. "execution_count": null,
  1016. "metadata": {},
  1017. "outputs": [],
  1018. "source": []
  1019. },
  1020. {
  1021. "cell_type": "code",
  1022. "execution_count": null,
  1023. "metadata": {},
  1024. "outputs": [],
  1025. "source": []
  1026. },
  1027. {
  1028. "cell_type": "code",
  1029. "execution_count": null,
  1030. "metadata": {},
  1031. "outputs": [],
  1032. "source": []
  1033. },
  1034. {
  1035. "cell_type": "code",
  1036. "execution_count": null,
  1037. "metadata": {},
  1038. "outputs": [],
  1039. "source": []
  1040. }
  1041. ],
  1042. "metadata": {
  1043. "kernelspec": {
  1044. "display_name": "env1",
  1045. "language": "python",
  1046. "name": "python3"
  1047. },
  1048. "language_info": {
  1049. "codemirror_mode": {
  1050. "name": "ipython",
  1051. "version": 3
  1052. },
  1053. "file_extension": ".py",
  1054. "mimetype": "text/x-python",
  1055. "name": "python",
  1056. "nbconvert_exporter": "python",
  1057. "pygments_lexer": "ipython3",
  1058. "version": "3.9.12"
  1059. },
  1060. "orig_nbformat": 4
  1061. },
  1062. "nbformat": 4,
  1063. "nbformat_minor": 2
  1064. }