Files
beta_shape_pnpi/docs/gA-extraction/04-implementation-todo.md
T
unzhakov 030ae3e4b9 docs: restructure knowledge base into tree layout + gA extraction module
- Organize into tree structure: corrections/, nuclear-structure/, gA-extraction/, refs/
- Move all correction notes to corrections/ (01-09)
- Move nuclear structure to nuclear-structure/ with index
- Add gA-extraction/ with SSM algorithm, sNME/ESSM formalism, Tc99 case study, and implementation TODO
- Reorganize refs by topic (electromagnetic/, forbidden-decay/)
- Update all wikilinks to new paths
- Remove radiative_spec.md (code algorithm, not reference)
- Lint: all wikilinks verified valid
- Comprehensive gA extraction research based on Paulsen et al. (2024) and Song et al. (2025)
2026-05-14 19:46:39 +03:00

7.1 KiB

title, date, tags, status, aliases, related_notes
title date tags status aliases related_notes
Implementation TODO — gA Extraction Pipeline 2026-05-14
gA/extraction/todo
implementation-plan
active
gA pipeline
SSM implementation
shape factor module
gA-extraction/01-ssm-algorithm
gA-extraction/02-ssnme
gA-extraction/03-tc99-case-study

Implementation TODO — gA Extraction Pipeline

[!info] Status Research phase. Experimental data to be added by user. Implementation to follow after documentation is complete.

Phase 1: Nuclear Model Input (P0 — prerequisite)

  • 1.1 Obtain precomputed shape factor components C_V(W), C_A(W), C_{VA}(W) for ^{99}\text{Tc}
    • Option A: Use Kostensalo & Suhonen (2017) MQPM results (published in PRC 96, 024317)
    • Option B: Use Ramalho & Suhonen (2024) NSM results (Front. Phys. 12, 1455778)
    • Option C: Run shell model with KShell or another available code
    • Decision: Which source to use? (See gA-extraction/03-tc99-case-study for comparison)
  • 1.2 Store components as lookup tables (CSV or NumPy):
    • data/Tc95_CV.csv — C_V(W) vs. W
    • data/Tc95_CA.csv — C_A(W) vs. W
    • data/Tc95_CVA.csv — C_{VA}(W) vs. W
    • Columns: W (unitless), C_V, C_A, C_VA
    • W range: [1.001, 1.580] (corresponds to T \in [0.5, 295] keV)
  • 1.3 Decide on sNME handling:
    • Fix to CVC value (Paulsen et al. approach)
    • Fit as free parameter (ESSM — Song et al. approach) RECOMMENDED
    • If ESSM: also need l-NME from nuclear model

Phase 2: Shape Factor Module (P1 — depends on 1.1)

Create beta_spectrum/components/shape_factor_gA.py:

  • 2.1 ShapeFactorGA class:
    class ShapeFactorGA:
        def __init__(self, C_V_table, C_A_table, C_VA_table, sNME=None):
            # Load tables, interpolate to arbitrary W
            # sNME: if None, use CVC value; if float, use fitted value
    
        def evaluate(self, W, gA, gV=1.0):
            """Compute C(W; gA, gV) = gV²·CV(W) + gA²·CA(W) + gV·gA·CVA(W)"""
    
        def evaluate_components(self, W):
            """Return (C_V(W), C_A(W), C_VA(W))"""
    
  • 2.2 Interpolation: Use scipy.interpolate.interp1d with kind='cubic' for smooth evaluation
  • 2.3 Validation: Check that C(W) is monotonically reasonable for g_A \in [0.4, 1.8]
  • 2.4 Unit test: test_shape_factor_gA_consistency — verify decomposition matches Eq. (1)

Phase 3: Fitting Pipeline (P2 — depends on 1.2 + 2.1)

