Skip to content
Sign in
MDA validation — reproducing MARSSIM's own worked examples

Validation of the detection limit calculator

The standard this calculator follows prints worked examples of its own. Reproducing them is a stronger check than any derivation, because it fails when the algebra is right and the answer is not. This report does that, and states where the calculator deliberately differs.

Subject
The detection limit calculator at /calc/mda/, both of its modes, and the engine module src/engine/mda.ts.
Report date
2026-09-19
Source revision
09c0347
Archived source
10.5281/zenodo.22794265
Published examples
3 reproduced
Checks performed
72
Acceptance criteria
Statistics: relative difference below 1e-12. Worked cases: below 1e-9. Published examples: below 0.01, because the standard prints them rounded — each residual is accounted for individually.
Not established
4 items, listed at the end
Result
All checks pass.

Scope

This report covers the critical level, the detection limit and the minimum detectable activity for a fixed count, and the scan MDC with its surveyor term. The formulas come from Currie's 1968 framework as restated by MARSSIM, the multi-agency survey manual published by the US NRC, EPA and DOE.

One note on which edition. MARSSIM Revision 1 (August 2000) is the final issue and is what is quoted here. A Revision 2 draft exists and carries the same statements, but every page of it is stamped draft for public comment — do not cite or quote, so it is not used, even where it would have been convenient.

Reproducing the standard's own worked examples

MARSSIM does not only give formulas; it works three examples through to printed numbers. That makes a kind of check the other reports on this site could not do: not "is the derivation right" but "does this code produce the number the standard produces". A transposed factor or a wrong unit survives a derivation and dies here.

Example Interval
[s]
MARSSIM
prints
This tool Difference
First scanning stage at 1,500 cpm background M-P-01 · page 6-41 1 414 cpm 4.14×10² cpm 1.37e-16
Second scanning stage at the same background M-P-02 · page 6-42 4 372 cpm 3.72×10² cpm 0
Scan MDC for technetium-99 on concrete M-P-03 · page 6-43 2 750 dpm/100 cm² 7.55872×10² dpm/100 cm² 7.83e-3

The first two agree digit for digit. The third does not, and the reason is worth stating rather than smoothing over: MARSSIM reads its minimum detectable count rate from a table that prints it rounded to 130 cpm, where the unrounded value is 130.92. Carrying the rounded figure through the same expression reproduces the 750 dpm/100 cm² that MARSSIM prints; carrying the exact one gives 7.55872×10². The residual is the standard's own rounding.

M-P-01 — First scanning stage at 1,500 cpm background

MARSSIM Revision 1, page 6-41

  1. MARSSIM: a source remains under the probe for 1 second, so the average background in the observation interval is b_i = 1500 × (1/60) = 25.
  2. At the first stage a 95% detection rate is required and a 60% false positive rate tolerated, so d′ = 1.38 from Table 6.5.
  3. s_i = d′√(b_i) = 1.38 × 5 = 6.9 net counts in the interval.
  4. MDCR = s_i × (60/i) = 6.9 × 60 = 414 cpm, which is the figure MARSSIM prints.

Residual: Exact. MARSSIM's arithmetic is reproduced digit for digit.

M-P-02 — Second scanning stage at the same background

MARSSIM Revision 1, page 6-42

  1. At the second stage the surveyor pauses over a suspect location, taken as about 4 seconds, so b_i = 1500 × (4/60) = 100.
  2. The performance goal is stricter — still 95% detections, but only 20% false positives — so d′ = 2.48.
  3. s_i = 2.48 × 10 = 24.8 net counts in the interval.
  4. MDCR = 24.8 × (60/4) = 372 cpm.
  5. MARSSIM notes that the first stage is usually the more limiting of the two, and 414 > 372 here, so the first stage governs.

Residual: Exact. Note that MARSSIM's text prints the working as “2.48 × (60/4)”, which is a slip for 24.8 × (60/4); the result it gives, 372, is the correct one.

M-P-03 — Scan MDC for technetium-99 on concrete

MARSSIM Revision 1, page 6-43

  1. Background 300 cpm with a 2-second observation interval gives b_i = 300 × (2/60) = 10.
  2. s_i = 1.38 × √10 = 4.3638 net counts, so MDCR = 4.3638 × (60/2) = 130.92 cpm. MARSSIM's Table 6.6 prints 130.
  3. The surveyor efficiency of 0.5 raises it to 130.92/√0.5 = 185.14 cpm.
  4. Scan MDC = 185.14 / (0.36 × 0.54 × 1.26) = 755.9 dpm/100 cm².
  5. MARSSIM prints 750, which is what the same arithmetic gives from its rounded 130 cpm.

