KAHIBARO
Discord Login Register

30.6. Physics List Problems

Recognizing Physics List Problems

Physics list problems often show up as simulations that run without crashing but give results that are clearly unphysical or unexpectedly empty. Typical symptoms include particles passing through matter without interacting, missing secondary particles, zero energy deposition in volumes that should be active, or cross sections that appear completely wrong as a function of energy.

When you suspect a physics list problem, the most important first step is to ask whether the chosen physics list actually contains the particles and processes that your scenario requires, and whether production cuts and energy ranges are appropriate for those particles and materials. Many issues come from a physics list that is partly correct but incomplete for the specific application, for example missing low energy electromagnetic extensions or thermal neutron treatment.

Common Symptoms of Incorrect Physics

One common symptom is the complete absence of expected interactions. For example, gamma rays may traverse a thick lead shield without any Compton scattering or photoelectric absorption, or protons may travel unrealistically far in water before stopping. In such cases, the electromagnetic or hadronic processes that should be active are often disabled or not registered for the relevant particles.

Another frequent symptom is that secondaries are missing or extremely rare. You might expect abundant electrons, photons, or neutrons created in a target, but see only primaries with very small or no secondary multiplicity. This often indicates that some production thresholds are too high, or that the hadronic or electromagnetic models do not cover the energy range you simulate.

Sometimes the simulation produces energy deposition, but the shape or magnitude is qualitatively wrong. For example, a depth dose curve in water may show no Bragg peak for protons, or neutron dose may be almost constant regardless of shielding material. Such behavior often reveals that you chose a physics list tailored for another energy range, or one that omits key process components like neutron inelastic scattering or ion stopping.

Finally, you may observe strange track behavior such as extremely large step lengths in dense materials, particles that appear to oscillate, or energy deposition localized in very few large steps instead of many smaller ones. Although geometry problems can cause similar symptoms, such track patterns often point toward problems in electromagnetic step limitation or multiple scattering configurations in the physics list.

Choosing an Appropriate Physics List

Choosing a physics list is not a cosmetic decision, it defines which particles exist in your simulation and how they interact with matter. Geant4 provides reference physics lists such as FTFP_BERT and QGSP_BIC that are tuned and tested for broad classes of applications, and in most beginner projects these should be preferred over custom hand assembled lists.

For applications involving hadrons in the energy range from a few tens of MeV up to many GeV, such as calorimetry, shielding studies, or general high energy experiments, FTFP_BERT is a robust default choice. For some cases with detailed neutron physics or particular legacy workflows, QGSP_BERT or QGSP_BIC may be more appropriate. For pure electromagnetic studies such as gamma detectors, X ray imaging, or electron beams in matter, you can use an electromagnetic only list such as FTFP_BERT_EMV or one of the specialized EM options that control step sizes and multiple scattering treatment.

In medical physics, a list like QGSP_BIC_EMY or FTFP_BERT_EMZ is often used to improve electromagnetic accuracy, especially for dose calculations. For low energy neutron applications or thermalized neutron transport in materials like water or biological tissue, you usually need physics lists with high precision neutron models, commonly denoted with suffixes such as _HP, for example QGSP_BERT_HP.

When you choose a physics list, always confirm that it:

  1. Covers the energy range of your primaries and secondaries.
  2. Includes the main particle types present in your application.
  3. Contains the electromagnetic and hadronic models required for those particles and materials.

If you create your own physics list class, for example by inheriting from G4VModularPhysicsList, you must be especially careful to register all needed physics constructors. A common error is to add electromagnetic and decay physics but forget hadronic physics or optical processes. In such cases the simulation may compile and run but produce physically meaningless results.

Verifying Active Particles and Processes

Once a physics list is chosen or implemented, you should verify which particles and processes are actually active. Geant4 provides runtime commands that help you inspect this information without modifying your code.

You can list all defined particles with a command in the particle table directory. The output will show particle names, types, and basic properties. If your simulation relies on specific ions, optical photons, or rare particles, verify that they appear there. Missing particles usually indicate that the physics list is too minimal or that required physics constructors were not registered.

