Найти в Дзене
ТФПКП адденда

NOVA2017-GEN- генератор энергий нейтрино

Оглавление

Генератор исходных данных на основе потока NOvA

Public Document 8-v1

Flux Histograms for 2017 Analysis.

Генератор сформирован выйбкодом в LLM-дипсик.

-2

Код генератора данных из потока NoVa 2017

import numpy as np

import matplotlib.pyplot as plt

from tabulate import tabulate

# ====================

  • # ВСЕ ДАННЫЕ ИЗ ФАЙЛОВ NOvA FERMILAB-DATA-2017-01 DOI: 10.15484/1959359

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}")

-3

-4

Преобразованные данные 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