Residual: MARSSIM reads its MDCR from Table 6.6 as 130 cpm, which is the unrounded 130.92 rounded to two figures. Feeding 130 into the same expression reproduces 750 to within a count; carrying the unrounded value through gives 755.9. The residual is MARSSIM's own rounding and not a disagreement.

What the detectability index actually means

Until this report the screen described d′ = 1.38 as giving 95% true positives at 25% false positives. MARSSIM's Table 6.5 puts 1.38 at a 95% true positive rate and a 60% false positive rate; the 25% column holds 2.32. The difference is not cosmetic — it is the design of the method.

MARSSIM, page 6-40, Table 6.5
“Values of d′ for selected true positive and false positive proportions. At a false positive proportion of 0.60 and a true positive proportion of 0.95, d′ = 1.38. At a false positive proportion of 0.25 and the same true positive proportion, d′ = 2.32.”

MARSSIM, pages 6-40 to 6-42
“Scanning is divided into two stages. At the first stage a high rate of correct detections is required (e.g., 95%) and a correspondingly high rate of false positives (e.g., 60%) will be tolerated, giving d′ = 1.38. At the second stage the required rate of true positives remains high (e.g., 95%) but fewer false positives (e.g., 20%) can be tolerated, such that d′ is now 2.48. The greater value of MDCR from each of the scan stages is used.”

True
positive
False
positive
d′Where it is used
95% 60% 1.38 first scanning stage — MARSSIM's default
95% 20% 2.48 second stage, the surveyor's pause
95% 25% 2.32 what 1.38 was wrongly labelled as until this report

The first scanning stage is meant to be permissive. It flags locations cheaply and tolerates a majority of false alarms, because a second stage — the surveyor pausing over the spot for a few seconds — then confirms or clears each one at a stricter d′ of 2.48. Describing 1.38 as a 25% false positive rate makes the first stage look far more discriminating than it is, and hides why the second stage exists.

Where this calculator differs from MARSSIM, and by how much

MARSSIM, page 6-34, equations (6-5) and (6-6)
“L_C = k√(2B) and L_D = k² + 2k√(2B), where L_C is the critical level in counts, L_D is the detection limit in counts, k is the Poisson probability sum for alpha and beta (assuming alpha and beta are equal), and B is the number of background counts expected to occur while performing an actual measurement. If values of 0.05 for both alpha and beta are selected as acceptable, then k = 1.645 and these can be written as L_C = 2.33√B and L_D = 3 + 4.65√B.”

MARSSIM, page 6-34, note under equation (6-6)
“Note: In Currie's derivation, the constant factor of 3 in the L_D formula was stated as being 2.71, but since that time it has been shown (Brodsky 1992) and generally accepted that a constant factor of 3 is more appropriate. If the sample count times and background count times are different, a slightly different formulation is used.”

MARSSIM, page 6-34
“Currie assumed “paired blanks” when deriving the above stated relationships (Currie 1968), which is interpreted to mean that the sample and background count times are the same.”

MARSSIM prints the detection limit with a constant of 3 where Currie's derivation gives k², which is 2.706 at k = 1.645, and attributes the change to Brodsky (1992). This calculator keeps k². The reason is that the confidence level is a choice on this screen — 95%, 97.5% or 99% — and 3 is a value specific to k = 1.645, while k² follows whatever the user picks.

M-C-01 — the consequence is measured rather than asserted. The two differ by a constant 0.293975 counts at every background, and MARSSIM's is the larger — so this calculator reports a slightly lower detection limit, which is the direction a user working to MARSSIM should know.

Background
[counts]
This tool
(k²)
MARSSIM
(3)
Gap
[counts]
Relative
0 2.7060 3.0000 0.293975 10.864%
1 7.3588 7.6528 0.293975 3.995%
10 17.4194 17.7133 0.293975 1.688%
25 25.9698 26.2638 0.293975 1.132%
100 49.2337 49.5276 0.293975 0.597%
400 95.7613 96.0553 0.293975 0.307%
1500 182.9067 183.2007 0.293975 0.161%
10000 467.9823 468.2763 0.293975 0.063%

