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")
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
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)
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
def loadPrmBeta(self): filename = "../data/gamma/" + self.name + "_J19.txt" prmBeta, prmAntiBeta = bloader.loadPrmBeta(filename) return prmBeta, prmAntiBeta
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()