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.

927 lines
353 KiB

11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
11 months ago
11 months ago
1 year ago
1 year ago
11 months ago
11 months ago
1 year ago
1 year ago
11 months ago
11 months ago
1 year ago
1 year ago
11 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 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": 2,
  26. "metadata": {},
  27. "outputs": [
  28. {
  29. "data": {
  30. "text/plain": [
  31. "10522"
  32. ]
  33. },
  34. "execution_count": 2,
  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": 3,
  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": 4,
  82. "metadata": {},
  83. "outputs": [],
  84. "source": [
  85. "#try excluding all photons that originate from a vtx @ z>9500mm\n",
  86. "#ignore all brem vertices @ z>9500mm \n",
  87. "\n",
  88. "#found\n",
  89. "\n",
  90. "brem_e_f = found[\"brem_photons_pe\"]\n",
  91. "brem_z_f = found[\"brem_vtx_z\"]\n",
  92. "e_f = found[\"energy\"]\n",
  93. "length_f = found[\"brem_vtx_z_length\"]\n",
  94. "\n",
  95. "brem_f = ak.ArrayBuilder()\n",
  96. "\n",
  97. "for itr in range(ak.num(found,axis=0)):\n",
  98. " brem_f.begin_record()\n",
  99. " #[:,\"energy\"] energy\n",
  100. " brem_f.field(\"energy\").append(e_f[itr])\n",
  101. " #[:,\"photon_length\"] number of vertices\n",
  102. " brem_f.field(\"photon_length\").integer(length_f[itr])\n",
  103. " #[:,\"brem_photons_pe\",:] photon energy \n",
  104. " brem_f.field(\"brem_photons_pe\").append(brem_e_f[itr])\n",
  105. " #[:,\"brem_vtx_z\",:] brem vtx z\n",
  106. " brem_f.field(\"brem_vtx_z\").append(brem_z_f[itr])\n",
  107. " brem_f.end_record()\n",
  108. "\n",
  109. "brem_f = ak.Array(brem_f)\n",
  110. "\n",
  111. "#lost\n",
  112. "\n",
  113. "brem_e_l = lost[\"brem_photons_pe\"]\n",
  114. "brem_z_l = lost[\"brem_vtx_z\"]\n",
  115. "e_l = lost[\"energy\"]\n",
  116. "length_l = lost[\"brem_vtx_z_length\"]\n",
  117. "\n",
  118. "brem_l = ak.ArrayBuilder()\n",
  119. "\n",
  120. "for itr in range(ak.num(lost,axis=0)):\n",
  121. " brem_l.begin_record()\n",
  122. " #[:,\"energy\"] energy\n",
  123. " brem_l.field(\"energy\").append(e_l[itr])\n",
  124. " #[:,\"photon_length\"] number of vertices\n",
  125. " brem_l.field(\"photon_length\").integer(length_l[itr])\n",
  126. " #[:,\"brem_photons_pe\",:] photon energy \n",
  127. " brem_l.field(\"brem_photons_pe\").append(brem_e_l[itr])\n",
  128. " #[:,\"brem_vtx_z\",:] brem vtx z\n",
  129. " brem_l.field(\"brem_vtx_z\").append(brem_z_l[itr])\n",
  130. " brem_l.end_record()\n",
  131. "\n",
  132. "brem_l = ak.Array(brem_l)"
  133. ]
  134. },
  135. {
  136. "cell_type": "code",
  137. "execution_count": 5,
  138. "metadata": {},
  139. "outputs": [],
  140. "source": [
  141. "cut_brem_found = ak.ArrayBuilder()\n",
  142. "\n",
  143. "for itr in range(ak.num(brem_f, axis=0)):\n",
  144. " cut_brem_found.begin_record()\n",
  145. " cut_brem_found.field(\"energy\").real(brem_f[itr,\"energy\"])\n",
  146. " \n",
  147. " cut_brem_found.field(\"brem_photons_pe\")\n",
  148. " cut_brem_found.begin_list()\n",
  149. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  150. " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n",
  151. " continue\n",
  152. " else:\n",
  153. " cut_brem_found.real(brem_f[itr,\"brem_photons_pe\", jentry])\n",
  154. " \n",
  155. " #cut_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
  156. " cut_brem_found.end_list()\n",
  157. " \n",
  158. " cut_brem_found.field(\"brem_vtx_z\")\n",
  159. " cut_brem_found.begin_list()\n",
  160. " for jentry in range(brem_f[itr, \"photon_length\"]):\n",
  161. " if brem_f[itr, \"brem_vtx_z\", jentry]>9500:\n",
  162. " continue\n",
  163. " else:\n",
  164. " cut_brem_found.real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
  165. " cut_brem_found.end_list()\n",
  166. " \n",
  167. "\n",
  168. " \n",
  169. " cut_brem_found.end_record()\n",
  170. "\n",
  171. "cut_brem_found = ak.Array(cut_brem_found)\n",
  172. "\n",
  173. "\n",
  174. "\n",
  175. "cut_brem_lost = ak.ArrayBuilder()\n",
  176. "\n",
  177. "for itr in range(ak.num(brem_l, axis=0)):\n",
  178. " cut_brem_lost.begin_record()\n",
  179. " cut_brem_lost.field(\"energy\").real(brem_l[itr,\"energy\"])\n",
  180. " \n",
  181. " \n",
  182. " cut_brem_lost.field(\"brem_photons_pe\")\n",
  183. " cut_brem_lost.begin_list()\n",
  184. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  185. " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n",
  186. " continue\n",
  187. " else:\n",
  188. " cut_brem_lost.real(brem_l[itr,\"brem_photons_pe\", jentry])\n",
  189. " \n",
  190. " #cut_brem_found.field(\"brem_vtx_z\").real(brem_f[itr, \"brem_vtx_z\",jentry])\n",
  191. " cut_brem_lost.end_list()\n",
  192. " \n",
  193. " cut_brem_lost.field(\"brem_vtx_z\")\n",
  194. " cut_brem_lost.begin_list()\n",
  195. " for jentry in range(brem_l[itr, \"photon_length\"]):\n",
  196. " if brem_l[itr, \"brem_vtx_z\", jentry]>9500:\n",
  197. " continue\n",
  198. " else:\n",
  199. " cut_brem_lost.real(brem_l[itr, \"brem_vtx_z\",jentry])\n",
  200. " cut_brem_lost.end_list()\n",
  201. " \n",
  202. " cut_brem_lost.end_record()\n",
  203. "\n",
  204. "cut_brem_lost = ak.Array(cut_brem_lost)\n"
  205. ]
  206. },
  207. {
  208. "cell_type": "code",
  209. "execution_count": 6,
  210. "metadata": {},
  211. "outputs": [
  212. {
  213. "data": {
  214. "text/html": [
  215. "<pre>{energy: 9.36e+03,\n",
  216. " brem_photons_pe: [2.47e+03, 170, 224, 388, 3.23e+03, 809, 172, 224],\n",
  217. " brem_vtx_z: [400, 501, 638, 667, 677, 709, 8.58e+03, 9.28e+03]}\n",
  218. "---------------------------------------------------------------------\n",
  219. "type: {\n",
  220. " energy: float64,\n",
  221. " brem_photons_pe: var * float64,\n",
  222. " brem_vtx_z: var * float64\n",
  223. "}</pre>"
  224. ],
  225. "text/plain": [
  226. "<Record {energy: 9.36e+03, ...} type='{energy: float64, brem_photons_pe: va...'>"
  227. ]
  228. },
  229. "execution_count": 6,
  230. "metadata": {},
  231. "output_type": "execute_result"
  232. }
  233. ],
  234. "source": [
  235. "#data in cut_brem_found and cut_brem_lost\n",
  236. "\n",
  237. "cut_length_found = ak.num(cut_brem_found[\"brem_photons_pe\"],axis=-1)\n",
  238. "cut_length_lost = ak.num(cut_brem_lost[\"brem_photons_pe\"], axis=-1)\n",
  239. "\n",
  240. "cut_brem_found[1]\n"
  241. ]
  242. },
  243. {
  244. "cell_type": "code",
  245. "execution_count": 7,
  246. "metadata": {},
  247. "outputs": [
  248. {
  249. "data": {
  250. "text/plain": [
  251. "8"
  252. ]
  253. },
  254. "execution_count": 7,
  255. "metadata": {},
  256. "output_type": "execute_result"
  257. }
  258. ],
  259. "source": [
  260. "cut_length_found[1]"
  261. ]
  262. },
  263. {
  264. "cell_type": "markdown",
  265. "metadata": {},
  266. "source": [
  267. "### Split in Upstream and Downstream Events and analyse separately"
  268. ]
  269. },
  270. {
  271. "cell_type": "code",
  272. "execution_count": 8,
  273. "metadata": {},
  274. "outputs": [],
  275. "source": [
  276. "#try to find a split between energy lost before and after the magnet (z~5000mm)\n",
  277. "\n",
  278. "upstream_found = ak.ArrayBuilder()\n",
  279. "downstream_found = ak.ArrayBuilder()\n",
  280. "\n",
  281. "for itr in range(ak.num(cut_brem_found, axis=0)):\n",
  282. " upstream_found.begin_record()\n",
  283. " upstream_found.field(\"energy\").real(cut_brem_found[itr,\"energy\"])\n",
  284. " \n",
  285. " downstream_found.begin_record()\n",
  286. " downstream_found.field(\"energy\").real(cut_brem_found[itr,\"energy\"])\n",
  287. " \n",
  288. " upstream_found.field(\"brem_photons_pe\")\n",
  289. " downstream_found.field(\"brem_photons_pe\")\n",
  290. " upstream_found.begin_list()\n",
  291. " downstream_found.begin_list()\n",
  292. " for jentry in range(cut_length_found[itr]):\n",
  293. " if (cut_brem_found[itr, \"brem_vtx_z\", jentry]>5000):\n",
  294. " if cut_brem_found[itr, \"brem_vtx_z\", jentry]<=9500:\n",
  295. " downstream_found.real(cut_brem_found[itr,\"brem_photons_pe\",jentry])\n",
  296. " else:\n",
  297. " continue\n",
  298. " else:\n",
  299. " upstream_found.real(cut_brem_found[itr,\"brem_photons_pe\", jentry]) \n",
  300. " upstream_found.end_list()\n",
  301. " downstream_found.end_list()\n",
  302. " \n",
  303. " upstream_found.field(\"brem_vtx_z\")\n",
  304. " downstream_found.field(\"brem_vtx_z\")\n",
  305. " upstream_found.begin_list()\n",
  306. " downstream_found.begin_list()\n",
  307. " for jentry in range(cut_length_found[itr]):\n",
  308. " if cut_brem_found[itr, \"brem_vtx_z\", jentry]>5000:\n",
  309. " if cut_brem_found[itr,\"brem_vtx_z\",jentry]<=9500:\n",
  310. " downstream_found.real(cut_brem_found[itr,\"brem_vtx_z\",jentry])\n",
  311. " else:\n",
  312. " continue\n",
  313. " else:\n",
  314. " upstream_found.real(cut_brem_found[itr, \"brem_vtx_z\",jentry])\n",
  315. " upstream_found.end_list()\n",
  316. " downstream_found.end_list()\n",
  317. " upstream_found.end_record()\n",
  318. " downstream_found.end_record()\n",
  319. " \n",
  320. "\n",
  321. "upstream_found = ak.Array(upstream_found)\n",
  322. "downstream_found = ak.Array(downstream_found)\n",
  323. "\n",
  324. "\n",
  325. "upstream_lost = ak.ArrayBuilder()\n",
  326. "downstream_lost = ak.ArrayBuilder()\n",
  327. "\n",
  328. "for itr in range(ak.num(cut_brem_lost, axis=0)):\n",
  329. " upstream_lost.begin_record()\n",
  330. " upstream_lost.field(\"energy\").real(cut_brem_lost[itr,\"energy\"])\n",
  331. " \n",
  332. " downstream_lost.begin_record()\n",
  333. " downstream_lost.field(\"energy\").real(cut_brem_lost[itr,\"energy\"])\n",
  334. " \n",
  335. " upstream_lost.field(\"brem_photons_pe\")\n",
  336. " downstream_lost.field(\"brem_photons_pe\")\n",
  337. " upstream_lost.begin_list()\n",
  338. " downstream_lost.begin_list()\n",
  339. " for jentry in range(cut_length_lost[itr]):\n",
  340. " if (cut_brem_lost[itr, \"brem_vtx_z\", jentry]>5000):\n",
  341. " if cut_brem_lost[itr, \"brem_vtx_z\", jentry]<=9500:\n",
  342. " downstream_lost.real(cut_brem_lost[itr,\"brem_photons_pe\",jentry])\n",
  343. " else:\n",
  344. " continue\n",
  345. " else:\n",
  346. " upstream_lost.real(cut_brem_lost[itr,\"brem_photons_pe\", jentry]) \n",
  347. " upstream_lost.end_list()\n",
  348. " downstream_lost.end_list()\n",
  349. " \n",
  350. " upstream_lost.field(\"brem_vtx_z\")\n",
  351. " downstream_lost.field(\"brem_vtx_z\")\n",
  352. " upstream_lost.begin_list()\n",
  353. " downstream_lost.begin_list()\n",
  354. " for jentry in range(cut_length_lost[itr]):\n",
  355. " if cut_brem_lost[itr, \"brem_vtx_z\", jentry]>5000:\n",
  356. " if cut_brem_lost[itr,\"brem_vtx_z\",jentry]<=9500:\n",
  357. " downstream_lost.real(cut_brem_lost[itr,\"brem_vtx_z\",jentry])\n",
  358. " else:\n",
  359. " continue\n",
  360. " else:\n",
  361. " upstream_lost.real(cut_brem_lost[itr, \"brem_vtx_z\",jentry])\n",
  362. " upstream_lost.end_list()\n",
  363. " downstream_lost.end_list()\n",
  364. " upstream_lost.end_record()\n",
  365. " downstream_lost.end_record()\n",
  366. " \n",
  367. "\n",
  368. "upstream_lost = ak.Array(upstream_lost)\n",
  369. "downstream_lost = ak.Array(downstream_lost)\n"
  370. ]
  371. },
  372. {
  373. "cell_type": "code",
  374. "execution_count": 9,
  375. "metadata": {},
  376. "outputs": [
  377. {
  378. "data": {
  379. "text/html": [
  380. "<pre>{energy: 4.62e+04,\n",
  381. " brem_photons_pe: [3.26e+03, 4.45e+03, 178, 1.45e+04, 1.1e+03, 3.79e+03],\n",
  382. " brem_vtx_z: [162, 187, 387, 487, 1.34e+03, 2.32e+03]}\n",
  383. "-------------------------------------------------------------------------\n",
  384. "type: {\n",
  385. " energy: float64,\n",
  386. " brem_photons_pe: var * float64,\n",
  387. " brem_vtx_z: var * float64\n",
  388. "}</pre>"
  389. ],
  390. "text/plain": [
  391. "<Record {energy: 4.62e+04, ...} type='{energy: float64, brem_photons_pe: va...'>"
  392. ]
  393. },
  394. "execution_count": 9,
  395. "metadata": {},
  396. "output_type": "execute_result"
  397. }
  398. ],
  399. "source": [
  400. "upstream_found[0]"
  401. ]
  402. },
  403. {
  404. "cell_type": "code",
  405. "execution_count": null,
  406. "metadata": {},
  407. "outputs": [],
  408. "source": []
  409. },
  410. {
  411. "cell_type": "code",
  412. "execution_count": 10,
  413. "metadata": {},
  414. "outputs": [
  415. {
  416. "name": "stdout",
  417. "output_type": "stream",
  418. "text": [
  419. "\n",
  420. "upstream: cutoff energy = 350MeV, sample size: 1562\n",
  421. "eff = 0.9181 +/- 0.007\n"
  422. ]
  423. }
  424. ],
  425. "source": [
  426. "#plot efficiency against cutoff energy \n",
  427. "up_efficiencies = []\n",
  428. "up_deff = []\n",
  429. "\n",
  430. "\n",
  431. "for cutoff_energy in range(0,10050,200):\n",
  432. "\tup_nobrem_f = upstream_found[ak.sum(upstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  433. "\tup_nobrem_l = upstream_lost[ak.sum(upstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  434. "\t\n",
  435. "\tif ak.num(up_nobrem_f,axis=0)+ak.num(up_nobrem_l,axis=0)==0:\n",
  436. "\t\tup_efficiencies.append(0)\n",
  437. "\t\tup_deff.append(0)\n",
  438. "\t\tcontinue\n",
  439. "\n",
  440. "\teff = t_eff(up_nobrem_f,up_nobrem_l)\n",
  441. "\tdeff = eff_err(up_nobrem_f,up_nobrem_l)\n",
  442. "\tup_efficiencies.append(eff)\n",
  443. "\tup_deff.append(deff)\n",
  444. "\n",
  445. "\t#print(\"\\ncutoff = \",str(cutoff_energy),\"MeV, sample size: \",ak.num(up_nobrem_f,axis=0)+ak.num(up_nobrem_l,axis=0))\n",
  446. "\t#print(\"eff = \",np.round(eff,4), \"+/-\", np.round(eff_err(up_nobrem_f, up_nobrem_l),4))\n",
  447. "\n",
  448. "\"\"\"\n",
  449. "we see that a cutoff energy of xxxMeV is ideal because the efficiency drops significantly for higher values\n",
  450. "\"\"\"\n",
  451. "cutoff_energy = 350.0 #MeV\n",
  452. "\n",
  453. "\"\"\"\n",
  454. "better statistics: cutoff=xxxMeV - sample size: xxx events and efficiency=xxxx\n",
  455. "\"\"\"\n",
  456. "up_nobrem_found = upstream_found[ak.sum(upstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  457. "up_nobrem_lost = upstream_lost[ak.sum(upstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  458. "\n",
  459. "print(\"\\nupstream: cutoff energy = 350MeV, sample size:\",ak.num(up_nobrem_found,axis=0)+ak.num(up_nobrem_lost,axis=0))\n",
  460. "print(\"eff = \",np.round(t_eff(up_nobrem_found, up_nobrem_lost),4), \"+/-\", np.round(eff_err(up_nobrem_found, up_nobrem_lost),3))\n"
  461. ]
  462. },
  463. {
  464. "cell_type": "code",
  465. "execution_count": 11,
  466. "metadata": {},
  467. "outputs": [
  468. {
  469. "name": "stdout",
  470. "output_type": "stream",
  471. "text": [
  472. "nobrem_vertices\n",
  473. "upstream: cutoff energy = 350MeV, sample size: 1562\n",
  474. "eff = 0.9181 +/- 0.007\n",
  475. "\n",
  476. "downstream: cutoff energy = 350MeV, sample size: 5131\n",
  477. "eff = 0.8864 +/- 0.004\n"
  478. ]
  479. }
  480. ],
  481. "source": [
  482. "down_efficiencies = []\n",
  483. "down_deff = []\n",
  484. "\n",
  485. "for cutoff_energy in range(0,10050,200):\n",
  486. "\tdown_nobrem_f = downstream_found[ak.sum(downstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  487. "\tdown_nobrem_l = downstream_lost[ak.sum(downstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  488. "\n",
  489. "\tif ak.num(down_nobrem_f,axis=0)+ak.num(down_nobrem_l,axis=0)==0:\n",
  490. "\t\tdown_efficiencies.append(0)\n",
  491. "\t\tdown_deff.append(0)\n",
  492. "\t\tcontinue\n",
  493. "\teff = t_eff(down_nobrem_f,down_nobrem_l)\n",
  494. "\tdeff = eff_err(down_nobrem_f,down_nobrem_l)\n",
  495. "\tdown_efficiencies.append(eff)\n",
  496. "\tdown_deff.append(deff)\n",
  497. "\n",
  498. "\n",
  499. "\t#print(\"\\ncutoff = \",str(cutoff_energy),\"MeV, sample size: \",ak.num(down_nobrem_f,axis=0)+ak.num(down_nobrem_l,axis=0))\n",
  500. "\t#print(\"eff = \",np.round(eff,4), \"+/-\", np.round(eff_err(down_nobrem_f, down_nobrem_l),4))\n",
  501. "\n",
  502. "\"\"\"\n",
  503. "we see that a cutoff energy of xxxMeV is ideal because the efficiency drops significantly for higher values\n",
  504. "\"\"\"\n",
  505. "cutoff_energy = 350.0 #MeV\n",
  506. "\n",
  507. "\"\"\"\n",
  508. "better statistics: cutoff=xxxMeV - sample size: xxx events and efficiency=xxxx\n",
  509. "\"\"\"\n",
  510. "down_nobrem_found = downstream_found[ak.sum(downstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  511. "down_nobrem_lost = downstream_lost[ak.sum(downstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)<cutoff_energy]\n",
  512. "\n",
  513. "\n",
  514. "print(\"nobrem_vertices\\nupstream: cutoff energy = 350MeV, sample size:\",ak.num(up_nobrem_found,axis=0)+ak.num(up_nobrem_lost,axis=0))\n",
  515. "print(\"eff = \",np.round(t_eff(up_nobrem_found, up_nobrem_lost),4), \"+/-\", np.round(eff_err(up_nobrem_found, up_nobrem_lost),3))\n",
  516. "\n",
  517. "print(\"\\ndownstream: cutoff energy = 350MeV, sample size:\",ak.num(down_nobrem_found,axis=0)+ak.num(down_nobrem_lost,axis=0))\n",
  518. "print(\"eff = \",np.round(t_eff(down_nobrem_found, down_nobrem_lost),4), \"+/-\", np.round(eff_err(down_nobrem_found, down_nobrem_lost),3))\n"
  519. ]
  520. },
  521. {
  522. "cell_type": "code",
  523. "execution_count": 12,
  524. "metadata": {},
  525. "outputs": [
  526. {
  527. "data": {
  528. "image/png": "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
  529. "text/plain": [
  530. "<Figure size 1800x600 with 2 Axes>"
  531. ]
  532. },
  533. "metadata": {},
  534. "output_type": "display_data"
  535. }
  536. ],
  537. "source": [
  538. "#plot efficiencies wrt cutoff energy\n",
  539. "fig, ax = plt.subplots(nrows=1,ncols=2,figsize=(18,6))\n",
  540. "x_ = np.arange(0,10050,step=200)\n",
  541. "\n",
  542. "ax[0].errorbar(x_,up_efficiencies,yerr=up_deff, ls=\"\", capsize=1,fmt=\".\")\n",
  543. "ax[0].set(xlabel=\"cutoff energy [MeV]\",ylabel=r\"$\\epsilon$\",title=\"upstream\", ylim=[0.8,1.0])\n",
  544. "#ax[0].set_yticks(np.arange(0.8,1.01,step=0.02),minor=False)\n",
  545. "#ax[0].set_xticks(np.arange(0,10100,step=200),minor=True)\n",
  546. "#ax[0].grid()\n",
  547. "\n",
  548. "ax[1].errorbar(x_,down_efficiencies,yerr=down_deff, ls=\"\", capsize=1,fmt=\".\")\n",
  549. "ax[1].set(xlabel=\"cutoff energy [MeV]\",ylabel=r\"$\\epsilon$\",title=\"downstream\", ylim=[0.8,1.0])\n",
  550. "#ax[1].set_yticks(np.arange(0.8,1.01,step=0.02),minor=False)\n",
  551. "#ax[1].set_xticks(np.arange(0,10100,step=200),minor=True)\n",
  552. "#ax[1].grid(True)\n",
  553. "\n",
  554. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, nobrem electrons\")\n",
  555. "\n",
  556. "\n",
  557. "plt.show()"
  558. ]
  559. },
  560. {
  561. "cell_type": "code",
  562. "execution_count": null,
  563. "metadata": {},
  564. "outputs": [],
  565. "source": []
  566. },
  567. {
  568. "cell_type": "code",
  569. "execution_count": 13,
  570. "metadata": {},
  571. "outputs": [
  572. {
  573. "name": "stdout",
  574. "output_type": "stream",
  575. "text": [
  576. "brem vertices\n",
  577. "upstream eff = 0.851 +/- 0.004\n",
  578. "downstream eff = 0.836 +/- 0.005\n"
  579. ]
  580. }
  581. ],
  582. "source": [
  583. "cutoff_energy=350\n",
  584. "#possibly: instead of checking if any photons exceed the cutoff, use the sum of all photon energies to separate nobrem and brem\n",
  585. "\n",
  586. "upstream_brem_found = upstream_found[ak.sum(upstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n",
  587. "up_energy_found = ak.to_numpy(upstream_brem_found[\"energy\"])\n",
  588. "up_eph_found = ak.to_numpy(ak.sum(upstream_brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  589. "up_residual_found = up_energy_found - up_eph_found\n",
  590. "up_energyloss_found = up_eph_found/up_energy_found\n",
  591. "\n",
  592. "\n",
  593. "upstream_brem_lost = upstream_lost[ak.sum(upstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n",
  594. "up_energy_lost = ak.to_numpy(upstream_brem_lost[\"energy\"])\n",
  595. "up_eph_lost = ak.to_numpy(ak.sum(upstream_brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  596. "up_residual_lost = up_energy_lost - up_eph_lost\n",
  597. "up_energyloss_lost = up_eph_lost/up_energy_lost\n",
  598. "\n",
  599. "\n",
  600. "print(\"brem vertices\\nupstream eff = \", np.round(t_eff(upstream_brem_found,upstream_brem_lost),3), \"+/-\", np.round(eff_err(upstream_brem_found, upstream_brem_lost),3))\n",
  601. "\n",
  602. "\n",
  603. "downstream_brem_found = downstream_found[ak.sum(downstream_found[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n",
  604. "down_energy_found = ak.to_numpy(downstream_brem_found[\"energy\"])\n",
  605. "down_eph_found = ak.to_numpy(ak.sum(downstream_brem_found[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  606. "down_residual_found = down_energy_found - down_eph_found\n",
  607. "down_energyloss_found = down_eph_found/down_energy_found\n",
  608. "\n",
  609. "\n",
  610. "downstream_brem_lost = downstream_lost[ak.sum(downstream_lost[\"brem_photons_pe\"],axis=-1,keepdims=False)>=cutoff_energy]\n",
  611. "down_energy_lost = ak.to_numpy(downstream_brem_lost[\"energy\"])\n",
  612. "down_eph_lost = ak.to_numpy(ak.sum(downstream_brem_lost[\"brem_photons_pe\"], axis=-1, keepdims=False))\n",
  613. "down_residual_lost = down_energy_lost - down_eph_lost\n",
  614. "down_energyloss_lost = down_eph_lost/down_energy_lost\n",
  615. "\n",
  616. "\n",
  617. "print(\"downstream eff = \", np.round(t_eff(downstream_brem_found,downstream_brem_lost),3), \"+/-\", np.round(eff_err(downstream_brem_found, downstream_brem_lost),3))"
  618. ]
  619. },
  620. {
  621. "cell_type": "code",
  622. "execution_count": 14,
  623. "metadata": {},
  624. "outputs": [
  625. {
  626. "name": "stdout",
  627. "output_type": "stream",
  628. "text": [
  629. "upstream:\n",
  630. "mean energyloss relative to initial energy (found): 0.33078325542598164\n",
  631. "mean energyloss relative to initial energy (lost): 0.5708618852236069\n",
  632. "downstream:\n",
  633. "mean energyloss relative to initial energy (found): 0.19104090843883118\n",
  634. "mean energyloss relative to initial energy (lost): 0.3051594568487781\n"
  635. ]
  636. }
  637. ],
  638. "source": [
  639. "print(\"upstream:\\nmean energyloss relative to initial energy (found): \",ak.mean(up_energyloss_found))\n",
  640. "print(\"mean energyloss relative to initial energy (lost): \", ak.mean(up_energyloss_lost))\n",
  641. "\n",
  642. "print(\"downstream:\\nmean energyloss relative to initial energy (found): \",ak.mean(down_energyloss_found))\n",
  643. "print(\"mean energyloss relative to initial energy (lost): \", ak.mean(down_energyloss_lost))"
  644. ]
  645. },
  646. {
  647. "cell_type": "code",
  648. "execution_count": 15,
  649. "metadata": {},
  650. "outputs": [
  651. {
  652. "data": {
  653. "image/png": "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
  654. "text/plain": [
  655. "<Figure size 1800x600 with 2 Axes>"
  656. ]
  657. },
  658. "metadata": {},
  659. "output_type": "display_data"
  660. }
  661. ],
  662. "source": [
  663. "#in abhängigkeit von der energie der elektronen\n",
  664. "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18,6))\n",
  665. "\n",
  666. "\n",
  667. "ax[0].hist(up_energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
  668. "ax[0].hist(up_energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  669. "#ax[0].set_xticks(np.arange(0,1.1,0.1), minor=True,)\n",
  670. "#ax[0].set_yticks(np.arange(0,11,1), minor=True)\n",
  671. "ax[0].set_xlabel(r\"$E_\\gamma/E_0$\")\n",
  672. "ax[0].set_ylabel(\"counts (normed)\")\n",
  673. "ax[0].set_title(\"Upstream\")\n",
  674. "ax[0].legend()\n",
  675. "#ax[0].grid()\n",
  676. "\n",
  677. "ax[1].hist(down_energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
  678. "ax[1].hist(down_energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  679. "#ax[1].set_xticks(np.arange(0,1.1,0.1), minor=True,)\n",
  680. "#ax[1].set_yticks(np.arange(0,11,1), minor=True)\n",
  681. "ax[1].set_xlabel(r\"$E_\\gamma/E_0$\")\n",
  682. "ax[1].set_ylabel(\"counts (normed)\")\n",
  683. "ax[1].set_title(\"Downstream\")\n",
  684. "ax[1].legend()\n",
  685. "#ax[1].grid()\n",
  686. "\n",
  687. "\"\"\"\n",
  688. "most electrons lose little energy relative to their initial energy downstream\n",
  689. "\"\"\"\n",
  690. "fig.suptitle(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, photons w/ brem_vtx_z$<9500$mm\")\n",
  691. "plt.show()"
  692. ]
  693. },
  694. {
  695. "cell_type": "code",
  696. "execution_count": null,
  697. "metadata": {},
  698. "outputs": [],
  699. "source": []
  700. },
  701. {
  702. "cell_type": "code",
  703. "execution_count": 16,
  704. "metadata": {},
  705. "outputs": [
  706. {
  707. "data": {
  708. "image/png": "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
  709. "text/plain": [
  710. "<Figure size 640x480 with 1 Axes>"
  711. ]
  712. },
  713. "metadata": {},
  714. "output_type": "display_data"
  715. }
  716. ],
  717. "source": [
  718. "plt.hist(up_energyloss_lost, bins=100, density=True, alpha=0.5, histtype='bar', color=\"darkorange\", label=\"lost\")\n",
  719. "plt.hist(up_energyloss_found, bins=100, density=True, alpha=0.5, histtype='bar', color=\"blue\", label=\"found\")\n",
  720. "plt.xlabel(r\"$E_\\gamma/E_0$\")\n",
  721. "plt.ylabel(\"counts (normed)\")\n",
  722. "plt.title(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, photons w/ brem_vtx_z$<9500$mm\")\n",
  723. "plt.legend(title=\"LHCb Simulation\", title_fontsize=15)\n",
  724. "plt.text(0.35,2.0, \"Upstream\", size=15)\n",
  725. "plt.show()"
  726. ]
  727. },
  728. {
  729. "cell_type": "code",
  730. "execution_count": 17,
  731. "metadata": {},
  732. "outputs": [
  733. {
  734. "data": {
  735. "image/png": "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
  736. "text/plain": [
  737. "<Figure size 2000x600 with 3 Axes>"
  738. ]
  739. },
  740. "metadata": {},
  741. "output_type": "display_data"
  742. }
  743. ],
  744. "source": [
  745. "#energyloss in abh von der energie der elektronen\n",
  746. "#upstream\n",
  747. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  748. "\n",
  749. "a0=ax0.hist2d(up_energyloss_found, up_energy_found, bins=(np.linspace(0,1,80), np.linspace(0,5e4,80)), cmap=plt.cm.jet, cmin=1, vmax=15)\n",
  750. "ax0.set_ylim(0,5e4)\n",
  751. "ax0.set_xlim(0,1)\n",
  752. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  753. "ax0.set_ylabel(r\"$E_0$\")\n",
  754. "ax0.set_title(\"found energyloss wrt electron energy\")\n",
  755. "\n",
  756. "a1=ax1.hist2d(up_energyloss_lost, up_energy_lost, bins=(np.linspace(0,1,50), np.linspace(0,5e4,50)), cmap=plt.cm.jet, cmin=1, vmax=15)\n",
  757. "ax1.set_ylim(0,5e4)\n",
  758. "ax1.set_xlim(0,1)\n",
  759. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  760. "ax1.set_ylabel(r\"$E_0$\")\n",
  761. "ax1.set_title(\"lost energyloss wrt electron energy\")\n",
  762. "\n",
  763. "fig.colorbar(a1[3],ax=ax1)\n",
  764. "fig.suptitle(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, Upstream photons w/ brem_vtx_z$<9500$mm\")\n",
  765. "\n",
  766. "\n",
  767. "plt.show()"
  768. ]
  769. },
  770. {
  771. "cell_type": "code",
  772. "execution_count": 18,
  773. "metadata": {},
  774. "outputs": [
  775. {
  776. "data": {
  777. "image/png": "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
  778. "text/plain": [
  779. "<Figure size 2000x600 with 3 Axes>"
  780. ]
  781. },
  782. "metadata": {},
  783. "output_type": "display_data"
  784. }
  785. ],
  786. "source": [
  787. "#downstream\n",
  788. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  789. "\n",
  790. "a0=ax0.hist2d(down_energyloss_found, down_energy_found, bins=(np.linspace(0,1,80), np.linspace(0,5e4,80)), cmap=plt.cm.jet, cmin=1, vmax=15)\n",
  791. "ax0.set_ylim(0,5e4)\n",
  792. "ax0.set_xlim(0,1)\n",
  793. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  794. "ax0.set_ylabel(r\"$E_0$\")\n",
  795. "ax0.set_title(\"found energyloss wrt electron energy\")\n",
  796. "\n",
  797. "a1=ax1.hist2d(down_energyloss_lost, down_energy_lost, bins=(np.linspace(0,1,50), np.linspace(0,5e4,50)), cmap=plt.cm.jet, cmin=1, vmax=15)\n",
  798. "ax1.set_ylim(0,5e4)\n",
  799. "ax1.set_xlim(0,1)\n",
  800. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  801. "ax1.set_ylabel(r\"$E_0$\")\n",
  802. "ax1.set_title(\"lost energyloss wrt electron energy\")\n",
  803. "\n",
  804. "fig.colorbar(a1[3],ax=ax1)\n",
  805. "fig.suptitle(r\"$B\\rightarrow K^\\ast ee$, $p>5$GeV, Downstream photons w/ brem_vtx_z$<9500$mm\")\n",
  806. "\n",
  807. "\n",
  808. "plt.show()"
  809. ]
  810. },
  811. {
  812. "cell_type": "code",
  813. "execution_count": 19,
  814. "metadata": {},
  815. "outputs": [
  816. {
  817. "data": {
  818. "image/png": "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
  819. "text/plain": [
  820. "<Figure size 2000x600 with 3 Axes>"
  821. ]
  822. },
  823. "metadata": {},
  824. "output_type": "display_data"
  825. }
  826. ],
  827. "source": [
  828. "#plot residual energy against energyloss and try to find a good split (eg energyloss before and after the magnet)\n",
  829. "#upstream\n",
  830. "nbins=60\n",
  831. "\n",
  832. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  833. "\n",
  834. "a0=ax0.hist2d(up_energyloss_found, up_residual_found, bins=(np.linspace(0,1,nbins), np.linspace(0,5e4,nbins)), cmap=plt.cm.jet, cmin=1, vmax=20)\n",
  835. "ax0.set_ylim(0,5e4)\n",
  836. "ax0.set_xlim(0,1)\n",
  837. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  838. "ax0.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  839. "ax0.set_title(\"found energyloss wrt residual electron energy\")\n",
  840. "\n",
  841. "a1=ax1.hist2d(up_energyloss_lost, up_residual_lost, bins=(np.linspace(0,1,nbins), np.linspace(0,5e4,nbins)), cmap=plt.cm.jet, cmin=1, vmax=20) \n",
  842. "ax1.set_ylim(0,5e4)\n",
  843. "ax1.set_xlim(0,1)\n",
  844. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  845. "ax1.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  846. "ax1.set_title(\"lost energyloss wrt residual electron energy\")\n",
  847. "\n",
  848. "fig.colorbar(a1[3],ax=ax1)\n",
  849. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, Upstream photons w/ brem_vtx_z$<9500$mm\")\n",
  850. "\n",
  851. "\"\"\"\n",
  852. "\"\"\"\n",
  853. "plt.show()"
  854. ]
  855. },
  856. {
  857. "cell_type": "code",
  858. "execution_count": 20,
  859. "metadata": {},
  860. "outputs": [
  861. {
  862. "data": {
  863. "image/png": "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
  864. "text/plain": [
  865. "<Figure size 2000x600 with 3 Axes>"
  866. ]
  867. },
  868. "metadata": {},
  869. "output_type": "display_data"
  870. }
  871. ],
  872. "source": [
  873. "#downstream\n",
  874. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20,6))\n",
  875. "\n",
  876. "a0=ax0.hist2d(down_energyloss_found, down_residual_found, bins=(np.linspace(0,1,60), np.linspace(0,5e4,60)), cmap=plt.cm.jet, cmin=1, vmax=25)\n",
  877. "ax0.set_ylim(0,5e4)\n",
  878. "ax0.set_xlim(0,1)\n",
  879. "ax0.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  880. "ax0.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  881. "ax0.set_title(\"found energyloss wrt residual electron energy\")\n",
  882. "\n",
  883. "a1=ax1.hist2d(down_energyloss_lost, down_residual_lost, bins=(np.linspace(0,1,60), np.linspace(0,5e4,60)), cmap=plt.cm.jet, cmin=1, vmax=20) \n",
  884. "ax1.set_ylim(0,5e4)\n",
  885. "ax1.set_xlim(0,1)\n",
  886. "ax1.set_xlabel(r\"energyloss $E_\\gamma/E_0$\")\n",
  887. "ax1.set_ylabel(r\"$E_0-E_\\gamma$\")\n",
  888. "ax1.set_title(\"lost energyloss wrt residual electron energy\")\n",
  889. "\n",
  890. "fig.colorbar(a0[3],ax=ax1)\n",
  891. "fig.suptitle(r\"$e^\\pm$ from $B\\rightarrow K^\\ast ee$, $p>5$GeV, Downstream photons w/ brem_vtx_z$<9500$mm\")\n",
  892. "\n",
  893. "\"\"\"\n",
  894. "\"\"\"\n",
  895. "plt.show()"
  896. ]
  897. },
  898. {
  899. "cell_type": "code",
  900. "execution_count": null,
  901. "metadata": {},
  902. "outputs": [],
  903. "source": []
  904. }
  905. ],
  906. "metadata": {
  907. "kernelspec": {
  908. "display_name": "env1",
  909. "language": "python",
  910. "name": "python3"
  911. },
  912. "language_info": {
  913. "codemirror_mode": {
  914. "name": "ipython",
  915. "version": 3
  916. },
  917. "file_extension": ".py",
  918. "mimetype": "text/x-python",
  919. "name": "python",
  920. "nbconvert_exporter": "python",
  921. "pygments_lexer": "ipython3",
  922. "version": "3.10.12"
  923. }
  924. },
  925. "nbformat": 4,
  926. "nbformat_minor": 2
  927. }