commit 2ae590c0123a3e613005cd3e586b2fde6170fc2b
parent d6c029901c6a8c68381745e470aad621e370a76c
Author: miksa <milutin@popovic.xyz>
Date: Thu, 8 Apr 2021 11:47:32 +0200
done first fit
Diffstat:
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')