Ejemplo n.º 1
0
def main():
    name = "AmC"
    secBetaArr, secAntiBetaArr = bloader.loadPrmBeta("../data/gamma/" + name +
                                                     "_J19.txt")
    print(">>>>>>>>>> Loading primary beta distribution <<<<<<<<<<")

    mu_arr, sigma_arr = [], []

    for i in range(len(secBetaArr)):
        tmppe, tmpsigma = 0, 0
        for j in secBetaArr[i]:
            if j == 0:
                break
            tmppe += eloader.getNPE(j)
            tmpsigma += eloader.getSPE(j) * eloader.getSPE(j)
        for j in secAntiBetaArr[i]:
            if j == 0:
                break
            tmppe += eloader.getNPE(j) + 2 * 660.8
            tmpsigma += eloader.getSPE(j) * eloader.getSPE(j) + 2 * 27.02**2

        tmpsigma = np.sqrt(tmpsigma)

        mu_arr.append(tmppe)
        sigma_arr.append(tmpsigma)

    hist = ROOT.TH2D("hist", "", 100, 8300, 9300, 100, 70, 130)
    for i, j in zip(mu_arr, sigma_arr):
        hist.Fill(i, j)

    hist.SaveAs("AmC_model.root")
Ejemplo n.º 2
0
 def loadPrmBeta(self):
     st = time.time()
     filename = ""
     if self.phys == "Penelope":
         filename = "../data/gamma/" + self.name + "_pene.txt"
     if self.phys == "Livermore":
         filename = "../data/gamma/" + self.name + "_J19.txt"
         if self.name == "nC12":
             filename = "../data/gamma/" + self.name + "_J19_multiple.txt"
     #print("Primary beta distribution from %s" %filename)
     prmBeta, prmAntiBeta = bloader.loadPrmBeta(filename)
     et = time.time()
     self.loadPrmBetaFlag = True
     #print("Primary beta loading time : %.3f s" %(et-st))
     self.prmBetaArr = prmBeta
     self.prmAntiBetaArr = prmAntiBeta
Ejemplo n.º 3
0
def main():

    es = 3134.078 / 2.223

    for k in range(315, 380, 1):
        # Load PrmBeta
        filename = "../data/gamma/Livermore-" + str(k) + ".txt"
        print(filename)
        prmBeta, prmAntiBeta = bloader.loadPrmBeta(filename)

        # calcSingleEvent :
        nSamples = 5000
        mu_arr, sigma_arr = [], []
        for i in range(nSamples):
            tmpnpe, tmpspe = 0, 0
            for j in prmBeta[i]:
                if j == 0:
                    break
                tmpnpe += (eloader.getNPE(j))
                tmpspe += (eloader.getSPE(j)**2)
            for j in prmAntiBeta[i]:
                if j == 0:
                    break
                tmpnpe += (eloader.getNPE(j) + 2 * 660.8)
                tmpspe += (eloader.getSPE(j)**2 + 27.07**2 * 2)

            mu_arr.append(tmpnpe)
            sigma_arr.append(np.sqrt(tmpspe))

        mu = np.array(mu_arr)
        sigma = np.array(sigma_arr)

        npe, spe = 0, 0
        sigma_part1, sigma_part2 = 0, 0
        for i in mu:
            npe += i
        npe = npe / nSamples
        for i, j in zip(mu, sigma):
            spe += (i - npe)**2 + j**2
            sigma_part1 += (i - npe)**2
            sigma_part2 += j**2

        spe = np.sqrt(spe / nSamples)
        sigma_part1 /= nSamples
        sigma_part2 /= nSamples

        print((k - 300) / 10., npe / es, spe / es)
Ejemplo n.º 4
0

if __name__ == "__main__":

    nH = singleGamma("nH")
    Y = 3134.078 / 2.223
    filename = "/junofs/users/miaoyu/energy_model/energyModel_Fit/new_fitter/output/NewgamNewB12_kSimQ_kNewAnaCer_kNew/NewgamNewB12_kSimQ_kNewAnaCer_kNew_rescov.txt"
    par1, parerr = loadBestFit(filename, 3)
    a, b, n = par1

    filename = "/junofs/users/miaoyu/energy_model/energyModel_Fit/new_fitter/output/NewgamNewB12_kSimQ_kNewAnaCer_kNew/NewgamNewB12_kSimQ_kNewAnaCer_kNew_nonlcov.txt"
    par1, parerr1 = loadBestFit(filename, 7)
    scale, kB, p0, p1, p2, p3, p4 = par1

    filename = "../data/gamma/nH_J19.txt"
    prmBeta, prmAntiBeta = bloader.loadPrmBeta(filename)

    # calcSingleEvent :
    nSamples = 5000
    mu_arr, sigma_arr = [], []
    cer_arr = []
    for i in range(nSamples):
        tmpnpe, tmpspe = 0, 0
        cernpe = 0
        # Electrons :
        for j in prmBeta[i]:
            if j == 0:
                break
            onenpe = (fitNsct(j, scale, kB) + wenNcer(j, p0, p1, p2, p3, p4))
            cernpe += wenNcer(j, p0, p1, p2, p3, p4)
            tmpnpe += onenpe
Ejemplo n.º 5
0
 def loadPrmBeta(self):
     filename = "../data/gamma/" + self.name + "_J19.txt"
     prmBeta, prmAntiBeta = bloader.loadPrmBeta(filename)
     return prmBeta, prmAntiBeta