It matters where it is largest, which is exactly where detection limits are argued over: at very low background the fixed term is the whole answer. At a realistic counting background it is well under a percent.

The statistics, derived

M-U-01 — The critical level, and why it is √2 rather than 1

In the code: criticalLevel in src/engine/mda.ts

  1. A net result is the sample count minus the background count. Both are Poisson, so the variance of each equals its own mean.
  2. Currie's derivation assumes paired blanks, meaning the sample and the background are counted for the same length of time. MARSSIM states that assumption explicitly.
  3. Under it the two counts have the same expected background B, so the variance of the difference is B + B = 2B and its standard deviation is √(2B).
  4. The critical level is the net count that a background-only measurement exceeds with probability alpha, so L_C = k√(2B) with k the standard normal deviate for alpha.
  5. The factor √2 is the whole content of the case: subtracting a measured background, rather than a known one, costs a factor of √2 in the threshold.
  6. At k = 1.645 this is 2.326√B, which MARSSIM prints rounded as 2.33√B.

M-U-02 — The detection limit, and why it is not twice the critical level

In the code: detectionLimit in src/engine/mda.ts

  1. The critical level answers a question about a blank. The detection limit answers a different one: what true amount will be seen, with confidence 1 − beta, to exceed that threshold?
  2. A sample containing L_D has variance B + L_D rather than B, because the source contributes its own Poisson noise. That is why L_D is not simply 2·L_C.
  3. Solving L_D = L_C + k√(B + L_D + B) for L_D with alpha = beta gives L_D = k² + 2k√(2B), which is k² + 2L_C.
  4. The k² term is what survives at zero background: even with no background at all, k² counts are needed.
  5. At k = 1.645 that is 2.706 + 4.653√B.

M-U-03 — MARSSIM writes the constant as 3, not k²

In the code: the k*k term in detectionLimit

  1. MARSSIM prints L_D = 3 + 4.65√B at k = 1.645 and attaches a note: Currie's derivation gave 2.71, but a constant of 3 has since been shown more appropriate and is generally accepted.
  2. This calculator keeps k². The reason is not disagreement: the confidence level is a user choice on this screen, and 3 is a value specific to k = 1.645, whereas k² follows the choice.
  3. The difference is 3 − 2.706 = 0.294 counts, independent of background. As a fraction of L_D it falls as the background rises, and the report measures it across a range.
  4. MARSSIM's value is the larger, so it is the more conservative: this calculator reports a slightly lower detection limit than MARSSIM would, which is the direction a user should know about.
  5. This case carries no arithmetic of its own. It is here so that a deliberate deviation from the standard the tool names is recorded rather than left to be discovered.

M-U-04 — From counts to activity

In the code: the denominator in minimumDetectableActivity

  1. L_D is in counts. The MDA is that number of counts expressed as the activity that would produce them.
  2. A source of activity A produces A · y decays per second that yield a detectable emission, of which a fraction ε is counted, over a time t: counts = A · y · ε · t.
  3. So MDA = L_D / (ε · t · y · q), with q the sample size when the answer is wanted per gram or per litre.
  4. Every term in the denominator is a multiplication, so the MDA is inversely proportional to each: halving the efficiency doubles the MDA exactly, and that is checked as an identity.
  5. The count time appears twice — once here and once inside B = bgCps · t — which is why the MDA improves as 1/√t rather than 1/t at high background.

The two expressions are then checked against their algebraic form at each of the three confidence levels the screen offers and at 5 backgrounds — 30 comparisons, worst difference 0.

Identities

IdentityHandToolDifference
Halving the efficiency doubles the MDA M-ID-01 2×10⁰ 2×10⁰ 0
Halving the yield doubles the MDA M-ID-02 2×10⁰ 2×10⁰ 0
Doubling the sample size halves the MDA M-ID-03 5×10⁻¹ 5×10⁻¹ 0
The detection limit is the critical level twice, plus k² M-ID-04 2.706025×10⁰ 2.706025×10⁰ 1.15e-15
At zero background the critical level vanishes but the detection limit does not M-ID-05 2.706025×10⁰ 2.706025×10⁰ 0
Four times the count time gives about half the MDA M-ID-06 2×10⁰ 2.00082216189×10⁰ 4.11e-4
The surveyor efficiency raises the count rate by 1/√p M-ID-07 1.41421356237×10⁰ 1.41421356237×10⁰ 1.57e-16

