Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
// * *
|
||||
// **********************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4HumanPhantomPhysicsList.cc 70025 2013-05-22 08:43:05Z gcosmo $
|
||||
//
|
||||
#include "G4HumanPhantomPhysicsList.hh"
|
||||
|
||||
@@ -46,139 +46,37 @@
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4ios.hh"
|
||||
// gamma
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
// e-
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4LivermoreIonisationModel.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4LivermoreBremsstrahlungModel.hh"
|
||||
|
||||
// e+
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
G4HumanPhantomPhysicsList::G4HumanPhantomPhysicsList(): G4VUserPhysicsList()
|
||||
#include "G4VModularPhysicsList.hh"
|
||||
#include "G4EmStandardPhysics_option4.hh"
|
||||
|
||||
G4HumanPhantomPhysicsList::G4HumanPhantomPhysicsList(): G4VModularPhysicsList()
|
||||
{
|
||||
SetVerboseLevel(1);
|
||||
emPhysicsList = new G4EmStandardPhysics_option4(1);
|
||||
|
||||
// Alternatively you can substitute this physics list
|
||||
// with the LowEnergy Livermore or LowEnergy Penelope:
|
||||
// emPhysicsList = new G4EmLivermorePhysics();
|
||||
// Low Energy based on Livermore Evaluated Data Libraries
|
||||
//
|
||||
// Penelope physics
|
||||
//emPhysicsList = new G4EmPenelopePhysics();
|
||||
}
|
||||
|
||||
G4HumanPhantomPhysicsList::~G4HumanPhantomPhysicsList()
|
||||
{
|
||||
delete emPhysicsList;
|
||||
}
|
||||
|
||||
void G4HumanPhantomPhysicsList::ConstructParticle()
|
||||
{
|
||||
// In this method, static member functions should be called
|
||||
// for all particles which you want to use.
|
||||
// This ensures that objects of these particle types will be
|
||||
// created in the program.
|
||||
|
||||
ConstructBosons();
|
||||
ConstructLeptons();
|
||||
|
||||
}
|
||||
|
||||
void G4HumanPhantomPhysicsList::ConstructBosons()
|
||||
{
|
||||
// photons
|
||||
G4Gamma::GammaDefinition();
|
||||
}
|
||||
|
||||
void G4HumanPhantomPhysicsList::ConstructLeptons()
|
||||
{
|
||||
// leptons
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
emPhysicsList -> ConstructParticle();
|
||||
}
|
||||
|
||||
void G4HumanPhantomPhysicsList::ConstructProcess()
|
||||
{
|
||||
AddTransportation();
|
||||
ConstructEM();
|
||||
}
|
||||
|
||||
void G4HumanPhantomPhysicsList::ConstructEM()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
// Processes
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
// Photon
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
theRayleigh->SetModel(new G4LivermoreRayleighModel()); //not strictly necessary
|
||||
pmanager->AddDiscreteProcess(theRayleigh);
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
thePhotoElectricEffect->SetModel(new G4LivermorePhotoElectricModel());
|
||||
pmanager->AddDiscreteProcess(thePhotoElectricEffect);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
theComptonScattering->SetModel(new G4LivermoreComptonModel());
|
||||
pmanager->AddDiscreteProcess(theComptonScattering);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
theGammaConversion->SetModel(new G4LivermoreGammaConversionModel());
|
||||
pmanager->AddDiscreteProcess(theGammaConversion);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
// Electron
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc,-1, 1, 1);
|
||||
|
||||
// Ionisation
|
||||
G4eIonisation* eIonisation = new G4eIonisation();
|
||||
eIonisation->SetEmModel(new G4LivermoreIonisationModel());
|
||||
eIonisation->SetStepFunction(0.2, 100*um); //improved precision in tracking
|
||||
pmanager->AddProcess(eIonisation,-1, 2, 2);
|
||||
|
||||
// Bremsstrahlung
|
||||
G4eBremsstrahlung* eBremsstrahlung = new G4eBremsstrahlung();
|
||||
eBremsstrahlung->SetEmModel(new G4LivermoreBremsstrahlungModel());
|
||||
pmanager->AddProcess(eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
// Positron
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc,-1, 1, 1);
|
||||
|
||||
// Ionisation
|
||||
G4eIonisation* eIonisation = new G4eIonisation();
|
||||
eIonisation->SetStepFunction(0.2, 100*um); //
|
||||
pmanager->AddProcess(eIonisation, -1, 2, 2);
|
||||
|
||||
//Bremsstrahlung (use default, no low-energy available)
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-1, 3);
|
||||
|
||||
//Annihilation
|
||||
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1, 4);
|
||||
|
||||
}
|
||||
}
|
||||
emPhysicsList -> ConstructProcess();
|
||||
}
|
||||
|
||||
void G4HumanPhantomPhysicsList::SetCuts()
|
||||
@@ -187,7 +85,7 @@ void G4HumanPhantomPhysicsList::SetCuts()
|
||||
// Secondary particles with a range bigger than 0.1 mm
|
||||
// are generated; otherwise their energy is considered deposited locally
|
||||
|
||||
defaultCutValue = 0.1 * mm;
|
||||
defaultCutValue = 1. * mm;
|
||||
|
||||
const G4double cutForGamma = defaultCutValue;
|
||||
const G4double cutForElectron = defaultCutValue;
|
||||
|
||||
Reference in New Issue
Block a user