Cuts per Region¶
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 Sub-detector Regions. 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 Production Threshold versus Tracking Cut.
Please note that this new feature is intended only for users who
are simulating the most complex geometries, such as an LHC detector, and
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.
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.
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.
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, proton, 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+"));
cuts->SetProductionCut(0.1*mm,G4ProductionCuts::GetIndex("proton"));
region->SetProductionCuts(cuts);
}