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.

1103 lines
155 KiB

9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "import uproot\t\n",
  10. "import numpy as np\n",
  11. "import matplotlib.pyplot as plt\n",
  12. "from mpl_toolkits import mplot3d\n",
  13. "import awkward as ak\n",
  14. "from scipy.optimize import curve_fit\n",
  15. "%matplotlib inline"
  16. ]
  17. },
  18. {
  19. "cell_type": "code",
  20. "execution_count": 2,
  21. "metadata": {},
  22. "outputs": [
  23. {
  24. "name": "stdout",
  25. "output_type": "stream",
  26. "text": [
  27. "40402 10099\n",
  28. "50501\n"
  29. ]
  30. }
  31. ],
  32. "source": [
  33. "#file = uproot.open(\"tracking_losses_ntuple_Bd2KstEE.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\")\n",
  34. "file = uproot.open(\n",
  35. " \"tracking_losses_ntuple_B_default.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\"\n",
  36. ")\n",
  37. "\n",
  38. "# selektiere nur elektronen von B->K*ee\n",
  39. "allcolumns = file.arrays()\n",
  40. "found = allcolumns[\n",
  41. " (allcolumns.isElectron) & (~allcolumns.lost) & (allcolumns.fromB)\n",
  42. "] # B: 9056\n",
  43. "lost = allcolumns[\n",
  44. " (allcolumns.isElectron) & (allcolumns.lost) & (allcolumns.fromB)\n",
  45. "] # B: 1466\n",
  46. "\n",
  47. "electrons = allcolumns[(allcolumns.isElectron) & (allcolumns.fromB)]\n",
  48. "\n",
  49. "print(ak.num(found, axis=0), ak.num(lost, axis=0))\n",
  50. "print(ak.num(electrons,axis=0))\n",
  51. "# ak.count(found, axis=None)"
  52. ]
  53. },
  54. {
  55. "cell_type": "code",
  56. "execution_count": 3,
  57. "metadata": {},
  58. "outputs": [
  59. {
  60. "data": {
  61. "text/html": [
  62. "<pre>{all_endvtx_types_length: 7,\n",
  63. " all_endvtx_types: [101, 101, 101, 101, 101, 101, 0],\n",
  64. " all_endvtx_x_length: 7,\n",
  65. " all_endvtx_x: [-6.97, -52.9, -52.9, ..., -1.71e+03, -2.14e+03, -3.57e+03],\n",
  66. " all_endvtx_y_length: 7,\n",
  67. " all_endvtx_y: [-0.89, -6.75, -6.75, -7.08, -66.1, -72.6, -39.5],\n",
  68. " all_endvtx_z_length: 7,\n",
  69. " all_endvtx_z: [112, 859, 859, 895, 8.7e+03, 9.68e+03, 1.26e+04],\n",
  70. " brem_photons_pe_length: 6,\n",
  71. " brem_photons_pe: [2.62e+03, 812, 2.54e+03, 1.86e+03, 3.12e+03, 241],\n",
  72. " brem_photons_px_length: 6,\n",
  73. " brem_photons_px: [-161, -49.7, -156, -114, -1.18e+03, -101],\n",
  74. " brem_photons_py_length: 6,\n",
  75. " brem_photons_py: [-18.9, -6.92, -21.6, -16.8, -20.9, -0.26],\n",
  76. " brem_photons_pz_length: 6,\n",
  77. " brem_photons_pz: [2.61e+03, 810, 2.54e+03, 1.86e+03, 2.89e+03, 219],\n",
  78. " brem_vtx_x_length: 6,\n",
  79. " brem_vtx_x: [-6.97, -52.9, -52.9, -55.2, -1.71e+03, -2.14e+03],\n",
  80. " brem_vtx_y_length: 6,\n",
  81. " ...}\n",
  82. "---------------------------------------------------------------------------\n",
  83. "type: {\n",
  84. " all_endvtx_types_length: int32,\n",
  85. " all_endvtx_types: var * float32,\n",
  86. " all_endvtx_x_length: int32,\n",
  87. " all_endvtx_x: var * float32,\n",
  88. " all_endvtx_y_length: int32,\n",
  89. " all_endvtx_y: var * float32,\n",
  90. " all_endvtx_z_length: int32,\n",
  91. " all_endvtx_z: var * float32,\n",
  92. " brem_photons_pe_length: int32,\n",
  93. " brem_photons_pe: var * float32,\n",
  94. " brem_photons_px_length: int32,\n",
  95. " brem_photons_px: var * float32,\n",
  96. " brem_photons_py_length: int32,\n",
  97. " brem_photons_py: var * float32,\n",
  98. " brem_photons_pz_length: int32,\n",
  99. " brem_photons_pz: var * float32,\n",
  100. " brem_vtx_x_length: int32,\n",
  101. " brem_vtx_x: var * float32,\n",
  102. " brem_vtx_y_length: int32,\n",
  103. " brem_vtx_y: var * float32,\n",
  104. " brem_vtx_z_length: int32,\n",
  105. " brem_vtx_z: var * float32,\n",
  106. " endvtx_type: int32,\n",
  107. " endvtx_x: float64,\n",
  108. " endvtx_y: float64,\n",
  109. " endvtx_z: float64,\n",
  110. " energy: float64,\n",
  111. " eta: float64,\n",
  112. " event_count: int32,\n",
  113. " fromB: bool,\n",
  114. " fromD: bool,\n",
  115. " fromDecay: bool,\n",
  116. " fromHadInt: bool,\n",
  117. " fromPV: bool,\n",
  118. " fromPairProd: bool,\n",
  119. " fromSignal: bool,\n",
  120. " fromStrange: bool,\n",
  121. " ideal_state_770_qop: float64,\n",
  122. " ideal_state_770_tx: float64,\n",
  123. " ideal_state_770_ty: float64,\n",
  124. " ideal_state_770_x: float64,\n",
  125. " ideal_state_770_y: float64,\n",
  126. " ideal_state_770_z: float64,\n",
  127. " ideal_state_9410_qop: float64,\n",
  128. " ideal_state_9410_tx: float64,\n",
  129. " ideal_state_9410_ty: float64,\n",
  130. " ideal_state_9410_x: float64,\n",
  131. " ideal_state_9410_y: float64,\n",
  132. " ideal_state_9410_z: float64,\n",
  133. " isElectron: bool,\n",
  134. " isKaon: bool,\n",
  135. " isMuon: bool,\n",
  136. " isPion: bool,\n",
  137. " isProton: bool,\n",
  138. " lost: bool,\n",
  139. " lost_in_track_fit: bool,\n",
  140. " match_fraction: float32,\n",
  141. " mc_chi2: float32,\n",
  142. " mc_dSlope: float32,\n",
  143. " mc_dSlopeY: float32,\n",
  144. " mc_distX: float32,\n",
  145. " mc_distY: float32,\n",
  146. " mc_teta2: float32,\n",
  147. " mc_zMag: float32,\n",
  148. " mcp_idx: int32,\n",
  149. " mother_id: int32,\n",
  150. " mother_key: int32,\n",
  151. " originvtx_type: int32,\n",
  152. " originvtx_x: float64,\n",
  153. " originvtx_y: float64,\n",
  154. " originvtx_z: float64,\n",
  155. " p: float64,\n",
  156. " phi: float64,\n",
  157. " pid: int32,\n",
  158. " pt: float64,\n",
  159. " px: float64,\n",
  160. " py: float64,\n",
  161. " pz: float64,\n",
  162. " quality: int32,\n",
  163. " rad_length_frac: float64,\n",
  164. " scifi_hit_pos_x_length: int32,\n",
  165. " scifi_hit_pos_x: var * float32,\n",
  166. " scifi_hit_pos_y_length: int32,\n",
  167. " scifi_hit_pos_y: var * float32,\n",
  168. " scifi_hit_pos_z_length: int32,\n",
  169. " scifi_hit_pos_z: var * float32,\n",
  170. " track_p: float64,\n",
  171. " track_pt: float64,\n",
  172. " tx: float64,\n",
  173. " ty: float64,\n",
  174. " ut_hit_pos_x_length: int32,\n",
  175. " ut_hit_pos_x: var * float32,\n",
  176. " ut_hit_pos_y_length: int32,\n",
  177. " ut_hit_pos_y: var * float32,\n",
  178. " ut_hit_pos_z_length: int32,\n",
  179. " ut_hit_pos_z: var * float32,\n",
  180. " velo_hit_pos_x_length: int32,\n",
  181. " velo_hit_pos_x: var * float32,\n",
  182. " velo_hit_pos_y_length: int32,\n",
  183. " velo_hit_pos_y: var * float32,\n",
  184. " velo_hit_pos_z_length: int32,\n",
  185. " velo_hit_pos_z: var * float32,\n",
  186. " velo_track_idx: int32,\n",
  187. " velo_track_tx: float64,\n",
  188. " velo_track_ty: float64,\n",
  189. " velo_track_x: float64,\n",
  190. " velo_track_y: float64,\n",
  191. " velo_track_z: float64\n",
  192. "}</pre>"
  193. ],
  194. "text/plain": [
  195. "<Record {all_endvtx_types_length: 7, ...} type='{all_endvtx_types_length: i...'>"
  196. ]
  197. },
  198. "execution_count": 3,
  199. "metadata": {},
  200. "output_type": "execute_result"
  201. }
  202. ],
  203. "source": [
  204. "electrons[0]"
  205. ]
  206. },
  207. {
  208. "cell_type": "code",
  209. "execution_count": 4,
  210. "metadata": {},
  211. "outputs": [
  212. {
  213. "data": {
  214. "text/html": [
  215. "<pre>{lost: True,\n",
  216. " rad_length_frac: 0.129,\n",
  217. " energy: 1.17e+04,\n",
  218. " photon_length: 6,\n",
  219. " brem_photons_pe: [2.62e+03, 812, 2.54e+03, 1.86e+03, 3.12e+03, 241],\n",
  220. " brem_vtx_x: [-6.97, -52.9, -52.9, -55.2, -1.71e+03, -2.14e+03],\n",
  221. " brem_vtx_z: [112, 859, 859, 895, 8.7e+03, 9.68e+03]}\n",
  222. "---------------------------------------------------------------------\n",
  223. "type: {\n",
  224. " lost: bool,\n",
  225. " rad_length_frac: float64,\n",
  226. " energy: float64,\n",
  227. " photon_length: int64,\n",
  228. " brem_photons_pe: var * float64,\n",
  229. " brem_vtx_x: var * float64,\n",
  230. " brem_vtx_z: var * float64\n",
  231. "}</pre>"
  232. ],
  233. "text/plain": [
  234. "<Record {lost: True, rad_length_frac: ..., ...} type='{lost: bool, rad_leng...'>"
  235. ]
  236. },
  237. "execution_count": 4,
  238. "metadata": {},
  239. "output_type": "execute_result"
  240. }
  241. ],
  242. "source": [
  243. "lost_e = electrons[\"lost\"]\n",
  244. "e = electrons[\"energy\"]\n",
  245. "brem_pe = electrons[\"brem_photons_pe\"]\n",
  246. "brem_z = electrons[\"brem_vtx_z\"]\n",
  247. "brem_x = electrons[\"brem_vtx_x\"]\n",
  248. "length = electrons[\"brem_vtx_z_length\"]\n",
  249. "rad_length = electrons[\"rad_length_frac\"]\n",
  250. "\n",
  251. "\n",
  252. "brem = ak.ArrayBuilder()\n",
  253. "\n",
  254. "for itr in range(ak.num(electrons, axis=0)):\n",
  255. " brem.begin_record()\n",
  256. " brem.field(\"lost\").boolean(lost_e[itr])\n",
  257. " brem.field(\"rad_length_frac\").append(rad_length[itr])\n",
  258. " # [:,\"energy\"] energy\n",
  259. " brem.field(\"energy\").append(e[itr])\n",
  260. " # [:,\"photon_length\"] number of vertices\n",
  261. " brem.field(\"photon_length\").integer(length[itr])\n",
  262. " # [:,\"brem_photons_pe\",:] photon energy\n",
  263. " brem.field(\"brem_photons_pe\").append(brem_pe[itr])\n",
  264. " # [:,\"brem_vtx_z\",:] brem vtx z\n",
  265. " brem.field(\"brem_vtx_x\").append(brem_x[itr])\n",
  266. " brem.field(\"brem_vtx_z\").append(brem_z[itr])\n",
  267. " brem.end_record()\n",
  268. "\n",
  269. "brem = ak.Array(brem)\n",
  270. "brem[0]"
  271. ]
  272. },
  273. {
  274. "cell_type": "code",
  275. "execution_count": 5,
  276. "metadata": {},
  277. "outputs": [],
  278. "source": [
  279. "photon_cut = 0\n",
  280. "photon_cut_ratio = 0.1\n",
  281. "\n",
  282. "cut_brem = ak.ArrayBuilder()\n",
  283. "\n",
  284. "for itr in range(ak.num(brem, axis=0)):\n",
  285. " cut_brem.begin_record()\n",
  286. " cut_brem.field(\"event_id\").integer(itr)\n",
  287. " cut_brem.field(\"lost\").boolean(brem[itr, \"lost\"])\n",
  288. " cut_brem.field(\"rad_length_frac\").real(brem[itr, \"rad_length_frac\"])\n",
  289. " cut_brem.field(\"energy\").real(brem[itr, \"energy\"])\n",
  290. "\n",
  291. " ph_length = brem[itr, \"photon_length\"]\n",
  292. " \n",
  293. " tmp_energy = brem[itr, \"energy\"]\n",
  294. "\n",
  295. " cut_brem.field(\"brem_photons_pe\")\n",
  296. " cut_brem.begin_list()\n",
  297. " for jentry in range(brem[itr, \"photon_length\"]):\n",
  298. " if (\n",
  299. " brem[itr, \"brem_vtx_z\", jentry] > 3000\n",
  300. " or brem[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  301. " or brem[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  302. " ):\n",
  303. " ph_length -= 1\n",
  304. " continue\n",
  305. " else:\n",
  306. " cut_brem.real(brem[itr, \"brem_photons_pe\", jentry])\n",
  307. " tmp_energy -= brem[itr, \"brem_photons_pe\", jentry]\n",
  308. " cut_brem.end_list()\n",
  309. "\n",
  310. " tmp_energy = brem[itr, \"energy\"]\n",
  311. "\n",
  312. " cut_brem.field(\"brem_vtx_x\")\n",
  313. " cut_brem.begin_list()\n",
  314. " for jentry in range(brem[itr, \"photon_length\"]):\n",
  315. " if (\n",
  316. " brem[itr, \"brem_vtx_z\", jentry] > 3000\n",
  317. " or brem[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  318. " or brem[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  319. " ):\n",
  320. " continue\n",
  321. " else:\n",
  322. " cut_brem.real(brem[itr, \"brem_vtx_x\", jentry])\n",
  323. " tmp_energy -= brem[itr, \"brem_photons_pe\", jentry]\n",
  324. " cut_brem.end_list()\n",
  325. "\n",
  326. " tmp_energy = brem[itr, \"energy\"]\n",
  327. "\n",
  328. " cut_brem.field(\"brem_vtx_z\")\n",
  329. " cut_brem.begin_list()\n",
  330. " for jentry in range(brem[itr, \"photon_length\"]):\n",
  331. " if (\n",
  332. " brem[itr, \"brem_vtx_z\", jentry] > 3000\n",
  333. " or brem[itr, \"brem_photons_pe\", jentry] < photon_cut\n",
  334. " or brem[itr, \"brem_photons_pe\", jentry] < photon_cut_ratio * tmp_energy\n",
  335. " ):\n",
  336. " continue\n",
  337. " else:\n",
  338. " cut_brem.real(brem[itr, \"brem_vtx_z\", jentry])\n",
  339. " tmp_energy -= brem[itr, \"brem_photons_pe\", jentry]\n",
  340. " cut_brem.end_list()\n",
  341. " \n",
  342. " cut_brem.field(\"photon_length\").integer(ph_length)\n",
  343. "\n",
  344. " cut_brem.end_record()\n",
  345. "\n",
  346. "ntuple = ak.Array(cut_brem)\n",
  347. "\n"
  348. ]
  349. },
  350. {
  351. "cell_type": "code",
  352. "execution_count": 6,
  353. "metadata": {},
  354. "outputs": [
  355. {
  356. "name": "stdout",
  357. "output_type": "stream",
  358. "text": [
  359. "44163\n",
  360. "50501\n"
  361. ]
  362. },
  363. {
  364. "data": {
  365. "text/html": [
  366. "<pre>{event_id: 0,\n",
  367. " lost: True,\n",
  368. " rad_length_frac: 0.129,\n",
  369. " energy: 1.17e+04,\n",
  370. " brem_photons_pe: [2.62e+03, 2.54e+03, 1.86e+03],\n",
  371. " brem_vtx_x: [-6.97, -52.9, -55.2],\n",
  372. " brem_vtx_z: [112, 859, 895],\n",
  373. " photon_length: 3}\n",
  374. "-------------------------------------------------\n",
  375. "type: {\n",
  376. " event_id: int64,\n",
  377. " lost: bool,\n",
  378. " rad_length_frac: float64,\n",
  379. " energy: float64,\n",
  380. " brem_photons_pe: var * float64,\n",
  381. " brem_vtx_x: var * float64,\n",
  382. " brem_vtx_z: var * float64,\n",
  383. " photon_length: int64\n",
  384. "}</pre>"
  385. ],
  386. "text/plain": [
  387. "<Record {event_id: 0, lost: True, ...} type='{event_id: int64, lost: bool, ...'>"
  388. ]
  389. },
  390. "execution_count": 6,
  391. "metadata": {},
  392. "output_type": "execute_result"
  393. }
  394. ],
  395. "source": [
  396. "print(ak.sum(ak.num(ntuple[\"brem_photons_pe\"], axis=1)))\n",
  397. "print(ak.num(ntuple,axis=0))\n",
  398. "ntuple[0]"
  399. ]
  400. },
  401. {
  402. "cell_type": "code",
  403. "execution_count": null,
  404. "metadata": {},
  405. "outputs": [],
  406. "source": []
  407. },
  408. {
  409. "cell_type": "code",
  410. "execution_count": 7,
  411. "metadata": {},
  412. "outputs": [],
  413. "source": [
  414. "# nulltuple = ntuple[:7000]\n",
  415. "# onetuple = ntuple[7000:14000]\n",
  416. "# twotuple = ntuple[14000:21000]\n",
  417. "# threetuple = ntuple[21000:28000]\n",
  418. "# fourtuple = ntuple[28000:35000]\n",
  419. "# fivetuple = ntuple[35000:42000]\n",
  420. "# sixtuple = ntuple[42000:49000]\n",
  421. "# seventuple = ntuple[49000:]\n",
  422. "\n",
  423. "# ntuple.nbytes"
  424. ]
  425. },
  426. {
  427. "cell_type": "code",
  428. "execution_count": 8,
  429. "metadata": {},
  430. "outputs": [],
  431. "source": [
  432. "# cut = \"tenCut\"\n",
  433. "# tree = \"Tree10\"\n",
  434. "# with uproot.update(\"trackinglosses_B_photon_cuts.root\") as outFile:\n",
  435. "# #outFile[\"README\"] = \"The Cuts are placed on the photons. noCut: 0*E, first: 0.05*E, second: 0.1*E, etc.\"\n",
  436. "# outFile.mktree(tree, {cut + \"_event_id\": ntuple[\"event_id\"].type, cut + \"_lost\": ntuple[\"lost\"].type, cut + \"_rad_length_frac\": ntuple[\"rad_length_frac\"].type, cut + \"_energy\": ntuple[\"energy\"].type, cut + \"_brem_photons_pe\": ntuple[\"brem_photons_pe\"].type, cut + \"_brem_vtx_x\": ntuple[\"brem_vtx_x\"].type, cut + \"_brem_vtx_z\": ntuple[\"brem_vtx_z\"].type, cut + \"_photon_length\": ntuple[\"photon_length\"].type} )\n",
  437. "# outFile[tree].extend( {cut + \"_event_id\": nulltuple[\"event_id\"], cut + \"_lost\": nulltuple[\"lost\"], cut + \"_rad_length_frac\": nulltuple[\"rad_length_frac\"], cut + \"_energy\": nulltuple[\"energy\"], cut + \"_brem_photons_pe\": nulltuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": nulltuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": nulltuple[\"brem_vtx_z\"], cut + \"_photon_length\": nulltuple[\"photon_length\"]} )\n",
  438. "# outFile[tree].extend( {cut + \"_event_id\": onetuple[\"event_id\"], cut + \"_lost\": onetuple[\"lost\"], cut + \"_rad_length_frac\": onetuple[\"rad_length_frac\"], cut + \"_energy\": onetuple[\"energy\"], cut + \"_brem_photons_pe\": onetuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": onetuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": onetuple[\"brem_vtx_z\"], cut + \"_photon_length\": onetuple[\"photon_length\"]} )\n",
  439. "# outFile[tree].extend( {cut + \"_event_id\": twotuple[\"event_id\"], cut + \"_lost\": twotuple[\"lost\"], cut + \"_rad_length_frac\": twotuple[\"rad_length_frac\"], cut + \"_energy\": twotuple[\"energy\"], cut + \"_brem_photons_pe\": twotuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": twotuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": twotuple[\"brem_vtx_z\"], cut + \"_photon_length\": twotuple[\"photon_length\"]} )\n",
  440. "# outFile[tree].extend( {cut + \"_event_id\": threetuple[\"event_id\"], cut + \"_lost\": threetuple[\"lost\"], cut + \"_rad_length_frac\": threetuple[\"rad_length_frac\"], cut + \"_energy\": threetuple[\"energy\"], cut + \"_brem_photons_pe\": threetuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": threetuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": threetuple[\"brem_vtx_z\"], cut + \"_photon_length\": threetuple[\"photon_length\"]} )\n",
  441. "# outFile[tree].extend( {cut + \"_event_id\": fourtuple[\"event_id\"], cut + \"_lost\": fourtuple[\"lost\"], cut + \"_rad_length_frac\": fourtuple[\"rad_length_frac\"], cut + \"_energy\": fourtuple[\"energy\"], cut + \"_brem_photons_pe\": fourtuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": fourtuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": fourtuple[\"brem_vtx_z\"], cut + \"_photon_length\": fourtuple[\"photon_length\"]} )\n",
  442. "# outFile[tree].extend( {cut + \"_event_id\": fivetuple[\"event_id\"], cut + \"_lost\": fivetuple[\"lost\"], cut + \"_rad_length_frac\": fivetuple[\"rad_length_frac\"], cut + \"_energy\": fivetuple[\"energy\"], cut + \"_brem_photons_pe\": fivetuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": fivetuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": fivetuple[\"brem_vtx_z\"], cut + \"_photon_length\": fivetuple[\"photon_length\"]} )\n",
  443. "# outFile[tree].extend( {cut + \"_event_id\": sixtuple[\"event_id\"], cut + \"_lost\": sixtuple[\"lost\"], cut + \"_rad_length_frac\": sixtuple[\"rad_length_frac\"], cut + \"_energy\": sixtuple[\"energy\"], cut + \"_brem_photons_pe\": sixtuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": sixtuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": sixtuple[\"brem_vtx_z\"], cut + \"_photon_length\": sixtuple[\"photon_length\"]} )\n",
  444. "# outFile[tree].extend( {cut + \"_event_id\": seventuple[\"event_id\"], cut + \"_lost\": seventuple[\"lost\"], cut + \"_rad_length_frac\": seventuple[\"rad_length_frac\"], cut + \"_energy\": seventuple[\"energy\"], cut + \"_brem_photons_pe\": seventuple[\"brem_photons_pe\"], cut + \"_brem_vtx_x\": seventuple[\"brem_vtx_x\"], cut + \"_brem_vtx_z\": seventuple[\"brem_vtx_z\"], cut + \"_photon_length\": seventuple[\"photon_length\"]} )"
  445. ]
  446. },
  447. {
  448. "cell_type": "code",
  449. "execution_count": null,
  450. "metadata": {},
  451. "outputs": [],
  452. "source": []
  453. },
  454. {
  455. "cell_type": "code",
  456. "execution_count": null,
  457. "metadata": {},
  458. "outputs": [],
  459. "source": []
  460. },
  461. {
  462. "cell_type": "code",
  463. "execution_count": 9,
  464. "metadata": {},
  465. "outputs": [
  466. {
  467. "name": "stdout",
  468. "output_type": "stream",
  469. "text": [
  470. "50501\n"
  471. ]
  472. },
  473. {
  474. "data": {
  475. "text/html": [
  476. "<pre>{event_id: 1,\n",
  477. " lost: False,\n",
  478. " rad_length_frac: 0.148,\n",
  479. " energy: 1.28e+04,\n",
  480. " brem_photons_pe: [7.42e+03],\n",
  481. " brem_vtx_x: [-3.61],\n",
  482. " brem_vtx_z: [35.6],\n",
  483. " photon_length: 1}\n",
  484. "-----------------------------------\n",
  485. "type: {\n",
  486. " event_id: int64,\n",
  487. " lost: bool,\n",
  488. " rad_length_frac: float64,\n",
  489. " energy: float64,\n",
  490. " brem_photons_pe: var * float64,\n",
  491. " brem_vtx_x: var * float64,\n",
  492. " brem_vtx_z: var * float64,\n",
  493. " photon_length: int64\n",
  494. "}</pre>"
  495. ],
  496. "text/plain": [
  497. "<Record {event_id: 1, lost: False, ...} type='{event_id: int64, lost: bool,...'>"
  498. ]
  499. },
  500. "execution_count": 9,
  501. "metadata": {},
  502. "output_type": "execute_result"
  503. }
  504. ],
  505. "source": [
  506. "# data in cut_brem_found and cut_brem_lost\n",
  507. "\n",
  508. "length_found = ak.num(ntuple[~ntuple.lost][\"brem_photons_pe\"], axis=0)\n",
  509. "length_lost = ak.num(ntuple[ntuple.lost][\"brem_photons_pe\"], axis=0)\n",
  510. "print(length_found+length_lost)\n",
  511. "ntuple[1]"
  512. ]
  513. },
  514. {
  515. "cell_type": "code",
  516. "execution_count": 10,
  517. "metadata": {},
  518. "outputs": [],
  519. "source": [
  520. "Z_found = ak.to_numpy(\n",
  521. " ak.sum(ntuple[~ntuple.lost][\"brem_photons_pe\"], axis=-1, keepdims=False)\n",
  522. ") / ak.to_numpy(ntuple[~ntuple.lost][\"energy\"])\n",
  523. "Z_lost = ak.to_numpy(\n",
  524. " ak.sum(ntuple[ntuple.lost][\"brem_photons_pe\"], axis=-1, keepdims=False)\n",
  525. ") / ak.to_numpy(ntuple[ntuple.lost][\"energy\"])"
  526. ]
  527. },
  528. {
  529. "cell_type": "code",
  530. "execution_count": 11,
  531. "metadata": {},
  532. "outputs": [
  533. {
  534. "data": {
  535. "image/png": "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
  536. "text/plain": [
  537. "<Figure size 640x480 with 1 Axes>"
  538. ]
  539. },
  540. "metadata": {},
  541. "output_type": "display_data"
  542. }
  543. ],
  544. "source": [
  545. "xlim=0\n",
  546. "\n",
  547. "plt.hist(\n",
  548. " Z_lost,\n",
  549. " bins=100,\n",
  550. " density=True,\n",
  551. " alpha=0.5,\n",
  552. " histtype=\"bar\",\n",
  553. " color=\"darkorange\",\n",
  554. " label=\"lost\",\n",
  555. " range=[xlim,1]\n",
  556. ")\n",
  557. "plt.hist(\n",
  558. " Z_found,\n",
  559. " bins=100,\n",
  560. " density=True,\n",
  561. " alpha=0.5,\n",
  562. " histtype=\"bar\",\n",
  563. " color=\"blue\",\n",
  564. " label=\"found\",\n",
  565. " range=[xlim,1]\n",
  566. ")\n",
  567. "plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
  568. "plt.ylabel(\"a.u.\")\n",
  569. "plt.title(r\"$E_{ph}/E_0$\")\n",
  570. "plt.legend()\n",
  571. "plt.show()"
  572. ]
  573. },
  574. {
  575. "cell_type": "code",
  576. "execution_count": 12,
  577. "metadata": {},
  578. "outputs": [
  579. {
  580. "name": "stdout",
  581. "output_type": "stream",
  582. "text": [
  583. "found: 32898 , lost: 11265\n",
  584. "0.34242203173445196\n"
  585. ]
  586. },
  587. {
  588. "data": {
  589. "text/html": [
  590. "<pre>[-3.61,\n",
  591. " -33.8,\n",
  592. " -133,\n",
  593. " 65.2,\n",
  594. " -5.73,\n",
  595. " -26.6,\n",
  596. " -4.26,\n",
  597. " 6.83,\n",
  598. " 10.7,\n",
  599. " 26.2,\n",
  600. " ...,\n",
  601. " -11.6,\n",
  602. " -13.1,\n",
  603. " -25.6,\n",
  604. " -4.27,\n",
  605. " -4.27,\n",
  606. " -103,\n",
  607. " 8.82,\n",
  608. " 12.8,\n",
  609. " -17.8]\n",
  610. "---------------------\n",
  611. "type: 32898 * float64</pre>"
  612. ],
  613. "text/plain": [
  614. "<Array [-3.61, -33.8, -133, ..., 8.82, 12.8, -17.8] type='32898 * float64'>"
  615. ]
  616. },
  617. "execution_count": 12,
  618. "metadata": {},
  619. "output_type": "execute_result"
  620. }
  621. ],
  622. "source": [
  623. "tuple_found = ntuple[~ntuple.lost]\n",
  624. "tuple_lost = ntuple[ntuple.lost]\n",
  625. "\n",
  626. "brem_x_found = ak.to_numpy(ak.flatten(tuple_found[\"brem_vtx_x\"]))\n",
  627. "brem_z_found = ak.to_numpy(ak.flatten(tuple_found[\"brem_vtx_z\"]))\n",
  628. "\n",
  629. "brem_x_lost = ak.to_numpy(ak.flatten(tuple_lost[\"brem_vtx_x\"]))\n",
  630. "brem_z_lost = ak.to_numpy(ak.flatten(tuple_lost[\"brem_vtx_z\"]))\n",
  631. "\n",
  632. "n_found = len(brem_x_found)\n",
  633. "n_lost = len(brem_x_lost)\n",
  634. "print(\"found: \", n_found, \", lost: \", n_lost)\n",
  635. "stretch_factor = n_lost / n_found\n",
  636. "print(stretch_factor)\n",
  637. "ak.flatten(tuple_found[\"brem_vtx_x\"])"
  638. ]
  639. },
  640. {
  641. "cell_type": "code",
  642. "execution_count": 21,
  643. "metadata": {},
  644. "outputs": [
  645. {
  646. "data": {
  647. "image/png": "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
  648. "text/plain": [
  649. "<Figure size 2000x800 with 3 Axes>"
  650. ]
  651. },
  652. "metadata": {},
  653. "output_type": "display_data"
  654. }
  655. ],
  656. "source": [
  657. "vmax = 150\n",
  658. "nbins = 100\n",
  659. "\n",
  660. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20, 8))\n",
  661. "\n",
  662. "a0 = ax0.hist2d(\n",
  663. " brem_z_found,\n",
  664. " brem_x_found,\n",
  665. " density=False,\n",
  666. " bins=nbins,\n",
  667. " cmap=plt.cm.jet,\n",
  668. " cmin=1,\n",
  669. " vmax=vmax,\n",
  670. " range=[[-200, 3000], [-1000, 1000]],\n",
  671. ")\n",
  672. "ax0.vlines([770, 990, 2700], -1000, 1000,colors=\"red\")\n",
  673. "ax0.set_ylim(-1000, 1000)\n",
  674. "ax0.set_xlim(-200, 3000)\n",
  675. "ax0.set_xlabel(\"z [mm]\")\n",
  676. "ax0.set_ylabel(\"x [mm]\")\n",
  677. "ax0.set_title(r\"$e^\\pm$ found brem vertices\")\n",
  678. "\n",
  679. "a1 = ax1.hist2d(\n",
  680. " brem_z_lost,\n",
  681. " brem_x_lost,\n",
  682. " density=False,\n",
  683. " bins=nbins,\n",
  684. " cmap=plt.cm.jet,\n",
  685. " cmin=1,\n",
  686. " vmax=vmax * stretch_factor,\n",
  687. " range=[[-200, 3000], [-1000, 1000]],\n",
  688. ")\n",
  689. "ax1.vlines([770, 990, 2700], -1000, 1000, colors=\"red\")\n",
  690. "ax1.set_ylim(-1000, 1000)\n",
  691. "ax1.set_xlim(-200, 3000)\n",
  692. "ax1.set_xlabel(\"z [mm]\")\n",
  693. "ax1.set_ylabel(\"x [mm]\")\n",
  694. "ax1.set_title(r\"$e^\\pm$ lost brem vertices\")\n",
  695. "# ax1.set(xlim=(0,4000), ylim=(-1000,1000))\n",
  696. "\n",
  697. "plt.suptitle(\"brem vtx of photons w/ $E>0.1E_0$\")\n",
  698. "plt.colorbar(a0[3], ax=ax1)\n",
  699. "\n",
  700. "plt.show()"
  701. ]
  702. },
  703. {
  704. "cell_type": "code",
  705. "execution_count": 14,
  706. "metadata": {},
  707. "outputs": [
  708. {
  709. "name": "stdout",
  710. "output_type": "stream",
  711. "text": [
  712. "50501\n"
  713. ]
  714. }
  715. ],
  716. "source": [
  717. "energy_emissions = ak.ArrayBuilder()\n",
  718. "\n",
  719. "for jelec in range(ak.num(ntuple, axis=0)):\n",
  720. " energy_emissions.begin_record()\n",
  721. " energy_emissions.field(\"lost\").boolean(ntuple[jelec, \"lost\"])\n",
  722. " energy_emissions.field(\"energy\").real(ntuple[jelec, \"energy\"])\n",
  723. "\n",
  724. " tmp_velo = 0\n",
  725. " tmp_richut = 0\n",
  726. " tmp_neither = 0\n",
  727. " tmp_velo_length = 0\n",
  728. " tmp_richut_length = 0\n",
  729. " tmp_neither_length = 0\n",
  730. " \n",
  731. " for jphoton in range(ak.num(ntuple[jelec][\"brem_photons_pe\"], axis=0)):\n",
  732. " if ntuple[jelec, \"brem_vtx_z\", jphoton] <= 770:\n",
  733. " tmp_velo += ntuple[jelec, \"brem_photons_pe\", jphoton]\n",
  734. " tmp_velo_length += 1\n",
  735. " elif (ntuple[jelec, \"brem_vtx_z\", jphoton] > 770) and (\n",
  736. " ntuple[jelec, \"brem_vtx_z\", jphoton] <= 2700\n",
  737. " ):\n",
  738. " tmp_richut += ntuple[jelec, \"brem_photons_pe\", jphoton]\n",
  739. " tmp_richut_length += 1\n",
  740. " else:\n",
  741. " tmp_neither += ntuple[jelec, \"brem_photons_pe\", jphoton]\n",
  742. " tmp_neither_length += 1\n",
  743. "\n",
  744. " energy_emissions.field(\"velo_length\").integer(tmp_velo_length)\n",
  745. " energy_emissions.field(\"velo\").real(tmp_velo)\n",
  746. "\n",
  747. " energy_emissions.field(\"rich_length\").integer(tmp_richut_length)\n",
  748. " energy_emissions.field(\"rich\").real(tmp_richut)\n",
  749. " \n",
  750. " energy_emissions.field(\"neither_length\").integer(tmp_neither_length)\n",
  751. " energy_emissions.field(\"downstream\").real(tmp_neither)\n",
  752. " \n",
  753. " energy_emissions.field(\"photon_length\").integer(tmp_neither_length+tmp_richut_length+tmp_velo_length)\n",
  754. " \n",
  755. " if (tmp_velo==0) and (tmp_richut==0):\n",
  756. " energy_emissions.field(\"quality\").integer(0)\n",
  757. " else:\n",
  758. " energy_emissions.field(\"quality\").integer(1)\n",
  759. "\n",
  760. " energy_emissions.end_record()\n",
  761. "\n",
  762. "energy_emissions = ak.Array(energy_emissions)\n",
  763. "\n",
  764. "print(ak.num(energy_emissions,axis=0))\n"
  765. ]
  766. },
  767. {
  768. "cell_type": "code",
  769. "execution_count": 15,
  770. "metadata": {},
  771. "outputs": [
  772. {
  773. "data": {
  774. "text/html": [
  775. "<pre>{lost: False,\n",
  776. " energy: 5.09e+04,\n",
  777. " velo_length: 0,\n",
  778. " velo: 0,\n",
  779. " rich_length: 0,\n",
  780. " rich: 0,\n",
  781. " neither_length: 0,\n",
  782. " downstream: 0,\n",
  783. " photon_length: 0,\n",
  784. " quality: 0}\n",
  785. "--------------------------\n",
  786. "type: {\n",
  787. " lost: bool,\n",
  788. " energy: float64,\n",
  789. " velo_length: int64,\n",
  790. " velo: float64,\n",
  791. " rich_length: int64,\n",
  792. " rich: float64,\n",
  793. " neither_length: int64,\n",
  794. " downstream: float64,\n",
  795. " photon_length: int64,\n",
  796. " quality: int64\n",
  797. "}</pre>"
  798. ],
  799. "text/plain": [
  800. "<Record {lost: False, energy: 5.09e+04, ...} type='{lost: bool, energy: flo...'>"
  801. ]
  802. },
  803. "execution_count": 15,
  804. "metadata": {},
  805. "output_type": "execute_result"
  806. }
  807. ],
  808. "source": [
  809. "energy_emissions[3]"
  810. ]
  811. },
  812. {
  813. "cell_type": "code",
  814. "execution_count": 16,
  815. "metadata": {},
  816. "outputs": [
  817. {
  818. "name": "stdout",
  819. "output_type": "stream",
  820. "text": [
  821. "found: 40402\n",
  822. "lost: 10099\n",
  823. "50501\n",
  824. "VELO energy emission, eff: 0.2624700500980179\n",
  825. "RICH1+UT energy emission, eff: 0.17696679273677748\n",
  826. "Neither, eff: 0.3605869190709095\n",
  827. "total efficiency: 0.8000237619057049\n",
  828. "efficiency: 0.8000237619057048\n",
  829. "\n",
  830. "found in velo/(found + lost in velo)\n",
  831. "VELO energy emission, eff: 0.807739183424741\n",
  832. "RICH1+UT energy emission, eff: 0.7549417131272175\n",
  833. "eff von e die nicht strahlen: 0.8183166314654204\n"
  834. ]
  835. }
  836. ],
  837. "source": [
  838. "# efficiency berechnen als found in velo oder rich über alle elektronen\n",
  839. "# dann kann man zusammenrechnen mit velo, rich, und allen anderen elektronen\n",
  840. "# expected eff = 81.19%\n",
  841. "\n",
  842. "electrons_found = energy_emissions[~energy_emissions.lost]\n",
  843. "electrons_lost = energy_emissions[energy_emissions.lost]\n",
  844. "\n",
  845. "anz_found = ak.num(electrons[~electrons.lost],axis=0)\n",
  846. "anz_lost = ak.num(electrons[electrons.lost],axis=0)\n",
  847. "print(\"found: \",anz_found)\n",
  848. "print(\"lost: \", anz_lost)\n",
  849. "\n",
  850. "num_velo_found = 0\n",
  851. "num_rich_found = 0\n",
  852. "num_no_up_rad_found = 0\n",
  853. "for itr in range(ak.num(electrons_found, axis=0)):\n",
  854. " if (electrons_found[itr, \"quality\"]==1):\n",
  855. " if (electrons_found[itr, \"velo\"] >= electrons_found[itr, \"rich\"]):\n",
  856. " num_velo_found += 1\n",
  857. " else:\n",
  858. " num_rich_found += 1\n",
  859. " else:\n",
  860. " num_no_up_rad_found += 1\n",
  861. "\n",
  862. "num_velo_lost = 0\n",
  863. "num_rich_lost = 0\n",
  864. "num_no_up_rad_lost = 0\n",
  865. "for itr in range(ak.num(electrons_lost, axis=0)):\n",
  866. " if (electrons_lost[itr, \"quality\"]==1):\n",
  867. " if (electrons_lost[itr, \"velo\"] >= electrons_lost[itr, \"rich\"]):\n",
  868. " num_velo_lost += 1\n",
  869. " else:\n",
  870. " num_rich_lost += 1\n",
  871. " else:\n",
  872. " num_no_up_rad_lost += 1\n",
  873. "\n",
  874. "\n",
  875. "\n",
  876. "denom = ak.num(electrons,axis=0)\n",
  877. "print(denom)\n",
  878. "\n",
  879. "\n",
  880. "eff_velo = num_velo_found/denom\n",
  881. "\n",
  882. "eff_rich = num_rich_found/denom\n",
  883. "\n",
  884. "eff_other = ak.num(electrons_found[electrons_found.quality==0],axis=0)/denom\n",
  885. "\n",
  886. "print(\"VELO energy emission, eff: \", eff_velo)\n",
  887. "\n",
  888. "print(\"RICH1+UT energy emission, eff: \", eff_rich)\n",
  889. "\n",
  890. "print(\"Neither, eff: \", eff_other)\n",
  891. "\n",
  892. "print(\"total efficiency: \", eff_velo + eff_rich + eff_other)\n",
  893. "\n",
  894. "print(\"efficiency: \", anz_found/(anz_found+anz_lost))\n",
  895. "\n",
  896. "print(\"\\nfound in velo/(found + lost in velo)\")\n",
  897. "\n",
  898. "eff_velo = num_velo_found/(num_velo_found+num_velo_lost)\n",
  899. "eff_rich = num_rich_found/(num_rich_found+num_rich_lost)\n",
  900. "\n",
  901. "eff_no_rad = num_no_up_rad_found/(num_no_up_rad_found+num_no_up_rad_lost)\n",
  902. "\n",
  903. "print(\"VELO energy emission, eff: \", eff_velo)\n",
  904. "\n",
  905. "print(\"RICH1+UT energy emission, eff: \", eff_rich)\n",
  906. "\n",
  907. "print(\"eff von e die nicht strahlen: \", eff_no_rad )"
  908. ]
  909. },
  910. {
  911. "cell_type": "code",
  912. "execution_count": 17,
  913. "metadata": {},
  914. "outputs": [
  915. {
  916. "name": "stdout",
  917. "output_type": "stream",
  918. "text": [
  919. "40402\n",
  920. "10099\n",
  921. "50501\n"
  922. ]
  923. }
  924. ],
  925. "source": [
  926. "print(ak.num(electrons[~electrons.lost],axis=0))\n",
  927. "print(ak.num(electrons[electrons.lost],axis=0))\n",
  928. "print(ak.num(electrons,axis=0))\n",
  929. "\n"
  930. ]
  931. },
  932. {
  933. "cell_type": "code",
  934. "execution_count": 23,
  935. "metadata": {},
  936. "outputs": [
  937. {
  938. "data": {
  939. "image/png": "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
  940. "text/plain": [
  941. "<Figure size 640x480 with 1 Axes>"
  942. ]
  943. },
  944. "metadata": {},
  945. "output_type": "display_data"
  946. }
  947. ],
  948. "source": [
  949. "# energyspektren angucken von velo und rich\n",
  950. "diff_found = ak.to_numpy(energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality==1)][\"velo\"]) - ak.to_numpy(energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality==1)][\"rich\"])\n",
  951. "diff_lost = ak.to_numpy(energy_emissions[(energy_emissions.lost) & (energy_emissions.quality==1)][\"velo\"]) - ak.to_numpy(energy_emissions[(energy_emissions.lost) & (energy_emissions.quality==1)][\"rich\"])\n",
  952. "\n",
  953. "xlim = 20000\n",
  954. "\n",
  955. "plt.hist(diff_lost,bins=100,density=True,alpha=0.5,histtype=\"bar\",color=\"darkorange\",label=\"lost\",range=[-xlim,xlim])\n",
  956. "plt.hist(diff_found,bins=100,density=True,alpha=0.5,histtype=\"bar\",color=\"blue\",label=\"found\", range=[-xlim,xlim])\n",
  957. "plt.xlim(-20000,20000)\n",
  958. "plt.title(\"emitted energy difference\")\n",
  959. "plt.xlabel(r\"$E_{velo} - E_{rich}$ [MeV]\")\n",
  960. "plt.ylabel(\"a.u.\")\n",
  961. "plt.legend()\n",
  962. "plt.show()"
  963. ]
  964. },
  965. {
  966. "cell_type": "code",
  967. "execution_count": 19,
  968. "metadata": {},
  969. "outputs": [
  970. {
  971. "data": {
  972. "image/png": "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
  973. "text/plain": [
  974. "<Figure size 640x480 with 1 Axes>"
  975. ]
  976. },
  977. "metadata": {},
  978. "output_type": "display_data"
  979. }
  980. ],
  981. "source": [
  982. "# number of brem vtx with E>x*E_0\n",
  983. "\n",
  984. "number_velo = ak.to_numpy(energy_emissions[energy_emissions.quality==1][\"velo_length\"])\n",
  985. "number_rich = ak.to_numpy(energy_emissions[energy_emissions.quality==1][\"rich_length\"])\n",
  986. "\n",
  987. "\n",
  988. "plt.hist(number_velo,bins=10,density=True,alpha=0.5,histtype=\"bar\",color=\"darkorange\",label=\"velo\",range=[0,10])\n",
  989. "plt.hist(number_rich,bins=10,density=True,alpha=0.5,histtype=\"bar\",color=\"blue\",label=\"rich\",range=[0,10])\n",
  990. "plt.xlim(0,10)\n",
  991. "plt.title(\"number of photons emitted\")\n",
  992. "plt.xlabel(\"number of photons\")\n",
  993. "plt.ylabel(\"a.u.\")\n",
  994. "plt.legend()\n",
  995. "plt.show()"
  996. ]
  997. },
  998. {
  999. "cell_type": "code",
  1000. "execution_count": null,
  1001. "metadata": {},
  1002. "outputs": [],
  1003. "source": []
  1004. },
  1005. {
  1006. "cell_type": "code",
  1007. "execution_count": 20,
  1008. "metadata": {},
  1009. "outputs": [
  1010. {
  1011. "data": {
  1012. "text/plain": [
  1013. "' \\nphoton cut = x*E_0\\neffs, all photons included: x=0\\nfound in velo/(found + lost in velo)\\nVELO energy emission, eff: 0.8446167611094543\\nRICH1+UT energy emission, eff: 0.7961586121437423\\neff von e die nicht strahlen: 0.7954674220963173\\n'"
  1014. ]
  1015. },
  1016. "execution_count": 20,
  1017. "metadata": {},
  1018. "output_type": "execute_result"
  1019. }
  1020. ],
  1021. "source": [
  1022. "\"\"\" \n",
  1023. "photon cut = x*E_0\n",
  1024. "effs, all photons included: x=0\n",
  1025. "found in velo/(found + lost in velo)\n",
  1026. "VELO energy emission, eff: 0.8446167611094543\n",
  1027. "RICH1+UT energy emission, eff: 0.7961586121437423\n",
  1028. "eff von e die nicht strahlen: 0.7954674220963173\n",
  1029. "\"\"\""
  1030. ]
  1031. },
  1032. {
  1033. "cell_type": "code",
  1034. "execution_count": null,
  1035. "metadata": {},
  1036. "outputs": [],
  1037. "source": []
  1038. },
  1039. {
  1040. "cell_type": "code",
  1041. "execution_count": null,
  1042. "metadata": {},
  1043. "outputs": [],
  1044. "source": []
  1045. },
  1046. {
  1047. "cell_type": "code",
  1048. "execution_count": null,
  1049. "metadata": {},
  1050. "outputs": [],
  1051. "source": []
  1052. },
  1053. {
  1054. "cell_type": "code",
  1055. "execution_count": null,
  1056. "metadata": {},
  1057. "outputs": [],
  1058. "source": []
  1059. },
  1060. {
  1061. "cell_type": "code",
  1062. "execution_count": null,
  1063. "metadata": {},
  1064. "outputs": [],
  1065. "source": []
  1066. },
  1067. {
  1068. "cell_type": "code",
  1069. "execution_count": null,
  1070. "metadata": {},
  1071. "outputs": [],
  1072. "source": []
  1073. },
  1074. {
  1075. "cell_type": "code",
  1076. "execution_count": null,
  1077. "metadata": {},
  1078. "outputs": [],
  1079. "source": []
  1080. }
  1081. ],
  1082. "metadata": {
  1083. "kernelspec": {
  1084. "display_name": "tuner",
  1085. "language": "python",
  1086. "name": "python3"
  1087. },
  1088. "language_info": {
  1089. "codemirror_mode": {
  1090. "name": "ipython",
  1091. "version": 3
  1092. },
  1093. "file_extension": ".py",
  1094. "mimetype": "text/x-python",
  1095. "name": "python",
  1096. "nbconvert_exporter": "python",
  1097. "pygments_lexer": "ipython3",
  1098. "version": "3.10.12"
  1099. }
  1100. },
  1101. "nbformat": 4,
  1102. "nbformat_minor": 2
  1103. }