go-hep.org/x/hep@v0.38.1/fit/testdata/gen-gauss.py (about) 1 #!/usr/bin/env python2 2 3 import numpy as np 4 5 gaussian = lambda x: 3*np.exp(-(30-x)**2/20.) 6 7 n = 100 8 xdata = np.arange(n) 9 ydata = gaussian(xdata) 10 11 import matplotlib.pyplot as plt 12 13 plt.plot(xdata, ydata, '.') 14 15 with open("gauss-data.txt","w") as f: 16 for i in range(n): 17 f.write("%+e %+e\n" % (xdata[i], ydata[i])) 18 pass 19 pass 20 21 X = np.arange(ydata.size) 22 x = np.sum(X*ydata)/np.sum(ydata) 23 width = np.sqrt(np.abs(np.sum((X-x)**2*ydata)/np.sum(ydata))) 24 25 ymax = ydata.max() 26 27 fit = lambda t : ymax*np.exp(-(t-x)**2/(2*width**2)) 28 29 print "mean= %+e\nwidth= %+e" % (x, width) 30 31 plt.plot(fit(X), '-') 32 plt.show()