KAHIBARO
Discord Login Register

29.3. Production Cuts

Concept of Production Cuts

In Geant4, a production cut is a length threshold that controls when secondary particles are explicitly created and tracked. Instead of thinking directly in terms of an energy threshold, Geant4 defines cuts as distances, for example 0.1 mm. For each material and particle type, Geant4 converts this length into an approximate energy threshold using stopping power tables. If a potential secondary particle would have a range shorter than the cut value, Geant4 does not create that secondary. The energy that would have gone into the secondary is instead deposited locally or treated by a continuous process.

This mechanism lets you control the tradeoff between simulation accuracy and CPU time. Shorter cuts lead to more secondaries, finer detail and higher precision, but also much longer run times and larger memory use. Longer cuts suppress low range secondaries, speed up the simulation and reduce data volume, but may wash out fine structure such as very thin layers, small energy deposits or very local dose gradients.

Important rule: A production cut is defined in units of length, not energy. Geant4 converts cut lengths to approximate energy thresholds internally based on material and particle type.

How Production Cuts Affect the Simulation

Production cuts act at the point where continuous energy loss and discrete secondaries meet. For charged particles, energy loss is mostly treated as a continuous process. At the same time, there can be discrete events such as delta electron production, bremsstrahlung photons or nuclear secondaries. The production cut determines whether such secondaries are created as individual tracks or whether their effect is absorbed into the continuous description.

For example, an electron passing through silicon can knock out other electrons. If the range of a knocked out electron is greater than the electron cut in silicon, Geant4 will create a secondary electron track. If the range is shorter than the cut, its energy is added to the local energy deposit and no new track is created. Similarly, production of low energy gammas, electrons, or positrons from interactions will be suppressed if their range is below the relevant cuts.

The effect is visible in several aspects of a simulation. With tight cuts, you will see many short tracks, more detailed ionization patterns, and more secondaries near interfaces or in thin layers. With loose cuts, tracks look smoother, there are fewer secondaries, and energy deposition is more smeared. Dose distributions in thick, homogeneous materials are usually not very sensitive to moderate changes in cuts, but simulations of thin detectors, microdosimetry, or very fine structures can depend strongly on the chosen cut values.

Production cuts do not remove interactions. They only control the explicit creation of low range secondary tracks. The corresponding energy is still conserved and deposited.

Default Production Cuts

Geant4 provides a global default range cut that applies to all regions and most particles if you do not specify anything else. In many reference physics lists, the default cut is of the order of 0.7 mm or 1 mm, which is suitable for large scale detectors or shielding studies but not for very small structures.

You typically set the default cut value in your physics list class, which derives from a Geant4 base physics class. The default method looks conceptually like this.

cpp
void MyPhysicsList::SetCuts()
{
  // Set the same default cut length for all particles
  SetDefaultCutValue(0.7 * mm);
  // Apply default cuts to gamma, electron, positron, etc.
  G4VUserPhysicsList::SetCuts();
}

You can also provide separate default cuts per particle type using dedicated methods such as SetCutValue(value, "particleName") inside SetCuts(). For example, you might want a tighter cut for electrons than for gammas.

When you use a reference physics list such as FTFP_BERT, Geant4 already provides a SetCuts() implementation with a reasonable default. However, you can still change the global default cut via macro commands at run time, for example /run/setCut 1 mm before /run/initialize, or by defining regions and region specific cuts, which override the global default.

Always check what the default cut is in the physics list you use. For small detectors or microdosimetry, the built in default can be far too large.

Region Based Cuts

Global cuts treat the entire geometry in the same way, which is often not optimal. A typical detector has small, high resolution components where you need fine tracking, and large support structures where detailed tracking of low energy particles is unnecessary. Region based cuts solve this by allowing different cut values in different parts of the geometry.

A region in Geant4 groups one or more logical volumes. You can assign region specific production cuts that override the global default in those volumes. The usual workflow is to create a G4Region, attach volumes to it, then create a G4ProductionCuts object and assign it to the region.

An example pattern in your detector construction looks like this.

cpp
// Create a region for a sensitive detector volume
auto detRegion = new G4Region("DetectorRegion");
detRegion->AddRootLogicalVolume(detLogical);  // detLogical is your detector logical volume
// Define region specific cuts
auto detCuts = new G4ProductionCuts();
detCuts->SetProductionCut(0.01 * mm, "gamma");
detCuts->SetProductionCut(0.01 * mm, "e-");
detCuts->SetProductionCut(0.01 * mm, "e+");
// Attach cuts to the region
detRegion->SetProductionCuts(detCuts);

