5.5.  Cuts per Region

5.5.1.  General Concepts

Beginning with Geant4 version 5.1, the concept of a region has been defined for use in geometrical descriptions. Details about regions and how to use them are available in Section 4.1.3.1. As an example, suppose a user defines three regions, corresponding to the tracking volume, the calorimeter and the bulk structure of a detector. For performance reasons, the user may not be interested in the detailed development of electromagnetic showers in the insensitive bulk structure, but wishes to maintain the best possible accuracy in the tracking region. In such a use case, Geant4 allows the user to set different production thresholds ("cuts") for each geometrical region. This ability, referred to as "cuts per region", is also a new feature provided by the Geant4 5.1 release. The general concepts of production thresholds were presented in the Section 5.4.

Please note that this new feature is intended only for users who

  1. are simulating the most complex geometries, such as an LHC detector, and
  2. are experienced in simulating electromagnetic showers in matter.

We strongly recommend that results generated with this new feature be compared with results using the same geometry and uniform production thresholds. Setting completely different cut values for individual regions may break the coherent and comprehensive accuracy of the simulation. Therefore cut values should be carefully optimized, based on a comparison with results obtained using uniform cuts.

5.5.2.  Default Region

The world volume is treated as a region by default. A G4Region object is automatically assigned to the world volume and is referred to as the "default region". The production cuts for this region are the defaults which are defined in the UserPhysicsList. Unless the user defines different cut values for other regions, the cuts in the default region will be used for the entire geometry.

Please note that the default region and its default production cuts are created and set automatically by G4RunManager. The user is not allowed to set a region to the world volume, nor to assign other production cuts to the default region.

5.5.3.  Assigning Production Cuts to a Region

In the SetCuts() method of the user's physics list, the user must first define the default cuts. Then a G4ProductionCuts object must be created and initialized with the cut value desired for a given region. This object must in turn be assigned to the region object, which can be accessed by name from the G4RegionStore. An example SetCuts() code follows.

Example 5.10.  Setting production cuts to a region

void MyPhysicsList::SetCuts()
{
  // default production thresholds for the world volume
  SetCutsWithDefault();

  // Production thresholds for detector regions
  G4Region* region;
  G4String regName;
  G4ProductionCuts* cuts;

  regName = "tracker";
  region = G4RegionStore::GetInstance()->GetRegion(regName);
  cuts = new G4ProductionCuts;
  cuts->SetProductionCut(0.01*mm); // same cuts for gamma, e- and e+
  region->SetProductionCuts(cuts);

  regName = "calorimeter";
  region = G4RegionStore::GetInstance()->GetRegion(regName);
  cuts = new G4ProductionCuts;
  cuts->SetProductionCut(0.01*mm,G4ProductionCuts::GetIndex("gamma"));
  cuts->SetProductionCut(0.1*mm,G4ProductionCuts::GetIndex("e-"));
  cuts->SetProductionCut(0.1*mm,G4ProductionCuts::GetIndex("e+"));
  region->SetProductionCuts(cuts);
}