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.

1042 lines
347 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
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": 2,
  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": 3,
  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": 4,
  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_EndVeloP.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) &\n",
  60. " (allcolumns.fromB)] # B: 9056\n",
  61. "lost = allcolumns[(allcolumns.isElectron) & (allcolumns.lost) &\n",
  62. " (allcolumns.fromB)] # B: 1466\n",
  63. "\n",
  64. "electrons = allcolumns[(allcolumns.isElectron)\n",
  65. " & (allcolumns.fromB)\n",
  66. " & (allcolumns.eta <= 5.0)\n",
  67. " & (allcolumns.eta >= 1.5)\n",
  68. " & (np.abs(allcolumns.phi) < 3.142)]\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": 5,
  78. "metadata": {},
  79. "outputs": [
  80. {
  81. "name": "stdout",
  82. "output_type": "stream",
  83. "text": [
  84. "stretch factor: 0.1943140448361755\n"
  85. ]
  86. }
  87. ],
  88. "source": [
  89. "rad_length_found = ak.to_numpy(\n",
  90. " found[(found.eta <= 5.0) & (found.eta >= 1.5) & (np.abs(found.phi) < 3.142)][\n",
  91. " \"rad_length_frac\"\n",
  92. " ]\n",
  93. ")\n",
  94. "eta_found = ak.to_numpy(\n",
  95. " found[(found.eta <= 5.0) & (found.eta >= 1.5) & (np.abs(found.phi) < 3.142)][\"eta\"]\n",
  96. ")\n",
  97. "phi_found = ak.to_numpy(\n",
  98. " found[(found.eta <= 5.0) & (found.eta >= 1.5) & (np.abs(found.phi) < 3.142)][\"phi\"]\n",
  99. ")\n",
  100. "rad_length_lost = ak.to_numpy(\n",
  101. " lost[(lost.eta <= 5.0) & (lost.eta >= 1.5) & (np.abs(lost.phi) < 3.142)][\n",
  102. " \"rad_length_frac\"\n",
  103. " ]\n",
  104. ")\n",
  105. "eta_lost = ak.to_numpy(\n",
  106. " lost[(lost.eta <= 5.0) & (lost.eta >= 1.5) & (np.abs(lost.phi) < 3.142)][\"eta\"]\n",
  107. ")\n",
  108. "phi_lost = ak.to_numpy(\n",
  109. " lost[(lost.eta <= 5.0) & (lost.eta >= 1.5) & (np.abs(lost.phi) < 3.142)][\"phi\"]\n",
  110. ")\n",
  111. "\n",
  112. "eta_a = ak.to_numpy(electrons[\"eta\"])\n",
  113. "phi_a = ak.to_numpy(electrons[\"phi\"])\n",
  114. "rad_length_frac_a = ak.to_numpy(electrons[\"rad_length_frac\"])\n",
  115. "\n",
  116. "stretch_factor = ak.num(eta_lost, axis=0) / ak.num(eta_found, axis=0)\n",
  117. "print(\"stretch factor: \", stretch_factor)"
  118. ]
  119. },
  120. {
  121. "cell_type": "code",
  122. "execution_count": 6,
  123. "metadata": {},
  124. "outputs": [
  125. {
  126. "data": {
  127. "image/png": "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
  128. "text/plain": [
  129. "<Figure size 640x480 with 1 Axes>"
  130. ]
  131. },
  132. "metadata": {},
  133. "output_type": "display_data"
  134. }
  135. ],
  136. "source": [
  137. "plt.hist(\n",
  138. " rad_length_lost,\n",
  139. " bins=100,\n",
  140. " density=True,\n",
  141. " alpha=0.5,\n",
  142. " color=\"darkorange\",\n",
  143. " histtype=\"bar\",\n",
  144. " label=\"lost\",\n",
  145. " range=[0, 1],\n",
  146. ")\n",
  147. "plt.hist(\n",
  148. " rad_length_found,\n",
  149. " bins=100,\n",
  150. " density=True,\n",
  151. " alpha=0.5,\n",
  152. " color=\"blue\",\n",
  153. " histtype=\"bar\",\n",
  154. " label=\"found\",\n",
  155. " range=[0, 1],\n",
  156. ")\n",
  157. "plt.xlim(0, 1)\n",
  158. "# plt.yscale(\"log\")\n",
  159. "plt.title(\"radiation length fraction endVelo2endUT\")\n",
  160. "plt.xlabel(f\"$x/X_0$\")\n",
  161. "plt.ylabel(\"a.u.\")\n",
  162. "\n",
  163. "plt.legend()\n",
  164. "plt.show()"
  165. ]
  166. },
  167. {
  168. "cell_type": "code",
  169. "execution_count": 7,
  170. "metadata": {},
  171. "outputs": [
  172. {
  173. "data": {
  174. "image/png": "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
  175. "text/plain": [
  176. "<Figure size 2000x800 with 3 Axes>"
  177. ]
  178. },
  179. "metadata": {},
  180. "output_type": "display_data"
  181. }
  182. ],
  183. "source": [
  184. "nbins = 100\n",
  185. "vmax = 80\n",
  186. "\n",
  187. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(20, 8))\n",
  188. "\n",
  189. "a0 = ax0.hist2d(\n",
  190. " rad_length_found,\n",
  191. " eta_found,\n",
  192. " density=False,\n",
  193. " bins=nbins,\n",
  194. " cmap=plt.cm.jet,\n",
  195. " cmin=1,\n",
  196. " vmax=vmax,\n",
  197. " range=[[0, 0.6], [2, 5]],\n",
  198. ")\n",
  199. "ax0.set_xlabel(f\"$x/X_0$\")\n",
  200. "ax0.set_ylabel(f\"$\\eta$\")\n",
  201. "ax0.set_title(f\"found $\\eta$ rad_length_frac\")\n",
  202. "\n",
  203. "a1 = ax1.hist2d(\n",
  204. " rad_length_lost,\n",
  205. " eta_lost,\n",
  206. " density=False,\n",
  207. " bins=nbins,\n",
  208. " cmap=plt.cm.jet,\n",
  209. " cmin=1,\n",
  210. " vmax=vmax * stretch_factor,\n",
  211. " range=[[0, 0.6], [2, 5]],\n",
  212. ")\n",
  213. "ax1.set_xlabel(f\"$x/X_0$\")\n",
  214. "ax1.set_ylabel(f\"$\\eta$\")\n",
  215. "ax1.set_title(f\"lost $\\eta$ rad_length_frac\")\n",
  216. "# ax1.set(xlim=(0,4000), ylim=(-1000,1000))\n",
  217. "\n",
  218. "plt.suptitle(\"radiation length fraction and eta endVelo\")\n",
  219. "plt.colorbar(a0[3], ax=ax1)\n",
  220. "\n",
  221. "plt.show()"
  222. ]
  223. },
  224. {
  225. "cell_type": "code",
  226. "execution_count": 8,
  227. "metadata": {},
  228. "outputs": [
  229. {
  230. "name": "stdout",
  231. "output_type": "stream",
  232. "text": [
  233. "Parameterisation for rad_length_frac:\n",
  234. "intercept= 0.0\n",
  235. "coef= {'1': 0.19830920321074946, 'x': -4.49175976974402e-05, 'y': 0.00039490060416272056, 'tx': 0.00015102371088508598, 'ty': -0.3004315695136339, 'qop': -15.314945266490128, 'x^2': -1.8619394568578818e-05, 'x y': -4.953907513838906e-06, 'x tx': 0.021617503882699386, 'x ty': 0.03829244150062255, 'x qop': -0.41798007270055415, 'y^2': -2.4410328131494868e-05, 'y tx': -0.03443063985633742, 'y ty': 0.024201355785359608, 'y qop': 0.069823295273139, 'tx^2': -9.507076220830514, 'tx ty': -0.3980701633198789, 'tx qop': -0.04742639222342226, 'ty^2': -5.342167619183405, 'ty qop': 0.04842038611881145, 'qop^2': 0.2070268831284635, 'x^3': 1.5823479402461545e-07, 'x^2 y': -5.806838940825474e-07, 'x^2 tx': -0.00023418353598118923, 'x^2 ty': 0.0037081774556846224, 'x^2 qop': 0.01641641113222204, 'x y^2': 6.398758958085149e-08, 'x y tx': -0.002932641224303519, 'x y ty': -0.001396824762733282, 'x y qop': -0.020888196868450136, 'x tx^2': 0.09096908124129072, 'x tx ty': -2.939755357349759, 'x tx qop': -8.73057282483271, 'x ty^2': -0.15340975596199197, 'x ty qop': 9.249941815315987, 'x qop^2': 0.030205199863621846, 'y^3': 1.6478595155078324e-07, 'y^2 tx': 0.0013152209574444013, 'y^2 ty': -0.000257931039205234, 'y^2 qop': -0.0057816482028933735, 'y tx^2': 2.685350530706497, 'y tx ty': 0.17814134491255038, 'y tx qop': 9.050929476915277, 'y ty^2': 0.10064678584510746, 'y ty qop': 4.6142369495362185, 'y qop^2': -0.00046589334175238057, 'tx^3': -0.6242025517665986, 'tx^2 ty': -0.017658603327465147, 'tx^2 qop': -0.022216794668845363, 'tx ty^2': -0.01024816705930792, 'tx ty qop': 0.024042119917448937, 'tx qop^2': 6.093129132646114e-05, 'ty^3': 0.09834545208780196, 'ty^2 qop': 0.011664187426493774, 'ty qop^2': -2.1825340747940462e-05, 'qop^3': -1.559907925017188e-06, 'x^4': -2.9483981922595603e-09, 'x^3 y': -6.13444928188045e-09, 'x^3 tx': 7.101384723817716e-06, 'x^3 ty': 7.16725431293419e-06, 'x^3 qop': 4.00953960828232e-05, 'x^2 y^2': 1.0679747086683733e-08, 'x^2 y tx': 7.616826922074438e-06, 'x^2 y ty': -3.91052449297824e-05, 'x^2 y qop': 9.93899828579223e-05, 'x^2 tx^2': -0.005400741368580057, 'x^2 tx ty': -0.009338160688408294, 'x^2 tx qop': -0.0017215190824096578, 'x^2 ty^2': 0.0007665795500993852, 'x^2 ty qop': 0.08528819041114723, 'x^2 qop^2': 8.037042310903203, 'x y^3': 8.933181749881669e-09, 'x y^2 tx': 1.766907321343325e-05, 'x y^2 ty': -2.1412010806409754e-05, 'x y^2 qop': -7.010215747540322e-05, 'x y tx^2': -0.0021778144582400415, 'x y tx ty': 0.0326584774738, 'x y tx qop': -0.1598215452174385, 'x y ty^2': 0.012945427966444779, 'x y ty qop': -0.23950569088511311, 'x y qop^2': -0.8775916738593352, 'x tx^3': 1.366672968587086, 'x tx^2 ty': 1.7459886700480327, 'x tx^2 qop': 0.4423601484422016, 'x tx ty^2': -1.0803356692637864, 'x tx ty qop': -0.0706577637682464, 'x tx qop^2': 0.006422119173581787, 'x ty^3': -2.2905272843167253, 'x ty^2 qop': -0.0063092971067729734, 'x ty qop^2': -0.001963650254414034, 'x qop^3': -1.0318719588655238e-06, 'y^4': -2.213189409516758e-09, 'y^3 tx': 7.716181404937572e-08, 'y^3 ty': 3.7462658548648164e-06, 'y^3 qop': -2.6897178570957402e-05, 'y^2 tx^2': -0.019391135282039867, 'y^2 tx ty': 0.003922857934752042, 'y^2 tx qop': 0.30048105074735626, 'y^2 ty^2': -0.0014404468920953982, 'y^2 ty qop': 0.017062949506976018, 'y^2 qop^2': -0.5172314152946776, 'y tx^3': 1.1761566789450086, 'y tx^2 ty': -1.8639649790914088, 'y tx^2 qop': -0.07088661078488609, 'y tx ty^2': -2.1282820437243197, 'y tx ty qop': -0.001276549939024397, 'y tx qop^2': -0.0019180156335069092, 'y ty^3': -0.06849699842395515, 'y ty^2 qop': -0.0351395250211265, 'y ty qop^2': -0.0005408300561230844, 'y qop^3': 4.1258598459708434e-06, 'tx^4': -0.02399482130004447, 'tx^3 ty': 0.010297903626621132, 'tx^3 qop': 0.0018304232474417028, 'tx^2 ty^2': -0.01163526658236639, 'tx^2 ty qop': -0.00029701477688915344, 'tx^2 qop^2': 2.0001744822333693e-06, 'tx ty^3': -0.014645131120788562, 'tx ty^2 qop': -2.1232731978440055e-05, 'tx ty qop^2': -3.4544969537609295e-06, 'tx qop^3': 8.78704309226661e-09, 'ty^4': -0.001422061237110601, 'ty^3 qop': -0.00017083649574085
  236. "r2 score= -0.008270330873300091\n",
  237. "RMSE = 0.10823208615961777\n",
  238. "\n"
  239. ]
  240. },
  241. {
  242. "data": {
  243. "image/png": "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
  244. "text/plain": [
  245. "<Figure size 640x480 with 2 Axes>"
  246. ]
  247. },
  248. "metadata": {},
  249. "output_type": "display_data"
  250. }
  251. ],
  252. "source": [
  253. "rad_length_frac = found[\"rad_length_frac\"]\n",
  254. "# @ z = 9400.mm or 770.mm\n",
  255. "state = 1\n",
  256. "\n",
  257. "if state == 1:\n",
  258. " slopex = found[\"ideal_state_770_tx\"]\n",
  259. " slopey = found[\"ideal_state_770_ty\"]\n",
  260. " x = found[\"ideal_state_770_x\"]\n",
  261. " y = found[\"ideal_state_770_y\"]\n",
  262. " qop = found[\"ideal_state_770_qop\"]\n",
  263. "elif state == 2:\n",
  264. " slopex = found[\"ideal_state_9410_tx\"]\n",
  265. " slopey = found[\"ideal_state_9410_ty\"]\n",
  266. " x = found[\"ideal_state_9410_x\"]\n",
  267. " y = found[\"ideal_state_9410_y\"]\n",
  268. " qop = found[\"ideal_state_9410_qop\"]\n",
  269. "\n",
  270. "data = ak.zip(\n",
  271. " {\n",
  272. " \"rad_length_frac\": rad_length_frac,\n",
  273. " \"x\": x,\n",
  274. " \"y\": y,\n",
  275. " \"tx\": slopex,\n",
  276. " \"ty\": slopey,\n",
  277. " \"qop\": qop,\n",
  278. " }\n",
  279. ")\n",
  280. "lin_reg, features, xx0_test, xx0_predicted = fit_linear_regression_model(\n",
  281. " data,\n",
  282. " \"rad_length_frac\",\n",
  283. " [\"x\", \"y\", \"tx\", \"ty\", \"qop\"],\n",
  284. " 5,\n",
  285. " include_bias=True,\n",
  286. ")\n",
  287. "\n",
  288. "nbins = 100\n",
  289. "vmax = 100\n",
  290. "\n",
  291. "a0 = plt.hist2d(\n",
  292. " xx0_test,\n",
  293. " xx0_predicted,\n",
  294. " density=False,\n",
  295. " bins=nbins,\n",
  296. " cmap=plt.cm.jet,\n",
  297. " cmin=1,\n",
  298. " vmax=vmax,\n",
  299. " range=[[0, 0.5], [0, 0.5]],\n",
  300. ")\n",
  301. "plt.plot([0, 0.5], [0, 0.5], marker=\"\", alpha=0.8)\n",
  302. "plt.xlabel(f\"True $x/X_0$\")\n",
  303. "plt.ylabel(f\"Predicted $x/X_0$\")\n",
  304. "plt.title(f\"found rad_length_frac\")\n",
  305. "\n",
  306. "plt.colorbar(a0[3])\n",
  307. "plt.show()"
  308. ]
  309. },
  310. {
  311. "cell_type": "code",
  312. "execution_count": 9,
  313. "metadata": {},
  314. "outputs": [
  315. {
  316. "data": {
  317. "image/png": "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
  318. "text/plain": [
  319. "<Figure size 1500x600 with 3 Axes>"
  320. ]
  321. },
  322. "metadata": {},
  323. "output_type": "display_data"
  324. }
  325. ],
  326. "source": [
  327. "nbins = 100\n",
  328. "vmax = 80\n",
  329. "\n",
  330. "fig, ((ax0, ax1)) = plt.subplots(nrows=1, ncols=2, figsize=(15, 6))\n",
  331. "\n",
  332. "# ax0.set_aspect(\"equal\")\n",
  333. "\n",
  334. "a0 = ax0.hist2d(\n",
  335. " xx0_test,\n",
  336. " xx0_predicted,\n",
  337. " density=False,\n",
  338. " bins=nbins,\n",
  339. " cmap=plt.cm.jet,\n",
  340. " cmin=1,\n",
  341. " vmax=vmax,\n",
  342. " range=[[0, 0.5], [0, 0.5]],\n",
  343. ")\n",
  344. "ax0.plot([0, 0.5], [0, 0.5], marker=\"\", alpha=0.8)\n",
  345. "ax0.set_box_aspect(1)\n",
  346. "ax0.set_xlabel(f\"True $x/X_0$\")\n",
  347. "ax0.set_ylabel(f\"Predicted $x/X_0$\")\n",
  348. "ax0.set_title(f\"found rad_length_frac\")\n",
  349. "plt.colorbar(a0[3], ax=ax0)\n",
  350. "\n",
  351. "ax1.hist(\n",
  352. " xx0_test,\n",
  353. " bins=100,\n",
  354. " density=True,\n",
  355. " alpha=0.5,\n",
  356. " color=\"darkorange\",\n",
  357. " histtype=\"bar\",\n",
  358. " label=\"test\",\n",
  359. " range=[0, 0.5],\n",
  360. ")\n",
  361. "ax1.hist(\n",
  362. " xx0_predicted,\n",
  363. " bins=100,\n",
  364. " density=True,\n",
  365. " alpha=0.5,\n",
  366. " color=\"blue\",\n",
  367. " histtype=\"bar\",\n",
  368. " label=\"predicted\",\n",
  369. " range=[0, 0.5],\n",
  370. ")\n",
  371. "ax1.set_xlim(0, 0.5)\n",
  372. "ax1.set_title(\"radiation length fraction endVelo\")\n",
  373. "ax1.set_xlabel(f\"$x/X_0$\")\n",
  374. "ax1.set_ylabel(\"a.u.\")\n",
  375. "ax1.set_box_aspect(1)\n",
  376. "\n",
  377. "ax1.legend()\n",
  378. "\n",
  379. "# plt.gca().set_aspect(\"equal\")\n",
  380. "plt.show()"
  381. ]
  382. },
  383. {
  384. "cell_type": "code",
  385. "execution_count": 10,
  386. "metadata": {},
  387. "outputs": [
  388. {
  389. "data": {
  390. "image/png": "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
  391. "text/plain": [
  392. "<Figure size 640x480 with 1 Axes>"
  393. ]
  394. },
  395. "metadata": {},
  396. "output_type": "display_data"
  397. }
  398. ],
  399. "source": [
  400. "plt.hist(\n",
  401. " xx0_test,\n",
  402. " bins=100,\n",
  403. " density=True,\n",
  404. " alpha=0.5,\n",
  405. " color=\"darkorange\",\n",
  406. " histtype=\"bar\",\n",
  407. " label=\"test\",\n",
  408. " range=[0, 0.5],\n",
  409. ")\n",
  410. "plt.hist(\n",
  411. " xx0_predicted,\n",
  412. " bins=100,\n",
  413. " density=True,\n",
  414. " alpha=0.5,\n",
  415. " color=\"blue\",\n",
  416. " histtype=\"bar\",\n",
  417. " label=\"predicted\",\n",
  418. " range=[0, 0.5],\n",
  419. ")\n",
  420. "plt.xlim(0, 0.5)\n",
  421. "# plt.yscale(\"log\")\n",
  422. "plt.title(\"radiation length fraction endVelo\")\n",
  423. "plt.xlabel(f\"$x/X_0$\")\n",
  424. "plt.ylabel(\"a.u.\")\n",
  425. "\n",
  426. "plt.legend()\n",
  427. "plt.show()"
  428. ]
  429. },
  430. {
  431. "cell_type": "code",
  432. "execution_count": 11,
  433. "metadata": {},
  434. "outputs": [
  435. {
  436. "name": "stdout",
  437. "output_type": "stream",
  438. "text": [
  439. "Parameterisation for rad_length_frac:\n",
  440. "intercept= 0.0\n",
  441. "coef= {'1': 0.2484410418213911, 'x': -0.0007601095488043627, 'y': 0.0010569724392146917, 'tx': 0.6185505303064777, 'ty': -0.9394058560136732, 'qop': -9.741031889614183, 'x^2': -0.00016580416280366622, 'x y': 5.149038989659081e-05, 'x tx': 0.22996768886351043, 'x ty': -0.043161009059129354, 'x qop': -0.21658279194428842, 'y^2': 3.9826067539320166e-05, 'y tx': -0.033498957247677735, 'y ty': -0.08085122767618998, 'y qop': 0.06428923004582791, 'tx^2': -83.06687438225835, 'tx ty': 28.76266798578089, 'tx qop': -0.32072666519746007, 'ty^2': 32.80290436519906, 'ty qop': 0.29785759094660047, 'qop^2': 0.7177557091128425, 'x^3': -1.037888276319177e-06, 'x^2 y': 5.744977724613286e-07, 'x^2 tx': 0.0016261562680787358, 'x^2 ty': 0.00819223051446815, 'x^2 qop': 0.014940216048602184, 'x y^2': 1.55836456652794e-06, 'x y tx': -0.009042353485603404, 'x y ty': 0.002769481233443616, 'x y qop': 0.007035099510620806, 'x tx^2': -0.623629094925692, 'x tx ty': -0.5792857627094614, 'x tx qop': 3.819052794399519, 'x ty^2': -1.214138821848195, 'x ty qop': -4.179406422119741, 'x qop^2': -0.11723833703778899, 'y^3': -2.1060731703048674e-07, 'y^2 tx': -0.005136952674035623, 'y^2 ty': 0.0002523550890177065, 'y^2 qop': 0.020199755591199943, 'y tx^2': 0.8881296792413045, 'y tx ty': 2.1057062787476855, 'y tx qop': -4.322557205912296, 'y ty^2': -0.062185778412248593, 'y ty qop': -12.744670929978815, 'y qop^2': 0.10865361350283592, 'tx^3': -0.2772083890350773, 'tx^2 ty': -0.002155259913110253, 'tx^2 qop': 0.01973183125611695, 'tx ty^2': 0.2547275714314975, 'tx ty qop': -0.01267461996128659, 'tx qop^2': -0.0002315355231400779, 'ty^3': 0.12852489701010045, 'ty^2 qop': -0.03229168715651398, 'ty qop^2': 0.0001733290594162183, 'qop^3': -1.1131786479856305e-06, 'x^4': 1.4072631948636172e-09, 'x^3 y': -4.525309382774623e-08, 'x^3 tx': -5.048150129027817e-07, 'x^3 ty': 2.845994251238215e-07, 'x^3 qop': 6.161442924141475e-05, 'x^2 y^2': -1.8614020325102842e-08, 'x^2 y tx': 9.737839179148333e-05, 'x^2 y ty': -1.3038804363763035e-05, 'x^2 y qop': -8.415032085912991e-05, 'x^2 tx^2': -0.0010152847281566686, 'x^2 tx ty': -0.0032259545758118137, 'x^2 tx qop': -0.041785493301881166, 'x^2 ty^2': 0.013227443641328787, 'x^2 ty qop': 0.0035654519670473366, 'x^2 qop^2': 1.2621531315710728, 'x y^3': 3.906278722709544e-08, 'x y^2 tx': 6.858475435222999e-05, 'x y^2 ty': -5.862278080592809e-05, 'x y^2 qop': -0.00016236412225426912, 'x y tx^2': -0.06608751351613794, 'x y tx ty': -0.04864228625905696, 'x y tx qop': 0.06901548261804959, 'x y ty^2': 0.04159526642181612, 'x y ty qop': 0.28489071089527757, 'x y qop^2': 0.2535927965752249, 'x tx^3': 0.5018159233398294, 'x tx^2 ty': 0.9699678165589771, 'x tx^2 qop': 0.4741265130417677, 'x tx ty^2': 10.315681588678894, 'x tx ty qop': -0.22617149043686857, 'x tx qop^2': 0.00898570789717606, 'x ty^3': -12.737405175272935, 'x ty^2 qop': -0.014062351992903526, 'x ty qop^2': 0.005154120346378951, 'x qop^3': -4.609067543005094e-05, 'y^4': 9.455609628616912e-09, 'y^3 tx': -2.99210479094425e-05, 'y^3 ty': -2.583154312318925e-05, 'y^3 qop': 5.980622324156491e-05, 'y^2 tx^2': -0.016833583405836638, 'y^2 tx ty': 0.02458057322196644, 'y^2 tx qop': -0.169419352054439, 'y^2 ty^2': 0.02331391517451325, 'y^2 ty qop': -0.04589466917231106, 'y^2 qop^2': -1.206224538163147, 'y tx^3': 15.19059646701743, 'y tx^2 ty': 5.490478536183617, 'y tx^2 qop': -0.25278933198832354, 'y tx ty^2': -3.577260288354769, 'y tx ty qop': 0.03161480393545275, 'y tx qop^2': 0.005952281392129449, 'y ty^3': -6.821531531863169, 'y ty^2 qop': 0.09776598757839021, 'y ty qop^2': 0.0023614626852912395, 'y qop^3': -1.973415862163393e-05, 'tx^4': -0.05310859403428924, 'tx^3 ty': 0.023505514315239354, 'tx^3 qop': 0.0021762610547612377, 'tx^2 ty^2': 0.04763359558524625, 'tx^2 ty qop': -0.0009428124122745564, 'tx^2 qop^2': 1.2893218326397415e-05, 'tx ty^3': -0.018754843662608302, 'tx ty^2 qop': 4.8170564904883127e-05, 'tx ty qop^2': 1.6878183944633644e-05, 'tx qop^3': -4.12730477319448e-08, 'ty^4': 0.013919613173737298, 'ty^3 qop': 0.00022052138073417403, 'ty^2 qop^2': 9.713683885787424e
  442. "r2 score= 0.01281806793978646\n",
  443. "RMSE = 0.2644569540509028\n",
  444. "\n"
  445. ]
  446. },
  447. {
  448. "data": {
  449. "image/png": "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
  450. "text/plain": [
  451. "<Figure size 640x480 with 2 Axes>"
  452. ]
  453. },
  454. "metadata": {},
  455. "output_type": "display_data"
  456. }
  457. ],
  458. "source": [
  459. "rad_length_frac = lost[\"rad_length_frac\"]\n",
  460. "# @ z = 9400.mm or 770.mm\n",
  461. "state = 1\n",
  462. "\n",
  463. "if state == 1:\n",
  464. " slopex = lost[\"ideal_state_770_tx\"]\n",
  465. " slopey = lost[\"ideal_state_770_ty\"]\n",
  466. " x = lost[\"ideal_state_770_x\"]\n",
  467. " y = lost[\"ideal_state_770_y\"]\n",
  468. " qop = lost[\"ideal_state_770_qop\"]\n",
  469. "elif state == 2:\n",
  470. " slopex = lost[\"ideal_state_9410_tx\"]\n",
  471. " slopey = lost[\"ideal_state_9410_ty\"]\n",
  472. " x = lost[\"ideal_state_9410_x\"]\n",
  473. " y = lost[\"ideal_state_9410_y\"]\n",
  474. " qop = lost[\"ideal_state_9410_qop\"]\n",
  475. "\n",
  476. "data = ak.zip({\n",
  477. " \"rad_length_frac\": rad_length_frac,\n",
  478. " \"x\": x,\n",
  479. " \"y\": y,\n",
  480. " \"tx\": slopex,\n",
  481. " \"ty\": slopey,\n",
  482. " \"qop\": qop,\n",
  483. "})\n",
  484. "lin_reg, features, xx0_test, xx0_predicted = fit_linear_regression_model(\n",
  485. " data,\n",
  486. " \"rad_length_frac\",\n",
  487. " [\"x\", \"y\", \"tx\", \"ty\", \"qop\"],\n",
  488. " 5,\n",
  489. " include_bias=True,\n",
  490. ")\n",
  491. "\n",
  492. "nbins = 100\n",
  493. "vmax = 50\n",
  494. "\n",
  495. "a0 = plt.hist2d(\n",
  496. " xx0_test,\n",
  497. " xx0_predicted,\n",
  498. " density=False,\n",
  499. " bins=nbins,\n",
  500. " cmap=plt.cm.jet,\n",
  501. " cmin=1,\n",
  502. " vmax=vmax * stretch_factor,\n",
  503. " range=[[-0.1, 1.0], [-0.1, 1.0]],\n",
  504. ")\n",
  505. "plt.plot([-0.1, 1.0], [-0.1, 1.0], marker=\"\", alpha=0.8)\n",
  506. "plt.xlabel(f\"True $x/X_0$\")\n",
  507. "plt.ylabel(f\"Predicted $x/X_0$\")\n",
  508. "plt.title(f\"lost rad_length_frac\")\n",
  509. "# ax1.set(xlim=(0,4000), ylim=(-1000,1000))\n",
  510. "\n",
  511. "plt.colorbar(a0[3])\n",
  512. "plt.show()"
  513. ]
  514. },
  515. {
  516. "cell_type": "code",
  517. "execution_count": null,
  518. "metadata": {},
  519. "outputs": [],
  520. "source": []
  521. },
  522. {
  523. "cell_type": "code",
  524. "execution_count": 25,
  525. "metadata": {},
  526. "outputs": [],
  527. "source": [
  528. "df = pd.DataFrame({\n",
  529. " \"phi\": phi_a * 90.0 / np.pi,\n",
  530. " \"eta\": eta_a * 2.0,\n",
  531. " \"rad_length_frac\": rad_length_frac_a,\n",
  532. "})\n",
  533. "df = df.round({\"phi\": 0, \"eta\": 1, \"rad_length_frac\": 4})"
  534. ]
  535. },
  536. {
  537. "cell_type": "code",
  538. "execution_count": 39,
  539. "metadata": {},
  540. "outputs": [],
  541. "source": [
  542. "df_pivoted = df.pivot_table(\n",
  543. " index=\"eta\",\n",
  544. " columns=\"phi\",\n",
  545. " values=\"rad_length_frac\",\n",
  546. " margins=False,\n",
  547. " fill_value=0,\n",
  548. ")"
  549. ]
  550. },
  551. {
  552. "cell_type": "code",
  553. "execution_count": 40,
  554. "metadata": {},
  555. "outputs": [
  556. {
  557. "data": {
  558. "text/html": [
  559. "<div>\n",
  560. "<style scoped>\n",
  561. " .dataframe tbody tr th:only-of-type {\n",
  562. " vertical-align: middle;\n",
  563. " }\n",
  564. "\n",
  565. " .dataframe tbody tr th {\n",
  566. " vertical-align: top;\n",
  567. " }\n",
  568. "\n",
  569. " .dataframe thead th {\n",
  570. " text-align: right;\n",
  571. " }\n",
  572. "</style>\n",
  573. "<table border=\"1\" class=\"dataframe\">\n",
  574. " <thead>\n",
  575. " <tr style=\"text-align: right;\">\n",
  576. " <th>phi</th>\n",
  577. " <th>-90.0</th>\n",
  578. " <th>-89.0</th>\n",
  579. " <th>-88.0</th>\n",
  580. " <th>-87.0</th>\n",
  581. " <th>-86.0</th>\n",
  582. " <th>-85.0</th>\n",
  583. " <th>-84.0</th>\n",
  584. " <th>-83.0</th>\n",
  585. " <th>-82.0</th>\n",
  586. " <th>-81.0</th>\n",
  587. " <th>...</th>\n",
  588. " <th>81.0</th>\n",
  589. " <th>82.0</th>\n",
  590. " <th>83.0</th>\n",
  591. " <th>84.0</th>\n",
  592. " <th>85.0</th>\n",
  593. " <th>86.0</th>\n",
  594. " <th>87.0</th>\n",
  595. " <th>88.0</th>\n",
  596. " <th>89.0</th>\n",
  597. " <th>90.0</th>\n",
  598. " </tr>\n",
  599. " <tr>\n",
  600. " <th>eta</th>\n",
  601. " <th></th>\n",
  602. " <th></th>\n",
  603. " <th></th>\n",
  604. " <th></th>\n",
  605. " <th></th>\n",
  606. " <th></th>\n",
  607. " <th></th>\n",
  608. " <th></th>\n",
  609. " <th></th>\n",
  610. " <th></th>\n",
  611. " <th></th>\n",
  612. " <th></th>\n",
  613. " <th></th>\n",
  614. " <th></th>\n",
  615. " <th></th>\n",
  616. " <th></th>\n",
  617. " <th></th>\n",
  618. " <th></th>\n",
  619. " <th></th>\n",
  620. " <th></th>\n",
  621. " <th></th>\n",
  622. " </tr>\n",
  623. " </thead>\n",
  624. " <tbody>\n",
  625. " <tr>\n",
  626. " <th>3.1</th>\n",
  627. " <td>0.0000</td>\n",
  628. " <td>0.00000</td>\n",
  629. " <td>0.00000</td>\n",
  630. " <td>0.000000</td>\n",
  631. " <td>0.00000</td>\n",
  632. " <td>0.00000</td>\n",
  633. " <td>0.0000</td>\n",
  634. " <td>0.00000</td>\n",
  635. " <td>0.000000</td>\n",
  636. " <td>0.0000</td>\n",
  637. " <td>...</td>\n",
  638. " <td>0.0000</td>\n",
  639. " <td>0.00000</td>\n",
  640. " <td>0.0000</td>\n",
  641. " <td>0.00000</td>\n",
  642. " <td>0.0000</td>\n",
  643. " <td>0.0000</td>\n",
  644. " <td>0.0000</td>\n",
  645. " <td>0.00000</td>\n",
  646. " <td>0.000000</td>\n",
  647. " <td>0.0</td>\n",
  648. " </tr>\n",
  649. " <tr>\n",
  650. " <th>3.2</th>\n",
  651. " <td>0.0000</td>\n",
  652. " <td>0.00000</td>\n",
  653. " <td>0.00000</td>\n",
  654. " <td>0.000000</td>\n",
  655. " <td>0.00000</td>\n",
  656. " <td>0.00000</td>\n",
  657. " <td>0.0000</td>\n",
  658. " <td>0.00000</td>\n",
  659. " <td>0.000000</td>\n",
  660. " <td>0.0000</td>\n",
  661. " <td>...</td>\n",
  662. " <td>0.0000</td>\n",
  663. " <td>0.00000</td>\n",
  664. " <td>0.0000</td>\n",
  665. " <td>0.00000</td>\n",
  666. " <td>0.0000</td>\n",
  667. " <td>0.0000</td>\n",
  668. " <td>0.0000</td>\n",
  669. " <td>0.00000</td>\n",
  670. " <td>0.000000</td>\n",
  671. " <td>0.0</td>\n",
  672. " </tr>\n",
  673. " <tr>\n",
  674. " <th>3.3</th>\n",
  675. " <td>0.0000</td>\n",
  676. " <td>0.96215</td>\n",
  677. " <td>0.00000</td>\n",
  678. " <td>0.746800</td>\n",
  679. " <td>0.00000</td>\n",
  680. " <td>0.00000</td>\n",
  681. " <td>1.7263</td>\n",
  682. " <td>0.00000</td>\n",
  683. " <td>0.381400</td>\n",
  684. " <td>0.0000</td>\n",
  685. " <td>...</td>\n",
  686. " <td>0.3813</td>\n",
  687. " <td>0.00000</td>\n",
  688. " <td>0.0000</td>\n",
  689. " <td>0.00000</td>\n",
  690. " <td>0.0000</td>\n",
  691. " <td>0.0000</td>\n",
  692. " <td>0.0000</td>\n",
  693. " <td>0.00000</td>\n",
  694. " <td>0.000000</td>\n",
  695. " <td>0.0</td>\n",
  696. " </tr>\n",
  697. " <tr>\n",
  698. " <th>3.4</th>\n",
  699. " <td>0.0000</td>\n",
  700. " <td>0.00000</td>\n",
  701. " <td>0.00000</td>\n",
  702. " <td>0.743500</td>\n",
  703. " <td>0.37900</td>\n",
  704. " <td>0.11090</td>\n",
  705. " <td>1.6273</td>\n",
  706. " <td>0.00000</td>\n",
  707. " <td>0.380200</td>\n",
  708. " <td>0.1115</td>\n",
  709. " <td>...</td>\n",
  710. " <td>0.0000</td>\n",
  711. " <td>0.00000</td>\n",
  712. " <td>0.0000</td>\n",
  713. " <td>0.38025</td>\n",
  714. " <td>1.1143</td>\n",
  715. " <td>0.7429</td>\n",
  716. " <td>0.1109</td>\n",
  717. " <td>0.00000</td>\n",
  718. " <td>0.378400</td>\n",
  719. " <td>0.0</td>\n",
  720. " </tr>\n",
  721. " <tr>\n",
  722. " <th>3.5</th>\n",
  723. " <td>0.0000</td>\n",
  724. " <td>0.38280</td>\n",
  725. " <td>0.33605</td>\n",
  726. " <td>0.110300</td>\n",
  727. " <td>0.00000</td>\n",
  728. " <td>1.11870</td>\n",
  729. " <td>0.0000</td>\n",
  730. " <td>0.23330</td>\n",
  731. " <td>1.479350</td>\n",
  732. " <td>0.0000</td>\n",
  733. " <td>...</td>\n",
  734. " <td>0.1458</td>\n",
  735. " <td>0.39860</td>\n",
  736. " <td>0.0000</td>\n",
  737. " <td>0.39800</td>\n",
  738. " <td>0.0000</td>\n",
  739. " <td>0.7175</td>\n",
  740. " <td>0.7303</td>\n",
  741. " <td>0.00000</td>\n",
  742. " <td>0.243900</td>\n",
  743. " <td>0.0</td>\n",
  744. " </tr>\n",
  745. " <tr>\n",
  746. " <th>...</th>\n",
  747. " <td>...</td>\n",
  748. " <td>...</td>\n",
  749. " <td>...</td>\n",
  750. " <td>...</td>\n",
  751. " <td>...</td>\n",
  752. " <td>...</td>\n",
  753. " <td>...</td>\n",
  754. " <td>...</td>\n",
  755. " <td>...</td>\n",
  756. " <td>...</td>\n",
  757. " <td>...</td>\n",
  758. " <td>...</td>\n",
  759. " <td>...</td>\n",
  760. " <td>...</td>\n",
  761. " <td>...</td>\n",
  762. " <td>...</td>\n",
  763. " <td>...</td>\n",
  764. " <td>...</td>\n",
  765. " <td>...</td>\n",
  766. " <td>...</td>\n",
  767. " <td>...</td>\n",
  768. " </tr>\n",
  769. " <tr>\n",
  770. " <th>9.6</th>\n",
  771. " <td>0.0000</td>\n",
  772. " <td>0.09270</td>\n",
  773. " <td>0.09775</td>\n",
  774. " <td>0.099525</td>\n",
  775. " <td>0.09825</td>\n",
  776. " <td>0.00000</td>\n",
  777. " <td>0.0926</td>\n",
  778. " <td>0.09710</td>\n",
  779. " <td>0.000000</td>\n",
  780. " <td>0.0934</td>\n",
  781. " <td>...</td>\n",
  782. " <td>0.0000</td>\n",
  783. " <td>0.09000</td>\n",
  784. " <td>0.1005</td>\n",
  785. " <td>0.09510</td>\n",
  786. " <td>0.1005</td>\n",
  787. " <td>0.0000</td>\n",
  788. " <td>0.0960</td>\n",
  789. " <td>0.09185</td>\n",
  790. " <td>0.094067</td>\n",
  791. " <td>0.0</td>\n",
  792. " </tr>\n",
  793. " <tr>\n",
  794. " <th>9.7</th>\n",
  795. " <td>0.0000</td>\n",
  796. " <td>0.00000</td>\n",
  797. " <td>0.00000</td>\n",
  798. " <td>0.098700</td>\n",
  799. " <td>0.09340</td>\n",
  800. " <td>0.09075</td>\n",
  801. " <td>0.0900</td>\n",
  802. " <td>0.08810</td>\n",
  803. " <td>0.000000</td>\n",
  804. " <td>0.0000</td>\n",
  805. " <td>...</td>\n",
  806. " <td>0.0912</td>\n",
  807. " <td>0.00000</td>\n",
  808. " <td>0.0000</td>\n",
  809. " <td>0.09350</td>\n",
  810. " <td>0.0962</td>\n",
  811. " <td>0.0971</td>\n",
  812. " <td>0.0000</td>\n",
  813. " <td>0.09540</td>\n",
  814. " <td>0.000000</td>\n",
  815. " <td>0.0</td>\n",
  816. " </tr>\n",
  817. " <tr>\n",
  818. " <th>9.8</th>\n",
  819. " <td>0.0922</td>\n",
  820. " <td>0.09230</td>\n",
  821. " <td>0.09660</td>\n",
  822. " <td>0.089067</td>\n",
  823. " <td>0.09260</td>\n",
  824. " <td>0.00000</td>\n",
  825. " <td>0.0802</td>\n",
  826. " <td>0.09195</td>\n",
  827. " <td>0.090867</td>\n",
  828. " <td>0.0000</td>\n",
  829. " <td>...</td>\n",
  830. " <td>0.0000</td>\n",
  831. " <td>0.07670</td>\n",
  832. " <td>0.0000</td>\n",
  833. " <td>0.08775</td>\n",
  834. " <td>0.0000</td>\n",
  835. " <td>0.0000</td>\n",
  836. " <td>0.0920</td>\n",
  837. " <td>0.08030</td>\n",
  838. " <td>0.100300</td>\n",
  839. " <td>0.0</td>\n",
  840. " </tr>\n",
  841. " <tr>\n",
  842. " <th>9.9</th>\n",
  843. " <td>0.0000</td>\n",
  844. " <td>0.09080</td>\n",
  845. " <td>0.08490</td>\n",
  846. " <td>0.076200</td>\n",
  847. " <td>0.00000</td>\n",
  848. " <td>0.08550</td>\n",
  849. " <td>0.0900</td>\n",
  850. " <td>0.09840</td>\n",
  851. " <td>0.090000</td>\n",
  852. " <td>0.0000</td>\n",
  853. " <td>...</td>\n",
  854. " <td>0.3018</td>\n",
  855. " <td>0.08900</td>\n",
  856. " <td>0.0889</td>\n",
  857. " <td>0.00000</td>\n",
  858. " <td>0.0900</td>\n",
  859. " <td>0.0000</td>\n",
  860. " <td>0.0000</td>\n",
  861. " <td>0.08160</td>\n",
  862. " <td>0.088767</td>\n",
  863. " <td>0.0</td>\n",
  864. " </tr>\n",
  865. " <tr>\n",
  866. " <th>10.0</th>\n",
  867. " <td>0.0000</td>\n",
  868. " <td>0.19140</td>\n",
  869. " <td>0.00000</td>\n",
  870. " <td>0.119100</td>\n",
  871. " <td>0.00000</td>\n",
  872. " <td>0.17850</td>\n",
  873. " <td>0.0000</td>\n",
  874. " <td>0.00000</td>\n",
  875. " <td>0.000000</td>\n",
  876. " <td>0.0000</td>\n",
  877. " <td>...</td>\n",
  878. " <td>0.0000</td>\n",
  879. " <td>0.10425</td>\n",
  880. " <td>0.1109</td>\n",
  881. " <td>0.08550</td>\n",
  882. " <td>0.0000</td>\n",
  883. " <td>0.0000</td>\n",
  884. " <td>0.0000</td>\n",
  885. " <td>0.00000</td>\n",
  886. " <td>0.081500</td>\n",
  887. " <td>0.0</td>\n",
  888. " </tr>\n",
  889. " </tbody>\n",
  890. "</table>\n",
  891. "<p>70 rows × 181 columns</p>\n",
  892. "</div>"
  893. ],
  894. "text/plain": [
  895. "phi -90.0 -89.0 -88.0 -87.0 -86.0 -85.0 -84.0 -83.0 \\\n",
  896. "eta \n",
  897. "3.1 0.0000 0.00000 0.00000 0.000000 0.00000 0.00000 0.0000 0.00000 \n",
  898. "3.2 0.0000 0.00000 0.00000 0.000000 0.00000 0.00000 0.0000 0.00000 \n",
  899. "3.3 0.0000 0.96215 0.00000 0.746800 0.00000 0.00000 1.7263 0.00000 \n",
  900. "3.4 0.0000 0.00000 0.00000 0.743500 0.37900 0.11090 1.6273 0.00000 \n",
  901. "3.5 0.0000 0.38280 0.33605 0.110300 0.00000 1.11870 0.0000 0.23330 \n",
  902. "... ... ... ... ... ... ... ... ... \n",
  903. "9.6 0.0000 0.09270 0.09775 0.099525 0.09825 0.00000 0.0926 0.09710 \n",
  904. "9.7 0.0000 0.00000 0.00000 0.098700 0.09340 0.09075 0.0900 0.08810 \n",
  905. "9.8 0.0922 0.09230 0.09660 0.089067 0.09260 0.00000 0.0802 0.09195 \n",
  906. "9.9 0.0000 0.09080 0.08490 0.076200 0.00000 0.08550 0.0900 0.09840 \n",
  907. "10.0 0.0000 0.19140 0.00000 0.119100 0.00000 0.17850 0.0000 0.00000 \n",
  908. "\n",
  909. "phi -82.0 -81.0 ... 81.0 82.0 83.0 84.0 85.0 86.0 \\\n",
  910. "eta ... \n",
  911. "3.1 0.000000 0.0000 ... 0.0000 0.00000 0.0000 0.00000 0.0000 0.0000 \n",
  912. "3.2 0.000000 0.0000 ... 0.0000 0.00000 0.0000 0.00000 0.0000 0.0000 \n",
  913. "3.3 0.381400 0.0000 ... 0.3813 0.00000 0.0000 0.00000 0.0000 0.0000 \n",
  914. "3.4 0.380200 0.1115 ... 0.0000 0.00000 0.0000 0.38025 1.1143 0.7429 \n",
  915. "3.5 1.479350 0.0000 ... 0.1458 0.39860 0.0000 0.39800 0.0000 0.7175 \n",
  916. "... ... ... ... ... ... ... ... ... ... \n",
  917. "9.6 0.000000 0.0934 ... 0.0000 0.09000 0.1005 0.09510 0.1005 0.0000 \n",
  918. "9.7 0.000000 0.0000 ... 0.0912 0.00000 0.0000 0.09350 0.0962 0.0971 \n",
  919. "9.8 0.090867 0.0000 ... 0.0000 0.07670 0.0000 0.08775 0.0000 0.0000 \n",
  920. "9.9 0.090000 0.0000 ... 0.3018 0.08900 0.0889 0.00000 0.0900 0.0000 \n",
  921. "10.0 0.000000 0.0000 ... 0.0000 0.10425 0.1109 0.08550 0.0000 0.0000 \n",
  922. "\n",
  923. "phi 87.0 88.0 89.0 90.0 \n",
  924. "eta \n",
  925. "3.1 0.0000 0.00000 0.000000 0.0 \n",
  926. "3.2 0.0000 0.00000 0.000000 0.0 \n",
  927. "3.3 0.0000 0.00000 0.000000 0.0 \n",
  928. "3.4 0.1109 0.00000 0.378400 0.0 \n",
  929. "3.5 0.7303 0.00000 0.243900 0.0 \n",
  930. "... ... ... ... ... \n",
  931. "9.6 0.0960 0.09185 0.094067 0.0 \n",
  932. "9.7 0.0000 0.09540 0.000000 0.0 \n",
  933. "9.8 0.0920 0.08030 0.100300 0.0 \n",
  934. "9.9 0.0000 0.08160 0.088767 0.0 \n",
  935. "10.0 0.0000 0.00000 0.081500 0.0 \n",
  936. "\n",
  937. "[70 rows x 181 columns]"
  938. ]
  939. },
  940. "execution_count": 40,
  941. "metadata": {},
  942. "output_type": "execute_result"
  943. }
  944. ],
  945. "source": [
  946. "df_pivoted"
  947. ]
  948. },
  949. {
  950. "cell_type": "code",
  951. "execution_count": 41,
  952. "metadata": {},
  953. "outputs": [
  954. {
  955. "data": {
  956. "image/png": "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
  957. "text/plain": [
  958. "<Figure size 2100x700 with 2 Axes>"
  959. ]
  960. },
  961. "metadata": {},
  962. "output_type": "display_data"
  963. }
  964. ],
  965. "source": [
  966. "fig = plt.figure(figsize=(21, 7))\n",
  967. "ax = sns.heatmap(\n",
  968. " df_pivoted,\n",
  969. " robust=True,\n",
  970. " square=True,\n",
  971. " cmap=colormaps[\"rainbow\"],\n",
  972. " xticklabels=False,\n",
  973. " yticklabels=False,\n",
  974. " vmax=0.7,\n",
  975. ")\n",
  976. "# ax.set_yticks([5, 15, 25, 35], [2, 3, 4, 5])\n",
  977. "ax.set_yticks([10, 30, 50, 70], [2, 3, 4, 5])\n",
  978. "ax.set_xticks([39, 89, 139], [-100, 0, 100]) # ([79, 179, 279], [-100, 0, 100])\n",
  979. "ax.set_xlabel(f\"$\\phi$ [deg]\")\n",
  980. "ax.set_ylabel(f\"$\\eta$\")\n",
  981. "\n",
  982. "# ax.set_yticklabels([])\n",
  983. "ax.invert_yaxis()\n",
  984. "ax.set_title(\"LHCb EndVelo to EndUT $x/X_0$\")\n",
  985. "plt.show()"
  986. ]
  987. },
  988. {
  989. "cell_type": "code",
  990. "execution_count": null,
  991. "metadata": {},
  992. "outputs": [],
  993. "source": []
  994. },
  995. {
  996. "cell_type": "code",
  997. "execution_count": null,
  998. "metadata": {},
  999. "outputs": [],
  1000. "source": [
  1001. "# make these smaller to increase the resolution\n",
  1002. "dy, dx = 0.1, 1.0\n",
  1003. "\n",
  1004. "# generate 2 2d grids for the x & y bounds\n",
  1005. "y, x = np.mgrid[slice(1.5, 5 + dy, dy), slice(-180, 180 + dx, dx)]\n",
  1006. "\n",
  1007. "plt.pcolormesh(x, y, df_pivoted, cmap=colormaps[\"jet\"], vmax=0.7)\n",
  1008. "\n",
  1009. "plt.colorbar()\n",
  1010. "plt.show()"
  1011. ]
  1012. },
  1013. {
  1014. "cell_type": "code",
  1015. "execution_count": null,
  1016. "metadata": {},
  1017. "outputs": [],
  1018. "source": []
  1019. }
  1020. ],
  1021. "metadata": {
  1022. "kernelspec": {
  1023. "display_name": "tuner",
  1024. "language": "python",
  1025. "name": "python3"
  1026. },
  1027. "language_info": {
  1028. "codemirror_mode": {
  1029. "name": "ipython",
  1030. "version": 3
  1031. },
  1032. "file_extension": ".py",
  1033. "mimetype": "text/x-python",
  1034. "name": "python",
  1035. "nbconvert_exporter": "python",
  1036. "pygments_lexer": "ipython3",
  1037. "version": "3.10.12"
  1038. }
  1039. },
  1040. "nbformat": 4,
  1041. "nbformat_minor": 2
  1042. }