You can inspect processes attached to each particle using commands that print the process manager contents. For example, you can request all processes acting on gamma, electron, or proton. The resulting list should include ionization, multiple scattering, bremsstrahlung, and relevant hadronic processes like elastic and inelastic scattering, capture, or fission where appropriate.

If important processes are missing for a particle, you must either switch to a more complete reference physics list or modify the custom physics list to register the corresponding physics modules. For instance, if gamma photons do not have photoelectric or Compton processes attached, they will travel without interaction except for geometrical boundaries, which is clearly unphysical in most materials.

For advanced debugging, you can increase process level verbosity. Geant4 allows you to print information about which process is limiting the step, which process created secondaries, and what cross sections are used. By examining a few representative tracks, you can confirm that expected interactions such as Compton scattering, pair production, or hadron inelastic collisions actually occur at approximate frequencies consistent with physical intuition.

If a particle has no electromagnetic or hadronic processes listed in its process manager, it will propagate mostly by crossing geometry boundaries and will not lose energy or produce secondaries. This is almost always an error in the physics configuration.

Production Cuts and Range Thresholds

Production cuts define thresholds below which secondary particles are not generated explicitly. They are not energy cuts in the strict sense, but range cuts: each cut is a length, and Geant4 converts it into an energy threshold for each material and particle type. If these cuts are too large, many secondary electrons and photons will not be produced as separate tracks, and their energy will instead be deposited locally.

For detector simulations that require realistic secondary spectra or spatial energy distributions, unsuitable cuts can distort results even if the underlying physics models are correct. For example, using a 1 mm range cut in a thin silicon detector of thickness 300 micrometers may suppress most secondaries, because the threshold range is larger than the entire detector.

When you observe that secondaries are missing or that energy deposition looks too coarse, check the global and region specific production cuts. For gamma, electron, and positron, the typical default cut is around 1 mm in many reference lists, which is acceptable for calorimeters but not for microdosimetry or thin semiconductor detectors. For such detectors, you often need cuts of the order of a few micrometers or even smaller.

You can define different cuts per region, so that sensitive areas have fine thresholds while less important surrounding volumes keep larger cuts to maintain performance. For example, you might use micrometer cuts inside a sensor, but millimeter cuts in outer support material and shielding.

The relationship between range cut and energy threshold depends on material density and atomic composition. A 1 mm cut in lead corresponds to a very different energy threshold than 1 mm in water. If you need precise control, you can use Geant4 utilities to print the conversion table from range cuts to energies for your materials. This helps you understand how much kinetic energy is lost to non explicit processes.

Large production cuts can:

  1. Suppress low energy secondary particles.
  2. Artificially increase local energy deposition.
  3. Distort detector response and dose distributions.
    Always check that the cut values are small compared to the characteristic dimensions of sensitive volumes.

If your results become unrealistic when you change the cut values, this is often a signal that the simulation is sensitive to low energy details and that you may need a more specialized electromagnetic or hadronic physics configuration in addition to more appropriate cuts.

Energy Ranges and Model Validity

Physics models in Geant4 are not valid across all energies. Instead, the toolkit combines several models, each designed for a certain energy range, to cover the full spectrum of interest. For example, the Bertini cascade model can handle hadrons up to a few GeV, while the FTFP string model covers higher energies. Similarly, standard electromagnetic models are tuned for broad ranges but may have limited accuracy in specific low energy regions, where dedicated low energy models can be enabled.

If you run simulations with energies outside the tuned range of the models present in your physics list, you may see incorrect cross sections, unrealistic multiplicities, or missing processes. For example, using a hadronic list designed for therapy energies to simulate tens of TeV cosmic rays will produce unreliable results. Conversely, using a high energy list without thermal neutron extensions for a thermal reactor problem will not reproduce moderated neutron behavior.

