KAHIBARO
Discord Login Register

16.5 Detector Efficiency

Detected events

Detector efficiency describes how many of the particles that reach a detector actually produce a detectable response according to a chosen criterion. In a Geant4 simulation, you control that criterion in your own user code. The same geometry can give very different efficiencies depending on how you define a “detected event”.

A common choice is to say that an event is detected if the energy deposited in a given detector volume, or in one detector element of an array, exceeds a threshold. In practice you first accumulate the total energy deposited in the detector during an event, usually in EventAction or via a hit collection in a sensitive detector. Let $E_{\text{dep}}$ be that total energy for the current event and let $E_{\text{thr}}$ be your detection threshold.

A typical logic looks like this in words: if $E_{\text{dep}} \ge E_{\text{thr}}$ then mark this event as detected and increment a counter. If the threshold is too low, you may count a lot of noise or partial energy deposits as detections. If it is too high, you may miss many events where a particle interacted but did not leave enough energy. The threshold should represent your real detector and electronics as closely as possible.

You can also define “detected” using other conditions. For example, you might require that the energy is deposited in a specific detector element, or that there is a coincidence between two detectors within a given time window, or that the deposited energy lies inside an energy window that represents an analysis cut. In each case, a Boolean decision at the end of the event determines whether that event is counted as detected.

In simulation code, you usually keep an integer counter for detected events, for example in RunAction as a member variable. At the end of each event, after you have finished accumulating energy or processing hits, you evaluate your detection condition and, if it is satisfied, increment that counter. This gives you the total number of detected events over the whole run.

Incident events

To calculate an efficiency, you also need to know how many particles were incident on your detector. “Incident” must be defined in a precise and consistent way. The simplest and most common definition is to treat every primary particle that you generate as an incident particle. In that case, the number of incident events is just the number of primaries that you simulated.

If you simulate one primary particle per event, and you run $N_{\text{events}}$ events, then the total number of incident particles is $N_{\text{inc}} = N_{\text{events}}$. This definition is appropriate when all primaries are aimed at the detector or pass through its acceptance region. It also matches how beam experiments with well defined beams often report efficiency.

In more complex setups, not every generated primary actually reaches the detector. For example, you may generate particles on a large surface around the detector, or have a collimator that blocks some of them. In that case, you might want to define an incident particle as one that actually crosses a particular surface or enters a particular volume. You can detect this condition in SteppingAction or with a dedicated scoring volume. Each time a primary particle first enters the detector volume, you increment a counter of incident particles.

For array detectors, you may also define an incident event for each detector element separately. Then, for one physical event, several detector elements can have their own incident and detected counts. This is useful if you want to quote an efficiency for each crystal in a PET ring or for each strip in a strip detector.

Whichever definition you choose, you must be consistent. The efficiency will only be meaningful if the definition of “incident” matches the way you define “detected,” and both definitions reflect the experimental situation that you want to model.

Efficiency calculation

Once you have counted detected and incident events, the efficiency is calculated as the ratio of these two quantities. Let $N_{\text{det}}$ be the number of detected events according to your detection condition, and let $N_{\text{inc}}$ be the number of incident particles or events according to your chosen definition.

The basic efficiency formula is
$$
\varepsilon \;=\; \frac{N_{\text{det}}}{N_{\text{inc}}}.
$$

This gives an efficiency between 0 and 1. It is often reported as a percentage by multiplying by 100. In a Geant4 simulation you typically compute this ratio at the end of the run, for example in EndOfRunAction, using the counters that you have filled during the run.

Because detection is essentially a Bernoulli process, the number of detected events has a statistical uncertainty that can be approximated by binomial statistics. If the number of incident events is large enough and the efficiency is not extremely close to 0 or 1, the standard deviation of the efficiency can be estimated as
$$
\sigma_\varepsilon \approx \sqrt{\frac{\varepsilon (1 - \varepsilon)}{N_{\text{inc}}}}.
$$

A useful estimate of the statistical error on the efficiency is
$$
\sigma_\varepsilon \approx \sqrt{\frac{\varepsilon (1 - \varepsilon)}{N_{\text{inc}}}}.
$$

This uncertainty decreases when you simulate more incident events. For absolute beginners it is enough to understand that doubling the number of simulated events reduces the statistical uncertainty by roughly a factor of $\sqrt{2}$, not by a factor of 2. If you want a smooth, low noise estimate of your detector efficiency, you must simulate a sufficiently large number of events.

You can also calculate efficiency as a function of other variables. For example, you may want an efficiency curve as a function of incident energy, position, or angle. In that case, you can bin your events in histograms. For each bin, you separately count $N_{\text{inc}}$ and $N_{\text{det}}$ for that bin, then apply the same ratio and the same statistical formula for each bin. This is a typical task for the Geant4 analysis system, where you can fill histograms for incident and detected counts and then process them into efficiency curves with an external analysis tool such as ROOT.

In summary, to obtain a meaningful detector efficiency from Geant4, you must clearly define what counts as a detected event, clearly define what counts as an incident event, use your user actions to count both consistently throughout the run, and finally apply the efficiency formula with an appropriate estimate of its statistical uncertainty.

Views: 9

Comments

Please login to add a comment.

Don't have an account? Register now!