File size: 32,571 Bytes
e75a247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
{
 "cells": [
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:43:31.599099Z",
     "start_time": "2025-01-20T16:43:30.574398Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pickle\n",
    "import torch\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "from src.utils.paths import get_path\n",
    "from src.utils.utils import CPU_Unpickler\n",
    "from pathlib import Path\n",
    "from src.dataset.dataset import EventDataset\n",
    "import numpy as np\n",
    "\n",
    "filename = get_path(\"/work/gkrzmanc/jetclustering/results/train/Eval_Quark_dist_loss_2025_01_18_13_11_16/eval_3.pkl\", \"results\")\n",
    "# for rinv=0.7, see /work/gkrzmanc/jetclustering/results/train/Test_betaPt_BC_rinv07_2025_01_03_15_38_58\n",
    "\n",
    "result = CPU_Unpickler(open(\"/work/gkrzmanc/jetclustering/results/scouting_PFNano_signals2/SVJ_hadronic_std/tmp_debug/count_matched_quarks/result_m.pkl\", \"rb\")).load()\n"
   ],
   "id": "b993ec55869ac6d0",
   "outputs": [],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:43:31.622449Z",
     "start_time": "2025-01-20T16:43:31.616161Z"
    }
   },
   "cell_type": "code",
   "source": "result.keys()",
   "id": "3ca5687deb30c9a5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys([700, 900, 1500, 800, 1000, 3000])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 15
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:43:31.694398Z",
     "start_time": "2025-01-20T16:43:31.688618Z"
    }
   },
   "cell_type": "code",
   "source": "result[900][20][0.3].keys()",
   "id": "410a7d416d05dc66",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['m_true', 'm_pred', 'mt_true', 'mt_pred'])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:44:44.450829Z",
     "start_time": "2025-01-20T16:44:44.443944Z"
    }
   },
   "cell_type": "code",
   "source": "mt_true = np.array([x.item() for x in result[900][20][0.3][\"mt_true\"]])",
   "id": "115ca46deb648af0",
   "outputs": [],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:44:55.764798Z",
     "start_time": "2025-01-20T16:44:55.757837Z"
    }
   },
   "cell_type": "code",
   "source": "mt_pred = np.array([x.item() for x in result[900][20][0.3][\"mt_pred\"]])",
   "id": "fc03eacf2b9ca4c8",
   "outputs": [],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:45:17.226239Z",
     "start_time": "2025-01-20T16:45:16.698714Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.hist(mt_pred/mt_true, bins=100, range=(0, 2))\n",
    "fig.show()"
   ],
   "id": "40e0f3eca165073c",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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ye8BNG7cOL388stau3at5s+fr/Xr1yszM1P19fWO1n8mLZlf37599cILL2jlypX685//rIaGBo0cOVJfffWVpPBaP+ns13Dz5s3auXOnbr31Vr/2cFnDljjVc9Dj8ei7775z5HEfTh599FHV1tbqhhtu8LWlpqaquLhYq1ev1sKFC1VRUaHLLrtMR44cCWGlzZOYmKhFixbp9ddf1+uvv67k5GSlpaWprKxMkjN/b4WTgwcP6p133mn0HAzXNWxoaNCMGTM0atQoDRgw4JT9wuG1MCj/vDpCr7CwUEuXLlVJSYnfhzInT57s+/PAgQM1aNAg9enTRyUlJbryyitDUWqzjRgxwu+XE44cOVIXXXSRnnnmGT344IMhrCw4nn/+eQ0cOFDDhw/3a4/kNfwxWbx4sebNm6eVK1f6fSYiMzPT9+dBgwYpNTVVPXv21LJly3TLLbeEotRm69u3r/r27evbHzlypPbs2aPHH39cf/rTn0JYWXC89NJL6tixoyZOnOjXHq5rmJOTo507d4bs8yeBiNg7H126dFHbtm116NAhv/ZDhw6pe/fuTZ7TvXv30/Y/8d9ArhksLZnfCY8++qgKCwv13nvvadCgQafte/7556tLly4qLy8/65oDcTbzO6Fdu3a6+OKLfbWH0/pJZzfHuro6LV26tFl/kYVqDVviVM/BuLg4tW/f3pHHRThYunSpbr31Vi1btqzR7e2TdezYURdeeGFErF9Thg8f7qu9tayf9MO3PV544QVNnTpV0dHRp+0bDmt411136a233tK6det03nnnnbZvOLwWRmz4iI6O1iWXXKK1a9f62hoaGrR27Vq//zv+XyNGjPDrL0lr1qzx9e/du7e6d+/u18fj8WjTpk2nvGawtGR+0g+fUH7wwQe1evVqXXrppWcc56uvvtI333yjxMRER+purpbO73/V19drx44dvtrDaf2ks5vja6+9Jq/Xq5tuuumM44RqDVviTM9BJx4XobZkyRJNmzZNS5Ys8fuK9KnU1tZqz549EbF+Tdm+fbuv9tawfiesX79e5eXlzfofgFCuoTFGd911l5YvX64PPvhAvXv3PuM5YfFa6MjHVkNk6dKlxu12m+LiYvOPf/zD3H777aZjx46mqqrKGGPM1KlTTV5enq//Rx99ZKKiosyjjz5qPv/8czN37lzTrl07s2PHDl+fwsJC07FjR7Ny5Urz6aefmgkTJpjevXub7777LuznV1hYaKKjo81f/vIX8/XXX/u2I0eOGGOMOXLkiPnNb35jNmzYYCoqKsz7779vhg4dai644AJz7NixsJ/fvHnzzLvvvmv27Nljtm7daiZPnmxiYmLMZ5995usTTutnTOBzPGH06NFm0qRJjdrDbQ2PHDlitm3bZrZt22Ykmccee8xs27bN7Nu3zxhjTF5enpk6daqv/5dffmnOOeccM3PmTPP555+boqIi07ZtW7N69WpfnzP9zMJ5fq+88oqJiooyRUVFfs/Bw4cP+/rcd999pqSkxFRUVJiPPvrIZGRkmC5dupjq6uqwn9/jjz9uVqxYYXbv3m127Nhh7rnnHtOmTRvz/vvv+/qE0/oZE/gcT7jppptMampqk9cMpzW88847TXx8vCkpKfF7zB09etTXJxxfCyM6fBhjzFNPPWV69OhhoqOjzfDhw83GjRt9x6644gqTnZ3t13/ZsmXmwgsvNNHR0SYlJcWsWrXK73hDQ4OZPXu26datm3G73ebKK680u3btsjGVJgUyv549expJjba5c+caY4w5evSoGTNmjDn33HNNu3btTM+ePc1tt90Wsr8UjAlsfjNmzPD17datm7n66qtNWVmZ3/XCbf2MCfwx+s9//tNIMu+9916ja4XbGp746uXJ24k5ZWdnmyuuuKLROUOGDDHR0dHm/PPPNy+++GKj657uZ2ZToPO74oorTtvfmB++WpyYmGiio6PNT37yEzNp0iRTXl5ud2L/L9D5zZ8/3/Tp08fExMSYhIQEk5aWZj744ING1w2X9TOmZY/Rw4cPm/bt25tnn322yWuG0xo2NTdJfs+rcHwtdP1/8QAAAFZE7Gc+AABAZCJ8AAAAqwgfAADAKsIHAACwivABAACsInwAAACrCB8AAMAqwgcAALCK8AEAAKwifAAAAKsIHwAAwCrCBwAAsOr/ABrNhGmaeaZDAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 22
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:45:55.382211Z",
     "start_time": "2025-01-20T16:45:55.375728Z"
    }
   },
   "cell_type": "code",
   "source": [
    "m_pred = np.array(result[900][20][0.3][\"m_pred\"])\n",
    "m_true = np.array(result[900][20][0.3][\"m_true\"])"
   ],
   "id": "5fa29e5695d1bfca",
   "outputs": [],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:45:57.602573Z",
     "start_time": "2025-01-20T16:45:57.591567Z"
    }
   },
   "cell_type": "code",
   "source": "m_pred",
   "id": "9ae01bf63ee1b36f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 641.83105469,  866.09069824,  851.73724365, 1062.89428711,\n",
       "       1655.16564941,  320.83901978,  502.70303345,  799.65283203,\n",
       "         55.62595749,   51.16765976,  863.53631592,   89.45400238,\n",
       "        533.7557373 ,  376.30004883,  597.72265625,    0.        ,\n",
       "        560.80645752,   68.12836456,  706.06408691,  724.22351074,\n",
       "        693.24047852,  195.38005066,  744.99951172,   57.83921051,\n",
       "        649.59234619,   55.398983  ,  665.58978271,  638.02868652,\n",
       "        587.02825928,  828.62927246,  604.92059326,  467.78771973,\n",
       "        813.63787842,  422.85968018,  513.59490967,  371.32543945,\n",
       "         43.02356339,   60.69647217,    0.        ,    0.        ,\n",
       "        674.59191895,   50.23223877,  659.35571289,  694.15087891,\n",
       "        974.06951904,  833.8213501 ,  883.08532715,  960.33508301,\n",
       "        161.08520508,  564.60180664,  667.60766602,  520.25      ,\n",
       "        696.6227417 ,  863.53314209,  755.36712646,  796.23413086,\n",
       "        955.74468994,  419.76861572,    0.        ,   79.88526917,\n",
       "        397.43603516,  713.16229248,  963.28955078, 1234.15795898,\n",
       "        933.11053467,  410.34863281,  964.00817871,  701.77362061,\n",
       "        710.20819092,    0.        ,   38.19056702,  859.89935303,\n",
       "        578.93334961,    0.        ,   83.25089264,  854.06091309,\n",
       "        573.23419189,  319.66473389,  620.66796875,  574.55157471,\n",
       "        633.9387207 ,  736.91552734,  103.39178467,    0.        ,\n",
       "         63.62294388,  574.7265625 ,  839.99731445,   39.05511093,\n",
       "       1220.18579102,  665.93878174,  569.78582764,   78.19033051,\n",
       "        620.31622314,  505.46517944,  505.6192627 ,    0.        ,\n",
       "        551.67333984,  576.76025391,  783.02429199,  727.16680908,\n",
       "        390.37368774,  835.3927002 ,  269.57330322,  772.62982178,\n",
       "        431.72564697,   46.47593689,    0.        ,  825.40423584,\n",
       "          0.        ,  125.83854675,   87.26153564,   52.30726242,\n",
       "       1022.72241211,  825.33642578,   65.16733551,  346.05007935,\n",
       "         49.73982239,    0.        ,  927.04187012,  126.74888611,\n",
       "         80.24756622,  789.6151123 ,  154.5710144 ,    0.        ,\n",
       "         72.56481171,  569.58227539,  212.6068573 ,  454.64471436,\n",
       "          0.        ,   61.39545441, 1323.9161377 ,  973.59503174,\n",
       "          0.        ,   70.69458008,   52.61137772,  429.90161133,\n",
       "        327.41027832, 1543.80065918,  450.53570557,  656.1696167 ,\n",
       "        554.34863281,   75.0789032 ,    0.        ,  441.059021  ,\n",
       "        962.46099854, 1233.72070312,   86.19637299,   99.10082245,\n",
       "        753.31530762,   80.64937592,  654.20300293,  359.01773071,\n",
       "         46.40773392,  623.61798096,  715.72955322,  699.6496582 ,\n",
       "        806.04907227,  459.5423584 ,  292.88635254,   86.0062561 ,\n",
       "         78.19236755,  531.13598633,  741.38250732,  526.87329102,\n",
       "        931.67663574,  923.42736816,  571.89642334,  618.13098145,\n",
       "        455.69778442,  732.64801025,  634.58886719,  557.38726807,\n",
       "         60.73313522,  266.79779053,  472.7807312 ,  657.72692871,\n",
       "        865.62432861,  451.86126709,  651.08013916,  562.9463501 ,\n",
       "        889.04656982,  801.86724854,  465.27664185,    0.        ,\n",
       "        790.24377441,  406.2520752 ,  197.88163757,  587.32617188,\n",
       "          0.        ,  830.54193115,  792.55230713,   62.69068527,\n",
       "        819.86328125,   59.33326721,   50.91682434,  643.00366211,\n",
       "        144.71479797,  430.67797852,  575.26391602,  118.92771149])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 27
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-20T16:46:04.936810Z",
     "start_time": "2025-01-20T16:46:04.529710Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.hist(m_pred/m_true, bins=100, range=(0, 2))\n",
    "fig.show()"
   ],
   "id": "be29fd7740c32212",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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V199VWvWrNGcOXO0bt06ZWZmqq6uztH6z6Q58+vdu7defvllLV++XH/5y19UX1+vYcOG6euvv5YUXOsnnf0abtq0STt27NDtt9/u0x4sa9gcp3oNVldX6/vvv3fkeR9MnnjiCdXU1Oimm27ytqWkpKioqEgrV67UvHnzVF5eriuuuEJHjhxpwUqbJi4uTvPnz9ebb76pN998UwkJCUpNTVVpaakkZ75uBZMDBw7ovffea/AaDNY1rK+v19SpUzV8+HD169fvlP2C4b0wIL9eHS2voKBAixcvVnFxsc+HMsePH+/9d//+/TVgwAD16tVLxcXFuvrqq1ui1CYbOnSozx8nHDZsmC655BI9//zzeuSRR1qwssB46aWX1L9/fw0ZMsSnPZTX8FyycOFCzZ49W8uXL/f5TERmZqb33wMGDFBKSop69OihJUuW6LbbbmuJUpusd+/e6t27t3d/2LBh2r17t5566in9+c9/bsHKAmPBggXq2LGjxo4d69MerGs4efJk7dixo8U+f+KPkL3z0aVLF7Vt21YHDx70aT948KBiY2MbPSc2Nva0/U/8159rBkpz5nfCE088oYKCAr3//vsaMGDAafteeOGF6tKli8rKys66Zn+czfxOaNeunS699FJv7cG0ftLZzbG2tlaLFy9u0heyllrD5jjVazAqKkrt27d35HkRDBYvXqzbb79dS5YsaXB7+2QdO3bUxRdfHBLr15ghQ4Z4a28t6yf9+NMeL7/8siZOnKjw8PDT9g2GNbznnnv0zjvvaO3atbrgggtO2zcY3gtDNnyEh4frsssu05o1a7xt9fX1WrNmjc//Hf/U0KFDffpL0urVq739ExMTFRsb69OnurpaGzduPOU1A6U585N+/ITyI488opUrV+ryyy8/4zhff/21vv32W8XFxTlSd1M1d34/VVdXp+3bt3trD6b1k85ujm+88YY8Ho9uueWWM47TUmvYHGd6DTrxvGhpixYt0qRJk7Ro0SKfH5E+lZqaGu3evTsk1q8x27Zt89beGtbvhHXr1qmsrKxJ/wPQkmtojNE999yjpUuX6sMPP1RiYuIZzwmK90JHPrbaQhYvXmzcbrcpKioy//znP82dd95pOnbsaCorK40xxkycONHk5uZ6+3/88ccmLCzMPPHEE+aLL74ws2bNMu3atTPbt2/39ikoKDAdO3Y0y5cvN5999pkZM2aMSUxMNN9//33Qz6+goMCEh4ebv/71r+abb77xbkeOHDHGGHPkyBHzu9/9zqxfv96Ul5ebDz74wAwaNMhcdNFF5tixY0E/v9mzZ5tVq1aZ3bt3my1btpjx48ebiIgI8/nnn3v7BNP6GeP/HE8YMWKEGTduXIP2YFvDI0eOmK1bt5qtW7caSebJJ580W7duNXv37jXGGJObm2smTpzo7f/VV1+Z8847z0ybNs188cUXprCw0LRt29asXLnS2+dMj1kwz++1114zYWFhprCw0Oc1ePjwYW+fBx54wBQXF5vy8nLz8ccfm/T0dNOlSxdz6NChoJ/fU089ZZYtW2Z27dpltm/fbu677z7Tpk0b88EHH3j7BNP6GeP/HE+45ZZbTEpKSqPXDKY1vPvuu010dLQpLi72ec4dPXrU2ycY3wtDOnwYY8yzzz5runfvbsLDw82QIUPMhg0bvMeuuuoqk52d7dN/yZIl5uKLLzbh4eEmKSnJrFixwud4fX29mTFjhunWrZtxu93m6quvNjt37rQxlUb5M78ePXoYSQ22WbNmGWOMOXr0qBk5cqQ5//zzTbt27UyPHj3MHXfc0WJfFIzxb35Tp0719u3WrZu59tprTWlpqc/1gm39jPH/Ofqvf/3LSDLvv/9+g2sF2xqe+NHLk7cTc8rOzjZXXXVVg3MGDhxowsPDzYUXXmheeeWVBtc93WNmk7/zu+qqq07b35gff7Q4Li7OhIeHm5/97Gdm3LhxpqyszO7E/p+/85szZ47p1auXiYiIMDExMSY1NdV8+OGHDa4bLOtnTPOeo4cPHzbt27c3L7zwQqPXDKY1bGxuknxeV8H4Xuj6/+IBAACsCNnPfAAAgNBE+AAAAFYRPgAAgFWEDwAAYBXhAwAAWEX4AAAAVhE+AACAVYQPAABgFeEDAABYRfgAAABWET4AAIBVhA8AAGDV/wFA8o+52iBlAwAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "d3dfc25078295551"
  }
 ],
 "metadata": {
  "kernelspec": {
   "name": "python3",
   "language": "python",
   "display_name": "Python 3 (ipykernel)"
  }
 },
 "nbformat": 5,
 "nbformat_minor": 9
}