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



  • Geometrical tolerances


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:

#include "G4GeometryManager.hh"
#include "G4GeometryTolerance.hh"
...

G4double fWorldLength = 100. *nm;
G4GeometryManager::GetInstance()->SetWorldMaximumExtent(fWorldLength);
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.

/process/em/auger true

For a full simulation of Auger cascades, the following additional command is available:

/process/em/augerCascade true

and should be used in combination with

/process/em/deexcitationIgnoreCut true

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 Book 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 :

#include "G4UserLimits.hh"
...
logicWorld->SetUserLimits(new G4UserLimits(DBL_MAX,DBL_MAX,DBL_MAX,
9*eV));

- in the PhysicsList class, for example in the ConstructProcess() method, one can add :

#include "G4UserSpecialCuts.hh"
#include "G4PhysicsListHelper.hh"
#include "G4Electron.hh"

...
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
ph->RegisterProcess(new G4UserSpecialCuts(),G4Electron::ElectronDefinition());
...

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 ?

This should be done in a local PhysicsList at the own risk of the user since this model is not experimentally validated at very low energies. WARNINGS at initialization will displayed.

// Vibrational excitation (can be extended down to 0.025 eV)

G4DNAVibExcitation* theDNAVibProcess = new G4DNAVibExcitation("e-_G4DNAVib");
theDNAVibProcess->SetEmModel(new G4DNASancheExcitationModel() );
((G4DNASancheExcitationModel*)(theDNAVibProcess->EmModel()))->
ExtendLowEnergyLimit(0.025*eV);
// ph is G4PhysicsListHelper
ph->RegisterProcess(theDNAVibProcess, particle);


  • 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 :

#include "G4EmCalculator.hh"
...
G4EmCalculator emCalculator;
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 Run 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.
RapidWeaver Icon

Made in RapidWeaver