Six of the seven are exact arithmetic and are held to double precision. The seventh, the square-root-of-time rule, is an asymptote: the ratio exceeds 2 at any finite background and falls towards it as the background rises, because the k² term decays as 1/t while the rest decays as 1/√t. It is measured at a high background and accepted within 0.002, and the test additionally requires the ratio to be above 2 and to decrease monotonically with background — the shape, not just the value.

Derivations of the identities

M-ID-01 — Halving the efficiency doubles the MDA

  1. The efficiency enters only the denominator, so the relation is exactly inverse.
  2. Nothing about the background changes, so the ratio is 2 with no tolerance beyond double precision.
  3. Checked across a grid of backgrounds and count times.

M-ID-02 — Halving the yield doubles the MDA

  1. The emission probability and the chemical yield multiply into the same denominator as the efficiency.
  2. Keeping them as a separate input matters for reporting, not for the arithmetic: the tool cannot tell a 50% efficient detector from a 50% emission probability.
  3. The identity records that they are interchangeable in the formula, which is a fact a user should know before entering one in place of the other.

M-ID-03 — Doubling the sample size halves the MDA

  1. The sample quantity converts an activity into a concentration, so it divides.
  2. This is the one term with no counting statistics behind it — it is pure unit conversion.
  3. A tool that applied it as a multiplication would still pass every other check here, so it gets its own.

M-ID-04 — The detection limit is the critical level twice, plus k²

  1. L_D − 2·L_C must equal k² for every background, which is the structural relation between the two quantities.
  2. It holds at any k, so it is checked at each of the confidence levels the screen offers.
  3. If the two functions ever stopped deriving from one another this is where it shows.

M-ID-05 — At zero background the critical level vanishes but the detection limit does not

  1. With B = 0 the threshold L_C is zero: any count at all is above background.
  2. L_D is still k², because the source's own Poisson noise remains. At k = 1.645 that is 2.706 counts.
  3. This is the case that distinguishes the two quantities most sharply, and the one where MARSSIM's constant of 3 differs from k² by the largest fraction.

M-ID-06 — Four times the count time gives about half the MDA

  1. At a background large enough that k² is negligible, L_D grows as √t while the denominator grows as t, so the MDA falls as 1/√t.
  2. The ratio is therefore close to 2 for a fourfold increase, and approaches it **from above** as the background rises: the k² term falls as 1/t, faster than the rest, so it weighs more on the shorter count.
  3. This is the rule of thumb every counting laboratory uses, and it is a consequence of the formula rather than an input to it. The case checks both that the ratio exceeds 2 and that it falls towards 2 as the background rises, which is the shape the derivation predicts.

M-ID-07 — The surveyor efficiency raises the count rate by 1/√p

  1. MARSSIM divides the ideal-observer MDCR by √p, so at the conventional p = 0.5 the required count rate rises by √2.
  2. It is a penalty, not a correction: a real surveyor walking with a rate meter does not achieve the ideal observer's performance, so more signal is needed.
  3. Checked at the conventional value and at others, since p is an input on this screen.

Worked cases

CaseBy handToolDifference
Critical level for a 100-count background M-W-01 2.3263813101×10¹ counts 2.3263813101×10¹ counts 1.61e-12
Detection limit for the same background M-W-02 4.9233651202×10¹ counts 4.9233651202×10¹ counts 1.52e-12
A minimum detectable activity M-W-03 1.9693460481×10⁰ Bq 1.9693460481×10⁰ Bq 8.64e-12
The same measurement per gram, with a 60% emission probability M-W-04 1.6411217067×10⁰ Bq/g 1.6411217067×10⁰ Bq/g 2.18e-11
At 99% confidence instead of 95% M-W-05 7.1199490922×10¹ counts 7.1199490922×10¹ counts 5.67e-12

M-W-01 — Critical level for a 100-count background

  1. 1 count per second for 100 seconds gives B = 100 background counts.
  2. L_C = k√(2B) = 1.645 × √200 = 1.645 × 14.142 135 623 7 = 23.263 813 101 counts.
  3. MARSSIM's rounded form 2.33√B gives 23.30, which differs by 0.16% — the rounding of 2.326 to 2.33.
  4. Anything below 23.26 net counts is not a detection at 95% confidence, however much it looks like one.

