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)
This commit is contained in:
2026-05-14 19:46:39 +03:00
parent efcd6a524a
commit 030ae3e4b9
29 changed files with 696 additions and 771 deletions
@@ -0,0 +1,175 @@
---
title: "Implementation TODO — gA Extraction Pipeline"
date: 2026-05-14
tags:
- gA/extraction/todo
- implementation-plan
status: active
aliases: [gA pipeline, SSM implementation, shape factor module]
related_notes:
- 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:
```python
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)`:
```python
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
## Phase 4: ESSM Extension (P2 — optional but recommended)
- [ ] **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:
```python
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) |