Import Geant4 10.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 11:51:14 +02:00
parent e2d2f9810a
commit 286caacf06
12421 changed files with 730077 additions and 502383 deletions
@@ -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;