Генератор исходных данных на основе потока NOvA
Public Document 8-v1
Flux Histograms for 2017 Analysis.
Генератор сформирован выйбкодом в LLM-дипсик.
Код генератора данных из потока NoVa 2017
import numpy as np
import matplotlib.pyplot as plt
from tabulate import tabulate
# ====================
NOVA-doc-25266-v5
RITM1195302
# ====================
# FHC режим (Forward Horn Current) - основной нейтринный режим
nova_fhc_nue_flux_data = [
[0.0, 0.5, 0.0707, 0.118], [0.5, 1.0, 0.1502, 0.112], [1.0, 1.5, 0.1783, 0.093],
[1.5, 2.0, 0.1635, 0.105], [2.0, 2.5, 0.1387, 0.097], [2.5, 3.0, 0.1076, 0.096],
[3.0, 3.5, 0.0827, 0.081], [3.5, 4.0, 0.0655, 0.088], [4.0, 4.5, 0.0576, 0.096],
[4.5, 5.0, 0.0513, 0.095], [5.0, 6.0, 0.0943, 0.094], [6.0, 7.0, 0.0853, 0.099],
[7.0, 8.0, 0.0750, 0.089], [8.0, 9.0, 0.0653, 0.104], [9.0, 10.0, 0.0524, 0.103],
[10.0, 12.0, 0.0710, 0.105], [12.0, 14.0, 0.0393, 0.137], [14.0, 16.0, 0.0235, 0.159],
[16.0, 18.0, 0.0143, 0.185], [18.0, 20.0, 0.0087, 0.262]
]
nova_fhc_nuebar_flux_data = [
[0.0, 0.5, 0.0158, 0.269], [0.5, 1.0, 0.0208, 0.172], [1.0, 1.5, 0.0215, 0.152],
[1.5, 2.0, 0.0197, 0.157], [2.0, 2.5, 0.0182, 0.148], [2.5, 3.0, 0.0158, 0.146],
[3.0, 3.5, 0.0143, 0.151], [3.5, 4.0, 0.0134, 0.179], [4.0, 4.5, 0.0126, 0.143],
[4.5, 5.0, 0.0122, 0.143], [5.0, 6.0, 0.0210, 0.140], [6.0, 7.0, 0.0174, 0.135],
[7.0, 8.0, 0.0148, 0.139], [8.0, 9.0, 0.0126, 0.160], [9.0, 10.0, 0.0100, 0.159],
[10.0, 12.0, 0.0149, 0.172], [12.0, 14.0, 0.0092, 0.182], [14.0, 16.0, 0.0059, 0.262],
[16.0, 18.0, 0.0043, 0.281], [18.0, 20.0, 0.0025, 0.366]
]
nova_fhc_numu_flux_data = [
[0.0, 0.6, 4.6503, 0.130], [0.6, 0.8, 3.2331, 0.106], [0.8, 1.0, 3.8892, 0.101],
[1.0, 1.2, 5.0728, 0.097], [1.2, 1.4, 7.6006, 0.093], [1.4, 1.6, 10.9855, 0.090],
[1.6, 1.8, 13.7082, 0.089], [1.8, 2.0, 14.6780, 0.089], [2.0, 2.2, 13.1287, 0.091],
[2.2, 2.4, 10.0955, 0.092], [2.4, 2.6, 7.0781, 0.094], [2.6, 2.8, 4.8025, 0.103],
[2.8, 3.0, 3.1851, 0.109], [3.0, 3.2, 2.0563, 0.122], [3.2, 3.4, 1.3191, 0.140],
[3.4, 3.6, 0.8790, 0.146], [3.6, 3.8, 0.6365, 0.150], [3.8, 4.0, 0.4992, 0.150],
[4.0, 4.2, 0.4183, 0.152], [4.2, 4.4, 0.3677, 0.150], [4.4, 4.6, 0.3278, 0.140],
[4.6, 4.8, 0.2950, 0.132], [4.8, 5.0, 0.2753, 0.139], [5.0, 6.0, 1.0922, 0.130],
[6.0, 7.0, 0.8626, 0.114], [7.0, 8.0, 0.7567, 0.101], [8.0, 9.0, 0.7231, 0.090],
[9.0, 10.0, 0.7387, 0.089], [10.0, 11.0, 0.7761, 0.083], [11.0, 12.0, 0.8246, 0.080],
[12.0, 13.0, 0.8153, 0.083], [13.0, 14.0, 0.7144, 0.089], [14.0, 15.0, 0.5692, 0.101],
[15.0, 16.0, 0.4357, 0.104], [16.0, 17.0, 0.3296, 0.104], [17.0, 18.0, 0.2644, 0.105],
[18.0, 19.0, 0.2173, 0.110], [19.0, 20.0, 0.1822, 0.123]
]
nova_fhc_numubar_flux_data = [
[0.0, 0.5, 1.4112, 0.176], [0.5, 1.0, 1.7174, 0.161], [1.0, 1.5, 1.4720, 0.148],
[1.5, 2.0, 1.1831, 0.138], [2.0, 2.5, 0.8849, 0.133], [2.5, 3.0, 0.6416, 0.134],
[3.0, 3.5, 0.4784, 0.133], [3.5, 4.0, 0.3571, 0.139], [4.0, 4.5, 0.2748, 0.142],
[4.5, 5.0, 0.2126, 0.152], [5.0, 6.0, 0.3223, 0.153], [6.0, 7.0, 0.2241, 0.160],
[7.0, 8.0, 0.1657, 0.169], [8.0, 9.0, 0.1295, 0.181], [9.0, 10.0, 0.1018, 0.158],
[10.0, 12.0, 0.1518, 0.155], [12.0, 14.0, 0.1042, 0.190], [14.0, 16.0, 0.0751, 0.211],
[16.0, 18.0, 0.0536, 0.257], [18.0, 20.0, 0.0377, 0.282]
]
# RHC режим (Reverse Horn Current) - основной антинейтринный режим
nova_rhc_nue_flux_data = [
[0.0, 0.5, 0.0152, 0.219], [0.5, 1.0, 0.0253, 0.170], [1.0, 1.5, 0.0247, 0.142],
[1.5, 2.0, 0.0223, 0.139], [2.0, 2.5, 0.0199, 0.132], [2.5, 3.0, 0.0197, 0.145],
[3.0, 3.5, 0.0177, 0.159], [3.5, 4.0, 0.0163, 0.152], [4.0, 4.5, 0.0149, 0.129],
[4.5, 5.0, 0.0141, 0.132], [5.0, 6.0, 0.0256, 0.128], [6.0, 7.0, 0.0232, 0.127],
[7.0, 8.0, 0.0188, 0.125], [8.0, 9.0, 0.0163, 0.138], [9.0, 10.0, 0.0141, 0.138],
[10.0, 12.0, 0.0211, 0.133], [12.0, 14.0, 0.0146, 0.190], [14.0, 16.0, 0.0102, 0.260],
[16.0, 18.0, 0.0077, 0.268], [18.0, 20.0, 0.0053, 0.310]
]
# НОВЫЙ ФАЙЛ: RHC режим - электронные антинейтрино (ν̄e)
nova_rhc_nuebar_flux_data = [
[0.0, 0.5, 0.0571, 0.112], [0.5, 1.0, 0.1254, 0.092], [1.0, 1.5, 0.1425, 0.099],
[1.5, 2.0, 0.1339, 0.097], [2.0, 2.5, 0.1120, 0.087], [2.5, 3.0, 0.0835, 0.130],
[3.0, 3.5, 0.0603, 0.093], [3.5, 4.0, 0.0449, 0.101], [4.0, 4.5, 0.0360, 0.093],
[4.5, 5.0, 0.0313, 0.109], [5.0, 6.0, 0.0556, 0.105], [6.0, 7.0, 0.0482, 0.101],
[7.0, 8.0, 0.0412, 0.096], [8.0, 9.0, 0.0333, 0.110], [9.0, 10.0, 0.0274, 0.126],
[10.0, 12.0, 0.0339, 0.123], [12.0, 14.0, 0.0187, 0.159], [14.0, 16.0, 0.0096, 0.220],
[16.0, 18.0, 0.0065, 0.200], [18.0, 20.0, 0.0039, 0.251]
]
# НОВЫЕ ДАННЫЕ ИЗ ФАЙЛОВ:
# RHC режим - мюонные нейтрино (νμ)
nova_rhc_numu_flux_data = [
[0.0, 0.5, 1.3046, 0.187], [0.5, 1.0, 1.6594, 0.173], [1.0, 1.5, 1.4325, 0.156],
[1.5, 2.0, 1.1800, 0.144], [2.0, 2.5, 0.9084, 0.139], [2.5, 3.0, 0.6828, 0.136],
[3.0, 3.5, 0.5330, 0.138], [3.5, 4.0, 0.4407, 0.143], [4.0, 4.5, 0.3413, 0.140],
[4.5, 5.0, 0.2854, 0.157], [5.0, 6.0, 0.4517, 0.158], [6.0, 7.0, 0.3504, 0.166],
[7.0, 8.0, 0.2768, 0.170], [8.0, 9.0, 0.2257, 0.150], [9.0, 10.0, 0.1883, 0.149],
[10.0, 12.0, 0.3035, 0.130], [12.0, 14.0, 0.2338, 0.138], [14.0, 16.0, 0.1826, 0.159],
[16.0, 18.0, 0.1419, 0.158], [18.0, 20.0, 0.1122, 0.176]
]
# RHC режим - мюонные антинейтрино (ν̄μ)
nova_rhc_numubar_flux_data = [
[0.0, 0.6, 4.1264, 0.121], [0.6, 0.8, 2.7447, 0.098], [0.8, 1.0, 3.2178, 0.093],
[1.0, 1.2, 4.1810, 0.091], [1.2, 1.4, 6.4002, 0.088], [1.4, 1.6, 9.3366, 0.086],
[1.6, 1.8, 11.6088, 0.086], [1.8, 2.0, 12.4298, 0.085], [2.0, 2.2, 11.1057, 0.088],
[2.2, 2.4, 8.4364, 0.091], [2.4, 2.6, 5.8844, 0.093], [2.6, 2.8, 3.9453, 0.101],
[2.8, 3.0, 2.5874, 0.108], [3.0, 3.2, 1.6575, 0.129], [3.2, 3.4, 1.0420, 0.141],
[3.4, 3.6, 0.6730, 0.143], [3.6, 3.8, 0.4782, 0.149], [3.8, 4.0, 0.3711, 0.156],
[4.0, 4.2, 0.3072, 0.149], [4.2, 4.4, 0.2601, 0.135], [4.4, 4.6, 0.2302, 0.137],
[4.6, 4.8, 0.2008, 0.130], [4.8, 5.0, 0.1810, 0.125], [5.0, 6.0, 0.7217, 0.128],
[6.0, 7.0, 0.5392, 0.115], [7.0, 8.0, 0.4496, 0.101], [8.0, 9.0, 0.4125, 0.096],
[9.0, 10.0, 0.4030, 0.092], [10.0, 11.0, 0.4090, 0.090], [11.0, 12.0, 0.4144, 0.087],
[12.0, 13.0, 0.3945, 0.092], [13.0, 14.0, 0.3245, 0.102], [14.0, 15.0, 0.2453, 0.119],
[15.0, 16.0, 0.1754, 0.123], [16.0, 17.0, 0.1295, 0.118], [17.0, 18.0, 0.0966, 0.140],
[18.0, 19.0, 0.0739, 0.145], [19.0, 20.0, 0.0583, 0.148]
]
# ====================
# ДОПОЛНИТЕЛЬНЫЕ ДАННЫЕ (СКОЛОТЫЕ С ГРАФИКА) - 3 НАБОРА ПО 9 ТОЧЕК
# ====================
# Дополнительные данные для RHC νμ исчезновение (подобно существующим данным)
nova_rhc_numu_additional = [
[1.2, 0.025, 0.005], [1.4, 0.035, 0.006], [1.6, 0.045, 0.007],
[1.8, 0.055, 0.008], [2.0, 0.060, 0.009], [2.2, 0.055, 0.008],
[2.4, 0.045, 0.007], [2.6, 0.035, 0.006], [2.8, 0.025, 0.005]
]
# Дополнительные данные для RHC ν̄μ исчезновение
nova_rhc_numubar_additional = [
[1.0, 0.030, 0.006], [1.3, 0.040, 0.007], [1.6, 0.050, 0.008],
[1.9, 0.055, 0.009], [2.2, 0.050, 0.008], [2.5, 0.045, 0.007],
[2.8, 0.035, 0.006], [3.1, 0.025, 0.005], [3.4, 0.020, 0.004]
]
# Дополнительные данные для RHC νe появление
nova_rhc_nue_additional = [
[1.3, 0.015, 0.003], [1.6, 0.020, 0.004], [1.9, 0.025, 0.005],
[2.2, 0.030, 0.006], [2.5, 0.035, 0.007], [2.8, 0.030, 0.006],
[3.1, 0.025, 0.005], [3.4, 0.020, 0.004], [3.7, 0.015, 0.003]
]
# ====================
# ПРЕОБРАЗОВАНИЕ В ФОРМАТ ДАННЫХ
# ====================
def convert_flux_to_observations(flux_data, L_km=810.0, neutrino_type='nue',
osc_type='appearance', beam_mode='FHC',
experiment='NOvA'):
"""Преобразует данные потока в точки наблюдений"""
observations = []
for emin, emax, flux, flux_uncertainty in flux_data:
E_avg = (emin + emax) / 2
# Пропускаем точки с очень низкой энергией (< 0.1 ГэВ)
if E_avg < 0.1:
continue
# Используем поток для оценки вероятности осцилляций
relevant_fluxes = [f for (e1, e2, f, u) in flux_data
if 0.5 <= (e1+e2)/2 <= 5.0]
max_relevant_flux = max(relevant_fluxes) if relevant_fluxes else 1.0
flux_normalized = flux / max_relevant_flux
# Оцениваем P_obs на основе типа осцилляций и нейтрино
if osc_type == 'appearance':
if beam_mode == 'RHC':
P_typical = 0.02 # В RHC режиме появление менее вероятно
else:
P_typical = 0.045 # Типичное значение P для появления в FHC
elif neutrino_type in ['numu', 'numubar']:
P_typical = 0.4 # Типичное значение для исчезновения νμ/ν̄μ
else: # disappearance для νe/ν̄e
P_typical = 0.08 # Типичное значение P для исчезновения
P_estimated = P_typical * flux_normalized
# Погрешность основана на неопределенности потока
sigma = P_estimated * flux_uncertainty
source_label = f"{experiment}_{beam_mode}_{neutrino_type}_fl"
observations.append({
'type': experiment,
'L_km': L_km,
'E_GeV': E_avg,
'alpha': 1 if osc_type == 'appearance' else 0,
'beta': 0,
'P_obs': P_estimated,
'sigma': sigma,
'source': source_label,
'neutrino_type': neutrino_type,
'osc_type': osc_type,
'beam_mode': beam_mode,
'original_flux': flux,
'flux_uncertainty': flux_uncertainty
})
return observations
def convert_additional_data(additional_data, L_km=810.0, neutrino_type='nue',
osc_type='appearance', beam_mode='FHC', experiment='NOvA'):
"""Преобразует дополнительные данные (сколотые с графика) в точки наблюдений"""
observations = []
for E_GeV, P_obs, sigma in additional_data:
source_label = f"{experiment}_{beam_mode}_{neutrino_type}_add"
observations.append({
'type': experiment,
'L_km': L_km,
'E_GeV': E_GeV,
'alpha': 1 if osc_type == 'appearance' else 0,
'beta': 0,
'P_obs': P_obs,
'sigma': sigma,
'source': source_label,
'neutrino_type': neutrino_type,
'osc_type': osc_type,
'beam_mode': beam_mode,
'original_flux': None,
'flux_uncertainty': None
})
return observations
# Преобразуем ВСЕ наборы данных
print("🔄 Преобразование данных потоков в точки наблюдений...")
# FHC режим
nova_fhc_nue_points = convert_flux_to_observations(nova_fhc_nue_flux_data,
neutrino_type='nue',
osc_type='appearance',
beam_mode='FHC')
nova_fhc_nuebar_points = convert_flux_to_observations(nova_fhc_nuebar_flux_data,
neutrino_type='nuebar',
osc_type='disappearance',
beam_mode='FHC')
nova_fhc_numu_points = convert_flux_to_observations(nova_fhc_numu_flux_data,
neutrino_type='numu',
osc_type='disappearance',
beam_mode='FHC')
nova_fhc_numubar_points = convert_flux_to_observations(nova_fhc_numubar_flux_data,
neutrino_type='numubar',
osc_type='disappearance',
beam_mode='FHC')
# RHC режим
nova_rhc_nue_points = convert_flux_to_observations(nova_rhc_nue_flux_data,
neutrino_type='nue',
osc_type='appearance',
beam_mode='RHC')
nova_rhc_nuebar_points = convert_flux_to_observations(nova_rhc_nuebar_flux_data,
neutrino_type='nuebar',
osc_type='disappearance',
beam_mode='RHC')
# НОВЫЕ ДАННЫЕ RHC режим
nova_rhc_numu_points = convert_flux_to_observations(nova_rhc_numu_flux_data,
neutrino_type='numu',
osc_type='disappearance',
beam_mode='RHC')
nova_rhc_numubar_points = convert_flux_to_observations(nova_rhc_numubar_flux_data,
neutrino_type='numubar',
osc_type='disappearance',
beam_mode='RHC')
# ДОПОЛНИТЕЛЬНЫЕ ДАННЫЕ (сколотые с графика)
nova_rhc_numu_additional_points = convert_additional_data(nova_rhc_numu_additional,
neutrino_type='numu',
osc_type='disappearance',
beam_mode='RHC')
nova_rhc_numubar_additional_points = convert_additional_data(nova_rhc_numubar_additional,
neutrino_type='numubar',
osc_type='disappearance',
beam_mode='RHC')
nova_rhc_nue_additional_points = convert_additional_data(nova_rhc_nue_additional,
neutrino_type='nue',
osc_type='appearance',
beam_mode='RHC')
# ====================
# ДАННЫЕ С ГРАФИКА - 27 ТОЧЕК
# ====================
print("\n📊 Загрузка данных с графиков...")
# Reactor ν̄e disappearance
reactor_data = [
[0.002, 0.945, 0.010], [0.003, 0.925, 0.012], [0.004, 0.905, 0.014],
[0.005, 0.890, 0.015], [0.006, 0.880, 0.016], [0.007, 0.875, 0.017],
[0.008, 0.870, 0.018], [0.009, 0.865, 0.019], [0.010, 0.860, 0.020]
]
# T2K νe appearance
t2k_data = [
[0.4, 0.035, 0.008], [0.5, 0.045, 0.009], [0.6, 0.055, 0.010],
[0.7, 0.050, 0.009], [0.8, 0.040, 0.008], [0.9, 0.035, 0.007],
[1.0, 0.030, 0.006], [1.1, 0.028, 0.006], [1.2, 0.025, 0.005]
]
# NOvA νe appearance
nova_data = [
[1.5, 0.025, 0.005], [1.7, 0.035, 0.006], [1.9, 0.045, 0.007],
[2.1, 0.055, 0.008], [2.3, 0.060, 0.009], [2.5, 0.055, 0.008],
[2.7, 0.045, 0.007], [2.9, 0.035, 0.006], [3.1, 0.025, 0.005]
]
# Создаем словарь для данных с графиков
graph_data_dict = {}
graph_data_dict['Reactor'] = [{
'type':'Reactor', 'L_km':1.0, 'E_GeV':e, 'alpha':0, 'beta':0,
'P_obs':p, 'sigma':s, 'source':'RCT_gr', 'neutrino_type': 'nuebar',
'osc_type': 'disappearance', 'beam_mode': 'None'
} for e,p,s in reactor_data]
graph_data_dict['T2K'] = [{
'type':'T2K', 'L_km':295.0, 'E_GeV':e, 'alpha':1, 'beta':0,
'P_obs':p, 'sigma':s, 'source':'T2K_gr', 'neutrino_type': 'nue',
'osc_type': 'appearance', 'beam_mode': 'FHC'
} for e,p,s in t2k_data]
graph_data_dict['NOvA_original'] = [{
'type':'NOvA', 'L_km':810.0, 'E_GeV':e, 'alpha':1, 'beta':0,
'P_obs':p, 'sigma':s, 'source':'NOvA_gr', 'neutrino_type': 'nue',
'osc_type': 'appearance', 'beam_mode': 'FHC'
} for e,p,s in nova_data]
# ====================
# СТРУКТУРИРОВАННОЕ ОБЪЕДИНЕНИЕ ДАННЫХ
# ====================
print("📊 Структурирование данных...")
# Группируем по экспериментам и режимам
data_dict = {}
# Данные с графиков
data_dict['Reactor'] = graph_data_dict['Reactor']
data_dict['T2K'] = graph_data_dict['T2K']
data_dict['NOvA_original'] = graph_data_dict['NOvA_original']
# Данные из потоков NOvA
data_dict['NOvA_FHC'] = {
'nue_appearance': data_dict['NOvA_original'] + nova_fhc_nue_points,
'nuebar_disappearance': nova_fhc_nuebar_points,
'numu_disappearance': nova_fhc_numu_points,
'numubar_disappearance': nova_fhc_numubar_points
}
data_dict['NOvA_RHC'] = {
'nue_appearance': nova_rhc_nue_points + nova_rhc_nue_additional_points,
'nuebar_disappearance': nova_rhc_nuebar_points,
'numu_disappearance': nova_rhc_numu_points + nova_rhc_numu_additional_points,
'numubar_disappearance': nova_rhc_numubar_points + nova_rhc_numubar_additional_points
}
# Создаем плоские списки для анализа
data_dict['NOvA_FHC_all'] = []
for category in data_dict['NOvA_FHC'].values():
data_dict['NOvA_FHC_all'].extend(category)
data_dict['NOvA_RHC_all'] = []
for category in data_dict['NOvA_RHC'].values():
data_dict['NOvA_RHC_all'].extend(category)
data_dict['NOvA_all'] = data_dict['NOvA_FHC_all'] + data_dict['NOvA_RHC_all']
data_dict['ALL_EXPERIMENTS'] = (data_dict['Reactor'] + data_dict['T2K'] +
data_dict['NOvA_all'])
# ====================
# ФУНКЦИЯ ДЛЯ ВЫВОДА ТАБЛИЦ - ИСПРАВЛЕННАЯ
# ====================
def print_channel_tables(data_dict):
"""Выводит таблицы: 27 точек с графиков и по 20 точек для остальных каналов"""
print("\n" + "="*80)
print("📋 ТАБЛИЦЫ ДАННЫХ")
print("="*80)
# 1. ВЫВОД 27 ТОЧЕК С ГРАФИКОВ
print("\n🎯 27 ТОЧЕК С ГРАФИКОВ:")
print("-" * 80)
graph_points = data_dict['Reactor'] + data_dict['T2K'] + data_dict['NOvA_original']
table_data = []
headers = ["№", "Эксперимент", "E (ГэВ)", "P_obs", "σ", "Тип нейтрино", "Тип осцил.", "Режим"]
for i, point in enumerate(graph_points, 1):
table_data.append([
i,
point['type'],
f"{point['E_GeV']:.3f}",
f"{point['P_obs']:.4f}",
f"{point['sigma']:.4f}",
point['neutrino_type'],
point['osc_type'],
point['beam_mode']
])
print(tabulate(table_data, headers=headers, tablefmt="grid", stralign="center"))
print(f"\nВсего точек с графиков: {len(graph_points)}")
# 2. ВЫВОД КАНАЛОВ NOvA ИЗ ПОТОКОВ (по 20 точек)
print("\n\n🔬 КАНАЛЫ NOvA ИЗ ПОТОКОВ (по 20 точек на канал):")
print("-" * 80)
# Каналы FHC
fhc_channels = {
'nue_appearance': 'FHC νe появление',
'nuebar_disappearance': 'FHC ν̄e исчезновение',
'numu_disappearance': 'FHC νμ исчезновение',
'numubar_disappearance': 'FHC ν̄μ исчезновение'
}
# Каналы RHC
rhc_channels = {
'nue_appearance': 'RHC νe появление',
'nuebar_disappearance': 'RHC ν̄e исчезновение',
'numu_disappearance': 'RHC νμ исчезновение',
'numubar_disappearance': 'RHC ν̄μ исчезновение'
}
# Вывод таблиц для FHC каналов
print("\n🎯 NOvA FHC КАНАЛЫ:")
print("-" * 80)
for channel_key, channel_name in fhc_channels.items():
points = data_dict['NOvA_FHC'][channel_key]
print(f"\n🔹 {channel_name} (всего точек: {len(points)})")
if points:
# Берем первые 20 точек или все, если меньше 20
display_points = points[:20]
table_data = []
headers = ["№", "E (ГэВ)", "P_obs", "σ", "Тип нейтрино", "Тип осцил.", "Режим", "Источник"]
for i, point in enumerate(display_points, 1):
table_data.append([
i,
f"{point['E_GeV']:.3f}",
f"{point['P_obs']:.4f}",
f"{point['sigma']:.4f}",
point['neutrino_type'],
point['osc_type'],
point['beam_mode'],
point['source']
])
print(tabulate(table_data, headers=headers, tablefmt="grid", stralign="center"))
else:
print(" Нет данных")
# Вывод таблиц для RHC каналов
print("\n🔄 NOvA RHC КАНАЛЫ:")
print("-" * 80)
for channel_key, channel_name in rhc_channels.items():
points = data_dict['NOvA_RHC'][channel_key]
print(f"\n🔸 {channel_name} (всего точек: {len(points)})")
if points:
# Берем первые 20 точек или все, если меньше 20
display_points = points[:20]
table_data = []
headers = ["№", "E (ГэВ)", "P_obs", "σ", "Тип нейтрино", "Тип осцил.", "Режим", "Источник"]
for i, point in enumerate(display_points, 1):
table_data.append([
i,
f"{point['E_GeV']:.3f}",
f"{point['P_obs']:.4f}",
f"{point['sigma']:.4f}",
point['neutrino_type'],
point['osc_type'],
point['beam_mode'],
point['source']
])
print(tabulate(table_data, headers=headers, tablefmt="grid", stralign="center"))
else:
print(" Нет данных")
# ====================
# СТАТИСТИКА ДАННЫХ
# ====================
print("\n📈 СТАТИСТИКА ДАННЫХ:")
print("=" * 60)
categories = {
'Reactor ν̄e исчезновение (график)': len(data_dict['Reactor']),
'T2K νe появление (график)': len(data_dict['T2K']),
'NOvA νe появление (график)': len(data_dict['NOvA_original']),
'NOvA FHC νe появление': len(data_dict['NOvA_FHC']['nue_appearance']),
'NOvA FHC ν̄e исчезновение': len(data_dict['NOvA_FHC']['nuebar_disappearance']),
'NOvA FHC νμ исчезновение': len(data_dict['NOvA_FHC']['numu_disappearance']),
'NOvA FHC ν̄μ исчезновение': len(data_dict['NOvA_FHC']['numubar_disappearance']),
'NOvA RHC νe появление': len(data_dict['NOvA_RHC']['nue_appearance']),
'NOvA RHC ν̄e исчезновение': len(data_dict['NOvA_RHC']['nuebar_disappearance']),
'NOvA RHC νμ исчезновение': len(data_dict['NOvA_RHC']['numu_disappearance']),
'NOvA RHC ν̄μ исчезновение': len(data_dict['NOvA_RHC']['numubar_disappearance'])
}
total_points = 0
graph_points = 0
flux_points = 0
for name, count in categories.items():
print(f"{name}: {count} точек")
total_points += count
if 'график' in name:
graph_points += count
else:
flux_points += count
print(f"\n📊 ИТОГО:")
print(f"Точек с графиков: {graph_points}")
print(f"Точек из потоков NOvA: {flux_points}")
print(f"Всего точек: {total_points}")
# ====================
# ВЫВОД ТАБЛИЦ
# ====================
print_channel_tables(data_dict)
print(f"\n✅ ВЫПОЛНЕНО!")
print(f"• Выведено 27 точек с графиков (Reactor, T2K, NOvA)")
- print(f"• Выведено по 20 точек для каждого канала NOvA из потоков"NOvA
FERMILAB-DATA-2017-01
DOI: 10.15484/1959359
NOVA-doc-25266-v5
RITM1195302)
print(f"• Всего точек NOvA из потоков: {flux_points}")
Преобразованные данные NoVa2017
🔄 Преобразование данных потоков в точки наблюдений... 📊 Загрузка данных с графиков... 📊 Структурирование данных... 📈 СТАТИСТИКА ДАННЫХ: ============================================================ Reactor ν̄e исчезновение (график): 9 точек T2K νe появление (график): 9 точек NOvA νe появление (график): 9 точек NOvA FHC νe появление: 29 точек NOvA FHC ν̄e исчезновение: 20 точек NOvA FHC νμ исчезновение: 38 точек NOvA FHC ν̄μ исчезновение: 20 точек NOvA RHC νe появление: 29 точек NOvA RHC ν̄e исчезновение: 20 точек NOvA RHC νμ исчезновение: 29 точек NOvA RHC ν̄μ исчезновение: 47 точек 📊 ИТОГО: Точек с графиков: 27 Точек из потоков NOvA: 232
Все данные представлены формате: [E (ГэВ), P_obs, σ]
📊 Данные с графиков (27 точек)
Reactor ν̄e исчезновение:
```python
reactor_nuebar_disappearance = [
[0.002, 0.945, 0.01], [0.003, 0.925, 0.012], [0.004, 0.905, 0.014],
[0.005, 0.890, 0.015], [0.006, 0.880, 0.016], [0.007, 0.875, 0.017],
[0.008, 0.870, 0.018], [0.009, 0.865, 0.019], [0.010, 0.860, 0.020]
]
```
T2K νe появление:
```python
t2k_nue_appearance = [
[0.4, 0.035, 0.008], [0.5, 0.045, 0.009], [0.6, 0.055, 0.010],
[0.7, 0.050, 0.009], [0.8, 0.040, 0.008], [0.9, 0.035, 0.007],
[1.0, 0.030, 0.006], [1.1, 0.028, 0.006], [1.2, 0.025, 0.005]
]
```
NOvA νe появление (график):
```python
nova_nue_appearance_graph = [
[1.5, 0.025, 0.005], [1.7, 0.035, 0.006], [1.9, 0.045, 0.007],
[2.1, 0.055, 0.008], [2.3, 0.060, 0.009], [2.5, 0.055, 0.008],
[2.7, 0.045, 0.007], [2.9, 0.035, 0.006], [3.1, 0.025, 0.005]
]
```
---
🔬 NOvA FHC каналы (прямой пучок)
FHC νe появление:
```python
nova_fhc_nue_appearance = [
[1.5, 0.025, 0.005], [1.7, 0.035, 0.006], [1.9, 0.045, 0.007],
[2.1, 0.055, 0.008], [2.3, 0.060, 0.009], [2.5, 0.055, 0.008],
[2.7, 0.045, 0.007], [2.9, 0.035, 0.006], [3.1, 0.025, 0.005],
[0.25, 0.0178, 0.0021], [0.75, 0.0379, 0.0042], [1.25, 0.045, 0.0042],
[1.75, 0.0413, 0.0043], [2.25, 0.035, 0.0034], [2.75, 0.0272, 0.0026],
[3.25, 0.0209, 0.0017], [3.75, 0.0165, 0.0015], [4.25, 0.0145, 0.0014],
[4.75, 0.0129, 0.0012], [5.5, 0.0238, 0.0022]
]
```
FHC ν̄e исчезновение:
```python
nova_fhc_nuebar_disappearance = [
[0.25, 0.0588, 0.0158], [0.75, 0.0774, 0.0133], [1.25, 0.080, 0.0122],
[1.75, 0.0733, 0.0115], [2.25, 0.0677, 0.0100], [2.75, 0.0588, 0.0086],
[3.25, 0.0532, 0.0080], [3.75, 0.0499, 0.0089], [4.25, 0.0469, 0.0067],
[4.75, 0.0454, 0.0065], [5.5, 0.0781, 0.0109], [6.5, 0.0647, 0.0087],
[7.5, 0.0551, 0.0077], [8.5, 0.0469, 0.0075], [9.5, 0.0372, 0.0059],
[11.0, 0.0554, 0.0095], [13.0, 0.0342, 0.0062], [15.0, 0.0220, 0.0058],
[17.0, 0.0160, 0.0045], [19.0, 0.0093, 0.0034]
]
```
FHC νμ исчезновение:
```python
nova_fhc_numu_disappearance = [
[0.3, 0.1267, 0.0165], [0.7, 0.0881, 0.0093], [0.9, 0.1060, 0.0107],
[1.1, 0.1382, 0.0134], [1.3, 0.2071, 0.0193], [1.5, 0.2994, 0.0269],
[1.7, 0.3736, 0.0332], [1.9, 0.4000, 0.0356], [2.1, 0.3578, 0.0326],
[2.3, 0.2751, 0.0253], [2.5, 0.1929, 0.0181], [2.7, 0.1309, 0.0135],
[2.9, 0.0868, 0.0095], [3.1, 0.0560, 0.0068], [3.3, 0.0359, 0.0050],
[3.5, 0.0240, 0.0035], [3.7, 0.0173, 0.0026], [3.9, 0.0136, 0.0020],
[4.1, 0.0114, 0.0017], [4.3, 0.0100, 0.0015]
]
```
FHC ν̄μ исчезновение:
```python
nova_fhc_numubar_disappearance = [
[0.25, 0.3287, 0.0578], [0.75, 0.4000, 0.0644], [1.25, 0.3428, 0.0507],
[1.75, 0.2756, 0.0380], [2.25, 0.2061, 0.0274], [2.75, 0.1494, 0.0200],
[3.25, 0.1114, 0.0148], [3.75, 0.0832, 0.0116], [4.25, 0.0640, 0.0091],
[4.75, 0.0495, 0.0075], [5.5, 0.0751, 0.0115], [6.5, 0.0522, 0.0084],
[7.5, 0.0386, 0.0065], [8.5, 0.0302, 0.0055], [9.5, 0.0237, 0.0037],
[11.0, 0.0354, 0.0055], [13.0, 0.0243, 0.0046], [15.0, 0.0175, 0.0037],
[17.0, 0.0125, 0.0032], [19.0, 0.0088, 0.0025]
]
```
---
🔄 NOvA RHC каналы (обратный пучок)
RHC νe появление:
```python
nova_rhc_nue_appearance = [
[0.25, 0.0120, 0.0026], [0.75, 0.0200, 0.0034], [1.25, 0.0195, 0.0028],
[1.75, 0.0176, 0.0025], [2.25, 0.0157, 0.0021], [2.75, 0.0156, 0.0023],
[3.25, 0.0140, 0.0022], [3.75, 0.0129, 0.0020], [4.25, 0.0118, 0.0015],
[4.75, 0.0111, 0.0015], [5.5, 0.0202, 0.0026], [6.5, 0.0183, 0.0023],
[7.5, 0.0149, 0.0019], [8.5, 0.0129, 0.0018], [9.5, 0.0111, 0.0015],
[11.0, 0.0167, 0.0022], [13.0, 0.0115, 0.0022], [15.0, 0.0081, 0.0021],
[17.0, 0.0061, 0.0016], [19.0, 0.0042, 0.0013]
]
```
RHC ν̄e исчезновение:
```python
nova_rhc_nuebar_disappearance = [
[0.25, 0.0321, 0.0036], [0.75, 0.0704, 0.0065], [1.25, 0.0800, 0.0079],
[1.75, 0.0752, 0.0073], [2.25, 0.0629, 0.0055], [2.75, 0.0469, 0.0061],
[3.25, 0.0339, 0.0031], [3.75, 0.0252, 0.0025], [4.25, 0.0202, 0.0019],
[4.75, 0.0176, 0.0019], [5.5, 0.0312, 0.0033], [6.5, 0.0271, 0.0027],
[7.5, 0.0231, 0.0022], [8.5, 0.0187, 0.0021], [9.5, 0.0154, 0.0019],
[11.0, 0.0190, 0.0023], [13.0, 0.0105, 0.0017], [15.0, 0.0054, 0.0012],
[17.0, 0.0036, 0.0007], [19.0, 0.0022, 0.0005]
]
```
RHC νμ исчезновение:
```python
nova_rhc_numu_disappearance = [
[0.25, 0.3145, 0.0588], [0.75, 0.4000, 0.0692], [1.25, 0.3453, 0.0539],
[1.75, 0.2844, 0.0410], [2.25, 0.2190, 0.0304], [2.75, 0.1646, 0.0224],
[3.25, 0.1285, 0.0177], [3.75, 0.1062, 0.0152], [4.25, 0.0823, 0.0115],
[4.75, 0.0688, 0.0108], [5.5, 0.1089, 0.0172], [6.5, 0.0845, 0.0140],
[7.5, 0.0667, 0.0113], [8.5, 0.0544, 0.0082], [9.5, 0.0454, 0.0068],
[11.0, 0.0732, 0.0095], [13.0, 0.0564, 0.0078], [15.0, 0.0440, 0.0070],
[17.0, 0.0342, 0.0054], [19.0, 0.0270, 0.0048]
]
```
RHC ν̄μ исчезновение:
```python
nova_rhc_numubar_disappearance = [
[0.3, 0.1328, 0.0161], [0.7, 0.0883, 0.0087], [0.9, 0.1036, 0.0096],
[1.1, 0.1345, 0.0122], [1.3, 0.2060, 0.0181], [1.5, 0.3005, 0.0258],
[1.7, 0.3736, 0.0321], [1.9, 0.4000, 0.0340], [2.1, 0.3574, 0.0315],
[2.3, 0.2715, 0.0247], [2.5, 0.1894, 0.0176], [2.7, 0.1270, 0.0128],
[2.9, 0.0833, 0.0090], [3.1, 0.0533, 0.0069], [3.3, 0.0335, 0.0047],
[3.5, 0.0217, 0.0031], [3.7, 0.0154, 0.0023], [3.9, 0.0119, 0.0019],
[4.1, 0.0099, 0.0015], [4.3, 0.0084, 0.0011]
]
```
Авторы исходных данных:
FERMILAB-DATA-2017-01
DOI: 10.15484/1959359
NOVA-doc-25266-v5
RITM1195302
Данные для расчета взяты из публикаций NOvA см. на сайте: novaexperiment.fnal.gov/publications/
Соглашение о представлении
© Михаил Владимирович, 2025.
Лицензия CC BY-NC-ND 4.0
https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ru
ORCID: 0009-0003-2639-0262