Ejemplo n.º 6
0
def main():

    ##### Livermore
    filename1 = "../data/gamma/log-livermore.txt"
    print(filename1)
    prmBeta1, prmAntiBeta1 = bloader.loadPrmBeta(filename1)

    allBeta1 = []
    BetaNum1 = np.zeros(100000)
    for i in range(100000):
        for j in prmBeta1[i]:
            allBeta1.append(j)
            BetaNum1[i] += 1
        for k in prmAntiBeta1[i]:
            allBeta1.append(k)
            BetaNum1[i] += 1

    ##### Penelope
    filename2 = "../data/gamma/log-penelope.txt"
    print(filename2)
    prmBeta2, prmAntiBeta2 = bloader.loadPrmBeta(filename2)

    allBeta2 = []
    BetaNum2 = np.zeros(100000)
    for i in range(100000):
        for j in prmBeta2[i]:
            allBeta2.append(j)
            BetaNum2[i] += 1
        for k in prmAntiBeta2[i]:
            allBeta2.append(k)
            BetaNum2[i] += 1
    """
    ### chi2 TEST
    h1 = ROOT.TH1D("h1", "h1", 100, 0, 8)
    h2 = ROOT.TH1D("h2", "h2", 100, 0, 8)
    for i, j in zip(allBeta1, allBeta2):
        h1.Fill(i)
        h2.Fill(j)
    chi2 = h1.KolmogorovTest(h2)
    print("EnergyPdf chi2test : ", chi2)
    
    h3 = ROOT.TH1I("h3", "h3", 50, 0, 50)
    h4 = ROOT.TH1I("h4", "h4", 50, 0, 50)
    for i, j in zip(BetaNum1, BetaNum2):
        h3.Fill(i)
        h4.Fill(j)
    chi2 = h3.KolmogorovTest(h4)
    print("NumberPdf chi2test : ", chi2)

    """

    #fig = plt.figure(figsize=(6, 9))
    #spec = gridspec.GridSpec(ncols=1, nrows=4)

    #fig = plt.figure(constrained_layout=True, figsize=(6, 10))
    #heights = [1, 2, 1, 2]
    #spec = fig.add_gridspec(ncols=1, nrows=4, height_ratios=heights)
    #ax0 = fig.add_subplot(spec[1])
    #ax1 = fig.add_subplot(spec[3])
    #ax2 = fig.add_subplot(spec[0])
    #ax3 = fig.add_subplot(spec[2])
    fig = plt.figure(constrained_layout=True, figsize=(10, 6))
    heights = [1, 2]
    spec = fig.add_gridspec(ncols=2, nrows=2, height_ratios=heights)
    ax0 = fig.add_subplot(spec[3])
    ax2 = fig.add_subplot(spec[1])
    ax1 = fig.add_subplot(spec[2])
    ax3 = fig.add_subplot(spec[0])

    cont1, edge1 = np.histogram(allBeta1, bins=100, range=(0, 8))
    cont2, edge2 = np.histogram(allBeta2, bins=100, range=(0, 8))
    bin1 = np.linspace(0, 8, 100)

    ax0.hist(allBeta1,
             bins=100,
             histtype="step",
             color="blue",
             label="Livermore")
    ax0.hist(allBeta2,
             bins=100,
             histtype="step",
             color="red",
             label="Penelope")

    #ax0.bar(bin1, cont1/np.sum(cont1), width=8/100., color="white", edgecolor="blue", label="Livermore")
    #ax0.bar(bin1, cont2/np.sum(cont2), width=8/100., color="white", edgecolor="red", label="Penelope")

    ax0.set_xlabel("(b) Primary beta energy [MeV]", fontsize=15)
    ax0.set_ylabel("counts per bin", fontsize=15)
    ax0.legend(prop={"size": 14}, ncol=2)
    ax0.semilogy()
    ax0.set_ylim(0, 5000000)
    ax0.tick_params(axis='both', which='major', labelsize=14)
    ax0.set_xlim(-0.1, 8)

    #rect1 = [0.35, 0.52, 0.6, 0.4]
    #ax2 = add_subplot_axes(ax0, rect1)
    ax2.errorbar(bin1, (cont2 - cont1) / cont2,
                 yerr=np.sqrt(cont1 / cont2**2 + cont2 * cont1**2 / cont2**4),
                 fmt="o",
                 color="black",
                 ms=3,
                 mfc="w")
    #ax2.set_xlabel("Primary beta energy [MeV]", fontsize=13)
    ax2.set_ylabel("Bias", fontsize=13)
    ax2.tick_params(axis='both', which='major', labelsize=12)
    ax2.grid(True)
    ax2.set_ylim(-0.3, 0.3)
    ax2.set_xlim(-0.1, 8)

    ax1.hist(BetaNum1,
             bins=50,
             range=(0, 50),
             histtype="step",
             color="blue",
             label="Livermore")
    ax1.hist(BetaNum2,
             bins=50,
             range=(0, 50),
             histtype="step",
             color="red",
             label="Penelope")

    ax1.set_xlabel("(a) Primary beta multiplicity", fontsize=15)
    ax1.set_ylabel("counts per bin", fontsize=15)
    ax1.tick_params(axis='both', which='major', labelsize=14)
    ax1.legend(loc="lower center", prop={"size": 14}, ncol=1)
    ax1.semilogy()
    ax1.set_ylim(0, 20000)
    ax1.set_xlim(0, 50)

    #rect2 = [0.21, 0.24, 0.5, 0.33]
    #ax3 = add_subplot_axes(ax1, rect2)
    cont1, edge1 = np.histogram(BetaNum1, bins=50, range=(0, 50))
    cont2, edge2 = np.histogram(BetaNum2, bins=50, range=(0, 50))
    bin1 = np.linspace(0, 50, 50)
    ax3.errorbar(bin1, (cont2 - cont1) / cont2,
                 yerr=np.sqrt(cont1 / cont2**2 + cont2 * cont1**2 / cont2**4),
                 fmt="o",
                 color="black",
                 ms=3,
                 mfc="w")
    #ax3.set_xlabel("Primary beta multiplicity", fontsize=13)
    ax3.set_ylabel("Bias", fontsize=13)
    ax3.tick_params(axis='both', which='major', labelsize=12)
    ax3.grid(True)
    ax3.set_ylim(-0.3, 0.3)
    ax3.set_xlim(0, 50)

    plt.subplots_adjust(left=None,
                        bottom=None,
                        right=None,
                        top=None,
                        wspace=None,
                        hspace=None)

    plt.tight_layout()
    plt.savefig("compareModel.pdf")
    plt.show()