2
#Figure 1, right at the bottom of the code, needs the error bars.
import scipy as sp
import numpy as np
import pylab as pl
import matplotlib as mpl
import numpy.random as nr
import matplotlib.pyplot as plt
M = 91.0
G = 2.5
RS = 0.14
JS = -0.033
S = np.arange(20,140,0.1)
def sigs(com):
for i in com:
yield ((4.0*np.pi)/3.0)*((1/i**2) + (((i**2)*RS + JS*((i**2)-M**2))/(((i**2)-M**2)**2 + (M*G)**2)))
x = list(sigs(S))
RA = 0.0027
JA = 0.81
def siga(com):
for i in com:
yield np.pi*((i**2)*RA + JA*((i**2) - M**2))/((((i**2) - M**2)**2) + (M*G)**2)
a = list(siga(S))
N = []
for m in x:
N.append(1000000*8*m/3)
cos = np.arange(-0.95, 0.90, 0.05)
sin = np.arange(-0.90, 0.95, 0.05)
M = []
for (i, j) in zip(cos,sin):
M.append((1000000*j*(0.094 + 0.0313*j*j + 0.000679*j))-(1000000*i*(0.094 + 0.0313*i*i + 0.000679*i)))
s = np.random.poisson(M)
z = []
for t in s:
z.append(t**0.5)
plt.figure(4)
pl.bar(cos, s, width = 0.05)
pl.xlabel('cos${\Theta}$')
pl.ylabel('Number of muons produced within the cos${\Theta}$ interval')
yerr = z
plt.errorbar(cos, s, yerr=yerr, fmt = 'o')
pl.show()