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.

619 lines
109 KiB

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