Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Experiment 13 — Counting Statistics, Half-Life, and Gamma Attenuation

Objectives

By the end of this experiment you should be able to:

Textbook connection

Read §13.3–13.6. This experiment is the practical foundation for everything in nuclear and particle physics: essentially every measurement in the field is a counting measurement. Its uncertainty includes random counts, background subtraction, dead time, geometry, and calibration. This experiment explains when the sqrt(N) approximation used since Week 3 is appropriate.

Theory

Why decay is Poisson

Each nucleus in a sample has the same probability λ dt\lambda\,dt of decaying in any short interval dtdt, independently of its age and of every other nucleus. For a large number of nuclei each with a small probability of decaying, the number NN observed in a fixed interval follows the Poisson distribution

P(N;μ)=μNe−μN!,P(N;\mu) = \frac{\mu^N e^{-\mu}}{N!} ,

whose mean and variance are both μ\mu. Hence the standard deviation is μ\sqrt{\mu}. For sufficiently many counts, a single observation NN gives the approximate standard uncertainty N\sqrt{N}. In an ideal gross count with negligible background and dead time, the relative uncertainty is then 1/N1/\sqrt{N}: 1% needs about 104 counts and 0.1% needs 106. Subtracting an independently measured background adds its counting variance.

For μ≳20\mu \gtrsim 20 the Poisson distribution is well approximated by a Gaussian of mean μ\mu and standard deviation μ\sqrt{\mu}. Below that it is visibly asymmetric, and for small μ\mu the difference matters: at N=0N = 0 the estimator N=0\sqrt{N} = 0 is plainly wrong, and one must use a proper confidence interval instead. You will observe both regimes today.

Two plots of Poisson count probabilities as bars with an overlaid continuous Gaussian density, one for mean 3 showing skew and a mismatch near zero, and one for mean 30 showing close shapes.

Figure 13.1:The same law, two regimes. At μ=3\mu=3 the Poisson distribution is visibly skewed and the Gaussian density is poor near N=0N=0; at μ=30\mu=30 their shapes are close. The bars show probabilities and the line is a continuous density.

Decay law

N(t)=N0e−λt,T1/2=ln⁡2λ.N(t) = N_0 e^{-\lambda t}, \qquad T_{1/2} = \frac{\ln 2}{\lambda} .

The measured count rate is proportional to the activity λN(t)\lambda N(t), so the rate obeys the same exponential.

The isotope generator

137^{137}Cs (T1/2≈30.08 yT_{1/2} \approx 30.08\ \text{y}) feeds metastable 137m^{137m}Ba, which has T1/2≈2.552 minT_{1/2} \approx 2.552\ \text{min} and emits a 661.7 keV661.7\ \text{keV} gamma in its de-excitation. A licensed generator can retain the caesium while barium is eluted under its approved procedure. Do not assume perfect parent retention: the instructor checks for long-lived 137^{137}Cs breakthrough and controls the eluate and waste.

Gamma attenuation

A narrow beam of monoenergetic gammas through an absorber of thickness xx follows

I(x)=I0e−μx,x1/2=ln⁡2μ,I(x) = I_0 e^{-\mu x} , \qquad x_{1/2} = \frac{\ln 2}{\mu} ,

where μ\mu is the linear attenuation coefficient. Each interaction removes a primary gamma from the unscattered beam, producing an exponential primary transmission. A GM counter has no energy resolution and can also count scattered photons that reach it.

At 662 keV662\ \text{keV} the dominant mechanism in light materials is Compton scattering, which scales roughly with electron density and therefore with Z/AZ/A — nearly constant across the periodic table. In lead, the higher-ZZ photoelectric contribution is also significant. The NIST mass attenuation coefficients at 662 keV662\ \text{keV} are about 0.11 cm2/g0.11\ \text{cm}^2/\text{g} for lead and 0.0745 cm2/g0.0745\ \text{cm}^2/\text{g} for aluminum, giving narrow-beam half-value layers of roughly 5.5 mm5.5\ \text{mm} and 34 mm34\ \text{mm} respectively. Look these up yourself in XCOM rather than taking them from here.