To debug such issues, compare your primary energy range with the ranges of models in your chosen physics list. The Geant4 physics reference manual describes these ranges, and many reference lists are named to suggest their optimum domains. If your application focuses on very low energies, for example keV photons in medical imaging or electron microscopy, consider electromagnetic lists with extended low energy models.

You can experiment with different EM options that modify multiple scattering step limitation and cross section behavior for greater precision. However, finer models and lower cuts increase computation time. A pragmatic debugging approach is to start with a general reference list, then switch to a more specialized variant, and examine whether your key observables such as dose, efficiency, or spectrum shape change in a plausible way.

Misconfigured model transitions can produce discontinuities, such as sudden changes in interaction rates around a particular energy. If you see sharp features in spectra or cross sections at energies corresponding to model boundaries, suspect an issue in model configuration or an unsuitable physics list for that region.

Conflicting or Duplicate Processes

Another category of physics list problems appears when multiple processes of the same type are incorrectly registered for a single particle. For example, if you manually add electromagnetic processes in a custom physics list while also using a modular EM constructor, you may accidentally attach two versions of ionization or multiple scattering to electrons. In such cases, the simulation might behave unpredictably or inefficiently, as both processes compete to limit the step and deposit energy.

To avoid these conflicts, rely on the modular physics constructors provided by Geant4 whenever possible, instead of manually registering low level processes. If you must add a custom process, make sure that it does not duplicate existing functionality unless you explicitly intend to replace or supplement a process. When you extend or override, understand how process ordering works, for example the order of along step, post step, and at rest processes.

You can detect duplicates by printing the list of processes for a given particle and checking for multiple instances of similar process names. If you see two ionization processes for the same particle, revise your physics list registration code. Remove redundant custom registrations or opt out of automatic constructors that already add the processes you need.

Sometimes users add optical photon processes or decay processes twice, especially when assembling a physics list from multiple code examples. This can cause excessive stepping, abnormal timing behavior, or unexpected interactions. When debugging, start from a clean reference physics list and then add one custom module at a time, verifying the process table after each addition to keep configuration understandable.

Do not mix manual per process registration with modular physics constructors unless you completely understand which processes each constructor adds. Duplicated processes for the same particle can lead to non transparent and unphysical behavior.

A safe strategy for beginners is to create a physics list that either uses only reference constructors, or a fully manual list based on documented examples, but not a partial combination of both.

Comparing Against Reference Physics Lists

When you suspect that your custom or modified physics list is the source of a problem, one of the most effective debugging strategies is to temporarily replace it with a standard reference physics list and compare results. If the unexpected behavior disappears with the reference list, the issue lies within your custom configuration; if the problem persists, the cause is likely in geometry, source definition, or scoring.

To perform such a comparison, configure your main program to optionally instantiate different physics list classes based on a macro command or a compile time option. For instance, you can switch between your custom list and FTFP_BERT using a runtime command that sets the physics list name before initialization. Then run the same simulation macro, with identical geometry and source conditions, and compare observables such as energy deposition spectra, track multiplicities, or dose distributions.

You can record simple histograms for key quantities under both configurations, using the same random seed, then overlay them with external tools. Large differences in overall scale, missing peaks, or different attenuation lengths will help pinpoint which parts of your physics configuration are responsible.

In some cases, you may wish to examine process level statistics. You can enable verbose logging of process invocations and count how often certain interactions occur with each physics list. If your custom list exhibits orders of magnitude fewer Compton events compared to the reference list in the same geometry, you know that the relevant process configuration is flawed.

By progressively moving from the reference list toward your desired custom list, adding or removing modules step by step, you can localize the exact change that introduces unphysical results. This incremental approach is often faster and more reliable than guessing which piece of code is wrong.

Finally, keep in mind that reference physics lists are maintained by the Geant4 collaboration and are tested against a wide range of benchmark data. Whenever possible, align your configuration with one of these lists and limit custom modifications to well justified adjustments for your particular application, rather than wholesale rewrites of the physics content.

Views: 11

Comments

Please login to add a comment.

Don't have an account? Register now!