Import Geant4 10.5.0.beta source tree
This commit is contained in:
@@ -23,18 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/// \file electromagnetic/TestEm14/src/PhysListEmLivermore.cc
|
||||
/// \file electromagnetic/TestEm18/src/PhysListEmLivermore.cc
|
||||
/// \brief Implementation of the PhysListEmLivermore class
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmLivermore.cc 100278 2016-10-17 08:34:03Z gcosmo $
|
||||
// $Id: PhysListEmLivermore.cc 108013 2017-12-19 09:03:56Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmLivermore.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
|
||||
// gamma
|
||||
|
||||
@@ -74,6 +76,8 @@
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
// deexcitation
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
|
||||
@@ -83,7 +87,19 @@
|
||||
|
||||
PhysListEmLivermore::PhysListEmLivermore(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetMinEnergy(10*eV);
|
||||
param->SetMaxEnergy(10*TeV);
|
||||
param->SetNumberOfBinsPerDecade(10);
|
||||
param->SetBuildCSDARange(true);
|
||||
param->SetMaxEnergyForCSDARange(10*TeV);
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
|
||||
param->SetVerbose(0);
|
||||
param->Dump();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -94,13 +110,14 @@ PhysListEmLivermore::~PhysListEmLivermore()
|
||||
|
||||
void PhysListEmLivermore::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
|
||||
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// Add Livermore EM Processes
|
||||
|
||||
auto particleIterator=GetParticleIterator();
|
||||
particleIterator->reset();
|
||||
while( (*particleIterator)() ){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
//Applicability range for Livermore models
|
||||
@@ -115,28 +132,28 @@ void PhysListEmLivermore::ConstructProcess()
|
||||
photModel = new G4LivermorePhotoElectricModel();
|
||||
photModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
phot->AddEmModel(0, photModel);
|
||||
pmanager->AddDiscreteProcess(phot);
|
||||
list->RegisterProcess(phot, particle);
|
||||
|
||||
G4ComptonScattering* compt = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel*
|
||||
comptModel = new G4LivermoreComptonModel();
|
||||
comptModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
compt->AddEmModel(0, comptModel);
|
||||
pmanager->AddDiscreteProcess(compt);
|
||||
list->RegisterProcess(compt, particle);
|
||||
|
||||
G4GammaConversion* conv = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel*
|
||||
convModel = new G4LivermoreGammaConversionModel();
|
||||
convModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
conv->AddEmModel(0, convModel);
|
||||
pmanager->AddDiscreteProcess(conv);
|
||||
list->RegisterProcess(conv, particle);
|
||||
|
||||
G4RayleighScattering* rayl = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel*
|
||||
raylModel = new G4LivermoreRayleighModel();
|
||||
raylModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
rayl->AddEmModel(0, raylModel);
|
||||
pmanager->AddDiscreteProcess(rayl);
|
||||
list->RegisterProcess(rayl, particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
@@ -146,46 +163,42 @@ void PhysListEmLivermore::ConstructProcess()
|
||||
eIoniModel = new G4LivermoreIonisationModel();
|
||||
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
|
||||
pmanager->AddProcess(eIoni, -1,-1, 1);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4LivermoreBremsstrahlungModel*
|
||||
eBremModel = new G4LivermoreBremsstrahlungModel();
|
||||
eBremModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eBrem->AddEmModel(0, eBremModel);
|
||||
pmanager->AddProcess(eBrem, -1,-1, 2);
|
||||
list->RegisterProcess(eBrem, particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4eIonisation, -1,-1, 1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1, 2);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
|
||||
list->RegisterProcess(new G4eIonisation, particle);
|
||||
list->RegisterProcess(new G4eBremsstrahlung, particle);
|
||||
list->RegisterProcess(new G4eplusAnnihilation, particle);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1,-1, 1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 3);
|
||||
list->RegisterProcess(new G4MuIonisation, particle);
|
||||
list->RegisterProcess(new G4MuBremsstrahlung, particle);
|
||||
list->RegisterProcess(new G4MuPairProduction, particle);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1,-1, 1);
|
||||
list->RegisterProcess(new G4ionIonisation, particle);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1,-1, 1);
|
||||
list->RegisterProcess(new G4hIonisation, particle);
|
||||
}
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
de->SetFluo(true);
|
||||
de->SetAuger(false);
|
||||
de->SetPIXE(false);
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,18 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/// \file electromagnetic/TestEm14/src/PhysListEmPenelope.cc
|
||||
/// \file electromagnetic/TestEm18/src/PhysListEmPenelope.cc
|
||||
/// \brief Implementation of the PhysListEmPenelope class
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmPenelope.cc 100278 2016-10-17 08:34:03Z gcosmo $
|
||||
// $Id: PhysListEmPenelope.cc 108013 2017-12-19 09:03:56Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmPenelope.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
|
||||
// gamma
|
||||
|
||||
@@ -75,6 +77,8 @@
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
// deexcitation
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
|
||||
@@ -84,7 +88,19 @@
|
||||
|
||||
PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetMinEnergy(10*eV);
|
||||
param->SetMaxEnergy(10*TeV);
|
||||
param->SetNumberOfBinsPerDecade(10);
|
||||
param->SetBuildCSDARange(true);
|
||||
param->SetMaxEnergyForCSDARange(10*TeV);
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
|
||||
param->SetVerbose(0);
|
||||
param->Dump();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -95,13 +111,14 @@ PhysListEmPenelope::~PhysListEmPenelope()
|
||||
|
||||
void PhysListEmPenelope::ConstructProcess()
|
||||
{
|
||||
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// Add standard EM Processes
|
||||
|
||||
auto particleIterator=GetParticleIterator();
|
||||
particleIterator->reset();
|
||||
while( (*particleIterator)() ){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
//Applicability range for Penelope models
|
||||
@@ -116,28 +133,28 @@ void PhysListEmPenelope::ConstructProcess()
|
||||
photModel = new G4PenelopePhotoElectricModel();
|
||||
photModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
phot->AddEmModel(0, photModel);
|
||||
pmanager->AddDiscreteProcess(phot);
|
||||
list->RegisterProcess(phot, particle);
|
||||
|
||||
G4ComptonScattering* compt = new G4ComptonScattering();
|
||||
G4PenelopeComptonModel*
|
||||
comptModel = new G4PenelopeComptonModel();
|
||||
comptModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
compt->AddEmModel(0, comptModel);
|
||||
pmanager->AddDiscreteProcess(compt);
|
||||
list->RegisterProcess(compt, particle);
|
||||
|
||||
G4GammaConversion* conv = new G4GammaConversion();
|
||||
G4PenelopeGammaConversionModel*
|
||||
convModel = new G4PenelopeGammaConversionModel();
|
||||
convModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
conv->AddEmModel(0, convModel);
|
||||
pmanager->AddDiscreteProcess(conv);
|
||||
list->RegisterProcess(conv, particle);
|
||||
|
||||
G4RayleighScattering* rayl = new G4RayleighScattering();
|
||||
G4PenelopeRayleighModel*
|
||||
raylModel = new G4PenelopeRayleighModel();
|
||||
raylModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
rayl->AddEmModel(0, raylModel);
|
||||
pmanager->AddDiscreteProcess(rayl);
|
||||
list->RegisterProcess(rayl, particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
@@ -147,14 +164,14 @@ void PhysListEmPenelope::ConstructProcess()
|
||||
eIoniModel = new G4PenelopeIonisationModel();
|
||||
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
|
||||
pmanager->AddProcess(eIoni, -1,-1, 1);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4PenelopeBremsstrahlungModel*
|
||||
eBremModel = new G4PenelopeBremsstrahlungModel();
|
||||
eBremModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eBrem->AddEmModel(0, eBremModel);
|
||||
pmanager->AddProcess(eBrem, -1,-1, 2);
|
||||
list->RegisterProcess(eBrem, particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
@@ -163,47 +180,43 @@ void PhysListEmPenelope::ConstructProcess()
|
||||
eIoniModel = new G4PenelopeIonisationModel();
|
||||
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
|
||||
pmanager->AddProcess(eIoni, -1,-1, 1);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4PenelopeBremsstrahlungModel*
|
||||
eBremModel = new G4PenelopeBremsstrahlungModel();
|
||||
eBremModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eBrem->AddEmModel(0, eBremModel);
|
||||
pmanager->AddProcess(eBrem, -1,-1, 2);
|
||||
list->RegisterProcess(eBrem, particle);
|
||||
|
||||
G4eplusAnnihilation* eAnni = new G4eplusAnnihilation();
|
||||
G4PenelopeAnnihilationModel*
|
||||
eAnniModel = new G4PenelopeAnnihilationModel();
|
||||
eAnniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eAnni->AddEmModel(0, eAnniModel);
|
||||
pmanager->AddProcess(eAnni, 0,-1, 3);
|
||||
list->RegisterProcess(eAnni, particle);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1,-1, 1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1, 2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1, 3);
|
||||
list->RegisterProcess(new G4MuIonisation, particle);
|
||||
list->RegisterProcess(new G4MuBremsstrahlung, particle);
|
||||
list->RegisterProcess(new G4MuPairProduction, particle);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1,-1, 1);
|
||||
list->RegisterProcess(new G4ionIonisation, particle);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1,-1, 1);
|
||||
list->RegisterProcess(new G4hIonisation, particle);
|
||||
}
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
de->SetFluo(true);
|
||||
de->SetAuger(false);
|
||||
de->SetPIXE(false);
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,25 +23,26 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
/// \file electromagnetic/TestEm14/src/PhysListEmStandard.cc
|
||||
/// \file electromagnetic/TestEm18/src/PhysListEmStandard.cc
|
||||
/// \brief Implementation of the PhysListEmStandard class
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmStandard.cc 100278 2016-10-17 08:34:03Z gcosmo $
|
||||
// $Id: PhysListEmStandard.cc 108013 2017-12-19 09:03:56Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmStandard.hh"
|
||||
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4KleinNishinaModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4GammaConversionToMuons.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4KleinNishinaModel.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -52,7 +53,12 @@
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4IonParametrisedLossModel.hh"
|
||||
#include "G4NuclearStopping.hh"
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
@@ -62,73 +68,101 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmStandard::PhysListEmStandard(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
: G4VPhysicsConstructor(name)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetMinEnergy(10*eV);
|
||||
param->SetMaxEnergy(10*TeV);
|
||||
param->SetNumberOfBinsPerDecade(10);
|
||||
param->SetBuildCSDARange(true);
|
||||
param->SetMaxEnergyForCSDARange(10*TeV);
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
|
||||
param->SetVerbose(0);
|
||||
param->Dump();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmStandard::~PhysListEmStandard()
|
||||
{ }
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmStandard::ConstructProcess()
|
||||
{
|
||||
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// Add standard EM Processes
|
||||
|
||||
//
|
||||
auto particleIterator=GetParticleIterator();
|
||||
particleIterator->reset();
|
||||
while( (*particleIterator)() ){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
////pmanager->AddDiscreteProcess(new G4RayleighScattering);
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
G4ComptonScattering* cs = new G4ComptonScattering;
|
||||
cs->SetEmModel(new G4KleinNishinaModel());
|
||||
pmanager->AddDiscreteProcess(cs);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversionToMuons);
|
||||
|
||||
|
||||
////list->RegisterProcess(new G4RayleighScattering, particle);
|
||||
list->RegisterProcess(new G4PhotoElectricEffect, particle);
|
||||
G4ComptonScattering* compt = new G4ComptonScattering;
|
||||
compt->SetEmModel(new G4KleinNishinaModel());
|
||||
list->RegisterProcess(compt, particle);
|
||||
list->RegisterProcess(new G4GammaConversion, particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4eIonisation, -1,-1,1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,2);
|
||||
|
||||
list->RegisterProcess(new G4eIonisation(), particle);
|
||||
list->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4eIonisation, -1,-1,1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,2);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,3);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1,-1,1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-1,3);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1,-1,1);
|
||||
|
||||
list->RegisterProcess(new G4eIonisation(), particle);
|
||||
list->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
list->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
list->RegisterProcess(new G4MuIonisation(), particle);
|
||||
list->RegisterProcess(new G4MuBremsstrahlung(), particle);
|
||||
list->RegisterProcess(new G4MuPairProduction(), particle);
|
||||
|
||||
} else if( particleName == "proton" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "pi+" ) {
|
||||
|
||||
list->RegisterProcess(new G4hIonisation(), particle);
|
||||
list->RegisterProcess(new G4hBremsstrahlung(), particle);
|
||||
list->RegisterProcess(new G4hPairProduction(), particle);
|
||||
|
||||
} else if( particleName == "alpha" ||
|
||||
particleName == "He3" ) {
|
||||
|
||||
list->RegisterProcess(new G4ionIonisation(), particle);
|
||||
list->RegisterProcess(new G4NuclearStopping(), particle);
|
||||
|
||||
} else if( particleName == "GenericIon" ) {
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
list->RegisterProcess(ionIoni, particle);
|
||||
list->RegisterProcess(new G4NuclearStopping(), particle);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1,-1,1);
|
||||
list->RegisterProcess(new G4hIonisation(), particle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
de->SetFluo(true);
|
||||
de->SetAuger(false);
|
||||
de->SetPIXE(false);
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Reference in New Issue
Block a user