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()