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.

1139 lines
147 KiB

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