Import Geant4 10.4.0.beta source tree
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmDNAPhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
|
||||
// $Id: G4EmDNAPhysics.cc 102173 2017-01-09 13:19:42Z gcosmo $
|
||||
// add elastic scattering processes of proton, hydrogen, helium, alpha+, alpha++
|
||||
|
||||
#include "G4EmDNAPhysics.hh"
|
||||
@@ -182,39 +182,36 @@ void G4EmDNAPhysics::ConstructProcess()
|
||||
ph->RegisterProcess(new G4DNAAttachment("e-_G4DNAAttachment"), particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
//ph->RegisterProcess(new G4DNAElastic("proton_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAElastic("proton_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("proton_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("proton_G4DNAChargeDecrease"), particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
//ph->RegisterProcess(new G4DNAElastic("hydrogen_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAElastic("hydrogen_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
//ph->RegisterProcess(new G4DNAElastic("alpha_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease"), particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
//ph->RegisterProcess(new G4DNAElastic("alpha+_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha+_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
//ph->RegisterProcess(new G4DNAElastic("helium_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAElastic("helium_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("helium_G4DNAChargeIncrease"), particle);
|
||||
|
||||
// Extension to HZE proposed by Z. Francis
|
||||
|
||||
//SEB
|
||||
} else if ( particleName == "GenericIon" ) {
|
||||
ph->RegisterProcess(new G4DNAIonisation("GenericIon_G4DNAIonisation"), particle);
|
||||
|
||||
|
||||
@@ -184,6 +184,8 @@ void G4EmDNAPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("proton_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle);
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess = new G4DNAIonisation("proton_G4DNAIonisation");
|
||||
@@ -208,6 +210,8 @@ void G4EmDNAPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("hydrogen_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle);
|
||||
@@ -219,6 +223,8 @@ void G4EmDNAPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle);
|
||||
@@ -230,6 +236,8 @@ void G4EmDNAPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha+_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle);
|
||||
@@ -242,6 +250,8 @@ void G4EmDNAPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("helium_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle);
|
||||
|
||||
@@ -189,27 +189,32 @@ void G4EmDNAPhysics_option4::ConstructProcess()
|
||||
//ph->RegisterProcess(new G4DNAAttachment("e-_G4DNAAttachment"), particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("proton_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("proton_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("proton_G4DNAChargeDecrease"), particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("hydrogen_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease"), particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha+_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("helium_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("helium_G4DNAChargeIncrease"), particle);
|
||||
|
||||
@@ -189,6 +189,8 @@ void G4EmDNAPhysics_option5::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("proton_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle);
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess = new G4DNAIonisation("proton_G4DNAIonisation");
|
||||
@@ -213,6 +215,8 @@ void G4EmDNAPhysics_option5::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("hydrogen_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle);
|
||||
@@ -224,6 +228,8 @@ void G4EmDNAPhysics_option5::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle);
|
||||
@@ -235,6 +241,8 @@ void G4EmDNAPhysics_option5::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha+_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle);
|
||||
@@ -247,6 +255,8 @@ void G4EmDNAPhysics_option5::ConstructProcess()
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
|
||||
ph->RegisterProcess(new G4DNAElastic("helium_G4DNAElastic"), particle);
|
||||
|
||||
ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle);
|
||||
|
||||
//ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle);
|
||||
|
||||
@@ -0,0 +1,302 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Based on the work of M. Terrissol and M. C. Bordage
|
||||
//
|
||||
// Users are requested to cite the following papers:
|
||||
// - M. Terrissol, A. Baudre, Radiat. Prot. Dosim. 31 (1990) 175-177
|
||||
// - M.C. Bordage, J. Bordes, S. Edel, M. Terrissol, X. Franceries,
|
||||
// M. Bardies, N. Lampe, S. Incerti, Phys. Med. 32 (2016) 1833-1840
|
||||
//
|
||||
// Authors of this class:
|
||||
// M.C. Bordage, M. Terrissol, S. Edel, J. Bordes, S. Incerti
|
||||
//
|
||||
// 15.01.2014: creation
|
||||
//
|
||||
|
||||
#include "G4EmDNAPhysics_option6.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElectronSolvation.hh"
|
||||
#include "G4DNAOneStepThermalizationModel.hh"
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNACPA100ElasticModel.hh"
|
||||
|
||||
#include "G4DNAIonisation.hh"
|
||||
#include "G4DNACPA100IonisationModel.hh"
|
||||
|
||||
#include "G4DNAExcitation.hh"
|
||||
#include "G4DNACPA100ExcitationModel.hh"
|
||||
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
|
||||
#include "G4DNAChargeDecrease.hh"
|
||||
#include "G4DNAChargeIncrease.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
// Warning : the following is needed in order to use EM Physics builders
|
||||
// e+
|
||||
#include "G4Positron.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
// gamma
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
#include "G4EmParameters.hh"
|
||||
// end of warning
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option6);
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_option6::G4EmDNAPhysics_option6(G4int ver, const G4String&)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_option6"), verbose(ver)
|
||||
{
|
||||
// G4EmParameters::Instance()->SetDefaults();
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_option6::~G4EmDNAPhysics_option6()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_option6::ConstructParticle()
|
||||
{
|
||||
// bosons
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DNAGenericIonsManager * genericIonsManager;
|
||||
genericIonsManager=G4DNAGenericIonsManager::Instance();
|
||||
genericIonsManager->GetIon("alpha++");
|
||||
genericIonsManager->GetIon("alpha+");
|
||||
genericIonsManager->GetIon("helium");
|
||||
genericIonsManager->GetIon("hydrogen");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_option6::ConstructProcess()
|
||||
{
|
||||
if(verbose > 1) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
//OLD
|
||||
//aParticleIterator->reset();
|
||||
//while( (*aParticleIterator)() )
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() )
|
||||
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "e-") {
|
||||
|
||||
// *** Solvation ***
|
||||
G4DNAElectronSolvation* solvation =
|
||||
new G4DNAElectronSolvation("e-_G4DNAElectronSolvation");
|
||||
G4DNAOneStepThermalizationModel* therm =
|
||||
new G4DNAOneStepThermalizationModel();
|
||||
therm->SetHighEnergyLimit(11.*eV); // limit of the CPA100 elastic model
|
||||
solvation->SetEmModel(therm);
|
||||
ph->RegisterProcess(solvation, particle);
|
||||
|
||||
// *** Elastic scattering (two alternative models available) ***
|
||||
G4DNAElastic* theDNAElasticProcess = new G4DNAElastic("e-_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNACPA100ElasticModel());
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
G4DNAExcitation* theDNAExcitationProcess = new G4DNAExcitation("e-_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(new G4DNACPA100ExcitationModel());
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
G4DNAIonisation* theDNAIonisationProcess = new G4DNAIonisation("e-_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNACPA100IonisationModel());
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Vibrational excitation ***
|
||||
//ph->RegisterProcess(new G4DNAVibExcitation("e-_G4DNAVibExcitation"), particle);
|
||||
|
||||
// *** Attachment ***
|
||||
//ph->RegisterProcess(new G4DNAAttachment("e-_G4DNAAttachment"), particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("proton_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("proton_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("proton_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("proton_G4DNAChargeDecrease"), particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("hydrogen_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("hydrogen_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("hydrogen_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("alpha_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease"), particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("alpha+_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("alpha+_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("alpha+_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
ph->RegisterProcess(new G4DNAElastic("helium_G4DNAElastic"), particle);
|
||||
ph->RegisterProcess(new G4DNAExcitation("helium_G4DNAExcitation"), particle);
|
||||
ph->RegisterProcess(new G4DNAIonisation("helium_G4DNAIonisation"), particle);
|
||||
ph->RegisterProcess(new G4DNAChargeIncrease("helium_G4DNAChargeIncrease"), particle);
|
||||
|
||||
} else if ( particleName == "GenericIon" ) {
|
||||
ph->RegisterProcess(new G4DNAIonisation("GenericIon_G4DNAIonisation"), particle);
|
||||
}
|
||||
|
||||
// Warning : the following particles and processes are needed by EM Physics builders
|
||||
// They are taken from the default Livermore Physics list
|
||||
// These particles are currently not handled by Geant4-DNA
|
||||
|
||||
// e+
|
||||
|
||||
else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "gamma") {
|
||||
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
ph->RegisterProcess(thePhotoElectricEffect, particle);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
ph->RegisterProcess(theComptonScattering, particle);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
ph->RegisterProcess(theGammaConversion, particle);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
ph->RegisterProcess(theRayleigh, particle);
|
||||
|
||||
}
|
||||
|
||||
// Warning : end of particles and processes are needed by EM Physics builders
|
||||
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,535 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
|
||||
#include "G4EmDNAPhysics_stationary.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAIonElasticModel.hh"
|
||||
|
||||
#include "G4DNAExcitation.hh"
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNAIonisation.hh"
|
||||
#include "G4DNAChargeDecrease.hh"
|
||||
#include "G4DNAChargeIncrease.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
// Warning : the following is needed in order to use EM Physics builders
|
||||
// e+
|
||||
#include "G4Positron.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
// gamma
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
#include "G4EmParameters.hh"
|
||||
// end of warning
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary);
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary::G4EmDNAPhysics_stationary(G4int ver)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary::G4EmDNAPhysics_stationary(G4int ver, const G4String&)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary::~G4EmDNAPhysics_stationary()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary::ConstructParticle()
|
||||
{
|
||||
// bosons
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DNAGenericIonsManager * genericIonsManager;
|
||||
genericIonsManager=G4DNAGenericIonsManager::Instance();
|
||||
genericIonsManager->GetIon("alpha++");
|
||||
genericIonsManager->GetIon("alpha+");
|
||||
genericIonsManager->GetIon("helium");
|
||||
genericIonsManager->GetIon("hydrogen");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary::ConstructProcess()
|
||||
{
|
||||
if(verbose > 1) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "e-") {
|
||||
|
||||
// *** Elastic scattering (two alternative models available) ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess = new G4DNAElastic("e-_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAChampionElasticModel());
|
||||
|
||||
// or alternative model
|
||||
//theDNAElasticProcess
|
||||
//->SetEmModel(new G4DNAScreenedRutherfordElasticModel());
|
||||
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("e-_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(new G4DNABornExcitationModel());
|
||||
((G4DNABornExcitationModel*)(theDNAExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("e-_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNABornIonisationModel());
|
||||
((G4DNABornIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Vibrational excitation ***
|
||||
|
||||
G4DNAVibExcitation* theDNAVibExcitationProcess =
|
||||
new G4DNAVibExcitation("e-_G4DNAVibExcitation");
|
||||
theDNAVibExcitationProcess->SetEmModel(new G4DNASancheExcitationModel());
|
||||
((G4DNASancheExcitationModel*)(theDNAVibExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAVibExcitationProcess, particle);
|
||||
|
||||
// *** Attachment ***
|
||||
|
||||
G4DNAAttachment* theDNAAttachmentProcess =
|
||||
new G4DNAAttachment("e-_G4DNAAttachment");
|
||||
theDNAAttachmentProcess->SetEmModel(new G4DNAMeltonAttachmentModel());
|
||||
((G4DNAMeltonAttachmentModel*)(theDNAAttachmentProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAAttachmentProcess, particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("proton_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("proton_G4DNAExcitation");
|
||||
|
||||
theDNAExcitationProcess
|
||||
->SetEmModel(new G4DNAMillerGreenExcitationModel(),1);
|
||||
theDNAExcitationProcess
|
||||
->SetEmModel(new G4DNABornExcitationModel(),2);
|
||||
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SetLowEnergyLimit(10*eV);
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SetHighEnergyLimit(500*keV);
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SelectStationary(true);
|
||||
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SelectStationary(true);
|
||||
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("proton_G4DNAIonisation");
|
||||
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNARuddIonisationModel,1);
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNABornIonisationModel,2);
|
||||
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel(1)))
|
||||
->SetLowEnergyLimit(0*eV);
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel(1)))
|
||||
->SetHighEnergyLimit(500*keV);
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel(1)))
|
||||
->SelectStationary(true);
|
||||
|
||||
((G4DNABornIonisationModel*)(theDNAIonisationProcess->EmModel(2)))
|
||||
->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornIonisationModel*)(theDNAIonisationProcess->EmModel(2)))
|
||||
->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornIonisationModel*)(theDNAIonisationProcess->EmModel(2)))
|
||||
->SelectStationary(true);
|
||||
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("proton_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess
|
||||
->SetEmModel(new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("hydrogen_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("hydrogen_G4DNAExcitation");
|
||||
theDNAExcitationProcess
|
||||
->SetEmModel(new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("hydrogen_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNARuddIonisationModel());
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess
|
||||
->SetEmModel(new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel
|
||||
(new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNARuddIonisationModel());
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel
|
||||
(new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha+_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha+_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel
|
||||
(new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha+_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNARuddIonisationModel());
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel
|
||||
(new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel
|
||||
(new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("helium_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel
|
||||
(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("helium_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel
|
||||
(new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("helium_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel
|
||||
(new G4DNARuddIonisationModel());
|
||||
((G4DNARuddIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("helium_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel
|
||||
(new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "GenericIon" ) {
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("GenericIon_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
}
|
||||
|
||||
// Warning : the following particles and processes are needed by EM Physics
|
||||
// builders
|
||||
// They are taken from the default Livermore Physics list
|
||||
// These particles are currently not handled by Geant4-DNA
|
||||
|
||||
// e+
|
||||
|
||||
else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_stationary
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "gamma") {
|
||||
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
G4PhotoElectricEffect*
|
||||
thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
ph->RegisterProcess(thePhotoElectricEffect, particle);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
ph->RegisterProcess(theComptonScattering, particle);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
ph->RegisterProcess(theGammaConversion, particle);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel =
|
||||
new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
ph->RegisterProcess(theRayleigh, particle);
|
||||
}
|
||||
|
||||
// Warning : end of particles and processes are needed by EM Physics build.
|
||||
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
}
|
||||
|
||||
+547
@@ -0,0 +1,547 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
|
||||
#include "G4EmDNAPhysics_stationary_option2.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAIonElasticModel.hh"
|
||||
|
||||
#include "G4DNAExcitation.hh"
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNAIonisation.hh"
|
||||
#include "G4DNAChargeDecrease.hh"
|
||||
#include "G4DNAChargeIncrease.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
// Warning : the following is needed in order to use EM Physics builders
|
||||
// e+
|
||||
#include "G4Positron.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
// gamma
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
#include "G4EmParameters.hh"
|
||||
// end of warning
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option2);
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option2::G4EmDNAPhysics_stationary_option2(G4int ver)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary_option2"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option2::G4EmDNAPhysics_stationary_option2(G4int ver,
|
||||
const G4String&)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary_option2"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option2::~G4EmDNAPhysics_stationary_option2()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary_option2::ConstructParticle()
|
||||
{
|
||||
// bosons
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DNAGenericIonsManager * genericIonsManager;
|
||||
genericIonsManager=G4DNAGenericIonsManager::Instance();
|
||||
genericIonsManager->GetIon("alpha++");
|
||||
genericIonsManager->GetIon("alpha+");
|
||||
genericIonsManager->GetIon("helium");
|
||||
genericIonsManager->GetIon("hydrogen");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary_option2::ConstructProcess()
|
||||
{
|
||||
if(verbose > 1) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "e-") {
|
||||
|
||||
// *** Elastic scattering (two alternative models available) ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess = new G4DNAElastic("e-_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAChampionElasticModel());
|
||||
|
||||
// or alternative model
|
||||
//theDNAElasticProcess
|
||||
//->SetEmModel(new G4DNAScreenedRutherfordElasticModel());
|
||||
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("e-_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(new G4DNABornExcitationModel());
|
||||
((G4DNABornExcitationModel*)(theDNAExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("e-_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNABornIonisationModel());
|
||||
((G4DNABornIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
//
|
||||
((G4DNABornIonisationModel*)(theDNAIonisationProcess->EmModel()))
|
||||
->SelectFasterComputation(true);
|
||||
//
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Vibrational excitation ***
|
||||
|
||||
G4DNAVibExcitation* theDNAVibExcitationProcess =
|
||||
new G4DNAVibExcitation("e-_G4DNAVibExcitation");
|
||||
theDNAVibExcitationProcess->SetEmModel(new G4DNASancheExcitationModel());
|
||||
((G4DNASancheExcitationModel*)(theDNAVibExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAVibExcitationProcess, particle);
|
||||
|
||||
// *** Attachment ***
|
||||
|
||||
G4DNAAttachment* theDNAAttachmentProcess =
|
||||
new G4DNAAttachment("e-_G4DNAAttachment");
|
||||
theDNAAttachmentProcess->SetEmModel(new G4DNAMeltonAttachmentModel());
|
||||
((G4DNAMeltonAttachmentModel*)(theDNAAttachmentProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAAttachmentProcess, particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("proton_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("proton_G4DNAExcitation");
|
||||
|
||||
theDNAExcitationProcess->SetEmModel
|
||||
(new G4DNAMillerGreenExcitationModel(),1);
|
||||
theDNAExcitationProcess->SetEmModel
|
||||
(new G4DNABornExcitationModel(),2);
|
||||
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel(1)))
|
||||
->SetLowEnergyLimit(10*eV);
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel(1)))
|
||||
->SetHighEnergyLimit(500*keV);
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel(1)))
|
||||
->SelectStationary(true);
|
||||
|
||||
((G4DNABornExcitationModel*)(theDNAExcitationProcess->EmModel(2)))
|
||||
->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornExcitationModel*)(theDNAExcitationProcess->EmModel(2)))
|
||||
->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornExcitationModel*)(theDNAExcitationProcess->EmModel(2)))
|
||||
->SelectStationary(true);
|
||||
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("proton_G4DNAIonisation");
|
||||
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel,1);
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNABornIonisationModel,2);
|
||||
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SetLowEnergyLimit(0*eV);
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SetHighEnergyLimit(500*keV);
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SelectStationary(true);
|
||||
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SelectStationary(true);
|
||||
//
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SelectFasterComputation(true);
|
||||
//
|
||||
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("proton_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("hydrogen_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)(theDNAElasticProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("hydrogen_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)(theDNAExcitationProcess->EmModel()))
|
||||
->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("hydrogen_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha+_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha+_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha+_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("helium_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("helium_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("helium_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("helium_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "GenericIon" ) {
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("GenericIon_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
}
|
||||
|
||||
// Warning : the following particles and processes are needed by EM Physics
|
||||
// builders
|
||||
// They are taken from the default Livermore Physics list
|
||||
// These particles are currently not handled by Geant4-DNA
|
||||
|
||||
// e+
|
||||
|
||||
else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_stationary
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "gamma") {
|
||||
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect =
|
||||
new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
ph->RegisterProcess(thePhotoElectricEffect, particle);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
ph->RegisterProcess(theComptonScattering, particle);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
ph->RegisterProcess(theGammaConversion, particle);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel =
|
||||
new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
ph->RegisterProcess(theRayleigh, particle);
|
||||
}
|
||||
|
||||
// Warning : end of particles and processes are needed by EM Physics build.
|
||||
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
de->SetFluo(true);
|
||||
}
|
||||
|
||||
+549
@@ -0,0 +1,549 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
|
||||
#include "G4EmDNAPhysics_stationary_option4.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAIonElasticModel.hh"
|
||||
|
||||
#include "G4DNAExcitation.hh"
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNAIonisation.hh"
|
||||
#include "G4DNAChargeDecrease.hh"
|
||||
#include "G4DNAChargeIncrease.hh"
|
||||
|
||||
#include "G4DNAEmfietzoglouIonisationModel.hh"
|
||||
#include "G4DNAEmfietzoglouExcitationModel.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
// Warning : the following is needed in order to use EM Physics builders
|
||||
// e+
|
||||
#include "G4Positron.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
// gamma
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
#include "G4EmParameters.hh"
|
||||
// end of warning
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option4);
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option4::G4EmDNAPhysics_stationary_option4(G4int ver)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary_option4"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option4::G4EmDNAPhysics_stationary_option4(G4int ver,
|
||||
const G4String&)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary_option4"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option4::~G4EmDNAPhysics_stationary_option4()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary_option4::ConstructParticle()
|
||||
{
|
||||
// bosons
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DNAGenericIonsManager * genericIonsManager;
|
||||
genericIonsManager=G4DNAGenericIonsManager::Instance();
|
||||
genericIonsManager->GetIon("alpha++");
|
||||
genericIonsManager->GetIon("alpha+");
|
||||
genericIonsManager->GetIon("helium");
|
||||
genericIonsManager->GetIon("hydrogen");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary_option4::ConstructProcess()
|
||||
{
|
||||
if(verbose > 1) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "e-") {
|
||||
|
||||
// *** Elastic scattering (two alternative models available) ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("e-_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAUeharaScreenedRutherfordElasticModel());
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("e-_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAEmfietzoglouExcitationModel());
|
||||
((G4DNAEmfietzoglouExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("e-_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNAEmfietzoglouIonisationModel());
|
||||
((G4DNAEmfietzoglouIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Vibrational excitation ***
|
||||
|
||||
G4DNAVibExcitation* theDNAVibExcitationProcess =
|
||||
new G4DNAVibExcitation("e-_G4DNAVibExcitation");
|
||||
theDNAVibExcitationProcess->SetEmModel(
|
||||
new G4DNASancheExcitationModel());
|
||||
((G4DNASancheExcitationModel*)
|
||||
(theDNAVibExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAVibExcitationProcess, particle);
|
||||
|
||||
// *** Attachment ***
|
||||
|
||||
G4DNAAttachment* theDNAAttachmentProcess =
|
||||
new G4DNAAttachment("e-_G4DNAAttachment");
|
||||
theDNAAttachmentProcess->SetEmModel(
|
||||
new G4DNAMeltonAttachmentModel());
|
||||
((G4DNAMeltonAttachmentModel*)
|
||||
(theDNAAttachmentProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAAttachmentProcess, particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("proton_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("proton_G4DNAExcitation");
|
||||
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel(),1);
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNABornExcitationModel(),2);
|
||||
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SetLowEnergyLimit(10*eV);
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SetHighEnergyLimit(500*keV);
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SelectStationary(true);
|
||||
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SelectStationary(true);
|
||||
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("proton_G4DNAIonisation");
|
||||
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel,1);
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNABornIonisationModel,2);
|
||||
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SetLowEnergyLimit(0*eV);
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SetHighEnergyLimit(500*keV);
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SelectStationary(true);
|
||||
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SelectStationary(true);
|
||||
//
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SelectFasterComputation(true);
|
||||
//
|
||||
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("proton_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("hydrogen_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("hydrogen_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("hydrogen_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha+_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha+_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha+_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("helium_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("helium_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("helium_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("helium_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "GenericIon" ) {
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("GenericIon_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
}
|
||||
|
||||
// Warning : the following particles and processes are needed by EM Physics
|
||||
// builders
|
||||
// They are taken from the default Livermore Physics list
|
||||
// These particles are currently not handled by Geant4-DNA
|
||||
|
||||
// e+
|
||||
|
||||
else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_stationary
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "gamma") {
|
||||
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect =
|
||||
new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
ph->RegisterProcess(thePhotoElectricEffect, particle);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
ph->RegisterProcess(theComptonScattering, particle);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
ph->RegisterProcess(theGammaConversion, particle);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel =
|
||||
new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
ph->RegisterProcess(theRayleigh, particle);
|
||||
}
|
||||
|
||||
// Warning : end of particles and processes are needed by EM Physics build.
|
||||
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
}
|
||||
|
||||
+544
@@ -0,0 +1,544 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
|
||||
#include "G4EmDNAPhysics_stationary_option6.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
|
||||
#include "G4DNAIonElasticModel.hh"
|
||||
|
||||
#include "G4DNAExcitation.hh"
|
||||
#include "G4DNAAttachment.hh"
|
||||
#include "G4DNAVibExcitation.hh"
|
||||
#include "G4DNAIonisation.hh"
|
||||
#include "G4DNAChargeDecrease.hh"
|
||||
#include "G4DNAChargeIncrease.hh"
|
||||
|
||||
#include "G4DNACPA100IonisationModel.hh"
|
||||
#include "G4DNACPA100ExcitationModel.hh"
|
||||
#include "G4DNACPA100ElasticModel.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
// Warning : the following is needed in order to use EM Physics builders
|
||||
// e+
|
||||
#include "G4Positron.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
// gamma
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
#include "G4EmParameters.hh"
|
||||
// end of warning
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4BuilderType.hh"
|
||||
|
||||
// factory
|
||||
#include "G4PhysicsConstructorFactory.hh"
|
||||
//
|
||||
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_stationary_option6);
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option6::G4EmDNAPhysics_stationary_option6(G4int ver)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary_option6"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option6::G4EmDNAPhysics_stationary_option6(G4int ver,
|
||||
const G4String&)
|
||||
: G4VPhysicsConstructor("G4EmDNAPhysics_stationary_option6"), verbose(ver)
|
||||
{
|
||||
G4EmParameters* param = G4EmParameters::Instance();
|
||||
param->SetDefaults();
|
||||
param->SetFluo(true);
|
||||
param->SetAuger(true);
|
||||
param->SetAugerCascade(true);
|
||||
param->SetDeexcitationIgnoreCut(true);
|
||||
|
||||
SetPhysicsType(bElectromagnetic);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics_stationary_option6::~G4EmDNAPhysics_stationary_option6()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary_option6::ConstructParticle()
|
||||
{
|
||||
// bosons
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DNAGenericIonsManager * genericIonsManager;
|
||||
genericIonsManager=G4DNAGenericIonsManager::Instance();
|
||||
genericIonsManager->GetIon("alpha++");
|
||||
genericIonsManager->GetIon("alpha+");
|
||||
genericIonsManager->GetIon("helium");
|
||||
genericIonsManager->GetIon("hydrogen");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics_stationary_option6::ConstructProcess()
|
||||
{
|
||||
if(verbose > 1) {
|
||||
G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
|
||||
}
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
myParticleIterator->reset();
|
||||
while( (*myParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = myParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "e-") {
|
||||
|
||||
// *** Elastic scattering (two alternative models available) ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("e-_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNACPA100ElasticModel());
|
||||
((G4DNACPA100ElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("e-_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(new G4DNACPA100ExcitationModel());
|
||||
((G4DNACPA100ExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("e-_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(new G4DNACPA100IonisationModel());
|
||||
((G4DNACPA100IonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Vibrational excitation ***
|
||||
|
||||
G4DNAVibExcitation* theDNAVibExcitationProcess =
|
||||
new G4DNAVibExcitation("e-_G4DNAVibExcitation");
|
||||
theDNAVibExcitationProcess->SetEmModel(new G4DNASancheExcitationModel());
|
||||
((G4DNASancheExcitationModel*)
|
||||
(theDNAVibExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAVibExcitationProcess, particle);
|
||||
|
||||
// *** Attachment ***
|
||||
|
||||
G4DNAAttachment* theDNAAttachmentProcess =
|
||||
new G4DNAAttachment("e-_G4DNAAttachment");
|
||||
theDNAAttachmentProcess->SetEmModel(new G4DNAMeltonAttachmentModel());
|
||||
((G4DNAMeltonAttachmentModel*)
|
||||
(theDNAAttachmentProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAAttachmentProcess, particle);
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("proton_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("proton_G4DNAExcitation");
|
||||
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel(),1);
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNABornExcitationModel(),2);
|
||||
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SetLowEnergyLimit(10*eV);
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SetHighEnergyLimit(500*keV);
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(1)))->SelectStationary(true);
|
||||
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel(2)))->SelectStationary(true);
|
||||
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("proton_G4DNAIonisation");
|
||||
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel,1);
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNABornIonisationModel,2);
|
||||
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SetLowEnergyLimit(0*eV);
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SetHighEnergyLimit(500*keV);
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel(1)))->SelectStationary(true);
|
||||
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SetLowEnergyLimit(500*keV);
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SetHighEnergyLimit(100*MeV);
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SelectStationary(true);
|
||||
//
|
||||
((G4DNABornIonisationModel*)
|
||||
(theDNAIonisationProcess->EmModel(2)))->SelectFasterComputation(true);
|
||||
//
|
||||
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("proton_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("hydrogen_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("hydrogen_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("hydrogen_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)(
|
||||
theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)(
|
||||
theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("alpha+_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(
|
||||
new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("alpha+_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("alpha+_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge decrease ***
|
||||
|
||||
G4DNAChargeDecrease* theDNAChargeDecreaseProcess =
|
||||
new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease");
|
||||
theDNAChargeDecreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeDecreaseModel());
|
||||
((G4DNADingfelderChargeDecreaseModel*)
|
||||
(theDNAChargeDecreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeDecreaseProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
|
||||
// *** Elastic ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess =
|
||||
new G4DNAElastic("helium_G4DNAElastic");
|
||||
theDNAElasticProcess->SetEmModel(new G4DNAIonElasticModel());
|
||||
((G4DNAIonElasticModel*)
|
||||
(theDNAElasticProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAElasticProcess, particle);
|
||||
|
||||
// *** Excitation ***
|
||||
|
||||
G4DNAExcitation* theDNAExcitationProcess =
|
||||
new G4DNAExcitation("helium_G4DNAExcitation");
|
||||
theDNAExcitationProcess->SetEmModel(
|
||||
new G4DNAMillerGreenExcitationModel());
|
||||
((G4DNAMillerGreenExcitationModel*)
|
||||
(theDNAExcitationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAExcitationProcess, particle);
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("helium_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
// *** Charge increase ***
|
||||
|
||||
G4DNAChargeIncrease* theDNAChargeIncreaseProcess =
|
||||
new G4DNAChargeIncrease("helium_G4DNAChargeIncrease");
|
||||
theDNAChargeIncreaseProcess->SetEmModel(
|
||||
new G4DNADingfelderChargeIncreaseModel());
|
||||
((G4DNADingfelderChargeIncreaseModel*)
|
||||
(theDNAChargeIncreaseProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAChargeIncreaseProcess, particle);
|
||||
|
||||
} else if ( particleName == "GenericIon" ) {
|
||||
|
||||
// *** Ionisation ***
|
||||
|
||||
G4DNAIonisation* theDNAIonisationProcess =
|
||||
new G4DNAIonisation("GenericIon_G4DNAIonisation");
|
||||
theDNAIonisationProcess->SetEmModel(
|
||||
new G4DNARuddIonisationExtendedModel());
|
||||
((G4DNARuddIonisationExtendedModel*)
|
||||
(theDNAIonisationProcess->EmModel()))->SelectStationary(true);
|
||||
ph->RegisterProcess(theDNAIonisationProcess, particle);
|
||||
|
||||
}
|
||||
|
||||
// Warning : the following particles and processes are needed by EM Physics
|
||||
// builders
|
||||
// They are taken from the default Livermore Physics list
|
||||
// These particles are currently not handled by Geant4-DNA
|
||||
|
||||
// e+
|
||||
|
||||
else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_stationary
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
ph->RegisterProcess(msc, particle);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "gamma") {
|
||||
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect =
|
||||
new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
ph->RegisterProcess(thePhotoElectricEffect, particle);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
ph->RegisterProcess(theComptonScattering, particle);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel
|
||||
->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
ph->RegisterProcess(theGammaConversion, particle);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel =
|
||||
new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
ph->RegisterProcess(theRayleigh, particle);
|
||||
}
|
||||
|
||||
// Warning : end of particles and processes are needed by EM Physics build.
|
||||
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
}
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "G4DummyModel.hh"
|
||||
#include "G4EmProcessSubType.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
#include "G4EmParticleList.hh"
|
||||
|
||||
#include "G4MicroElecElastic.hh"
|
||||
#include "G4MicroElecElasticModel.hh"
|
||||
@@ -86,6 +87,7 @@
|
||||
#include "G4eCoulombScatteringModel.hh"
|
||||
#include "G4IonCoulombScatteringModel.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4KleinNishinaModel.hh"
|
||||
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4eCoulombScatteringModel.hh"
|
||||
@@ -94,6 +96,7 @@
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4UrbanMscModel.hh"
|
||||
#include "G4GoudsmitSaundersonMscModel.hh"
|
||||
#include "G4LowEPComptonModel.hh"
|
||||
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
@@ -142,15 +145,15 @@ G4EmModelActivator::G4EmModelActivator(const G4String& emphys)
|
||||
|
||||
void G4EmModelActivator::ActivateEmOptions()
|
||||
{
|
||||
const std::vector<G4String> regnamesMSC = theParameters->RegionsMsc();
|
||||
G4int nreg = regnamesMSC.size();
|
||||
const std::vector<G4String> regnamesPhys = theParameters->RegionsPhysics();
|
||||
G4int nreg = regnamesPhys.size();
|
||||
if(0 == nreg) { return; }
|
||||
G4int verbose = theParameters->Verbose() - 1;
|
||||
if(verbose > 0) {
|
||||
G4cout << "### G4EmModelActivator::ActivateEmOptions for " << nreg << " regions"
|
||||
<< G4endl;
|
||||
}
|
||||
const std::vector<G4String> typesMSC = theParameters->TypesMsc();
|
||||
const std::vector<G4String> typesPhys = theParameters->TypesMsc();
|
||||
|
||||
// start configuration of models
|
||||
const G4ParticleDefinition* elec = G4Electron::Electron();
|
||||
@@ -159,18 +162,19 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
G4LossTableManager* man = G4LossTableManager::Instance();
|
||||
G4EmConfigurator* em_config = man->EmConfigurator();
|
||||
G4VAtomDeexcitation* adeexc = man->AtomDeexcitation();
|
||||
G4ParticleTable* table = G4ParticleTable::GetParticleTable();
|
||||
G4VEmModel* mod;
|
||||
|
||||
for(G4int i=0; i<nreg; ++i) {
|
||||
G4String reg = regnamesMSC[i];
|
||||
G4String reg = regnamesPhys[i];
|
||||
if(verbose > 0) {
|
||||
G4cout << i << ". region <" << reg << ">; type <" << typesMSC[i] << "> "
|
||||
G4cout << i << ". region <" << reg << ">; type <" << typesPhys[i] << "> "
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
if(baseName == typesMSC[i]) { continue; }
|
||||
if(baseName == typesPhys[i]) { continue; }
|
||||
|
||||
if("G4EmStandard" == typesMSC[i]) {
|
||||
if("G4EmStandard" == typesPhys[i]) {
|
||||
G4UrbanMscModel* msc = new G4UrbanMscModel();
|
||||
msc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e-", "msc", msc, reg, 0.0, 100*MeV);
|
||||
@@ -178,8 +182,8 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
msc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e+", "msc", msc, reg, 0.0, 100*MeV);
|
||||
|
||||
} else if("G4EmStandard_opt1" == typesMSC[i] ||
|
||||
"G4EmStandard_opt2" == typesMSC[i]) {
|
||||
} else if("G4EmStandard_opt1" == typesPhys[i] ||
|
||||
"G4EmStandard_opt2" == typesPhys[i]) {
|
||||
G4UrbanMscModel* msc = new G4UrbanMscModel();
|
||||
msc->SetStepLimitType(fMinimal);
|
||||
msc->SetRangeFactor(0.2);
|
||||
@@ -191,7 +195,7 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
msc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e+", "msc", msc, reg, 0.0, 100*MeV);
|
||||
|
||||
} else if("G4EmStandard_opt3" == typesMSC[i]) {
|
||||
} else if("G4EmStandard_opt3" == typesPhys[i]) {
|
||||
G4UrbanMscModel* msc = new G4UrbanMscModel();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
msc->SetLocked(true);
|
||||
@@ -212,8 +216,14 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
FindOrAddProcess(phot, "Rayl");
|
||||
mod = new G4LivermoreRayleighModel();
|
||||
em_config->SetExtraEmModel("gamma", "Rayl", mod, reg);
|
||||
FindOrAddProcess(phot, "phot");
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
em_config->SetExtraEmModel("gamma", "phot", mod, reg);
|
||||
FindOrAddProcess(phot, "compt");
|
||||
mod = new G4KleinNishinaModel();
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
|
||||
} else if("G4EmStandard_opt4" == typesMSC[i]) {
|
||||
} else if("G4EmStandard_opt4" == typesPhys[i]) {
|
||||
G4UrbanMscModel* msc = new G4UrbanMscModel();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
msc->SetRangeFactor(0.02);
|
||||
@@ -226,13 +236,24 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
em_config->SetExtraEmModel("e+", "msc", msc, reg, 0.0, 100*MeV);
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(reg, true, false, false);
|
||||
theParameters->SetStepFunction(0.2, 10*um);
|
||||
theParameters->SetStepFunctionMuHad(0.2, 10*um);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
FindOrAddProcess(phot, "Rayl");
|
||||
mod = new G4LivermoreRayleighModel();
|
||||
em_config->SetExtraEmModel("gamma", "Rayl", mod, reg);
|
||||
FindOrAddProcess(phot, "phot");
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
em_config->SetExtraEmModel("gamma", "phot", mod, reg);
|
||||
FindOrAddProcess(phot, "compt");
|
||||
mod = new G4KleinNishinaModel();
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
mod = new G4LowEPComptonModel();
|
||||
mod->SetHighEnergyLimit(20*MeV);
|
||||
em_config->SetExtraEmModel("gamma", "compt", mod, reg);
|
||||
|
||||
} else if("G4EmStandardGS" == typesMSC[i]) {
|
||||
} else if("G4EmStandardGS" == typesPhys[i]) {
|
||||
G4GoudsmitSaundersonMscModel* msc = new G4GoudsmitSaundersonMscModel();
|
||||
msc->SetStepLimitType(fUseSafetyPlus);
|
||||
msc->SetRangeFactor(0.1);
|
||||
@@ -244,7 +265,7 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
msc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e+", "msc", msc, reg, 0.0, 100*MeV);
|
||||
|
||||
} else if("G4EmStandardWVI" == typesMSC[i]) {
|
||||
} else if("G4EmStandardWVI" == typesPhys[i]) {
|
||||
G4WentzelVIModel* msc = new G4WentzelVIModel();
|
||||
msc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e-", "msc", msc, reg, 0.0, 100*MeV);
|
||||
@@ -260,48 +281,36 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
em_config->SetExtraEmModel("e+", "CoulombScat", mod, reg, 0.0, 100*MeV);
|
||||
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(regnamesMSC[i], true, false, false);
|
||||
theParameters->SetDeexActiveRegion(regnamesPhys[i], true, false, false);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
} else if("G4EmStandardSS" == typesMSC[i] &&
|
||||
} else if("G4EmStandardSS" == typesPhys[i] &&
|
||||
baseName != "G4EmStandard_opt3") {
|
||||
G4eCoulombScatteringModel* sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e-", "CoulombScat", sc, reg);
|
||||
|
||||
sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("e+", "CoulombScat", sc, reg);
|
||||
|
||||
sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("mu+", "CoulombScat", sc, reg);
|
||||
|
||||
sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("pi+", "CoulombScat", sc, reg);
|
||||
|
||||
sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("kaon+", "CoulombScat", sc, reg);
|
||||
|
||||
sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel("proton", "CoulombScat", sc, reg);
|
||||
|
||||
G4EmParticleList emList;
|
||||
for(const auto& particleName : emList.PartNames()) {
|
||||
G4ParticleDefinition* particle = table->FindParticle(particleName);
|
||||
if(particle && 0.0 != particle->GetPDGCharge()) {
|
||||
FindOrAddProcess(particle, "CoulombScat");
|
||||
G4eCoulombScatteringModel* sc = new G4eCoulombScatteringModel();
|
||||
sc->SetPolarAngleLimit(0.0);
|
||||
sc->SetLocked(true);
|
||||
em_config->SetExtraEmModel(particleName, "CoulombScat", sc, reg);
|
||||
if(particleName == "mu+" || particleName == "mu-") {
|
||||
em_config->SetExtraEmModel(particleName, "muMsc",
|
||||
new G4DummyModel(), reg);
|
||||
} else {
|
||||
em_config->SetExtraEmModel(particleName, "msc",
|
||||
new G4DummyModel(), reg);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(regnamesMSC[i], true, true, true);
|
||||
theParameters->SetDeexActiveRegion(regnamesPhys[i], true, true, true);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
} else if("G4EmLivermore" == typesMSC[i]) {
|
||||
} else if("G4EmLivermore" == typesPhys[i]) {
|
||||
|
||||
mod = new G4LivermorePhotoElectricModel();
|
||||
em_config->SetExtraEmModel("gamma", "phot", mod, reg);
|
||||
@@ -321,11 +330,11 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
em_config->SetExtraEmModel("e-", "eBrem", mod, reg, 0.0, 1*GeV);
|
||||
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(regnamesMSC[i], true, false, false);
|
||||
theParameters->SetDeexActiveRegion(regnamesPhys[i], true, false, false);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
} else if("G4EmPenelope" == typesMSC[i]) {
|
||||
} else if("G4EmPenelope" == typesPhys[i]) {
|
||||
mod = new G4PenelopePhotoElectricModel();
|
||||
em_config->SetExtraEmModel("gamma", "phot", mod, reg);
|
||||
mod = new G4PenelopeComptonModel();
|
||||
@@ -352,11 +361,11 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
em_config->SetExtraEmModel("e+", "annihil", mod, reg, 0.0, 1*GeV);
|
||||
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetDeexActiveRegion(regnamesMSC[i], true, false, false);
|
||||
theParameters->SetDeexActiveRegion(regnamesPhys[i], true, false, false);
|
||||
}
|
||||
theParameters->DefineRegParamForDeex(adeexc);
|
||||
|
||||
} else if("G4RadioactiveDecay" == typesMSC[i]) {
|
||||
} else if("G4RadioactiveDecay" == typesPhys[i]) {
|
||||
|
||||
if(G4Threading::IsMasterThread()) {
|
||||
theParameters->SetFluo(true);
|
||||
@@ -369,7 +378,7 @@ void G4EmModelActivator::ActivateEmOptions()
|
||||
} else {
|
||||
if(verbose > 0 && G4Threading::IsMasterThread()) {
|
||||
G4cout << "### G4EmModelActivator::ActivateEmOptions WARNING: \n"
|
||||
<< " EM Physics configuration name <" << typesMSC[i]
|
||||
<< " EM Physics configuration name <" << typesPhys[i]
|
||||
<< "> is not known - ignored" << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmParticleList 99930 2016-10-11 16:34:52Z gunter $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmParticleList
|
||||
//
|
||||
// Author: V.Ivanchenko 04.05.2017
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4EmParticleList.hh"
|
||||
|
||||
G4EmParticleList::G4EmParticleList()
|
||||
{
|
||||
pNames =
|
||||
{
|
||||
"gamma", "e-", "e+", "mu+", "mu-",
|
||||
"pi+", "pi-", "kaon+", "kaon-", "proton",
|
||||
"anti_proton", "alpha", "He3", "GenericIon", "B+",
|
||||
"B-", "D+", "D-", "Ds+", "Ds-",
|
||||
"anti_He3", "anti_alpha","anti_deuteron","anti_lambda_c+","anti_omega-",
|
||||
"anti_sigma_c+","anti_sigma_c++", "anti_sigma+", "anti_sigma-","anti_triton",
|
||||
"anti_xi_c+", "anti_xi-", "deuteron", "lambda_c+", "omega-",
|
||||
"sigma_c+", "sigma_c++", "sigma+", "sigma-", "tau+",
|
||||
"tau-", "triton", "xi_c+", "xi-"
|
||||
};
|
||||
}
|
||||
|
||||
G4EmParticleList::~G4EmParticleList()
|
||||
{}
|
||||
|
||||
const std::vector<G4String>& G4EmParticleList::PartNames() const
|
||||
{
|
||||
return pNames;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
|
||||
// $Id: G4EmStandardPhysics.cc 104043 2017-05-09 07:47:10Z gcosmo $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -51,6 +51,8 @@
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
@@ -203,9 +205,13 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
|
||||
G4PhotoElectricEffect* pee = new G4PhotoElectricEffect();
|
||||
pee->SetEmModel(new G4LivermorePhotoElectricModel(), 1);
|
||||
ph->RegisterProcess(pee, particle);
|
||||
|
||||
ph->RegisterProcess(new G4ComptonScattering(), particle);
|
||||
ph->RegisterProcess(new G4GammaConversion(), particle);
|
||||
ph->RegisterProcess(new G4RayleighScattering(), particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4eCoulombScatteringModel.hh"
|
||||
#include "G4hCoulombScatteringModel.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4UrbanMscModel.hh"
|
||||
|
||||
@@ -181,14 +182,15 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
G4hBremsstrahlung* pb = new G4hBremsstrahlung();
|
||||
G4hPairProduction* pp = new G4hPairProduction();
|
||||
|
||||
// muon & hadron multiple scattering
|
||||
// muon & hadron scattering
|
||||
G4CoulombScattering* muss = new G4CoulombScattering();
|
||||
muss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
G4CoulombScattering* piss = new G4CoulombScattering();
|
||||
piss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
G4CoulombScattering* kss = new G4CoulombScattering();
|
||||
kss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
G4CoulombScattering* pss = new G4CoulombScattering();
|
||||
|
||||
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
|
||||
|
||||
pss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
|
||||
// Add standard EM Processes
|
||||
auto myParticleIterator=GetParticleIterator();
|
||||
@@ -304,8 +306,8 @@ void G4EmStandardPhysicsSS::ConstructProcess()
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
ph->RegisterProcess(hmsc, particle);
|
||||
ph->RegisterProcess(new G4hIonisation(), particle);
|
||||
ph->RegisterProcess(new G4CoulombScattering(), particle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4WentzelVIRelModel.hh"
|
||||
#include "G4hCoulombScatteringModel.hh"
|
||||
|
||||
#include "G4MuBremsstrahlungModel.hh"
|
||||
#include "G4MuPairProductionModel.hh"
|
||||
@@ -181,20 +183,24 @@ void G4EmStandardPhysicsWVI::ConstructProcess()
|
||||
|
||||
// muon & hadron multiple scattering
|
||||
G4MuMultipleScattering* mumsc = new G4MuMultipleScattering();
|
||||
mumsc->SetEmModel(new G4WentzelVIModel());
|
||||
mumsc->SetEmModel(new G4WentzelVIRelModel());
|
||||
G4CoulombScattering* muss = new G4CoulombScattering();
|
||||
muss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
|
||||
G4MuMultipleScattering* pimsc = new G4MuMultipleScattering();
|
||||
pimsc->SetEmModel(new G4WentzelVIModel());
|
||||
pimsc->SetEmModel(new G4WentzelVIRelModel());
|
||||
G4CoulombScattering* piss = new G4CoulombScattering();
|
||||
piss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
|
||||
G4MuMultipleScattering* kmsc = new G4MuMultipleScattering();
|
||||
kmsc->SetEmModel(new G4WentzelVIModel());
|
||||
kmsc->SetEmModel(new G4WentzelVIRelModel());
|
||||
G4CoulombScattering* kss = new G4CoulombScattering();
|
||||
kss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
|
||||
G4MuMultipleScattering* pmsc = new G4MuMultipleScattering();
|
||||
pmsc->SetEmModel(new G4WentzelVIModel());
|
||||
pmsc->SetEmModel(new G4WentzelVIRelModel());
|
||||
G4CoulombScattering* pss = new G4CoulombScattering();
|
||||
pss->SetEmModel(new G4hCoulombScatteringModel(), 1);
|
||||
|
||||
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
|
||||
|
||||
|
||||
+6
-2
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option3.cc 99938 2016-10-12 08:06:52Z gcosmo $
|
||||
// $Id: G4EmStandardPhysics_option3.cc 104571 2017-06-06 13:45:47Z gcosmo $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -61,6 +61,7 @@
|
||||
#include "G4DummyModel.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4UniversalFluctuation2017.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -227,7 +228,8 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
eIoni->SetFluctModel(new G4UniversalFluctuation2017());
|
||||
|
||||
G4eBremsstrahlung* brem = new G4eBremsstrahlung();
|
||||
G4SeltzerBergerModel* br1 = new G4SeltzerBergerModel();
|
||||
@@ -250,6 +252,7 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
eIoni->SetFluctModel(new G4UniversalFluctuation2017());
|
||||
|
||||
G4eBremsstrahlung* brem = new G4eBremsstrahlung();
|
||||
G4SeltzerBergerModel* br1 = new G4SeltzerBergerModel();
|
||||
@@ -331,6 +334,7 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
G4hMultipleScattering* pmsc = new G4hMultipleScattering();
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
hIoni->SetFluctModel(new G4UniversalFluctuation2017());
|
||||
|
||||
ph->RegisterProcess(pmsc, particle);
|
||||
ph->RegisterProcess(hIoni, particle);
|
||||
|
||||
+7
-10
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option4.cc 99938 2016-10-12 08:06:52Z gcosmo $
|
||||
// $Id: G4EmStandardPhysics_option4.cc 104020 2017-05-08 07:34:58Z gcosmo $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -275,7 +275,7 @@ void G4EmStandardPhysics_option4::ConstructProcess()
|
||||
|
||||
// ionisation
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
eIoni->SetStepFunction(0.2, 10*um);
|
||||
G4PenelopeIonisationModel* pen = new G4PenelopeIonisationModel();
|
||||
pen->SetHighEnergyLimit(penEnergyLimit);
|
||||
eIoni->AddEmModel(0, pen, new G4UniversalFluctuation());
|
||||
@@ -317,7 +317,7 @@ void G4EmStandardPhysics_option4::ConstructProcess()
|
||||
|
||||
// ionisation
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
eIoni->SetStepFunction(0.2, 10*um);
|
||||
G4PenelopeIonisationModel* pen = new G4PenelopeIonisationModel();
|
||||
pen->SetHighEnergyLimit(penEnergyLimit);
|
||||
eIoni->AddEmModel(0, pen, new G4UniversalFluctuation());
|
||||
@@ -344,7 +344,7 @@ void G4EmStandardPhysics_option4::ConstructProcess()
|
||||
particleName == "mu-" ) {
|
||||
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.2, 50*um);
|
||||
muIoni->SetStepFunction(0.2, 10*um);
|
||||
|
||||
ph->RegisterProcess(mumsc, particle);
|
||||
ph->RegisterProcess(muIoni, particle);
|
||||
@@ -376,9 +376,8 @@ void G4EmStandardPhysics_option4::ConstructProcess()
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ) {
|
||||
|
||||
//G4hMultipleScattering* pimsc = new G4hMultipleScattering();
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
hIoni->SetStepFunction(0.2, 10*um);
|
||||
|
||||
ph->RegisterProcess(pimsc, particle);
|
||||
ph->RegisterProcess(hIoni, particle);
|
||||
@@ -389,9 +388,8 @@ void G4EmStandardPhysics_option4::ConstructProcess()
|
||||
} else if (particleName == "kaon+" ||
|
||||
particleName == "kaon-" ) {
|
||||
|
||||
//G4hMultipleScattering* kmsc = new G4hMultipleScattering();
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
hIoni->SetStepFunction(0.2, 10*um);
|
||||
|
||||
ph->RegisterProcess(kmsc, particle);
|
||||
ph->RegisterProcess(hIoni, particle);
|
||||
@@ -402,9 +400,8 @@ void G4EmStandardPhysics_option4::ConstructProcess()
|
||||
} else if (particleName == "proton" ||
|
||||
particleName == "anti_proton") {
|
||||
|
||||
//G4hMultipleScattering* pmsc = new G4hMultipleScattering();
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.1, 20*um);
|
||||
hIoni->SetStepFunction(0.1, 10*um);
|
||||
|
||||
ph->RegisterProcess(pmsc, particle);
|
||||
ph->RegisterProcess(hIoni, particle);
|
||||
|
||||
Reference in New Issue
Block a user