M-W-02 — Detection limit for the same background

  1. L_D = k² + 2L_C = 2.706 025 + 46.527 626 202 = 49.233 651 202 counts.
  2. MARSSIM's form with the same √B term is 3 + 46.527 626 = 49.527 626 counts, 0.597% higher.
  3. The gap is the 0.294 counts of M-U-03 and nothing else; both expressions share the 4.653√B term.

M-W-03 — A minimum detectable activity

  1. L_D = 49.233 651 202 counts from M-W-02.
  2. The detector counts 0.25 of the emissions, over 100 seconds, so it registers 25 counts per becquerel.
  3. MDA = 49.233 651 202 / 25 = 1.969 346 048 1 Bq.
  4. Reported without the yield or sample size, this is an activity in the counting geometry, not a concentration.

M-W-04 — The same measurement per gram, with a 60% emission probability

  1. The denominator becomes 0.25 × 100 × 0.6 × 2 = 30 counts per becquerel per gram.
  2. MDA = 49.233 651 202 / 30 = 1.641 121 706 7 Bq/g.
  3. Both extra factors divide, so a user who enters the emission probability as part of the efficiency gets the same answer — which is why the identities check them separately.

M-W-05 — At 99% confidence instead of 95%

  1. k = 2.326 is the standard normal deviate for 1% in each tail, which the screen offers as the 99% option.
  2. L_C = 2.326 × √200 = 32.894 607 461 counts.
  3. L_D = k² + 2L_C = 5.410 276 + 65.789 214 922 = 71.199 490 922 counts.
  4. Raising the confidence from 95% to 99% raises the detection limit by 45%, which is the trade a survey plan is really making when it picks a confidence level.
  5. MARSSIM's constant of 3 does not apply here at all: it is a value for k = 1.645.

Where the calculator must refuse

Six of these nine were open when this report was written. Two are worth naming: a surveyor efficiency of zero returned infinity, and an efficiency of 1.5 — more counts than emissions — was accepted and produced a detection limit better than the detector can achieve. All three efficiencies on this screen are fractions and none of them was bounded.

InputWhy there is no answerRefused
A negative background M-R-01 Counts cannot be negative. The square root would return a not-a-number in a way that depends on the platform rather than on the statistics. yes
A negative confidence factor M-R-02 Before this report this returned a critical level of −23.26 counts: a detection threshold below zero, which every measurement exceeds. yes
An infinite background M-R-03 Returned an infinite detection limit, which prints as a number on the screen. yes
An efficiency above one M-R-04 The screen defines the efficiency as counts per emission, so it cannot exceed one. Before this report it was accepted and produced an MDA better than the detector can physically achieve. yes
A zero count time M-R-05 No measurement was made, so there is no detection limit to report. yes
A negative sample size M-R-06 A negative mass or volume has no meaning, and dividing by it would flip the sign of the answer. yes
A zero surveyor efficiency M-R-07 Before this report this returned infinity. A surveyor who notices nothing has no scan MDC, which is not the same as an infinitely large one. yes
A surveyor efficiency above one M-R-08 The surveyor efficiency is the fraction of the ideal observer's performance achieved, so it cannot exceed one. It was accepted and made the scan MDC better than the ideal observer's. yes
A zero background for a scan M-R-09 With no background the minimum detectable net counts collapse to zero and the scan MDC with them. Reporting zero would claim that any activity whatever is detectable while walking, which is false. The formula has no answer here. yes

What this report does not establish

Not establishedWhy
Currie's 1968 paper itself M-N-01 It is behind a subscription and was not opened. Its results are cited through MARSSIM's restatement, which is quoted verbatim in this report rather than paraphrased.
The basis for MARSSIM's constant of 3 M-N-02 MARSSIM attributes it to Brodsky (1992) without reproducing the argument, and that paper was not obtained. What is established here is the size and direction of the difference from what this calculator computes, not which value is better.
The surveyor efficiency of 0.5 M-N-03 MARSSIM presents it as a convention supported by laboratory studies reported in NUREG/CR-6364 and NUREG-1507. Those studies were not examined; the value is implemented as the standard specifies it and is a user input on this screen.
The case of unequal sample and background count times M-N-04 The formulas implemented assume paired blanks, which MARSSIM states means equal count times. MARSSIM notes that a different formulation applies otherwise; this calculator does not offer it, and the screen does not currently say so.

Primary sources