# cross-section of nu_e_bar + C12 -> positron + 2n + B10 in cm**2 corresponding to energy_neutrino: xsec_nuebar_C12_positron_2n_B10 = 10**(-42) * data_nuebar_C12[:, 1] # cross-section of nu_e_bar + C12 -> positron + 2n + p + Be9 in cm**2 corresponding to energy_neutrino: xsec_nuebar_C12_positron_2n_p_Be9 = 10**(-42) * data_nuebar_C12[:, 2] # cross-section of nu_e_bar + C12 -> positron + 2n + 2p + Li8 in cm**2 corresponding to energy_neutrino: xsec_nuebar_C12_positron_2n_2p_Li8 = 10**(-42) * data_nuebar_C12[:, 3] # calculate total cross-section nu_e_bar + C12 -> positron + 2n + W in cm**2: xsec_nuebar_C12_positron_2n_W = xsec_nuebar_C12_positron_2n_B10 + xsec_nuebar_C12_positron_2n_p_Be9 + \ xsec_nuebar_C12_positron_2n_2p_Li8 # calculate cross-section of IBD (nu_e_bar + p -> positron + n) in cm**2: xsec_IBD = sigma_ibd(energy_neurino, DELTA, MASS_POSITRON) # integrate the cross-sections from 10 to 100 MeV to get total cross-section: total_xsec_IBD = np.trapz(xsec_IBD, energy_neurino) total_xsec_nue_C12_electron_n_Y = np.trapz(xsec_nue_C12_electron_n_Y, energy_neurino) total_xsec_nue_C12_electron_2n_Z = np.trapz(xsec_nue_C12_electron_2n_Z, energy_neurino) total_xsec_nuebar_C12_positron_n_X = np.trapz(xsec_nuebar_C12_positron_n_X, energy_neurino) total_xsec_nuebar_C12_positron_2n_W = np.trapz(xsec_nuebar_C12_positron_2n_W, energy_neurino) print("total cross-section in cm^2 (10 MeV to 100 MeV):") print("\nIBD:") print(total_xsec_IBD) print("\nnu_e + C12 -> electron + n + Y:") print(total_xsec_nue_C12_electron_n_Y) print("\nnu_e + C12 -> electron + 2n + Z:") print(total_xsec_nue_C12_electron_2n_Z)
from gen_spectrum_functions import sigma_ibd # set neutrino energy in MeV: energy_neutrino = np.arange(10, 100.05, 0.05) # mass of positron in MeV (reference PDG 2016) (float constant): MASS_POSITRON = 0.51099892 # mass of proton in MeV (reference PDG 2016) (float constant): MASS_PROTON = 938.27203 # mass of neutron in MeV (reference PDG 2016) (float constant): MASS_NEUTRON = 939.56536 # difference MASS_NEUTRON - MASS_PROTON in MeV (float): DELTA = MASS_NEUTRON - MASS_PROTON # calculate IBD cross-section in cm^2: crosssection = sigma_ibd(energy_neutrino, DELTA, MASS_POSITRON) # set number of free protons: n_target = 1.45 * 10**33 # total exposure time in years: t_years = 10 # total exposure time in seconds: t = t_years * 3.156 * 10 ** 7 # set IBD detection efficiency: detection_efficiency = 0.67005 # muon veto cut efficiency: exposure_ratio_muon = 0.9717
# Calculate the electron-antineutrino flux from DM annihilation in the Milky Way at Earth from paper 0710.5420: # DM annihilation cross-section necessary to explain the observed abundance of DM in the Universe, # in cm**3/s (float): sigma_anni = 3 * 10**(-26) # canonical value of the angular-averaged intensity over the whole Milky Way (float): j_avg = 5.0 # solar radius circle in cm, 8.5 kiloparsec, 1kpc = 3.086*10**21 cm (float): r_solar = 8.5 * 3.086 * 10**21 # normalizing DM density, in MeV/cm**3 (float): rho_0 = 0.3 * 1000 # electron-antineutrino flux at Earth in 1/(MeV * s *cm**2) (float): phi_signal = sigma_anni / 6 * j_avg * r_solar * rho_0**2 / mass_dm**2 # calculate IBD cross-section in cm**2: cross_section_IBD = sigma_ibd(mass_dm, DELTA, MASS_POSITRON) # number of free protons in THEIA per kton: number_per_kt = 6.73 * 10**31 # mass of THEIA_25 in ktons: mass_Theia25 = 25 # mass of THEIA_100 in ktons: mass_Theia100 = 100 # total number of protons for Theia_25: number_Theia25 = number_per_kt * mass_Theia25 # total number of protons for Theia_100: number_Theia100 = number_per_kt * mass_Theia100 # exposure time in years: time_years = 10.0 # exposure time in seconds:
2.25393E-25, 1.63394E-25, 1.03444E-25, 7.49894E-26, 7.24927E-26, 8.44249E-26, 9.66705E-26, 1.42696E-25, 2.29242E-25, 4.58949E-25, 8.00000E-25 ]) # Limit on the self-annihilation cross-section from Super-K in cm**3/s (0710.5420.pdf) (as a function of DM_mass # from above) (the limits are taken from the digitized Plot of 0710.5420 for J_avg=1.3) # (data is saved in limit_SuperK_digitized.csv)) (np.array of float): sigma_annihilation_Javg1 = np.array([ 2.5E-25, 1.8E-25, 2.8E-25, 4.0E-25, 6.9E-25, 8.9E-25, 8.8E-25, 6.3E-25, 3.8E-25, 3.0E-25, 2.8E-25, 3.0E-25, 3.8E-25, 5.0E-25, 7.9E-25, 1.5E-24, 3.0E-24 ]) # Cross-section of the Inverse Beta Decay in cm**2 (np.array of float): sigma_IBD = sigma_ibd(DM_mass, DELTA, MASS_POSITRON) # Electron-Antineutrino flux from DM annihilation in 1/(s*cm**2) (np.array of float): # for sigma_annihilation with J_avg = 5: flux_nuEbar_Javg5 = sigma_annihilation_Javg5 * J_avg_5 * r_solar * rho_0**2 / ( 2 * DM_mass**2 * 3) # Electron-Antineutrino flux from DM annihilation in 1/(s*cm**2) (np.array of float): # for sigma_annihilation with J_avg = 1.3: flux_nuEbar_Javg1 = sigma_annihilation_Javg1 * J_avg_1 * r_solar * rho_0**2 / ( 2 * DM_mass**2 * 3) # Number of signal events assuming the limit on the annihilation cross-section of Super-K from 0710.5420.pdf # for sigma_annihilation with J_avg = 5: # (np.array of float): number_signal_Javg5 = sigma_IBD * flux_nuEbar_Javg5 * N_target * time * detection_eff