Pre-lab

Apparatus

Panel (a), a GM tube mounted directly above an eluted barium-137m planchet on a fixed shelf, feeding a counter and timer. Panel (b), a sealed caesium-137 source facing a GM tube through an interchangeable stack of lead absorber sheets.

Figure 13.2:Two fixed geometries. (a) The short-lived 137m^{137m}Ba planchet counted at close, unchanging range for the half-life run. (b) A long-lived check source counted through increasing lead thickness for the attenuation run.

Procedure

Before you start the timed runs

Part A — The statistics of counting

  1. Set the operating voltage from the plateau, as in Relativistic Electrons from Beta Decay.

  2. Place a long-lived source so that you get an average of about 3 counts per one-second interval, including background. Take at least 300 one-second runs. Use the counter’s repeat mode; do not do this with a stopwatch.

  3. Move the source (or increase the interval) so that you get an average of about 30 counts per interval. Take another 300 runs.

  4. Take 300 runs of pure background at the same interval. Check that the mean does not drift during either series; a changing rate is not a single stationary Poisson process.

[ ] Checkpoint 1. Show the instructor your two mean counts and confirm they are near 3 and 30 before committing to the full runs.

Part B — Half-life of 137m^{137m}Ba

  1. Set the counter to take at least 90 consecutive 10 s10\ \text{s} runs, recording every interval. Aim for an early observed rate below about 100 s−1100\ \text{s}^{-1} if the nonparalyzable dead time is 100 μs100\ \mu\text{s}; this limits the lost-count fraction to about 1%. Verify the actual detector dead time and adjust the approved source geometry before elution.

  2. Elute the generator onto a planchet, put it under the detector at a fixed geometry, and start counting. Record the elution time.

  3. Let the run continue for at least 15 minutes15\ \text{minutes} — about six half-lives, over which the rate falls by a factor of about 60.

    This may not reach background: a hypothetical sample starting at 1500 s−11500\ \text{s}^{-1} remains near 25 s−125\ \text{s}^{-1} after 15 minutes and needs about 30 minutes to approach a 0.5 s−10.5\ \text{s}^{-1} background. Measure background before elution and after the run. Fit it jointly with the decay data and background count, so its finite precision is included. Investigate any apparent persistent activity as possible breakthrough.

  4. Do not move the sample or the detector during the run.

  5. If time allows, elute a second sample and repeat. Two independent decay curves is a much better basis for a claimed uncertainty than one.

Part C — Gamma attenuation

  1. Remove and control the eluate as directed, then use a sealed 137^{137}Cs source at a fixed geometry. Record source, absorber, and detector apertures and separations; collimate if the approved setup allows it.

  2. Measure lead at several thicknesses spanning as much of the available transmission range as practical. Increase counting time as the rate falls, aiming for comparable uncertainty in net rates. Record each sheet’s thickness and the stack order.

  3. Repeat with aluminum over the thickness available. Report the actual number of half-value layers covered rather than assuming the kit spans four.

  4. Measure background with the source removed in the same detector and absorber geometry, including a check near each end of the series.

Analysis

Testing the Poisson hypothesis

import numpy as np
from scipy.stats import poisson, norm

counts = np.array([...])                 # 300 equal-duration gross counts
mu     = counts.mean()
var    = counts.var(ddof=1)
print(f"mean = {mu:.3f},  variance = {var:.3f},  ratio = {var/mu:.3f}")

# Include every observation and a model tail in the last bin.
kmax = max(counts.max(), int(poisson.ppf(0.9999, mu)))
k    = np.arange(kmax + 1)
obs  = np.bincount(counts, minlength=k.size)
exp_p = counts.size * poisson.pmf(k, mu)
exp_p[-1] = counts.size * poisson.sf(kmax - 1, mu)

