Main Output
The notebook must produce:
- \(^8\mathrm{B}\) neutrino spectrum;
- SK-like recoil spectrum \(dN/dT_e\);
- event total above a chosen threshold;
- pseudo-data in the same bins;
- \(\hat\alpha_B\) and a one-dimensional interval from \(q(\alpha_B)\).
SK-like event spectrum from solar \(^8\mathrm{B}\) neutrinos
JINR
2026-06-01
Build the first quantitative model for an SK-like solar-neutrino measurement:
\[ {}^8\mathrm{B}\ \nu_e \to \nu e\ \mathrm{scattering} \to e^-_{\rm recoil}. \]
Today we compute:
Use one free parameter:
\[ \Phi_{^8\mathrm{B}} \to \alpha_B\,\Phi_{^8\mathrm{B}}. \]
The first-session fit is
\[ \alpha_B = 1 \quad\hbox{for the reference input flux.} \]
Oscillations are not fitted today:
\[ P_{ee}=1. \]
The notebook must produce:
From the web page:
import numpy as np
import pandas as pd
BASE = "https://neutrinohit.github.io/neutrinophysics/solar-neutrino-masterclass"
fluxes = pd.read_csv(f"{BASE}/data/masterclass1/solar_fluxes.csv")
spectra = pd.read_csv(f"{BASE}/data/masterclass1/energy_spectra.csv")
xs = pd.read_csv(f"{BASE}/data/masterclass1/nu_electron_recoil_cross_sections.csv")For a local notebook, replace BASE by the local project directory.
Here
\[ \Phi_{^8\mathrm{B}}=\int dE_\nu\,\frac{d\Phi_{^8\mathrm{B}}}{dE_\nu}, \qquad \frac{d\Phi_{^8\mathrm{B}}}{dE_\nu} = \Phi_{^8\mathrm{B}} f_{^8\mathrm{B}}(E_\nu). \]
The table column spectrum_per_MeV is \(f_{^8\mathrm{B}}(E_\nu)\).
Expected check:
For water,
\[ N_e = 10 N_A\frac{M_{\rm water}}{18~\mathrm{g}}. \]
For an exposure written as \(M_{\rm water}T_{\rm live}\),
\[ N_eT_{\rm live} = 10N_A\frac{M_{\rm water}}{18~\mathrm{g}}T_{\rm live}. \]
The CSV units are practical units: flux in \(\mathrm{cm^{-2}s^{-1}}\), cross section in \(\mathrm{cm^2\,MeV^{-1}}\).
Use in the example:
Expected check:
For recoil-energy bin \(j\),
\[ \mu_j(\alpha_B) = \alpha_B\,N_eT_{\rm live} \int_{T_j}^{T_{j+1}}dT_e \int dE_\nu\, \Phi_{^8\mathrm{B}}f_{^8\mathrm{B}}(E_\nu) \frac{d\sigma_{\nu_e e}(E_\nu,T_e)}{dT_e}. \]
Today:
\[ \mu_j(\alpha_B)=\alpha_B\,m_j. \]
The fixed template \(m_j\) is the reference prediction for \(\alpha_B=1\).
Required columns:
Use interpolation for the \(^8\mathrm{B}\) spectral shape:
Expected checks:
For each table row \((E_\nu^a,T_e^b)\), define a weight
\[ w_{ab} = N_eT_{\rm live} \Phi_{^8\mathrm{B}}f_{^8\mathrm{B}}(E_\nu^a) \frac{d\sigma_{\nu_e e}(E_\nu^a,T_e^b)}{dT_e} \Delta E_\nu\Delta T_e . \]
Then the prediction in recoil bin \(j\) is
\[ m_j \simeq \sum_{a,b:\,T_e^b\in [T_j,T_{j+1})} w_{ab}. \]
First compute row weights. Then assign rows to recoil-energy bins.
Tmin, Tmax, bin_width = 4.5, 14.0, 0.5
edges = np.arange(Tmin, Tmax + 0.5 * bin_width, bin_width)
nbins = len(edges) - 1
bin_id = np.digitize(xs["T_e_MeV"], edges) - 1
valid = (0 <= bin_id) & (bin_id < nbins)
integrand = (
N_e * T_live
* xs["dphi_dE"]
* xs["dsigma_nue_cm2_per_MeV"]
* dE * dT
)
m = np.bincount(bin_id[valid], weights=integrand[valid], minlength=nbins)
centers = 0.5 * (edges[:-1] + edges[1:])Expected first bins:

Useful checks:
nbins should not change \(\sum_j m_j\) much.For Poisson bins,
\[ \ell(\alpha_B) = \sum_j \left[ n_j\ln\mu_j(\alpha_B)-\mu_j(\alpha_B) \right] +\mathrm{const}. \]
Use
\[ q(\alpha_B) = -2\left[\ell(\alpha_B)-\ell(\hat\alpha_B)\right]. \]
For one fitted parameter, the usual \(1\sigma\) interval is given by
\[ q(\alpha_B)=1. \]
Equivalently, the one-dimensional \(1\sigma\) contour is
\[ q(\alpha_B)\le 1. \]
Plot \(q(\alpha_B)\) and mark \(q=1\).
Expected output:
Because this first model is linear,
\[ \mu_j(\alpha_B)=\alpha_B m_j, \]
the maximum-likelihood estimator is
\[ \hat\alpha_B = \frac{\sum_j n_j}{\sum_j m_j}. \]
Use this as a check of the grid fit:
Expected output:
Repeat the fit for several thresholds:
\[ T_{\min}=3,\ 4.5,\ 6~\mathrm{MeV}. \]
For each threshold report:
Expected reference table for 100 kton year:
Change:
The fitted value moves because the pseudo-data change. The expected uncertainty should scale roughly as
\[ \sigma_{\alpha_B}\sim\frac{1}{\sqrt{\sum_j m_j}}. \]
Submit a notebook with:
Study the Gamow window for:
\[ p+p,\qquad {}^3\mathrm{He}+{}^4\mathrm{He},\qquad {}^7\mathrm{Be}+p. \]
For each reaction estimate \(E_0\) at a solar-core temperature and compare the scales.
Study the astrophysical \(S\)-factor.
Choose one solar reaction and summarize:
The result should be a short critical note, not a list of references.
Derive or verify the \(\nu e\) differential cross section from QFT:
\[ \nu_\ell + e^- \to \nu_\ell + e^-. \]
Answer explicitly:
Why is the \(\nu_e e\) cross section larger than the \(\nu_\mu e\) and \(\nu_\tau e\) cross sections?
Good extensions after the first session:
