Frequently Asked Questions on Physics
This page explains several additional features available to users for the development of Geant4-DNA-based applications.
Material definition and density change
Geant4-DNA physics models can be used in liquid water defined in Geant4 as the NIST material G4_WATER. To do so, one may use the following lines in the DetectorConstruction class :
// Water is defined from NIST material database
G4NistManager * man = G4NistManager::Instance();
G4Material * H2O = man->FindOrBuildMaterial("G4_WATER");
// Default materials in setup.
waterMaterial = H2O;
Density of water is taken by default as 1 g/cm3. In case you need to change the density of water, you may look into the « dnaphysics » extended example DetectorConstruction class:
// If one wishes to test other density value for water material, one should use instead:
G4Material * H2O = man->BuildMaterialWithNewDensity("G4_WATER_MODIFIED","G4_WATER »,1.1*g/cm/cm/cm);
// Note: any string for "G4_WATER_MODIFIED" parameter is accepted and "G4_WATER" parameter should not be changed
When using Geant4-DNA processes, the geometrical tolerances of the setup must be coherent with the size of the setup when working with nanometer size dimensions. For this, in the DetectorConstruction class Construct() method, you may use the following lines:
G4double fWorldLength = 100. *nm;
G4cout << "Surface tolerance = " << G4GeometryTolerance::GetInstance()->GetSurfaceTolerance()/nm
<< " nm - Radial tolerance = " << G4GeometryTolerance::GetInstance()->GetRadialTolerance()/nm << " nm" << G4endl;
How to activate Auger electron production ?
Use the following User Interface commands, provided that your PhysicsList class uses the G4EmDNAPhysics Physics constructor.
For a full simulation of Auger cascades, the following additional command is available:
and should be used in combination with
Consult this page for further details about the simulation of atomic deexcitation in Geant4.
All Geant4-DNA physics constructors activate by default Auger cascade simulation.
How to kill particles below a given energy threshold for faster performance ?
In case the user needs to kill particles with energies below a selected energy threshold value, one may instantiate a G4UserLimits object in the DetectorConstruction class and define the process G4UserSpecialCuts in the user PhysicsList class for the affected particles. All details are given in the Geant4 User's Guide For Application Developers.
For example, in order to kill all electrons below 9 eV, one may use the following lines. All electron tracks below 9 eV will be killed and electrons will deposit locally their total energy at the end of the current step :
- in the DetectorConstruction class, one can choose to apply this limit to the World volume :
- in the PhysicsList class, for example in the ConstructProcess() method, one can add :
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
An alternative approach is to use a dedicated process that will act similarly; this is illustrated in the « microdosimetry » extended example, using the G4ElectronCapture process. By default, energy is dumped at post-step position of the step. The user can modify this class in order to dump at pre-step position if needed.
How to decrease the low energy limit of the vibrational excitation model for electrons ?
// Vibrational excitation (can be extended down to 0.025 eV)
G4DNAVibExcitation* theDNAVibProcess = new G4DNAVibExcitation("e-_G4DNAVib");
theDNAVibProcess->SetEmModel(new G4DNASancheExcitationModel() );
// ph is G4PhysicsListHelper
How to combine Geant4-DNA processes with other Geant4 processes ?
Please refer to the « dnaphysics » or « microdosimetry » extended/medical/dna examples.
How to access Geant4-DNA total cross sections ?
It is possible to retrieve total cross sections using a G4EmCalculator object. For example, in order to retrieve the total cross section of a process with name procName, do as follows :
G4double density = material->GetDensity();
G4double massSigma = emCalculator.ComputeCrossSectionPerVolume(energy,particle,procName,material)/density;
G4cout << G4BestUnit(massSigma, "Surface/Mass") << G4endl;
A good example is extended example TestEm14 (located in $G4INSTALL/examples/extended/electromagnetic), in particular in the RunAction class.
Note that in order to use the ComputeCrossSectionPerVolume method from the G4EmCalculator class for alpha particles (G4Alpha), it is necessary to add the following condition to G4EmCalculator::UpdateParticle in G4EmCalculator.cc (located in $G4INSTALL/source/processes/electromagnetic/utils/src)
&& currentParticleName != "alpha"
Where are Geant4 units defined ?
Units can be found in the source/global/management/include/G4SystemOfUnits.hh file.
How to change the sequence of random numbers?
Try the User Interface command:
/random/setSeeds N M
More details here.