-
released this
2026-08-31 16:16:52 +03:00 | 2 commits to main since this releaseVerified on hardware against three real sources - uranium ore, a thorium mantle and ordinary background - plus a 52-check regression suite that runs on the device itself from synthetic spectra.
The main correction
A gamma spectrum contains peaks that are not gamma lines: backscatter, the Compton edge, single and double escape peaks, sum peaks and 511 keV annihilation. The matcher assumed every peak was a line and handed these to whichever nuclide sat nearest. That single omission, rather than three separate faults, was behind phantom Na-22, Ba-133 and Am-241 on plain background. All of them are now modelled, and such a feature may corroborate a nuclide but never establish one.
Decay chains
At this resolution both natural chains fit the same peaks - their line ratios differ by 0.4 percent, far below what 8.4 percent FWHM can separate - so real uranium ore scored 97 percent uranium against 70 percent thorium and was reported as a mixture. The dominant chain is now named, and a mixture is reserved for a genuine balance.
Two chain members with one line each now corroborate one another, and a single member matched at 8 sigma can carry its chain. Requiring one nuclide to show two lines had lost a thorium mantle whose Pb-212 was unmistakable at 8.4 sigma.
An honest display
An elevated sample is never called background. Working out which nuclide is present takes counting time; noticing that something is there does not, so the device says SOURCE FOUND and keeps working rather than making a claim it cannot support.
Verdicts are graded - URANIUM? below 80 percent confidence, with the number shown - because a result computed from counting statistics is never simply true or false. The quality grade describes the identification rather than the strongest peak, so an unidentified bump no longer reads EXCELLENT. Natural chains and K-40 must be above ambient to earn a verdict, since every wall contains both. Anchors and verdicts have hysteresis, so evidence near a threshold no longer empties the candidate list or retracts a correct answer.
Regression suite
Build with ANALYSIS_SELFTEST=1. Synthetic spectra are built from the nuclide library at the detector real resolution, with a Compton continuum and reproducible noise, and the real analyser is run over them. It fails on real defects: it caught a background false positive never seen on hardware, and rejected two attempted fixes that broke other cases.
Downloads