- 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)
176 lines
7.1 KiB
Markdown
176 lines
7.1 KiB
Markdown
---
|
|
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) |
|