KAHIBARO
Discord Login Register

19.3 Plotting Energy Spectra

Histograms

Energy spectra in ROOT are almost always represented as one dimensional histograms, so your first goal is to turn the per event or per hit energies from Geant4 into a meaningful $dN/dE$ distribution.

In a typical Geant4 analysis, you already created and filled a histogram with G4AnalysisManager in your simulation code. When you open the resulting ROOT file, you will usually find a TH1 object that contains the energy spectrum, for example a histogram of deposited energy in a detector crystal per event. In ROOT, each bin represents a small energy interval, and the bin content is the number of entries (events or hits) that fall into that interval.

A practical way to view a spectrum is to start a ROOT session and draw the histogram directly. For example, if your Geant4 code wrote an ntuple column Edep instead of a histogram, you can first create the histogram interactively in ROOT. You open the file, get the TTree, and use Draw to project the energy column into a histogram. ROOT automatically creates a TH1F for you when you call something like:
$$
\text{tree->Draw("Edep>>hE(200,0,2)") }
$$
This command creates a histogram hE with 200 bins between 0 and 2 units of energy, for example MeV if you wrote energy in MeV. The bin width is then
$$
\Delta E = \frac{E_{\text{max}} - E_{\text{min}}}{N_{\text{bins}}}
$$
and the bin content is the number of filled entries in that interval.

A key choice is the number of bins and the energy range. Too few bins produce a spectrum that hides structure, such as narrow peaks or edges, while too many bins produce a noisy spectrum where statistical fluctuations dominate each bin. For a beginner analysis, it is common to start with a modest number of bins, for example 100 to 200, and then refine. The range should cover the physically interesting energies, such as from 0 to slightly above your highest expected line or beam energy. In ROOT, you can easily recreate the histogram with a different binning by calling Draw again with new parameters and reusing the same ntuple.

It is important that you understand the two most common ways of normalizing and interpreting histograms. First, the raw bin contents represent counts, that is number of events or hits per bin. Second, for many plots you want to compare shapes independent of the total number of entries. In ROOT you can draw a normalized spectrum such that the area under the histogram is 1. If $N_{\text{tot}}$ is the total number of entries, a normalized bin content is $n_i / N_{\text{tot}}$. ROOT can do this automatically by drawing with the "norm" option or by scaling the histogram:
$$
\text{h->Scale(1.0/h->Integral());}
$$
so that the sum of all bin contents becomes 1. You then interpret the histogram as an approximation of a probability density in energy.

Important: When you normalize histograms, always check what quantity you need. For absolute detector rates, use raw counts or counts per unit time. For probability distributions or shape comparisons, scale histograms so that the total integral is 1. Never mix normalized and unnormalized spectra in the same quantitative comparison without clearly labeling them.

ROOT also lets you overlay multiple spectra, for example with different colors, to compare different conditions such as different shielding thicknesses or detector materials. To do this correctly, you often need consistent binning and identical energy ranges. In practice, you either create all histograms with the same bin definitions in the Geant4 code, or you project the same ntuple into several identically defined histograms in ROOT. Once your histograms exist, you place them on the same canvas, set colors and line styles, and enable legends so you can distinguish them. This visual comparison is one of the fastest ways to understand how your detector or setup responds to different configurations.

Logarithmic axes can be useful when your spectrum spans several orders of magnitude, such as gamma-ray backgrounds or spectra with a strong peak and a long tail. In a ROOT canvas, you can set the y axis to logarithmic scale so that small but non-zero features in the spectrum become visible. Be careful that bins with zero content cannot be displayed on a strict log axis; ROOT handles this internally, but conceptually you should remember that log scales are meaningful only where counts are positive.

When you first inspect an energy spectrum, you typically look for distinct peaks and the general continuum shape. Peaks correspond to particular processes or lines, such as monoenergetic gamma rays or full absorption of a photopeak in a scintillator. A continuous part of the spectrum might originate from Compton scattering, multiple scattering of charged particles, or energy-loss straggling. At this stage, ROOT histograms give you a quick overview that immediately tells you whether the simulation roughly behaves as expected.

Detector response

Once you have a clear histogram of deposited energy or measured signal, you can start interpreting it in terms of detector response. In Geant4, you often store physical quantities such as energy deposition in MeV, but in a real detector you measure an electrical signal or number of counts, and these are affected by finite resolution, thresholds, and efficiency. ROOT is where you usually bring the simulated spectrum closer to what a real instrument would see.

