Number of event 3.14 KiB
import numpy as np
import matplotlib.pyplot as plt
def asymmetry():
B_values = np.linspace(0.00, 0.4,51) # an array of B values from 0.01 to 1.00
N_event_array = []
A_event_array = []
for B in B_values:
N_point_array = []
A_point_array = []
Nplus_array = np.arange(1000, 10000, 1) # an array of Nplus values from 10 to 1000
Nminus_array = (1 - B) * Nplus_array
N_array = np.round(Nplus_array + Nminus_array,2) # total number
A_array = np.round((Nplus_array - Nminus_array) / (Nplus_array + Nminus_array),5) # calculate the value of asymmetry A
# Calculte the uncertainty of Nplus and Nminus
sigma_Nplus_array = np.sqrt(Nplus_array)
sigma_Nminus_array = np.sqrt(1 - B) * sigma_Nplus_array
# Calculate the uncertainty of A due to the uncertainty of N, where dA/dNplus and dA/dNminus are the partial derivative
#of A with respect to Nplus and Nminus and then add these contribution to the uncertainty of A
sigma_A1_array = ((2 * Nminus_array * sigma_Nplus_array) / (Nplus_array + Nminus_array)**2)**2 #using the formula (dA/dNplus)^2*(sigmaNplus)^2
sigma_A2_array = (-(2 * Nplus_array * sigma_Nminus_array) / (Nplus_array + Nminus_array)**2)**2 #using the formula (dA/dNminus)^2*(sigmaNplus)^2
delta_A_array = np.round(np.sqrt(sigma_A1_array + sigma_A2_array),5) # the uncertainty of A
min_index = np.argmin(delta_A_array)
max_index = np.argmax(delta_A_array)
n = 2e-5
if 0.0<B<=0.06:
n=n
elif 0.06<B<=0.14:
n=n*10
elif 0.14<B<=0.36:
n=n*1e2
elif 0.36<B<=0.7:
n=n*3e3
elif 0.7<B<0.82:
n=n*1e4
#Find the number of event at intersection between Asymmetry and Uncertainty for every value of B, and save them to new array
for i in range(len(A_array)):
if A_array[i] < np.round(delta_A_array[min_index],5) or A_array[i] > delta_A_array[max_index]:
N_point_array.append(0)
elif abs(A_array[i] - delta_A_array[i]) <=n:
N_point = N_array[i]
A_point = A_array[i]
N_point_array.append(N_point)
A_point_array.append(A_point)
if len(N_point_array) == 0:
N_point_array.append(0)
if len(A_point_array) == 0:
A_point_array.append(0)
A_event = A_point_array[0]
N_event = N_point_array[0]
for i in range(1, len(N_point_array)):
if N_point_array[i] > N_event:
N_event = N_point_array[i]
A_event = A_point_array[i]
N_event_array.append(N_event)
A_event_array.append(A_event)
while 0 in N_event_array:
N_event_array.remove(0)
A_event_array.remove(0)
fig, ax = plt.subplots()
ax.plot(N_event_array, A_event_array, label='Uncertainty')
ax.set_xlabel('Number of event')
ax.set_ylabel('Asymmetry and Uncertainty')
ax.set_title(f'Asymmetry and Uncertainty vs. N_array for B')
ax.legend()
plt.show()
asymmetry()