Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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