# Continuity-corrected Gaussian probabilities for integer-count bins.
exp_g = counts.size * (norm.cdf(k + 0.5, mu, np.sqrt(mu))
                       - norm.cdf(k - 0.5, mu, np.sqrt(mu)))
exp_g[0] = counts.size * norm.cdf(0.5, mu, np.sqrt(mu))
exp_g[-1] = counts.size * norm.sf(kmax - 0.5, mu, np.sqrt(mu))

For a Poisson process the variance-to-mean ratio should be 1. Report it with an uncertainty — for nn samples, the ratio has a standard deviation of approximately 2/(n−1)\sqrt{2/(n-1)} under the stationary Poisson model. Combine adjacent tail bins until each model’s expected count is at least about 5, then compute χ2=∑(O−E)2/E\chi^2=\sum(O-E)^2/E. With bb final bins and one mean estimated from the data, use approximately b−2b-2 degrees of freedom. Document the bins; the Gaussian approximation includes its negative tail in the zero-count bin.

At μ≈3\mu \approx 3 the Gaussian approximation has a visibly different shape; 300 trials may or may not reject it at a chosen significance level. At μ≈30\mu \approx 30 the two models are close. Present both comparisons with the observed histogram, and interpret a non-rejection as limited evidence, not proof that a model is exact.

The half-life

import numpy as np
from scipy.optimize import minimize
from scipy.special import xlogy

t0 = np.array([...])       # interval starts, seconds since elution
t1 = np.array([...])       # interval ends, seconds since elution
N = np.array([...])        # raw gross counts in those intervals
B, TB = ..., ...           # separate background count and duration (s)
dt = t1 - t0

def expected(logpars):
    r0, lam, bg = np.exp(logpars)  # source rate at elution, decay, background
    signal = r0 * np.exp(-lam * t0) * (-np.expm1(-lam * dt)) / lam
    return signal + bg * dt, bg

def nll(logpars):
    mean, bg = expected(logpars)
    return np.sum(mean - xlogy(N, mean)) + bg * TB - xlogy(B, bg * TB)

guess = np.log([max(N[0] / dt[0], 0.1), np.log(2) / 153.12,
                max(B / TB, 0.001)])
fit = minimize(nll, guess)
if not fit.success:
    raise RuntimeError(fit.message)
lam = np.exp(fit.x[1])
T12 = np.log(2) / lam

The fit uses the expected count integrated over each real interval and includes the separate background measurement in the same likelihood. Obtain a half-life interval by profiling the likelihood or by simulating new count series and background counts from the fitted model and refitting. Check the following:

  1. Keep the raw counts. Subtracting background before a Poisson fit or weighting each point by 1/N1/\sqrt{N} fails at small NN.

  2. Keep real time stamps. For equal interval widths, replacing each integral by a midpoint value changes the fitted amplitude, not the exponential slope. For a 10 s interval at this half-life the integrated value differs from the midpoint approximation by only about 0.009%. Irregular or missed intervals still need their actual bounds.

  3. Check dead time. At low rates the Poisson model above is suitable. If the measured early dead-time loss is material, incorporate a calibrated detector model or repeat at greater source–detector distance; a naive correction to counts does not preserve Poisson uncertainties.

Plot count residuals against time. Early or late patterns can suggest dead time, geometry changes, background error, or parent breakthrough; investigate with controls rather than assigning a cause from the shape alone.

Attenuation

Fit gross interval counts with a source term proportional to e−μxe^{-\mu x} plus measured background, using a Poisson likelihood and each point’s acquisition time. Check dead time at the thinnest absorber and propagate thickness and density uncertainty when calculating x1/2=ln⁡2/μx_{1/2}=\ln 2/\mu and μ/ρ\mu/\rho. Compare the material values with NIST XCOM at the same energy. If the detector accepts scattered photons, label the fitted value an effective attenuation coefficient; agreement or disagreement alone cannot establish an interaction mechanism.

Post-lab questions

Going further