Example of Physics list that uses a G4EmDNAPhysics object
- Declaration file (eg. PhysicsList.hh)
#ifndef PhysicsList_h
#define PhysicsList_h 1
#include "G4VUserPhysicsList.hh"
class G4VPhysicsConstructor;
class PhysicsList: public G4VUserPhysicsList
{
public:
PhysicsList();
~PhysicsList();
void SetCuts();
void ConstructParticle();
void ConstructProcess();
private:
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4VPhysicsConstructor* emPhysicsList;
};
#endif
#include "PhysicsList.hh"
#include "G4EmDNAPhysics.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
PhysicsList::PhysicsList(): G4VUserPhysicsList()
{
defaultCutValue = 1*nanometer;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
cutForPositron = defaultCutValue;
// these cuts are ignored since all Geant4-DNA processes are discrete
emPhysicsList = new G4EmDNAPhysics();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
PhysicsList::~PhysicsList()
{
delete emPhysicsList;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void PhysicsList::ConstructParticle()
{
emPhysicsList->ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void PhysicsList::ConstructProcess()
{
AddTransportation();
emPhysicsList->ConstructProcess();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void PhysicsList::SetCuts()
{
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
}