Create beta_spectrum/gA_fit.py:

  • 3.1 fit_gA_spectrum(W_exp, N_exp, sigma_exp, shape_factor, W_min, W_max):
    def fit_gA_spectrum(W_exp, N_exp, sigma_exp, sf, W_min=0.020, W_max=0.275):
        """
        Fit gA to experimental spectrum using χ² minimization.
    
        Parameters
        ----------
        W_exp : array_like
            Electron total energy (unitless, W = 1 + T/m_ec²)
        N_exp : array_like
            Measured counts (or normalized spectrum)
        sigma_exp : array_like
            Uncertainties on N_exp
        sf : ShapeFactorGA
            Precomputed shape factor
        W_min, W_max : float
            Fit range in unitless W
    
        Returns
        -------
        gA_best, gA_low, gA_high, chi2_min, chi2_curve
        """
    
  • 3.2 Grid search: g_A \in [0.4, 1.8] with 0.01 step
  • 3.3 Brent's method refinement around grid minimum
  • 3.4 Confidence interval: find g_A where \chi^2 = \chi^2_{\text{min}} + 1
  • 3.5 χ² curve output for visualization
  • 3.6 Unit test: test_fit_gA_reproduces_input — inject known g_A, verify recovery
  • 4.1 fit_gA_sNME(W_exp, N_exp, sigma_exp, sf, l_NME, t_half_exp):
    • Simultaneous fit of g_A and sNME
    • Match both spectral shape AND experimental half-life
    • Return both (sNME_c, sNME_f) solutions
  • 4.2 Half-life computation:
    def compute_half_life(sf, gA, gV, sNME, W0):
        """Compute t_1/2 from integrated shape factor"""
        C_integral = integrate(C(W; gA, gV, sNME) * phase_space * Fermi * ... dW)
        return kappa / C_integral
    
  • 4.3 Validation against Song et al. (2025) results for ^{99}\text{Tc}

Phase 5: Validation (P3 — depends on 3.1 + 4.1)

  • 5.1 Reproduce Paulsen et al. (2024) result: g_A^{\text{eff}} = 1.526(92) with CVC-fixed sNME
  • 5.2 Reproduce Song et al. (2025) result: g_A^{\text{eff}} \approx 1.0\text{--}1.2 with ESSM
  • 5.3 Cross-check: polynomial fit A \cdot W + B \cdot W^{-1} + C \cdot W^2 vs. SSM for same g_A
  • 5.4 Sensitivity analysis: vary W_{\text{min}}, W_{\text{max}}, nuclear model, sNME

Phase 6: Experimental Data Analysis (P4 — depends on user providing data)

  • 6.1 Import raw spectrum data (format TBD)
  • 6.2 Apply detector response correction (if needed) — corrections/07-detector-response
  • 6.3 Run fit_gA_spectrum with appropriate fit range
  • 6.4 Run fit_gA_sNME (ESSM) if nuclear model input available
  • 6.5 Generate publication-quality plots:
    • Measured spectrum + best-fit theoretical curve
    • Residuals plot
    • χ² vs. g_A curve
    • Comparison with polynomial fit
  • 6.6 Uncertainty budget: propagate detector, model, and systematic uncertainties

Phase 7: Paper Draft Support

  • 7.1 Generate tables: fitted g_A, sNME, \chi^2, confidence intervals
  • 7.2 Generate figures for paper
  • 7.3 Cross-reference with literature values
  • 7.4 Draft methodology section using gA-extraction/01-ssm-algorithm as reference

File Structure (target)

beta_shape_pnpi/
├── beta_spectrum/
│   ├── components/
│   │   └── shape_factor_gA.py        ← Phase 2
│   └── gA_fit.py                      ← Phase 3 + 4
├── data/
│   ├── Tc95_CV.csv                    ← Phase 1
│   ├── Tc95_CA.csv
│   ├── Tc95_CVA.csv
│   └── experimental/                  ← Phase 6 (user-provided)
├── tests/
│   └── test_shape_factor_gA.py        ← Phase 2 + 3
│   └── test_gA_fit.py
└── docs/
    └── gA-extraction/
        ├── 01-ssm-algorithm.md
        ├── 02-ssnme.md
        ├── 03-tc99-case-study.md
        └── 04-implementation-todo.md

Decision Points

  1. Nuclear model source: Which precomputed C_i(W) to use? (MQPM vs. NSM)
  2. sNME strategy: CVC-fixed or ESSM? (ESSM recommended)
  3. Fit range: What W_{\text{min}}, W_{\text{max}} for your detector?
  4. Detector corrections: Do you need response deconvolution before fitting?

References for Implementation

Item Source
Shape factor formalism Kostensalo & Suhonen, PRC 96, 024317 (2017)
ESSM formalism Kumar et al., EPJA 57, 225 (2021)
sNME analysis Ramalho & Suhonen, Front. Phys. 12, 1455778 (2024)
^{99}\text{Tc} MMC data Paulsen et al., PRC 110, 055503 (2024)
^{99}\text{Tc} ESSM analysis Song et al., arXiv:2506.17544 (2025)
BB formalism Behrens & Bühring (1982)