Walidacja — optymalizacja nastawy scyntylatora
FOM = S²/(S+B): optymum przy HV=700V, nie HV=800V (max sygnał, ale wyższe tło).
✓
10/10 asercji zdanych
Walidacja: ✓ ZALICZONA
Obliczono: 2026-07-08 02:29:02 UTC · PHP 8.1.2-1ubuntu2.24
Niezmienniki fizyczne
| Stan | Asercja | Wynik | Oczekiwane |
|---|---|---|---|
| ✓ | Wynik zawiera 'best' i 'points' Wynik musi zawierać 'best' (optymalna nastawa) i 'points' (tabela z FOM dla wszystkich HV). |
best+points OK | array{best, points} |
| ✓ | len(rows) = 5 (tyle samo co wejść) Każda trójka [HV, sample, bg] daje jeden wiersz w tabeli wynikowej. |
5 wierszy | 5 |
| ✓ | Optymalna nastawa: HV=700V (maksimum FOM) FOM(700V)=833,3 > FOM(650V)=810 > ... → optymum przy HV=700V. |
best HV = 700 V | 700 V |
| ✓ | FOM ≥ 0 we wszystkich wierszach FOM = S²/(S+B): licznik jest kwadratem, a mianownik dodatni dla poprawnego pomiaru. |
wszystkie FOM ≥ 0 | FOM ≥ 0 |
| ✓ | signal = sample − background ≥ 0 dla wszystkich wierszy Przy sample > background: signal = sample − background > 0. |
wszystkie signal ≥ 0 | signal ≥ 0 |
| ✓ | FOM(HV=650) = net²/sample = 900²/1000 = 810 FOM = (S−B)²/S = net²/(net+B): wskaźnik jakości nastawy licznika scyntylacyjnego. |
810 | 810 |
| ✓ | Pusta lista → InvalidArgumentException Pusta lista wejść nie ma sensu fizycznego — model musi rzucić wyjątek. |
wyjątek OK | InvalidArgumentException |
| ✓ | Nastawa z max. sygnałem (800V) NIE jest optymalna (FOM < FOM(650V)) Optymalna nastawa to max FOM, nie max sygnału — wysoki sygnał z wysokim tłem jest gorszy. |
FOM(800V)=450 < FOM(650V)=810 | FOM(800V) < FOM(650V) |
| ✓ | Każdy wiersz ma klucz 'hv' Każdy wiersz wyniku musi zawierać 'hv' dla renderowania tabeli. |
5 wierszy z HV | 5/5 |
| ✓ | best.fom = maksimum FOM ze wszystkich wierszy best['fom'] musi być równe globalnemu maksimum FOM. |
833,3333 | 833,3333 |
Porównanie z benchmarkami
Benchmarki pokazują ręczny rachunek FOM dla kilku nastaw i potwierdzają, że optymalna nastawa nie jest największym sygnałem brutto.
| Benchmark | Wynik modelu | Punkt odniesienia | Ocena |
|---|---|---|---|
| Ręczny rachunek FOM dla 650 V To najprostszy punkt kontrolny wzoru: licznik jest kwadratem sygnału netto, a mianownik obejmuje sygnał brutto. |
signal 900; FOM 810.0 | (1000-100)^2 / 1000 = 810 | ✓ doskonały (≤5%) |
| Optimum FOM przy 700 V Ten benchmark pokazuje właściwy cel optymalizacji: maksymalizujemy FOM, a nie samą liczbę zliczeń. |
best HV 700 V; FOM 833.3 | 700 V i FOM około 833,3 | ✓ doskonały (≤5%) |
| Wysokie napięcie z wysokim tłem nie jest najlepsze To praktyczny punkt walidacyjny: rosnące tło może pogorszyć nastawę mimo dużego sygnału brutto. |
HV 800 V: signal 900; FOM 450.0 | FOM 800 V = 450, mniej niż 650 V i 700 V | ✓ doskonały (≤5%) |
| Pełna krzywa FOM ma jeden lokalny szczyt w danych testowych Benchmark sprawdza kształt krzywej, nie tylko pojedynczy zwycięski wiersz. |
600V 200; 650V 810; 700V 833; 750V 667; 800V 450 | 200, 810, 833, 667, 450 | ✓ doskonały (≤5%) |
| Weryfikacja wyboru best.fom Ten wiersz chroni przed błędem renderowania: najlepsza nastawa musi pochodzić z tej samej tabeli, którą widzi użytkownik. |
best.fom 833.333; max(rows) 833.333 | best.fom musi równać się maksimum z tabeli | ✓ doskonały (≤5%) |
Kontekst metodologiczny:
W praktycznej spektrometrii sama liczba zliczeń nie wystarcza, bo tło rośnie razem ze wzmocnieniem. Walidacja pokazuje więc tabelę FOM, aby użytkownik mógł sprawdzić, że kalkulator wybiera kompromis między sygnałem netto i tłem.
Zakres walidacji
Sprawdzone: FOM=S²/(S+B), optimum=700V (nie 800V), FOM≥0, signal≥0, pusta lista→wyjątek, best.fom=max(FOM).