def dRdEAr(m, E, eff, epsilon=1e-5, mu_x=1e-5, millicharge=False, m_dipole=False, **kwargs): s = np.zeros_like(E) if millicharge: s += eff(E)*DMU.dRdE_millicharge(E, m, epsilon, "Ar40", **kwargs) if m_dipole: s += eff(E)*DMU.dRdE_magnetic(E, m, mu_x, "Ar40", **kwargs) return s
def dRdE(ER_keV, m_x, **kwargs): #Load in the list of nuclear spins, atomic masses and mass fractions nuclei_Xe = ["Xe128", "Xe129", "Xe130", "Xe131", "Xe132", "Xe134", "Xe136"] nuclei_list = np.loadtxt("Nuclei.txt", usecols=(0,), dtype='string') frac_list = np.loadtxt("Nuclei.txt", usecols=(3,)) frac_vals = dict(zip(nuclei_list, frac_list)) dRdE = np.zeros_like(ER_keV) for nuc in nuclei_Xe: if millicharge: dRdE += frac_vals[nuc]*DMU.dRdE_millicharge(ER_keV, m_x, epsilon, nuc, **kwargs) if m_dipole: dRdE += frac_vals[nuc]*DMU.dRdE_magnetic(ER_keV, m_x, mu_x, nuc, **kwargs) return dRdE
def calcSpectrum(E_R, m_x, sigma_p): dRdE = np.zeros_like(E_R) for nuc in nuclei_Xe: N_p = 54. N_n = get_A(nuc) - N_p dRdE += get_frac(nuc) * DMU.dRdE_standard(E_R, N_p, N_n, m_x, sigma_p) return dRdE
def dRdEAr(m, E, c, eff, Nevents=True, **kwargs): s = eff(E) * DMU.dRdE_NREFT(E, m, c, c, "Ar40", **kwargs) + 1.e-30 if Nevents: s, sum(s * ER_width) else: return s
def dRdE(m, E, c, eff): s = eff(E) * DMU.dRdE_NREFT(E, m, c, c, "Ar40") + 1.e-30 return s
ER_grid, EEM_grid = np.meshgrid(ER_list, EEM_list, indexing='ij') #-------------------------------------------------- #--------- Standard Elastic Nuclear Recoils ------- #-------------------------------------------------- eta_list = np.trapz(f_clip / (v_list + 1e-30), v_list) - cumtrapz( f_clip / (v_list + 1e-30), v_list, initial=0) eta_func = interp1d(v_list, eta_list, bounds_error=False, fill_value=0.0) #plt.figure() # #plt.plot(v_list, eta_list) R_NR_list = DMU_standard.dRdE_generic(ER_list, A_Ge, 0, m_x, sigma_p, eta_func) R_NR_list_noscatter = DMU_standard.dRdE_standard(ER_list, A_Ge, 0, m_x, sigma_p) outfile = "results/spectra/Elastic/Elastic_" + interaction + "_MOD_mx" + '{0:.3f}'.format( m_x) + "_lsig" + '{0:.2f}'.format(np.log10(sigma_p)) + ".txt" headertxt = "Elastic nuclear recoil spectrum for " + interaction + " interactions. Ge detector at Modane (d=1700m, latitude=45.2deg)" headertxt += "\nColumns: Nuclear recoil energy [keV], dR/dE (w/ Earth-shielding) [events/keV/kg/day]" #Output format - short #np.savetxt(outfile, list(zip(ER_list, R_NR_list, R_NR_list_noscatter)), header=headertxt, fmt='%.4e') np.savetxt(outfile, list(zip(ER_list, R_NR_list)), header=headertxt, fmt='%.3e') #plt.figure()