The simplest connection between simulated spectrum and detector response is a scale factor that converts deposited energy to an observable such as number of photoelectrons or ADC channels. If you assume a linear detector with gain $g$, you can think of an approximate relation
$$
S = g \, E_{\text{dep}}
$$
where $S$ is a signal variable, for example channels, and $E_{\text{dep}}$ is energy in MeV. You can implement such a conversion directly in your Geant4 analysis code, or more flexibly in ROOT by reading the ntuple column for energy and filling a new histogram using the transformed variable $S$. This lets you plot spectra in units that are directly comparable to experimental data.

Real detectors do not measure energy with perfect resolution. Instead, a monoenergetic line appears as a broadened peak with an approximately Gaussian shape. In ROOT, you can inspect such peaks by fitting a Gaussian plus background to the histogram. Once you select an energy region around the peak, you call a fit function and ROOT reports parameters such as the peak mean and the standard deviation $\sigma$. To quantify resolution, you usually compute the full width at half maximum, or FWHM, using the Gaussian relation
$$
\text{FWHM} = 2 \sqrt{2 \ln 2} \, \sigma \approx 2.355 \, \sigma.
$$

Important: Detector energy resolution is usually quoted as
$$
R = \frac{\text{FWHM}}{E_{\text{peak}}} \times 100 \,\%
$$
where $E_{\text{peak}}$ is the peak energy. Peaks with larger $R$ are broader and indicate poorer resolution. When comparing simulated and experimental spectra, always compare both the peak position and this relative resolution.

Sometimes you do not include detector smearing inside Geant4 at all, and instead you apply it in ROOT. In that case, you take each simulated energy value and randomly smear it according to a resolution model. A common model uses a Gaussian with a standard deviation that depends on energy, for example
$$
\sigma(E) = a \sqrt{E} \oplus b E \oplus c,
$$
where $a$, $b$, and $c$ represent different contributions such as statistical fluctuations, electronic noise, and non proportional effects, and the symbol $\oplus$ means that contributions are added in quadrature, so
$$
\sigma^2(E) = a^2 E + b^2 E^2 + c^2.
$$
In ROOT you generate a new smeared energy value for each event:
$$
E_{\text{smeared}} = E_{\text{true}} + \mathcal{N}(0, \sigma(E_{\text{true}}))
$$
and then fill a histogram with $E_{\text{smeared}}$. This produces a spectrum that resembles the finite resolution of a realistic detector.

Another key aspect of detector response is the presence of thresholds and dead regions. In many experiments, signals below a certain amplitude are not recorded. In ROOT this is easy to represent by applying a cut on energy before filling the histogram, or by applying a cut during analysis. For example, you can select only events with $E_{\text{dep}}$ above some threshold value. The resulting spectrum shows only the part of the response that would trigger the data acquisition system in a real setup. If you know the trigger threshold in terms of channels or photoelectrons, you can translate it back into energy using the gain relation and apply it to the simulated spectrum.

Table: qualitative features and their detector interpretation

Spectrum featurePossible detector interpretation
Sharp peak at known energyFull energy deposition or line from a monoenergetic source
Broad peakLimited resolution or process with intrinsic spread
Low energy tailPartial energy loss, leakage, or incomplete charge collection
Step-like featureAbsorption edge or threshold behavior
Sudden drop at low energyElectronic or software threshold in the detector system

Visual comparison between simulated and measured spectra is very insightful. In ROOT you load both the experimental data and the Geant4-simulated spectrum, potentially with detector resolution and thresholds applied, and draw them on the same canvas. Typically you normalize both to the same integral or to the same area in a reference peak. Then you inspect how well peak positions, widths, and tails agree. Disagreements can guide you to refine the detector model, the physics list, or the response model.

ROOT also provides tools beyond simple plotting to study detector response. For instance, you can use fits to characterize non linearities by comparing peak positions at multiple energies and extracting a calibration curve, often assumed to be linear at first. You can also create two dimensional histograms, such as energy versus position, to see how the response varies across the detector volume. In many detector studies, you investigate non uniform light collection or edge effects that are clearly visible in such 2D spectra.

Throughout all these steps, remember that your Geant4 output represents the ideal interaction of particles with matter, while ROOT plots let you impose realistic detector behavior and directly compare with measurements. Carefully designed energy spectra, combined with appropriate smearing, cuts, and normalization, become one of the main tools to validate that your Geant4 simulation accurately reproduces the detector response you expect.

Views: 9

Comments

Please login to add a comment.

Don't have an account? Register now!