tprak

Theoretical Physics Practical Training
git clone git://popovic.xyz/tprak.git
Log | Files | Refs

commit 2ae590c0123a3e613005cd3e586b2fde6170fc2b
parent d6c029901c6a8c68381745e470aad621e370a76c
Author: miksa <milutin@popovic.xyz>
Date:   Thu,  8 Apr 2021 11:47:32 +0200

done first fit

Diffstat:
Asesh1/prog/Untitled Folder/.ipynb_checkpoints/Untitled-checkpoint.ipynb | 6++++++
Asesh1/prog/Untitled Folder/Untitled.ipynb | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msesh1/prog/automated.png | 0
Msesh1/prog/fit_single.py | 21+++++++++------------
4 files changed, 136 insertions(+), 12 deletions(-)

diff --git a/sesh1/prog/Untitled Folder/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/sesh1/prog/Untitled Folder/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/sesh1/prog/Untitled Folder/Untitled.ipynb b/sesh1/prog/Untitled Folder/Untitled.ipynb @@ -0,0 +1,121 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "id": "collectible-genius", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.optimize import curve_fit\n", + "import matplotlib.pyplot as plt\n", + "global m_p; m_p = 0.13957\n", + "from ipywidgets import interact" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "higher-looking", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d1e1b835069141a68e30bf401c53cdb4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=0.7, description='m_q', max=1.0), FloatSlider(value=0.2, description='…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "<function __main__.somefunc(m_q=0.7, g_q=0.2, m_w=0.8, g_w=0.2, e_w=0.002, a=-522.9, b=191.4, c=0.5)>" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sig_p = lambda x: np.sqrt(1 - 4*m_p**2/x)\n", + "g_s = lambda s, m_q, g_q: g_q*s/m_q**2 * (sig_p(s)/sig_p(m_q**2))**3 * np.heaviside(s , 4*m_p**2)\n", + "\n", + "def model(s, m_q, g_q, m_w, g_w, e_w, a, b, c):\n", + " part1 = (m_q)**4/((m_q**2 - s)**2 + m_q**2*g_s(s, m_q, g_q)**2)\n", + " part2 = 1 + (e_w * 2*s * (m_w**2 - s))/((m_w**2 - s)**2 + m_w**2*g_w**2)\n", + " part3 = c*(1 + a*s + b*s**2)**2\n", + " return part1 * part2 * part3\n", + "\n", + "def somefunc(m_q=0.7, g_q=0.2, m_w=0.8, g_w=0.2, e_w=2e-3, a=-522.90, b=191.40, c=0.5):\n", + " data = np.loadtxt('../data/SND-VFF.txt')\n", + " s = data[:,0]\n", + " F2 = data[:, 1]\n", + "\n", + " p0 = [m_q, g_q, m_w, g_w, e_w, a, b, c] # in GeV\n", + " popt, pcov = curve_fit(model, s, F2, p0)\n", + " popt, uncert = np.round(popt, 3), np.round(np.sqrt(np.diagonal(pcov)), 3)\n", + "\n", + " plt.figure(figsize=[10, 7])\n", + " plt.title('SND DATA FIT')\n", + " plt.scatter(s, F2, marker='.', c='black')\n", + " plt.plot(s, model(s, *popt), color='red')\n", + " plt.annotate('Very Bad, A guessing game with the parameters', (0.15, 40))\n", + " plt.annotate(r'No $\\omega$ resonance recognized by the fit', (0.15, 35))\n", + "\n", + " plt.annotate(r'$M_{\\rho} = $' + f'({popt[0]}' + r'$\\pm$' + f'{uncert[0]}) GeV', (0.7, 40))\n", + " plt.annotate(r'$\\Gamma_{\\rho} = $' + f'({popt[1]}' + r'$\\pm$' + f'{uncert[1]}) GeV', (0.7, 36))\n", + " plt.annotate(r'$M_{\\omega} = $' + f'({popt[2]}' + r'$\\pm$' + f'{uncert[2]}) GeV', (0.7, 34))\n", + " plt.annotate(r'$\\Gamma_{\\omega} = $' + f'({popt[3]}' + r'$\\pm$' + f'{uncert[3]}) GeV', (0.7, 32))\n", + " \n", + "interact(somefunc, m_q=(0, 1, 0.1), g_q=(0, 1, 0.1), m_w=(0, 1, 0.1), g_w=(0, 1, 0.1), e_w=(2e-3, 2e-2, 5e-3),\\\n", + " a=(-1000, 1000, 0.1), b=(-1000, 1000, 0.1), c=(0, 100, 0.1))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "nonprofit-bolivia", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "automotive-belgium", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/sesh1/prog/automated.png b/sesh1/prog/automated.png Binary files differ. diff --git a/sesh1/prog/fit_single.py b/sesh1/prog/fit_single.py @@ -7,12 +7,12 @@ import matplotlib.pyplot as plt global m_p; m_p = 0.13957 sig_p = lambda x: np.sqrt(1 - 4*m_p**2/x) -g_s = lambda s, m_q, g_q: g_q*s/m_q**2 * (sig_p(s)/sig_p(m_q**2))**2 * np.heaviside(s, 4*m_p**2) +g_s = lambda s, m_q, g_q: g_q*s/m_q**2 * (sig_p(s)/sig_p(m_q**2))**3 * np.heaviside(s, 4*m_p**2) -def model(s, m_q, g_q, m_w, g_w, e_w, a, b): +def model(s, m_q, g_q, m_w, g_w, e_w, a, b, c): part1 = (m_q)**4/((m_q**2 - s)**2 + m_q**2*g_s(s, m_q, g_q)**2) part2 = 1 + (e_w * 2*s * (m_w**2 - s))/((m_w**2 - s)**2 + m_w**2*g_w**2) - part3 = (1 + a*s + b*s)**2 + part3 = c*(1 + a*s + b*s**2)**2 return part1 * part2 * part3 def main(): @@ -20,9 +20,9 @@ def main(): s = data[:,0] F2 = data[:, 1] - p0 = [0.7, 0.2, 0.8, 0.2, 2e-3, 1e4, -1e5] # in GeV + p0 = [0.7, 0.2, 0.8, 0.2, 2e-3, -522.90, 191.40, 0.5] # in GeV popt, pcov = curve_fit(model, s, F2, p0) - popt, pcov = np.round(popt, 3), np.round(pcov, 3) + popt, uncert = np.round(popt, 3), np.round(np.sqrt(np.diagonal(pcov)), 3) plt.figure(figsize=[10, 7]) plt.title('SND DATA FIT') @@ -31,13 +31,10 @@ def main(): plt.annotate('Very Bad, A guessing game with the parameters', (0.15, 40)) plt.annotate(r'No $\omega$ resonance recognized by the fit', (0.15, 35)) - plt.annotate(r'$M_{\rho} = $' + f'({popt[0]}' + r'$\pm$' + f'{np.sqrt(pcov[0][0])}) GeV', (0.7, 40)) - plt.annotate(r'$\Gamma_{\rho} = $' + f'({popt[1]}' + r'$\pm$' + f'{np.sqrt(pcov[1][1])}) GeV', (0.7, 36)) - plt.annotate(r'$M_{\omega} = $' + f'({popt[2]}' + r'$\pm$' + f'{np.sqrt(pcov[2][2])}) GeV', (0.7, 34)) - plt.annotate(r'$\Gamma_{\omega} = $' + f'({popt[3]}' + r'$\pm$' + f'{np.sqrt(pcov[3][3])}) GeV', (0.7, 32)) - plt.annotate(r'$\varepsilon_{\omega} = $' + f'({popt[4]}' + f'$\pm$' + f'{np.sqrt(pcov[4][4])}) GeV', (0.7, 30)) - plt.annotate(f'a = ({popt[5]}' + r'$\pm$' + f'{np.sqrt(pcov[5][5])}) GeV', (0.7, 28)) - plt.annotate(f'b = ({popt[6]}' + r'$\pm$' + f'{np.sqrt(pcov[6][6])}) GeV', (0.7, 26)) + plt.annotate(r'$M_{\rho} = $' + f'({popt[0]}' + r'$\pm$' + f'{uncert[0]}) GeV', (0.7, 40)) + plt.annotate(r'$\Gamma_{\rho} = $' + f'({popt[1]}' + r'$\pm$' + f'{uncert[1]}) GeV', (0.7, 36)) + plt.annotate(r'$M_{\omega} = $' + f'({popt[2]}' + r'$\pm$' + f'{uncert[2]}) GeV', (0.7, 34)) + plt.annotate(r'$\Gamma_{\omega} = $' + f'({popt[3]}' + r'$\pm$' + f'{uncert[3]}) GeV', (0.7, 32)) plt.savefig('automated.png')