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 currently only 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 » advanced 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 for eg. the following lines:

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

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.

/process/em/auger true

For a full simulation of auger cascades from Geant4 10.2 Beta, the following additional command is available:

/process/em/augerCascade true

and should be used in combination with

/process/em/deexcitationIgnoreCut true

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 :

#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. The user can modify this class in order to dump at pre-step position if needed.

  • How to accelerate the simulation of electron or proton ionization ?

This feature (which is not activated by default) is available since Geant4 10 Beta in the G4DNABornIonisationModel class and should be applied simultaneously to electrons and protons, directly in a user physics list, using the following lines:

// *** Ionisation for electrons ***

G4DNAIonisation* theDNAIonisationProcess = new G4DNAIonisation("e-_G4DNAIonisation");
theDNAIonisationProcess->SetEmModel(new G4DNABornIonisationModel());
ph->RegisterProcess(theDNAIonisationProcess, particle);

// *** Ionisation for protons ***

G4DNAIonisation* theDNAIonisationProcess = new G4DNAIonisation("p_G4DNAIonisation");

theDNAIonisationProcess->SetEmModel(new G4DNARuddIonisationModel(),1);
theDNAIonisationProcess->SetEmModel(new G4DNABornIonisationModel(),2);
ph->RegisterProcess(theDNAIonisationProcess, particle);

Note that the G4DNARuddIonisationExtendedModel class includes by default the usage of cumulated differential cross section for a faster computation of ionization for protons, hydrogen, alpha particles and their charged states and ions.

The Geant4-DNA
G4EmDNAPhysics_option2 and G4EmDNAPhysics_option5 constructors include these classes.

  • How to accelerate the simulation of elastic scattering for electrons ?

We are providing an alternative preliminary constructor, named as
G4EmDNAPhysics_option1 available from Geant4 10.1BETA, which simulates electron elastic scattering using the so-called « WentzelVI » model initially available in Geant4 « standard » electromagnetic Physics, and now extended down to the eV scale (« G4LowEWentzelVIModel » model). This should allow for a faster simulation of elastic scattering but with reduced accuracy. It is a beta development version and we do not guarantee its accuracy yet.

  • 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() );
// ph is G4PhysicsListHelper
ph->RegisterProcess(theDNAVibProcess, particle);

  • How to combine Geant4-DNA processes with other Geant4 processes ?

Please refer to the « microdosimetry » extended/medical/dna example.

  • 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 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 (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.