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.

626 lines
125 KiB

8 months ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 10,
  6. "metadata": {},
  7. "outputs": [
  8. {
  9. "name": "stdout",
  10. "output_type": "stream",
  11. "text": [
  12. "/auto/work\n"
  13. ]
  14. }
  15. ],
  16. "source": [
  17. "%cd ..\n",
  18. "import uproot\t\n",
  19. "import numpy as np\n",
  20. "import matplotlib.pyplot as plt\n",
  21. "from matplotlib import colormaps\n",
  22. "from mpl_toolkits import mplot3d\n",
  23. "import awkward as ak\n",
  24. "from scipy.optimize import curve_fit\n",
  25. "from scipy import stats\n",
  26. "from methods.fit_linear_regression_model import fit_linear_regression_model\n",
  27. "import sklearn\n",
  28. "import seaborn as sns\n",
  29. "import pandas as pd\n",
  30. "%matplotlib inline"
  31. ]
  32. },
  33. {
  34. "cell_type": "code",
  35. "execution_count": 11,
  36. "metadata": {},
  37. "outputs": [],
  38. "source": [
  39. "def round(n, k):\n",
  40. " # function to round number 'n' up/down to nearest 'k'\n",
  41. " # use positive k to round up\n",
  42. " # use negative k to round down\n",
  43. "\n",
  44. " return n - n % k"
  45. ]
  46. },
  47. {
  48. "cell_type": "code",
  49. "execution_count": 12,
  50. "metadata": {},
  51. "outputs": [
  52. {
  53. "name": "stdout",
  54. "output_type": "stream",
  55. "text": [
  56. "41978 8523\n",
  57. "49865\n"
  58. ]
  59. }
  60. ],
  61. "source": [
  62. "file = uproot.open(\n",
  63. " \"/work/cetin/Projektpraktikum/tracking_losses_ntuple_B_rad_length_beginVelo2endVelo.root:PrDebugTrackingLosses.PrDebugTrackingTool/Tuple;1\"\n",
  64. ")\n",
  65. "\n",
  66. "# selektiere nur elektronen von B->K*ee\n",
  67. "allcolumns = file.arrays()\n",
  68. "found = allcolumns[(allcolumns.isElectron) & (~allcolumns.lost) &\n",
  69. " (allcolumns.fromB)]\n",
  70. "lost = allcolumns[(allcolumns.isElectron) & (allcolumns.lost) &\n",
  71. " (allcolumns.fromB)]\n",
  72. "\n",
  73. "electrons = allcolumns[(allcolumns.isElectron)\n",
  74. " & (allcolumns.fromB)\n",
  75. " & (allcolumns.eta <= 5.0)\n",
  76. " & (allcolumns.eta >= 1.5)\n",
  77. " & (np.abs(allcolumns.phi) < 3.142)]\n",
  78. "\n",
  79. "print(ak.num(found, axis=0), ak.num(lost, axis=0))\n",
  80. "print(ak.num(electrons, axis=0))\n",
  81. "# ak.count(found, axis=None)"
  82. ]
  83. },
  84. {
  85. "cell_type": "code",
  86. "execution_count": 13,
  87. "metadata": {},
  88. "outputs": [],
  89. "source": [
  90. "# variables\n",
  91. "\n",
  92. "eta_a = ak.to_numpy(electrons[\"eta\"])\n",
  93. "phi_a = ak.to_numpy(electrons[\"phi\"])\n",
  94. "rad_length_frac_a = ak.to_numpy(electrons[\"rad_length_frac\"])"
  95. ]
  96. },
  97. {
  98. "cell_type": "code",
  99. "execution_count": 14,
  100. "metadata": {},
  101. "outputs": [
  102. {
  103. "data": {
  104. "image/png": "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
  105. "text/plain": [
  106. "<Figure size 640x480 with 1 Axes>"
  107. ]
  108. },
  109. "metadata": {},
  110. "output_type": "display_data"
  111. }
  112. ],
  113. "source": [
  114. "plt.hist(\n",
  115. " rad_length_frac_a,\n",
  116. " bins=100,\n",
  117. " density=True,\n",
  118. " alpha=0.5,\n",
  119. " color=\"blue\",\n",
  120. " histtype=\"bar\",\n",
  121. " range=[0, 1],\n",
  122. ")\n",
  123. "plt.xlim(0, 1)\n",
  124. "# plt.yscale(\"log\")\n",
  125. "plt.title(\"radiation length fraction beginVelo2endVelo\")\n",
  126. "plt.xlabel(f\"$x/X_0$\")\n",
  127. "plt.ylabel(\"a.u.\")\n",
  128. "plt.show()"
  129. ]
  130. },
  131. {
  132. "cell_type": "code",
  133. "execution_count": 15,
  134. "metadata": {},
  135. "outputs": [],
  136. "source": [
  137. "df = pd.DataFrame({\n",
  138. " \"phi\": phi_a * 90.0 / np.pi,\n",
  139. " \"eta\": eta_a * 2.0,\n",
  140. " \"rad_length_frac\": rad_length_frac_a,\n",
  141. "})\n",
  142. "df = df.round({\"phi\": 0, \"eta\": 1, \"rad_length_frac\": 4})"
  143. ]
  144. },
  145. {
  146. "cell_type": "code",
  147. "execution_count": 16,
  148. "metadata": {},
  149. "outputs": [],
  150. "source": [
  151. "df_pivoted = df.pivot_table(\n",
  152. " index=\"eta\",\n",
  153. " columns=\"phi\",\n",
  154. " values=\"rad_length_frac\",\n",
  155. " margins=False,\n",
  156. " # fill_value=0,\n",
  157. ")"
  158. ]
  159. },
  160. {
  161. "cell_type": "code",
  162. "execution_count": 17,
  163. "metadata": {},
  164. "outputs": [
  165. {
  166. "data": {
  167. "text/html": [
  168. "<div>\n",
  169. "<style scoped>\n",
  170. " .dataframe tbody tr th:only-of-type {\n",
  171. " vertical-align: middle;\n",
  172. " }\n",
  173. "\n",
  174. " .dataframe tbody tr th {\n",
  175. " vertical-align: top;\n",
  176. " }\n",
  177. "\n",
  178. " .dataframe thead th {\n",
  179. " text-align: right;\n",
  180. " }\n",
  181. "</style>\n",
  182. "<table border=\"1\" class=\"dataframe\">\n",
  183. " <thead>\n",
  184. " <tr style=\"text-align: right;\">\n",
  185. " <th>phi</th>\n",
  186. " <th>-90.0</th>\n",
  187. " <th>-89.0</th>\n",
  188. " <th>-88.0</th>\n",
  189. " <th>-87.0</th>\n",
  190. " <th>-86.0</th>\n",
  191. " <th>-85.0</th>\n",
  192. " <th>-84.0</th>\n",
  193. " <th>-83.0</th>\n",
  194. " <th>-82.0</th>\n",
  195. " <th>-81.0</th>\n",
  196. " <th>...</th>\n",
  197. " <th>81.0</th>\n",
  198. " <th>82.0</th>\n",
  199. " <th>83.0</th>\n",
  200. " <th>84.0</th>\n",
  201. " <th>85.0</th>\n",
  202. " <th>86.0</th>\n",
  203. " <th>87.0</th>\n",
  204. " <th>88.0</th>\n",
  205. " <th>89.0</th>\n",
  206. " <th>90.0</th>\n",
  207. " </tr>\n",
  208. " <tr>\n",
  209. " <th>eta</th>\n",
  210. " <th></th>\n",
  211. " <th></th>\n",
  212. " <th></th>\n",
  213. " <th></th>\n",
  214. " <th></th>\n",
  215. " <th></th>\n",
  216. " <th></th>\n",
  217. " <th></th>\n",
  218. " <th></th>\n",
  219. " <th></th>\n",
  220. " <th></th>\n",
  221. " <th></th>\n",
  222. " <th></th>\n",
  223. " <th></th>\n",
  224. " <th></th>\n",
  225. " <th></th>\n",
  226. " <th></th>\n",
  227. " <th></th>\n",
  228. " <th></th>\n",
  229. " <th></th>\n",
  230. " <th></th>\n",
  231. " </tr>\n",
  232. " </thead>\n",
  233. " <tbody>\n",
  234. " <tr>\n",
  235. " <th>3.1</th>\n",
  236. " <td>NaN</td>\n",
  237. " <td>NaN</td>\n",
  238. " <td>NaN</td>\n",
  239. " <td>NaN</td>\n",
  240. " <td>NaN</td>\n",
  241. " <td>NaN</td>\n",
  242. " <td>NaN</td>\n",
  243. " <td>NaN</td>\n",
  244. " <td>NaN</td>\n",
  245. " <td>NaN</td>\n",
  246. " <td>...</td>\n",
  247. " <td>NaN</td>\n",
  248. " <td>NaN</td>\n",
  249. " <td>NaN</td>\n",
  250. " <td>NaN</td>\n",
  251. " <td>NaN</td>\n",
  252. " <td>NaN</td>\n",
  253. " <td>NaN</td>\n",
  254. " <td>NaN</td>\n",
  255. " <td>NaN</td>\n",
  256. " <td>NaN</td>\n",
  257. " </tr>\n",
  258. " <tr>\n",
  259. " <th>3.2</th>\n",
  260. " <td>NaN</td>\n",
  261. " <td>NaN</td>\n",
  262. " <td>NaN</td>\n",
  263. " <td>NaN</td>\n",
  264. " <td>NaN</td>\n",
  265. " <td>NaN</td>\n",
  266. " <td>NaN</td>\n",
  267. " <td>NaN</td>\n",
  268. " <td>NaN</td>\n",
  269. " <td>NaN</td>\n",
  270. " <td>...</td>\n",
  271. " <td>NaN</td>\n",
  272. " <td>NaN</td>\n",
  273. " <td>NaN</td>\n",
  274. " <td>NaN</td>\n",
  275. " <td>NaN</td>\n",
  276. " <td>NaN</td>\n",
  277. " <td>NaN</td>\n",
  278. " <td>NaN</td>\n",
  279. " <td>NaN</td>\n",
  280. " <td>NaN</td>\n",
  281. " </tr>\n",
  282. " <tr>\n",
  283. " <th>3.3</th>\n",
  284. " <td>NaN</td>\n",
  285. " <td>0.30455</td>\n",
  286. " <td>NaN</td>\n",
  287. " <td>0.526900</td>\n",
  288. " <td>NaN</td>\n",
  289. " <td>NaN</td>\n",
  290. " <td>0.14755</td>\n",
  291. " <td>NaN</td>\n",
  292. " <td>0.135100</td>\n",
  293. " <td>NaN</td>\n",
  294. " <td>...</td>\n",
  295. " <td>0.1247</td>\n",
  296. " <td>NaN</td>\n",
  297. " <td>NaN</td>\n",
  298. " <td>NaN</td>\n",
  299. " <td>NaN</td>\n",
  300. " <td>NaN</td>\n",
  301. " <td>NaN</td>\n",
  302. " <td>NaN</td>\n",
  303. " <td>NaN</td>\n",
  304. " <td>NaN</td>\n",
  305. " </tr>\n",
  306. " <tr>\n",
  307. " <th>3.4</th>\n",
  308. " <td>NaN</td>\n",
  309. " <td>NaN</td>\n",
  310. " <td>NaN</td>\n",
  311. " <td>0.459800</td>\n",
  312. " <td>0.1691</td>\n",
  313. " <td>0.1710</td>\n",
  314. " <td>0.26650</td>\n",
  315. " <td>NaN</td>\n",
  316. " <td>0.291200</td>\n",
  317. " <td>0.1778</td>\n",
  318. " <td>...</td>\n",
  319. " <td>NaN</td>\n",
  320. " <td>NaN</td>\n",
  321. " <td>NaN</td>\n",
  322. " <td>0.14020</td>\n",
  323. " <td>0.1775</td>\n",
  324. " <td>0.5234</td>\n",
  325. " <td>0.1498</td>\n",
  326. " <td>NaN</td>\n",
  327. " <td>0.14810</td>\n",
  328. " <td>NaN</td>\n",
  329. " </tr>\n",
  330. " <tr>\n",
  331. " <th>3.5</th>\n",
  332. " <td>NaN</td>\n",
  333. " <td>0.45340</td>\n",
  334. " <td>0.35060</td>\n",
  335. " <td>0.447200</td>\n",
  336. " <td>NaN</td>\n",
  337. " <td>0.1885</td>\n",
  338. " <td>NaN</td>\n",
  339. " <td>0.1711</td>\n",
  340. " <td>0.243100</td>\n",
  341. " <td>NaN</td>\n",
  342. " <td>...</td>\n",
  343. " <td>0.2161</td>\n",
  344. " <td>0.1313</td>\n",
  345. " <td>NaN</td>\n",
  346. " <td>0.16210</td>\n",
  347. " <td>NaN</td>\n",
  348. " <td>0.4284</td>\n",
  349. " <td>0.4008</td>\n",
  350. " <td>NaN</td>\n",
  351. " <td>0.24475</td>\n",
  352. " <td>NaN</td>\n",
  353. " </tr>\n",
  354. " <tr>\n",
  355. " <th>...</th>\n",
  356. " <td>...</td>\n",
  357. " <td>...</td>\n",
  358. " <td>...</td>\n",
  359. " <td>...</td>\n",
  360. " <td>...</td>\n",
  361. " <td>...</td>\n",
  362. " <td>...</td>\n",
  363. " <td>...</td>\n",
  364. " <td>...</td>\n",
  365. " <td>...</td>\n",
  366. " <td>...</td>\n",
  367. " <td>...</td>\n",
  368. " <td>...</td>\n",
  369. " <td>...</td>\n",
  370. " <td>...</td>\n",
  371. " <td>...</td>\n",
  372. " <td>...</td>\n",
  373. " <td>...</td>\n",
  374. " <td>...</td>\n",
  375. " <td>...</td>\n",
  376. " <td>...</td>\n",
  377. " </tr>\n",
  378. " <tr>\n",
  379. " <th>9.6</th>\n",
  380. " <td>NaN</td>\n",
  381. " <td>0.06550</td>\n",
  382. " <td>0.09655</td>\n",
  383. " <td>0.181325</td>\n",
  384. " <td>0.1296</td>\n",
  385. " <td>NaN</td>\n",
  386. " <td>0.25035</td>\n",
  387. " <td>0.0707</td>\n",
  388. " <td>NaN</td>\n",
  389. " <td>0.2469</td>\n",
  390. " <td>...</td>\n",
  391. " <td>NaN</td>\n",
  392. " <td>0.0692</td>\n",
  393. " <td>0.2822</td>\n",
  394. " <td>0.26520</td>\n",
  395. " <td>0.1244</td>\n",
  396. " <td>NaN</td>\n",
  397. " <td>0.1084</td>\n",
  398. " <td>0.1665</td>\n",
  399. " <td>0.06750</td>\n",
  400. " <td>NaN</td>\n",
  401. " </tr>\n",
  402. " <tr>\n",
  403. " <th>9.7</th>\n",
  404. " <td>NaN</td>\n",
  405. " <td>NaN</td>\n",
  406. " <td>NaN</td>\n",
  407. " <td>0.070000</td>\n",
  408. " <td>0.0816</td>\n",
  409. " <td>0.0878</td>\n",
  410. " <td>0.07350</td>\n",
  411. " <td>0.0864</td>\n",
  412. " <td>NaN</td>\n",
  413. " <td>NaN</td>\n",
  414. " <td>...</td>\n",
  415. " <td>0.1993</td>\n",
  416. " <td>NaN</td>\n",
  417. " <td>NaN</td>\n",
  418. " <td>0.14480</td>\n",
  419. " <td>0.0652</td>\n",
  420. " <td>0.0755</td>\n",
  421. " <td>NaN</td>\n",
  422. " <td>0.0796</td>\n",
  423. " <td>NaN</td>\n",
  424. " <td>NaN</td>\n",
  425. " </tr>\n",
  426. " <tr>\n",
  427. " <th>9.8</th>\n",
  428. " <td>0.0781</td>\n",
  429. " <td>0.09960</td>\n",
  430. " <td>0.08180</td>\n",
  431. " <td>0.083267</td>\n",
  432. " <td>0.0779</td>\n",
  433. " <td>NaN</td>\n",
  434. " <td>0.08810</td>\n",
  435. " <td>0.1684</td>\n",
  436. " <td>0.140867</td>\n",
  437. " <td>NaN</td>\n",
  438. " <td>...</td>\n",
  439. " <td>NaN</td>\n",
  440. " <td>0.0977</td>\n",
  441. " <td>NaN</td>\n",
  442. " <td>0.13015</td>\n",
  443. " <td>NaN</td>\n",
  444. " <td>NaN</td>\n",
  445. " <td>0.0821</td>\n",
  446. " <td>0.0646</td>\n",
  447. " <td>0.08440</td>\n",
  448. " <td>NaN</td>\n",
  449. " </tr>\n",
  450. " <tr>\n",
  451. " <th>9.9</th>\n",
  452. " <td>NaN</td>\n",
  453. " <td>0.09210</td>\n",
  454. " <td>0.08210</td>\n",
  455. " <td>0.071900</td>\n",
  456. " <td>NaN</td>\n",
  457. " <td>0.0936</td>\n",
  458. " <td>0.32600</td>\n",
  459. " <td>0.0748</td>\n",
  460. " <td>0.193300</td>\n",
  461. " <td>NaN</td>\n",
  462. " <td>...</td>\n",
  463. " <td>0.0727</td>\n",
  464. " <td>0.1494</td>\n",
  465. " <td>0.0353</td>\n",
  466. " <td>NaN</td>\n",
  467. " <td>0.3264</td>\n",
  468. " <td>NaN</td>\n",
  469. " <td>NaN</td>\n",
  470. " <td>0.0844</td>\n",
  471. " <td>0.07660</td>\n",
  472. " <td>NaN</td>\n",
  473. " </tr>\n",
  474. " <tr>\n",
  475. " <th>10.0</th>\n",
  476. " <td>NaN</td>\n",
  477. " <td>0.05840</td>\n",
  478. " <td>NaN</td>\n",
  479. " <td>0.070600</td>\n",
  480. " <td>NaN</td>\n",
  481. " <td>0.0578</td>\n",
  482. " <td>NaN</td>\n",
  483. " <td>NaN</td>\n",
  484. " <td>NaN</td>\n",
  485. " <td>NaN</td>\n",
  486. " <td>...</td>\n",
  487. " <td>NaN</td>\n",
  488. " <td>0.0785</td>\n",
  489. " <td>0.0915</td>\n",
  490. " <td>0.03070</td>\n",
  491. " <td>NaN</td>\n",
  492. " <td>NaN</td>\n",
  493. " <td>NaN</td>\n",
  494. " <td>NaN</td>\n",
  495. " <td>0.07090</td>\n",
  496. " <td>NaN</td>\n",
  497. " </tr>\n",
  498. " </tbody>\n",
  499. "</table>\n",
  500. "<p>70 rows × 181 columns</p>\n",
  501. "</div>"
  502. ],
  503. "text/plain": [
  504. "phi -90.0 -89.0 -88.0 -87.0 -86.0 -85.0 -84.0 -83.0 \\\n",
  505. "eta \n",
  506. "3.1 NaN NaN NaN NaN NaN NaN NaN NaN \n",
  507. "3.2 NaN NaN NaN NaN NaN NaN NaN NaN \n",
  508. "3.3 NaN 0.30455 NaN 0.526900 NaN NaN 0.14755 NaN \n",
  509. "3.4 NaN NaN NaN 0.459800 0.1691 0.1710 0.26650 NaN \n",
  510. "3.5 NaN 0.45340 0.35060 0.447200 NaN 0.1885 NaN 0.1711 \n",
  511. "... ... ... ... ... ... ... ... ... \n",
  512. "9.6 NaN 0.06550 0.09655 0.181325 0.1296 NaN 0.25035 0.0707 \n",
  513. "9.7 NaN NaN NaN 0.070000 0.0816 0.0878 0.07350 0.0864 \n",
  514. "9.8 0.0781 0.09960 0.08180 0.083267 0.0779 NaN 0.08810 0.1684 \n",
  515. "9.9 NaN 0.09210 0.08210 0.071900 NaN 0.0936 0.32600 0.0748 \n",
  516. "10.0 NaN 0.05840 NaN 0.070600 NaN 0.0578 NaN NaN \n",
  517. "\n",
  518. "phi -82.0 -81.0 ... 81.0 82.0 83.0 84.0 85.0 86.0 \\\n",
  519. "eta ... \n",
  520. "3.1 NaN NaN ... NaN NaN NaN NaN NaN NaN \n",
  521. "3.2 NaN NaN ... NaN NaN NaN NaN NaN NaN \n",
  522. "3.3 0.135100 NaN ... 0.1247 NaN NaN NaN NaN NaN \n",
  523. "3.4 0.291200 0.1778 ... NaN NaN NaN 0.14020 0.1775 0.5234 \n",
  524. "3.5 0.243100 NaN ... 0.2161 0.1313 NaN 0.16210 NaN 0.4284 \n",
  525. "... ... ... ... ... ... ... ... ... ... \n",
  526. "9.6 NaN 0.2469 ... NaN 0.0692 0.2822 0.26520 0.1244 NaN \n",
  527. "9.7 NaN NaN ... 0.1993 NaN NaN 0.14480 0.0652 0.0755 \n",
  528. "9.8 0.140867 NaN ... NaN 0.0977 NaN 0.13015 NaN NaN \n",
  529. "9.9 0.193300 NaN ... 0.0727 0.1494 0.0353 NaN 0.3264 NaN \n",
  530. "10.0 NaN NaN ... NaN 0.0785 0.0915 0.03070 NaN NaN \n",
  531. "\n",
  532. "phi 87.0 88.0 89.0 90.0 \n",
  533. "eta \n",
  534. "3.1 NaN NaN NaN NaN \n",
  535. "3.2 NaN NaN NaN NaN \n",
  536. "3.3 NaN NaN NaN NaN \n",
  537. "3.4 0.1498 NaN 0.14810 NaN \n",
  538. "3.5 0.4008 NaN 0.24475 NaN \n",
  539. "... ... ... ... ... \n",
  540. "9.6 0.1084 0.1665 0.06750 NaN \n",
  541. "9.7 NaN 0.0796 NaN NaN \n",
  542. "9.8 0.0821 0.0646 0.08440 NaN \n",
  543. "9.9 NaN 0.0844 0.07660 NaN \n",
  544. "10.0 NaN NaN 0.07090 NaN \n",
  545. "\n",
  546. "[70 rows x 181 columns]"
  547. ]
  548. },
  549. "execution_count": 17,
  550. "metadata": {},
  551. "output_type": "execute_result"
  552. }
  553. ],
  554. "source": [
  555. "df_pivoted"
  556. ]
  557. },
  558. {
  559. "cell_type": "code",
  560. "execution_count": null,
  561. "metadata": {},
  562. "outputs": [],
  563. "source": []
  564. },
  565. {
  566. "cell_type": "code",
  567. "execution_count": 18,
  568. "metadata": {},
  569. "outputs": [
  570. {
  571. "data": {
  572. "image/png": "iVBORw0KGgoAAAANSUhEUgAABdkAAAJRCAYAAAC5lb6oAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhV5b0+/DvzzrwzEDIBYYdJZDIBResMcbZORK2ttXUgKq09rT3k2HqK9NRSaHvao1IbrHawg0qcWufEGRGFROY5mzCFkHFnzs6w9/tH3/ADyf0NbGa9P9fFdU69WWs961nPtFYWK0F+v98PERERERERERERERE5bMEnugAiIiIiIiIiIiIiIqcqPWQXEREREREREREREQmQHrKLiIiIiIiIiIiIiARID9lFRERERERERERERAKkh+wiIiIiIiIiIiIiIgHSQ3YRERERERERERERkQDpIbuIiIiIiIiIiIiISID0kF1EREREREREREREJEB6yC4iIiIiIiIiIiIiEiA9ZBcREREROYW53e4TXQQRERERkROuvLwc+fn5KCwsREFBAYqLiwfcJi8vD0FBQf3+KS0tPeRjhx5JwUVEREREPs/tdqO0tBQ33ngjnE7niS7OF15+fj7efvtt1bWIiIiIfGm53W7k5uairKwMOTk5AIDs7Gw0NDRg5syZdBu324358+cfsJauqKjAggULMH369EM+vt5kFxERETkFFBcXIzc3d99bFdnZ2ViwYIG5TWlpKfLz8/dtk5CQgMLCQng8HgCAx+NBYWEhEhIS9v2dgoIClJeXH7Sv8vJyFBQUIDc3FwkJCcjNzd33lsiiRYuQn58PAFiwYAGys7NRUFCAhoaGwzrH0tJSZGdn7ytLbm5uv2+f7F8Xubm5KC8vP6h++srY92f//fa9kRJInfZX5ry8PGRnZ+87Tn5+/mG99XIkysvL4XK59t0UuN1uFBYWHlAP+5/T/nWckJBw3MopIiIiInIsFRQUYPr06fsesAPY90Y7U1pairKyMsyePRszZ87c9ycpKemwHrADAPwiIiIicsoA4AfgLysrO+RtXC6XH4C/qKio33z+/Pl+AP6cnJyDssbGRv+MGTP8APwzZ870V1RU7MsqKir806dP9wPwT58+fd9/7/v7+//dQ9XY2LjvHFl5/X6/v6ioyO90Og/6733bsmPn5OT4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
  573. "text/plain": [
  574. "<Figure size 2100x700 with 2 Axes>"
  575. ]
  576. },
  577. "metadata": {},
  578. "output_type": "display_data"
  579. }
  580. ],
  581. "source": [
  582. "fig = plt.figure(figsize=(21, 7))\n",
  583. "ax = sns.heatmap(\n",
  584. " df_pivoted,\n",
  585. " robust=True,\n",
  586. " square=True,\n",
  587. " cmap=colormaps[\"rainbow\"],\n",
  588. " xticklabels=False,\n",
  589. " yticklabels=False,\n",
  590. " vmax=0.7,\n",
  591. ")\n",
  592. "# ax.set_yticks([5, 15, 25, 35], [2, 3, 4, 5])\n",
  593. "ax.set_yticks([10, 30, 50, 70], [2, 3, 4, 5])\n",
  594. "ax.set_xticks([39, 89, 139], [-100, 0, 100]) # ([79, 179, 279], [-100, 0, 100])\n",
  595. "ax.set_xlabel(f\"$\\phi$ [deg]\")\n",
  596. "ax.set_ylabel(f\"$\\eta$\")\n",
  597. "\n",
  598. "# ax.set_yticklabels([])\n",
  599. "ax.invert_yaxis()\n",
  600. "ax.set_title(\"LHCb VELO $x/X_0$\")\n",
  601. "plt.show()"
  602. ]
  603. }
  604. ],
  605. "metadata": {
  606. "kernelspec": {
  607. "display_name": "tuner",
  608. "language": "python",
  609. "name": "python3"
  610. },
  611. "language_info": {
  612. "codemirror_mode": {
  613. "name": "ipython",
  614. "version": 3
  615. },
  616. "file_extension": ".py",
  617. "mimetype": "text/x-python",
  618. "name": "python",
  619. "nbconvert_exporter": "python",
  620. "pygments_lexer": "ipython3",
  621. "version": "3.10.12"
  622. }
  623. },
  624. "nbformat": 4,
  625. "nbformat_minor": 2
  626. }