# 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)
Beispiel #2
0
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
Beispiel #3
0
# 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