In this example, gamma, electron, and positron production cuts are set to 0.01 mm only in the detector region. All other parts of the geometry still use the global default. That way, the simulation tracks low range secondaries in the detector precisely, while ignoring them in the surrounding support structures.

Region based cuts are especially important in thick shielding, large phantoms, or complex detector assemblies. You can keep tight cuts in small, critical volumes and relax them in big, less interesting volumes, often reducing run times by large factors while preserving the quality of the results where it matters.

Region based cuts override the global default only in the volumes that belong to that region. Be sure that all critical volumes are added to the correct region, or they will silently use the coarser global cuts.

Choosing Appropriate Cut Values

Selecting realistic and efficient production cuts is a balance between physics needs and computing resources. There is no single correct value, but there are practical guidelines that help you choose cuts sensibly.

First, relate the cut length to the size of the structures you want to resolve. As a rule of thumb, you want the cut smaller than the smallest relevant dimension in the region. If you simulate a 1 mm thick silicon detector, using a 1 mm cut in that volume is usually too coarse, because secondaries with ranges smaller than the detector thickness will be suppressed. A cut of 0.01 mm or 0.1 mm is often more appropriate.

Second, consider the material. For a given cut length, the corresponding energy threshold differs between materials. In low density materials such as air, a 1 mm cut corresponds to a relatively high energy threshold, while in high density materials such as lead, the same cut corresponds to much lower energies. Geant4 has helper commands such as /cuts/printRange and /cuts/printCut that let you check the mapping between range and energy for given materials and particles. Use those to understand what your length cuts mean in terms of energy.

Third, focus precision where it actually matters. If you are studying total dose in a thick water phantom, moderate cuts such as 0.5 mm or 1 mm are often enough. If you are studying surface dose, microdosimetry, or very thin layers, you may need cuts of micrometers or less, at least in those regions. For silicon pixel detectors with 50 µm thickness, cuts of a few micrometers in the active region are common.

You should also perform sensitivity studies. Run a small number of events with different cut values and compare observables such as dose profiles, energy spectra, or hit patterns. When you find that decreasing the cut further does not change the result significantly but increases CPU time, you have reached a reasonable compromise.

Finally, remember that cuts for different particle types can be tuned separately. For example, you can use tighter cuts for electrons and positrons, which are responsible for most of the energy deposition detail, and looser cuts for gammas if low energy photons are not critical to your analysis.

Do not automatically use extremely small cuts everywhere. Very tight cuts can slow the simulation by large factors without improving the physics result in volumes where fine detail is not needed.

Performance vs Accuracy Tradeoffs

Production cuts are one of the main levers to tune Geant4 performance. Decreasing cuts generally increases the number of steps and secondaries, which increases CPU time and memory consumption. Increasing cuts reduces the number of secondaries and steps, which speeds up the simulation but reduces detail. The balance you choose depends on your specific application.

For large scale detectors or shielding studies, high level features such as total flux, transmission, and overall dose distributions are often insensitive to the exact low range secondary production. In these cases, you can use relatively large cuts, for example a few millimeters in bulk materials, and still obtain reliable results quickly.

For small detectors, fine segmentation, microdosimetry, or detailed detector response, low energy secondaries and their local behavior are essential. You must use smaller cuts in the active regions, possibly in the micrometer range, to correctly reproduce effects such as charge sharing, surface dose, or fine structure in energy deposition.

An efficient strategy is to combine region based cuts with this understanding. Use small cuts only where necessary and keep cuts large in volumes that just serve as support or shielding. You can also combine cut tuning with other performance techniques introduced in the broader chapter, such as adjusting physics list options or using multithreading, to reach your desired turnaround time.

It is important to validate any chosen set of cuts. Whenever you change cut values significantly, rerun validation checks such as comparison with analytical calculations, reference data, or more detailed simulations. If key observables stay within acceptable differences while performance improves, you have a successful optimization.

Always treat production cuts as a controlled approximation. Any change that speeds up the simulation must be checked against your physics goals to ensure that the accuracy remains sufficient for your study.

Views: 12

Comments

Please login to add a comment.

Don't have an account? Register now!