tprak

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

model.py (1510B)


      1 #!/usr/bin/env python3.9
      2 
      3 import numpy as np
      4 from scipy.optimize import curve_fit
      5 import matplotlib.pyplot as plt
      6 
      7 global m_p; m_p = 0.13957
      8 
      9 sig_p = lambda x: np.sqrt(1 - 4*m_p**2/x)
     10 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, 0)
     11 
     12 def model(s, m_q, g_q, m_w, g_w, e_w, a, b, c):
     13     part1 = (m_q)**4/((m_q**2 - s)**2 + m_q**2*g_s(s, m_q, g_q)**2)
     14     part2 = 1 + (e_w * 2*s * (m_w**2 - s))/((m_w**2 - s)**2 + m_w**2*g_w**2)
     15     part3 = (1 + a*s + b*s**2 + c*s**3)**2
     16     return part1 * part2 * part3
     17 
     18 def myplot(name, x_data, y_data, p, dp, sigma):
     19 
     20     x_model = np.linspace(x_data[0], x_data[-1], 500)
     21     y_model = model(x_model, *p)
     22 
     23     plt.figure(figsize=[10, 7])
     24     plt.title(f'{name} DATA FIT')
     25 
     26     plt.errorbar(x_data, y_data, yerr=sigma, fmt='.k', c='black', label=f'{name}')
     27     plt.plot(x_model, y_model, color='red', label='fit')
     28 
     29     p, dp = np.round(p, 3), np.round(dp, 3)
     30     plt.annotate(r'$M_{\rho} = $' + f'({p[0]}' + r'$\pm$' + f'{dp[0]}) GeV', (0.2, 40))
     31     plt.annotate(r'$\Gamma_{\rho} = $' + f'({p[1]}' + r'$\pm$' + f'{dp[1]}) GeV', (0.2, 38))
     32     plt.annotate(r'$M_{\omega} = $' + f'({p[2]}' + r'$\pm$' + f'{dp[2]}) GeV', (0.2, 36))
     33     plt.annotate(r'$\Gamma_{\omega} = $' + f'({p[3]}' + r'$\pm$' + f'{dp[3]}) GeV', (0.2, 34))
     34 
     35     plt.title(f't0-Singlefit of {name}')
     36     plt.ylabel(r'$|F_{\pi}^V(s)|^2|$')
     37     plt.xlabel(r'$\sqrt{s}$[GeV]')
     38     plt.legend(loc='best')
     39 
     40     plt.savefig(f'./plots/{name}.png')
     41     plt.close()