Skip to content
Snippets Groups Projects
Unverified Commit dce10d11 authored by Dmitry Kalinkin's avatar Dmitry Kalinkin Committed by GitHub
Browse files

zdc_photon: pass failed fits (#146)

parent 6248348b
No related branches found
No related tags found
No related merge requests found
...@@ -57,16 +57,19 @@ for p in momenta: ...@@ -57,16 +57,19 @@ for p in momenta:
slc=abs(bc-p)<10 slc=abs(bc-p)<10
fnc=gauss fnc=gauss
p0=[100, p, 10] p0=[100, p, 10]
coeff, var_matrix = curve_fit(fnc, list(bc[slc]), list(y[slc]), p0=p0, try:
sigma=list(np.sqrt(y[slc])+(y[slc]==0)), maxfev=10000) coeff, var_matrix = curve_fit(fnc, list(bc[slc]), list(y[slc]), p0=p0,
if p==100: sigma=list(np.sqrt(y[slc])+(y[slc]==0)), maxfev=10000)
xx=np.linspace(p*0.75,p*1.25, 100) if p==100:
plt.plot(xx, fnc(xx,*coeff)) xx=np.linspace(p*0.75,p*1.25, 100)
pvals.append(p) plt.plot(xx, fnc(xx,*coeff))
resvals.append(np.abs(coeff[2])/coeff[1]) pvals.append(p)
dresvals.append(np.sqrt(var_matrix[2][2])/coeff[1]) resvals.append(np.abs(coeff[2])/coeff[1])
scalevals.append(np.abs(coeff[1])/p) dresvals.append(np.sqrt(var_matrix[2][2])/coeff[1])
dscalevals.append(np.sqrt(var_matrix[2][2])/p) scalevals.append(np.abs(coeff[1])/p)
dscalevals.append(np.sqrt(var_matrix[2][2])/p)
except RuntimeError as e:
print(f"fit failed for p={p}", e, list(bc[slc]), list(y[slc]))
plt.sca(axs[1]) plt.sca(axs[1])
plt.errorbar(pvals, resvals, dresvals, ls='', marker='o') plt.errorbar(pvals, resvals, dresvals, ls='', marker='o')
...@@ -78,11 +81,14 @@ xx=np.linspace(15, 275, 100) ...@@ -78,11 +81,14 @@ xx=np.linspace(15, 275, 100)
fnc=lambda E,a: a/np.sqrt(E) fnc=lambda E,a: a/np.sqrt(E)
#pvals, resvals, dresvals #pvals, resvals, dresvals
coeff, var_matrix = curve_fit(fnc, pvals, resvals, p0=(1,), try:
sigma=dresvals, maxfev=10000) coeff, var_matrix = curve_fit(fnc, pvals, resvals, p0=(1,),
sigma=dresvals, maxfev=10000)
xx=np.linspace(15, 275, 100) xx=np.linspace(15, 275, 100)
plt.plot(xx, fnc(xx, *coeff), label=f'fit: $\\frac{{{coeff[0]*100:.0f}\\%}}{{\\sqrt{{E}}}}$') plt.plot(xx, fnc(xx, *coeff), label=f'fit: $\\frac{{{coeff[0]*100:.0f}\\%}}{{\\sqrt{{E}}}}$')
except RuntimeError as e:
print("fit failed", e)
plt.legend() plt.legend()
plt.sca(axs[2]) plt.sca(axs[2])
plt.errorbar(pvals, scalevals, dscalevals, ls='', marker='o') plt.errorbar(pvals, scalevals, dscalevals, ls='', marker='o')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment