def CPConvergenceTest(): value = [] error = [] eventFiles = dm.GetFileNames('\Samples') # get filenames eventFiles_CP = dm.GetFileNames('\Samples_CP') for i in range(len(eventFiles)): p = dm.AmpGendf(eventFiles[i], False) # generate particle data pbar = dm.AmpGendf(eventFiles_CP[i], True) # generate CP particle data C_T = kin.Scalar_TP(kin.Vector_3(p['p_3']), kin.Vector_3(p['p_4']), kin.Vector_3( p['p_1'])) # calcualtes scalar triple product C_Tbar = -kin.Scalar_TP( kin.Vector_3(pbar['p_3']), kin.Vector_3(pbar['p_4']), kin.Vector_3(pbar['p_1'])) # -sign for parity flip A_T = kin.TP_Amplitude(C_T) # calculate parity asymmetries A_Tbar = kin.TP_Amplitude(C_Tbar) A_CP = kin.A_CP(A_T, A_Tbar) # calculate A_CP value.append(A_CP[0]) error.append(A_CP[1]) pt.ErrorPlot([np.linspace(1, 10, len(eventFiles)), value], axis=True, y_error=error, x_axis="Number of Events ($10^{5}$)", y_axis="$\mathcal{A}_{CP}$") # plots data
def Seed_test(): fileNames = dm.GetFileNames('\seed_test') # get filenames events = fileNames[0:5] # split the dataset in half events_CP = fileNames[5:10] # make this half CP data value = [] error = [] for i in range(5): p = dm.AmpGendf(events[i], False) # generate particle data pbar = dm.AmpGendf(events_CP[i], True) C_T = kin.Scalar_TP(kin.Vector_3(p['p_3']), kin.Vector_3(p['p_4']), kin.Vector_3( p['p_1'])) # calcualtes scalar triple product C_Tbar = -kin.Scalar_TP(kin.Vector_3( pbar['p_3']), kin.Vector_3(pbar['p_4']), kin.Vector_3(pbar['p_1'])) A_T = kin.TP_Amplitude(C_T) # calculate parity asymmetries A_Tbar = kin.TP_Amplitude(C_Tbar) A_CP = kin.A_CP(A_T, A_Tbar) # calculate A_CP value.append(A_CP[0]) error.append(A_CP[1]) pt.ErrorPlot([np.linspace(1, 5, 5), value], axis=True, y_error=error, x_axis="Iteration", y_axis="$\mathcal{A}_{CP}$") # plots data
def Convergence_test2(): direc = "\Samples" # direectory to look for direc_CP = direc + "_CP" # directory for conjugate events samples = ["1K", "10K", "100K", "1000K", "10000K"] # folder names A_Ts = [] A_Tbars = [] A_CPs = [] """Will go through each folder and will calculate the asymmetry for a given event size. Does this for each seed and merges the data into one list""" for i in range(len(samples)): filenames = dm.GetFileNames( direc + "\\" + samples[i]) # get ROOT file for the particular sample filenames_CP = dm.GetFileNames(direc_CP + "\\" + samples[i] + "_CP") # .. conjugate sample C_T = [] C_Tbar = [] """Opens the jth files for the regular and conjugate sample and computed C_T""" for j in range(len(filenames)): p = dm.AmpGendf(filenames[j], False) # gets data from the file pbar = dm.AmpGendf(filenames_CP[j], True) # gets conjugate data tmp = kin.Scalar_TP(kin.Vector_3(p["p_3"]), kin.Vector_3(p["p_4"]), kin.Vector_3(p["p_1"])) # C_T C_T.append(tmp) # add to the list tmp = -kin.Scalar_TP(kin.Vector_3(pbar["p_3"]), kin.Vector_3(pbar["p_4"]), kin.Vector_3(pbar["p_1"])) # -C_Tbar C_Tbar.append(tmp) C_T = np.hstack(C_T) # merges the data from each individual seed C_Tbar = np.hstack(C_Tbar) A_T = kin.TP_Amplitude(C_T) A_Tbar = kin.TP_Amplitude(C_Tbar) A_CPs.append(kin.A_CP(A_T, A_Tbar)) # add asymmetries to a list to save A_Ts.append(A_T) A_Tbars.append(A_Tbar) print(i) np.save("Convergence_test/A_T", A_Ts) # save calculated data into a file for later use np.save("Convergence_test/A_Tbar", A_Tbars) np.save("Convergence_test/A_CP", A_CPs)
def RetrieveData(generator, filename, CP=False): if generator == 'AmpGen': particles = dm.AmpGendf(filename, CP) if generator == 'MINT': # MINT data no longer used particles = dm.MINTdf() return particles