Import Geant4 10.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-12-09 12:35:28 +01:00
parent 4ec577e5c4
commit a3452e42ac
3514 changed files with 210500 additions and 89628 deletions
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmDNAPhysics.cc 97523 2016-06-03 14:25:30Z gcosmo $
// $Id: G4EmDNAPhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
// add elastic scattering processes of proton, hydrogen, helium, alpha+, alpha++
#include "G4EmDNAPhysics.hh"
@@ -70,6 +70,8 @@
#include "G4LivermoreGammaConversionModel.hh"
#include "G4RayleighScattering.hh"
#include "G4LivermoreRayleighModel.hh"
#include "G4EmParameters.hh"
// end of warning
#include "G4LossTableManager.hh"
@@ -82,22 +84,18 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics::G4EmDNAPhysics(G4int ver)
: G4VPhysicsConstructor("G4EmDNAPhysics"), verbose(ver)
{
G4EmParameters::Instance();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics::G4EmDNAPhysics(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmDNAPhysics"), verbose(ver)
{
G4EmParameters::Instance();
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetFluo(true);
param->SetAuger(true);
param->SetAugerCascade(true);
param->SetDeexcitationIgnoreCut(true);
SetPhysicsType(bElectromagnetic);
}
@@ -144,10 +142,11 @@ void G4EmDNAPhysics::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-") {
@@ -295,7 +294,6 @@ void G4EmDNAPhysics::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,753 @@
//
// ********************************************************************
// * 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: G4EmDNAPhysicsActivator.cc 97499 2016-06-03 12:02:26Z matkara $
// add elastic scattering processes of proton, hydrogen, helium, alpha+, alpha++
#include "G4EmDNAPhysicsActivator.hh"
#include "G4EmParameters.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4RegionStore.hh"
#include "G4Region.hh"
#include "G4VEnergyLossProcess.hh"
#include "G4LossTableManager.hh"
#include "G4EmConfigurator.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4Proton.hh"
#include "G4GenericIon.hh"
#include "G4Alpha.hh"
#include "G4ProcessManager.hh"
#include "G4DummyModel.hh"
#include "G4EmProcessSubType.hh"
#include "G4PhysicsListHelper.hh"
#include "G4BraggModel.hh"
#include "G4BraggIonModel.hh"
#include "G4BetheBlochModel.hh"
#include "G4UrbanMscModel.hh"
#include "G4MollerBhabhaModel.hh"
#include "G4IonFluctuations.hh"
#include "G4UniversalFluctuation.hh"
#include "G4LowECapture.hh"
#include "G4hMultipleScattering.hh"
#include "G4eCoulombScatteringModel.hh"
#include "G4IonCoulombScatteringModel.hh"
#include "G4ionIonisation.hh"
// Processes and models for Geant4-DNA
#include "G4DNAGenericIonsManager.hh"
#include "G4DNAElastic.hh"
#include "G4DNAChampionElasticModel.hh"
//#include "G4DNAScreenedRutherfordElasticModel.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 "G4SystemOfUnits.hh"
#include <vector>
#include "G4DNAChemistryManager.hh"
#include "G4DNAElectronSolvation.hh"
#include "G4DNAEmfietzoglouIonisationModel.hh"
#include "G4DNAEmfietzoglouExcitationModel.hh"
#include "G4Threading.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysicsActivator::G4EmDNAPhysicsActivator(G4int ver)
: G4VPhysicsConstructor("G4EmDNAPhysicsActivator"), verbose(ver)
{
theParameters = G4EmParameters::Instance();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysicsActivator::~G4EmDNAPhysicsActivator()
{}
G4bool G4EmDNAPhysicsActivator::IsVerbose() const
{
return (0 < verbose && G4Threading::IsMasterThread());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmDNAPhysicsActivator::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");
//genericIonsManager->GetIon("carbon");
//genericIonsManager->GetIon("nitrogen");
//genericIonsManager->GetIon("oxygen");
//genericIonsManager->GetIon("iron");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmDNAPhysicsActivator::ConstructProcess()
{
const std::vector<G4String>& regnamesDNA = theParameters->RegionsDNA();
G4int nreg = regnamesDNA.size();
if(0 == nreg)
{
return;
}
const std::vector<G4String>& typesDNA = theParameters->TypesDNA();
if(IsVerbose())
{
G4cout << "### G4EmDNAPhysicsActivator::ConstructProcess for " << nreg
<< " regions; DNA physics type " << typesDNA[0] << G4endl;
}
// list of particles
const G4ParticleDefinition* elec = G4Electron::Electron();
const G4ParticleDefinition* prot = G4Proton::Proton();
const G4ParticleDefinition* gion = G4GenericIon::GenericIon();
G4DNAGenericIonsManager * genericIonsManager =
G4DNAGenericIonsManager::Instance();
const G4ParticleDefinition* alpha2 = G4Alpha::Alpha();
const G4ParticleDefinition* alpha1 = genericIonsManager->GetIon("alpha+");
const G4ParticleDefinition* alpha0 = genericIonsManager->GetIon("helium");
const G4ParticleDefinition* h0 = genericIonsManager->GetIon("hydrogen");
G4ProcessManager* eman = elec->GetProcessManager();
G4ProcessManager* pman = prot->GetProcessManager();
G4ProcessManager* iman = gion->GetProcessManager();
G4ProcessManager* a2man = alpha2->GetProcessManager();
G4ProcessManager* a1man = alpha1->GetProcessManager();
G4ProcessManager* a0man = alpha0->GetProcessManager();
G4ProcessManager* h0man = h0->GetProcessManager();
G4bool emsc = HasMsc(eman);
G4bool pmsc = HasMsc(pman);
G4bool a2msc = HasMsc(a2man);
G4bool a1msc = HasMsc(a1man);
G4bool imsc = HasMsc(iman);
// alpha+ standard processes
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
G4ParticleDefinition* alpha11 = const_cast<G4ParticleDefinition*>(alpha1);
ph->RegisterProcess(new G4hMultipleScattering(), alpha11);
ph->RegisterProcess(new G4ionIonisation(), alpha11);
// processes are defined with dummy models for the world
// elastic scatetring
G4DNAElastic* theDNAeElasticProcess = new G4DNAElastic("e-_G4DNAElastic");
theDNAeElasticProcess->AddEmModel(0, new G4DummyModel());
eman->AddDiscreteProcess(theDNAeElasticProcess);
G4DNAElastic* theDNApElasticProcess = new G4DNAElastic("proton_G4DNAElastic");
theDNApElasticProcess->AddEmModel(0, new G4DummyModel());
pman->AddDiscreteProcess(theDNApElasticProcess);
G4DNAElastic* theDNAa2ElasticProcess = new G4DNAElastic("alpha_G4DNAElastic");
theDNAa2ElasticProcess->AddEmModel(0, new G4DummyModel());
a2man->AddDiscreteProcess(theDNAa2ElasticProcess);
G4DNAElastic* theDNAa1ElasticProcess =
new G4DNAElastic("alpha+_G4DNAElastic");
theDNAa1ElasticProcess->AddEmModel(0, new G4DummyModel());
a1man->AddDiscreteProcess(theDNAa1ElasticProcess);
G4DNAElastic* theDNAa0ElasticProcess =
new G4DNAElastic("helium_G4DNAElastic");
theDNAa0ElasticProcess->AddEmModel(0, new G4DummyModel());
a0man->AddDiscreteProcess(theDNAa0ElasticProcess);
G4DNAElastic* theDNAh0ElasticProcess =
new G4DNAElastic("hydrogen_G4DNAElastic");
theDNAh0ElasticProcess->AddEmModel(0, new G4DummyModel());
h0man->AddDiscreteProcess(theDNAh0ElasticProcess);
// excitation
G4DNAExcitation* theDNAeExcProcess =
new G4DNAExcitation("e-_G4DNAExcitation");
theDNAeExcProcess->AddEmModel(0, new G4DummyModel());
eman->AddDiscreteProcess(theDNAeExcProcess);
G4DNAExcitation* theDNApExcProcess =
new G4DNAExcitation("proton_G4DNAExcitation");
theDNApExcProcess->AddEmModel(0, new G4DummyModel());
pman->AddDiscreteProcess(theDNApExcProcess);
G4DNAExcitation* theDNAa2ExcProcess =
new G4DNAExcitation("alpha_G4DNAExcitation");
theDNAa2ExcProcess->AddEmModel(0, new G4DummyModel());
a2man->AddDiscreteProcess(theDNAa2ExcProcess);
G4DNAExcitation* theDNAa1ExcProcess =
new G4DNAExcitation("alpha+_G4DNAExcitation");
theDNAa1ExcProcess->AddEmModel(0, new G4DummyModel());
a1man->AddDiscreteProcess(theDNAa1ExcProcess);
G4DNAExcitation* theDNAa0ExcProcess =
new G4DNAExcitation("helium_G4DNAExcitation");
theDNAa0ExcProcess->AddEmModel(0, new G4DummyModel());
a0man->AddDiscreteProcess(theDNAa0ExcProcess);
G4DNAExcitation* theDNAh0ExcProcess =
new G4DNAExcitation("hydrogen_G4DNAExcitation");
theDNAh0ExcProcess->AddEmModel(0, new G4DummyModel());
h0man->AddDiscreteProcess(theDNAh0ExcProcess);
// vibration excitation
G4DNAVibExcitation* theDNAeVibExcProcess =
new G4DNAVibExcitation("e-_G4DNAVibExcitation");
theDNAeVibExcProcess->AddEmModel(0, new G4DummyModel());
eman->AddDiscreteProcess(theDNAeVibExcProcess);
// ionisation
G4DNAIonisation* theDNAeIoniProcess =
new G4DNAIonisation("e-_G4DNAIonisation");
theDNAeIoniProcess->AddEmModel(0, new G4DummyModel());
eman->AddDiscreteProcess(theDNAeIoniProcess);
G4DNAIonisation* theDNApIoniProcess =
new G4DNAIonisation("proton_G4DNAIonisation");
theDNApIoniProcess->AddEmModel(0, new G4DummyModel());
pman->AddDiscreteProcess(theDNApIoniProcess);
G4DNAIonisation* theDNAa2IoniProcess =
new G4DNAIonisation("alpha_G4DNAIonisation");
theDNAa2IoniProcess->AddEmModel(0, new G4DummyModel());
a2man->AddDiscreteProcess(theDNAa2IoniProcess);
G4DNAIonisation* theDNAa1IoniProcess =
new G4DNAIonisation("alpha+_G4DNAIonisation");
theDNAa1IoniProcess->AddEmModel(0, new G4DummyModel());
a1man->AddDiscreteProcess(theDNAa1IoniProcess);
G4DNAIonisation* theDNAa0IoniProcess =
new G4DNAIonisation("helium_G4DNAIonisation");
theDNAa0IoniProcess->AddEmModel(0, new G4DummyModel());
a0man->AddDiscreteProcess(theDNAa0IoniProcess);
G4DNAIonisation* theDNAh0IoniProcess =
new G4DNAIonisation("hydrogen_G4DNAIonisation");
theDNAh0IoniProcess->AddEmModel(0, new G4DummyModel());
h0man->AddDiscreteProcess(theDNAh0IoniProcess);
G4DNAIonisation* theDNAiIoniProcess =
new G4DNAIonisation("GenericIon_G4DNAIonisation");
theDNAiIoniProcess->AddEmModel(0, new G4DummyModel());
iman->AddDiscreteProcess(theDNAiIoniProcess);
// attachment
G4DNAAttachment* theDNAAttachProcess =
new G4DNAAttachment("e-_G4DNAAttachment");
theDNAAttachProcess->AddEmModel(0, new G4DummyModel());
eman->AddDiscreteProcess(theDNAAttachProcess);
// charge exchange
G4DNAChargeDecrease* theDNApChargeDecreaseProcess =
new G4DNAChargeDecrease("proton_G4DNAChargeDecrease");
theDNApChargeDecreaseProcess->AddEmModel(0, new G4DummyModel());
pman->AddDiscreteProcess(theDNApChargeDecreaseProcess);
G4DNAChargeDecrease* theDNAa2ChargeDecreaseProcess =
new G4DNAChargeDecrease("alpha_G4DNAChargeDecrease");
theDNAa2ChargeDecreaseProcess->AddEmModel(0, new G4DummyModel());
a2man->AddDiscreteProcess(theDNAa2ChargeDecreaseProcess);
G4DNAChargeDecrease* theDNAa1ChargeDecreaseProcess =
new G4DNAChargeDecrease("alpha+_G4DNAChargeDecrease");
theDNAa1ChargeDecreaseProcess->AddEmModel(0, new G4DummyModel());
a1man->AddDiscreteProcess(theDNAa1ChargeDecreaseProcess);
G4DNAChargeIncrease* theDNAa1ChargeIncreaseProcess =
new G4DNAChargeIncrease("alpha+_G4DNAChargeIncrease");
theDNAa1ChargeIncreaseProcess->AddEmModel(0, new G4DummyModel());
a1man->AddDiscreteProcess(theDNAa1ChargeIncreaseProcess);
G4DNAChargeIncrease* theDNAa0ChargeIncreaseProcess =
new G4DNAChargeIncrease("helium_G4DNAChargeIncrease");
theDNAa0ChargeIncreaseProcess->AddEmModel(0, new G4DummyModel());
a0man->AddDiscreteProcess(theDNAa0ChargeIncreaseProcess);
G4DNAChargeIncrease* theDNAh0ChargeIncreaseProcess =
new G4DNAChargeIncrease("hydrogen_G4DNAChargeIncrease");
theDNAh0ChargeIncreaseProcess->AddEmModel(0, new G4DummyModel());
h0man->AddDiscreteProcess(theDNAh0ChargeIncreaseProcess);
// limits for DNA model applicability
static const G4double elowest= 4. * eV;
static const G4double elimel = 1 * MeV;
static const G4double pminbb = 2 * MeV;
static const G4double pmin = 10 * keV;
static const G4double pmax = 100 * MeV;
static const G4double ionmin = 10 * keV;
// low-energy capture
G4LowECapture* ecap = nullptr;
if(G4DNAChemistryManager::IsActivated() == false)
{
// Note: G4DNAElectronSolvation could also be used instead of G4LowECapture
ecap = new G4LowECapture(elowest);
// ecap->SetVerboseLevel(1);
eman->AddDiscreteProcess(ecap);
}
else
{
// When chemistry is activated: G4DNAElectronSolvation turns the electron
// to a solvated electron, otherwise it kills the electron at the
// corresponding high energy limit of the model
G4DNAElectronSolvation* solvatation =
new G4DNAElectronSolvation("e-_G4DNAElectronSolvation");
solvatation->AddEmModel(0, new G4DummyModel());
eman->AddDiscreteProcess(solvatation);
}
G4LowECapture* pcap = new G4LowECapture(pmin);
pman->AddDiscreteProcess(pcap);
G4LowECapture* icap = new G4LowECapture(ionmin);
iman->AddDiscreteProcess(icap);
G4LowECapture* a2cap = new G4LowECapture(ionmin);
a2man->AddDiscreteProcess(a2cap);
G4LowECapture* a1cap = new G4LowECapture(ionmin);
a1man->AddDiscreteProcess(a1cap);
G4LowECapture* a0cap = new G4LowECapture(ionmin);
a0man->AddDiscreteProcess(a0cap);
G4LowECapture* h0cap = new G4LowECapture(ionmin);
h0man->AddDiscreteProcess(h0cap);
// loop over regions
for(G4int i = 0; i < nreg; ++i)
{
G4String reg = regnamesDNA[i];
if(IsVerbose()) {
G4cout << "### DNA models type " << typesDNA[i]
<< " are activated for G4Region " << reg << G4endl;
}
// type of DNA physics
G4int itype = 0;
if(0 == itype) {
AddElectronModels0(reg, ecap, emsc, elowest, elimel);
AddProtonModels0(reg, pmsc, elimel, pminbb, pmin, pmax);
AddHeliumModels0(reg, a1msc, a2msc, elimel, pminbb, pmin, pmax);
AddGenericIonModels0(reg, imsc, elimel, pminbb, pmin);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmDNAPhysicsActivator::AddElectronModels0(const G4String& reg,
G4LowECapture* ecap, G4bool emsc,
G4double elowest, G4double elimel)
{
G4EmConfigurator* em_config =
G4LossTableManager::Instance()->EmConfigurator();
G4VEmModel* mod;
static const G4double elimin = 1 * MeV;
static const G4double elimvb = 100 * eV;
static const G4double elimat = 13 * eV;
static const G4double elim1 = 10 * keV;
G4double emax = theParameters->MaxKinEnergy();
if(IsVerbose()) {
G4cout << " Energy limits for e- elastic: "
<< elowest/eV << " eV - " << elimel/MeV << " MeV" << G4endl
<< " Energy limits for e- inelastic: "
<< elowest/eV << " eV - " << elimin/MeV << " MeV" << G4endl;
}
if(emsc) {
G4UrbanMscModel* msc = new G4UrbanMscModel();
msc->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("e-", "msc", msc, reg, 0.0, 100*MeV);
} else {
mod = new G4eCoulombScatteringModel();
mod->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("e-", "CoulombScat", mod, reg, 0.0, emax);
}
// cuts and solvation
if(G4DNAChemistryManager::IsActivated()) {
// For this condition to work, the chemistry list has to be called
// before any standard EM physics list
mod = new G4DNATransformElectronModel();
mod->SetHighEnergyLimit(elowest);
em_config->SetExtraEmModel("e-", "e-_G4DNAElectronSolvation",
mod, reg, 0.,elowest+1.*eV);
mod = new G4DNAUeharaScreenedRutherfordElasticModel();
mod->SetLowEnergyLimit(0.);
mod->SetActivationLowEnergyLimit(0.);
em_config->SetExtraEmModel("e-", "e-_G4DNAElastic",
mod, reg, 0.0, 7.4*eV);
} else if(ecap) {
ecap->AddRegion(reg);
} else {
mod = new G4DNAOneStepThermalizationModel();
mod->SetHighEnergyLimit(elowest);
em_config->SetExtraEmModel("e-", "e-_G4DNAElectronSolvation",
mod, reg, 0., elowest);
}
mod = new G4DNAChampionElasticModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAElastic",
mod, reg, 7.4*eV, elimel);
// ionisation
mod = new G4MollerBhabhaModel();
mod->SetActivationLowEnergyLimit(elimin);
em_config->SetExtraEmModel("e-", "eIoni",
mod, reg, 0.0, emax,
new G4UniversalFluctuation());
mod = new G4DNAEmfietzoglouIonisationModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAIonisation",
mod, reg, 0.0, elim1);
mod = new G4DNABornIonisationModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAIonisation",
mod, reg, elim1, elimin);
// exc
mod = new G4DNAEmfietzoglouExcitationModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAExcitation",
mod, reg, 0.0, elim1);
mod = new G4DNABornExcitationModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAExcitation",
mod, reg, elim1, elimin);
mod = new G4DNASancheExcitationModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAVibExcitation",
mod, reg, 0.0, elimvb);
mod = new G4DNAMeltonAttachmentModel();
em_config->SetExtraEmModel("e-", "e-_G4DNAAttachment",
mod, reg, 0.0, elimat);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmDNAPhysicsActivator::AddProtonModels0(const G4String& reg,
G4bool pmsc, G4double elimel,
G4double pminbb, G4double pmin,
G4double pmax)
{
G4EmConfigurator* em_config =
G4LossTableManager::Instance()->EmConfigurator();
G4VEmModel* mod;
static const G4double pminch = 100 * eV;
static const G4double gmmax = 500 * keV;
static const G4double hmax = 100 * MeV;
G4double emax = theParameters->MaxKinEnergy();
if(IsVerbose()) {
G4cout << " Energy limits for protons: "
<< pmin/MeV << " MeV - " << pmax/MeV << " MeV" << G4endl;
}
// proton
if(pmsc) {
G4UrbanMscModel* msc = new G4UrbanMscModel();
msc->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("proton", "msc", msc, reg, 0.0, 100*MeV);
} else {
mod = new G4eCoulombScatteringModel();
mod->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("proton", "CoulombScat", mod, reg, 0.0, emax);
}
mod = new G4BraggModel();
mod->SetActivationLowEnergyLimit(pminbb);
em_config->SetExtraEmModel("proton", "hIoni",
mod, reg, 0.0, pminbb,
new G4UniversalFluctuation());
mod = new G4BetheBlochModel();
mod->SetActivationLowEnergyLimit(pmax);
em_config->SetExtraEmModel("proton", "hIoni",
mod, reg, pminbb, emax,
new G4UniversalFluctuation());
mod = new G4DNARuddIonisationModel();
em_config->SetExtraEmModel("proton", "proton_G4DNAIonisation",
mod, reg, 0.0, gmmax);
mod = new G4DNABornIonisationModel();
em_config->SetExtraEmModel("proton", "proton_G4DNAIonisation",
mod, reg, gmmax, pmax);
mod = new G4DNAMillerGreenExcitationModel();
em_config->SetExtraEmModel("proton", "proton_G4DNAExcitation",
mod, reg, 0.0, gmmax);
mod = new G4DNABornExcitationModel();
em_config->SetExtraEmModel("proton", "proton_G4DNAExcitation",
mod, reg, gmmax, pmax);
mod = new G4DNADingfelderChargeDecreaseModel();
em_config->SetExtraEmModel("proton", "proton_G4DNAChargeDecrease",
mod, reg, pminch, pmax);
mod = new G4DNAIonElasticModel();
em_config->SetExtraEmModel("proton", "proton_G4DNAElasticModel",
mod, reg, 0.0, elimel);
// hydrogen
mod = new G4DNARuddIonisationModel();
em_config->SetExtraEmModel("hydrogen", "hydrogen_G4DNAIonisation",
mod, reg, 0.0, hmax);
mod = new G4DNAMillerGreenExcitationModel();
em_config->SetExtraEmModel("hydrogen", "hydrogen_G4DNAExcitation",
mod, reg, 0.0, gmmax);
mod = new G4DNADingfelderChargeIncreaseModel();
em_config->SetExtraEmModel("hydrogen", "hydrogen_G4DNAChargeIncrease",
mod, reg, pminch, pmax);
mod = new G4DNAIonElasticModel();
em_config->SetExtraEmModel("hydrogen", "hydrogen_G4DNAElasticModel",
mod, reg, 0.0, elimel);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmDNAPhysicsActivator::AddGenericIonModels0(const G4String& reg,
G4bool imsc, G4double elimel,
G4double pminbb, G4double pmin)
{
G4EmConfigurator* em_config =
G4LossTableManager::Instance()->EmConfigurator();
G4VEmModel* mod;
static const G4double gionmax= 1 * GeV;
G4double emax = theParameters->MaxKinEnergy();
if(IsVerbose()) {
G4cout << " Energy limits for GenericIon: "
<< pmin/MeV << " MeV/u - " << gionmax/MeV << " MeV/u" << G4endl;
}
if(imsc) {
G4UrbanMscModel* msc = new G4UrbanMscModel();
msc->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("proton", "ionmsc", msc, reg, 0.0, 100*MeV);
} else {
mod = new G4IonCoulombScatteringModel();
mod->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("proton", "CoulombScat", mod, reg, 0.0, emax);
}
mod = new G4BraggIonModel();
mod->SetActivationLowEnergyLimit(pminbb);
em_config->SetExtraEmModel("GenericIon", "ionIoni",
mod, reg, 0.0, pminbb,
new G4IonFluctuations());
mod = new G4BetheBlochModel();
mod->SetActivationLowEnergyLimit(gionmax);
em_config->SetExtraEmModel("GenericIon", "ionIoni",
mod, reg, pminbb, emax,
new G4IonFluctuations());
mod = new G4DNARuddIonisationExtendedModel();
em_config->SetExtraEmModel("GenericIon", "GenericIon_G4DNAIonisation",
mod, reg, 0.0, gionmax);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmDNAPhysicsActivator::AddHeliumModels0(const G4String& reg, G4bool a1msc,
G4bool a2msc, G4double elimel,
G4double pminbb, G4double pmin,
G4double pmax)
{
G4EmConfigurator* em_config =
G4LossTableManager::Instance()->EmConfigurator();
G4VEmModel* mod;
static const G4double mgmin = 1 * keV;
static const G4double hemax = 400 * MeV;
G4double emax = theParameters->MaxKinEnergy();
if(IsVerbose()) {
G4cout << " Energy limits for Helium ions: "
<< pmin/MeV << " MeV - " << hemax/MeV << " MeV" << G4endl;
}
// alpha++
if(a2msc) {
G4UrbanMscModel* msc = new G4UrbanMscModel();
msc->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("alpha++", "msc", msc, reg, 0.0, 100*MeV);
}
mod = new G4BraggIonModel();
mod->SetActivationLowEnergyLimit(pminbb);
em_config->SetExtraEmModel("alpha", "ionIoni",
mod, reg, 0.0, pminbb,
new G4IonFluctuations());
mod = new G4BetheBlochModel();
mod->SetActivationLowEnergyLimit(pmax);
em_config->SetExtraEmModel("alpha", "ionIoni",
mod, reg, pminbb, emax,
new G4IonFluctuations());
mod = new G4DNARuddIonisationExtendedModel();
em_config->SetExtraEmModel("alpha", "alpha_G4DNAIonisation",
mod, reg, 0.0, pmax);
mod = new G4DNAMillerGreenExcitationModel();
em_config->SetExtraEmModel("alpha", "alpha_G4DNAExcitation",
mod, reg, mgmin, pmax);
mod = new G4DNADingfelderChargeDecreaseModel();
em_config->SetExtraEmModel("alpha", "alpha_G4DNAChargeDecrease",
mod, reg, mgmin, hemax);
mod = new G4DNAIonElasticModel();
em_config->SetExtraEmModel("alpha", "alpha_G4DNAElasticModel",
mod, reg, 0.0, elimel);
// ---
// alpha+
if(a1msc) {
G4UrbanMscModel* msc = new G4UrbanMscModel();
msc->SetActivationLowEnergyLimit(elimel);
em_config->SetExtraEmModel("alpha+", "msc", msc, reg, 0.0, 100*MeV);
}
mod = new G4BraggIonModel();
mod->SetActivationLowEnergyLimit(pminbb);
em_config->SetExtraEmModel("alpha+", "ionIoni",
mod, reg, 0.0, pminbb,
new G4IonFluctuations());
mod = new G4BetheBlochModel();
mod->SetActivationLowEnergyLimit(pmax);
em_config->SetExtraEmModel("alpha+", "ionIoni",
mod, reg, pminbb, emax,
new G4IonFluctuations());
mod = new G4DNARuddIonisationModel();
em_config->SetExtraEmModel("alpha+", "alpha+_G4DNAIonisation",
mod, reg, 0.0, pmax);
mod = new G4DNAMillerGreenExcitationModel();
em_config->SetExtraEmModel("alpha+", "alpha+_G4DNAExcitation",
mod, reg, mgmin, pmax);
mod = new G4DNADingfelderChargeDecreaseModel();
em_config->SetExtraEmModel("alpha+", "alpha+_G4DNAChargeDecrease",
mod, reg, mgmin, hemax);
mod = new G4DNADingfelderChargeIncreaseModel();
em_config->SetExtraEmModel("alpha+", "alpha+_G4DNAChargeIncrease",
mod, reg, mgmin, hemax);
mod = new G4DNAIonElasticModel();
em_config->SetExtraEmModel("alpha+", "alpha+_G4DNAElasticModel",
mod, reg, 0.0, elimel);
// ---
// helium
mod = new G4DNARuddIonisationModel();
em_config->SetExtraEmModel("helium", "helium_G4DNAIonisation",
mod, reg, 0.0, pmax);
mod = new G4DNAMillerGreenExcitationModel();
em_config->SetExtraEmModel("helium", "helium_G4DNAExcitation",
mod, reg, mgmin, pmax);
mod = new G4DNADingfelderChargeIncreaseModel();
em_config->SetExtraEmModel("helium", "helium_G4DNAChargeIncrease",
mod, reg, mgmin, hemax);
mod = new G4DNAIonElasticModel();
em_config->SetExtraEmModel("helium", "helium_G4DNAElasticModel",
mod, reg, 0.0, elimel);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool G4EmDNAPhysicsActivator::HasMsc(G4ProcessManager* pm) const
{
G4bool res = false;
G4ProcessVector* pv = pm->GetProcessList();
G4int nproc = pm->GetProcessListLength();
for(G4int i = 0; i < nproc; ++i)
{
if(((*pv)[i])->GetProcessSubType() == fMultipleScattering)
{
res = true;
break;
}
}
return res;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -85,22 +85,18 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option1);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option1::G4EmDNAPhysics_option1(G4int ver)
: G4VPhysicsConstructor("G4EmDNAPhysics_option1"), verbose(ver)
{
G4EmParameters::Instance()->SetDefaults();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option1::G4EmDNAPhysics_option1(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmDNAPhysics_option1"), 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);
}
@@ -147,10 +143,11 @@ void G4EmDNAPhysics_option1::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-") {
@@ -333,7 +330,6 @@ void G4EmDNAPhysics_option1::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -84,22 +84,19 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option2);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option2::G4EmDNAPhysics_option2(G4int ver)
: G4VPhysicsConstructor("G4EmDNAPhysics_option2"), verbose(ver)
{
G4EmParameters::Instance()->SetDefaults();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option2::G4EmDNAPhysics_option2(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmDNAPhysics_option2"), 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);
}
@@ -142,10 +139,11 @@ void G4EmDNAPhysics_option2::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-") {
@@ -318,7 +316,6 @@ void G4EmDNAPhysics_option2::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -83,22 +83,18 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option3);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option3::G4EmDNAPhysics_option3(G4int ver)
: G4VPhysicsConstructor("G4EmDNAPhysics_option3"), verbose(ver)
{
G4EmParameters::Instance()->SetDefaults();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option3::G4EmDNAPhysics_option3(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmDNAPhysics_option3"), 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);
}
@@ -141,10 +137,11 @@ void G4EmDNAPhysics_option3::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-") {
@@ -275,7 +272,6 @@ void G4EmDNAPhysics_option3::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -89,22 +89,18 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option4);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option4::G4EmDNAPhysics_option4(G4int ver)
: G4VPhysicsConstructor("G4EmDNAPhysics_option4"), verbose(ver)
{
G4EmParameters::Instance()->SetDefaults();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option4::G4EmDNAPhysics_option4(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmDNAPhysics_option4"), 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);
}
@@ -147,10 +143,11 @@ void G4EmDNAPhysics_option4::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-") {
@@ -283,7 +280,6 @@ void G4EmDNAPhysics_option4::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -91,19 +91,16 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option5);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option5::G4EmDNAPhysics_option5(G4int ver) :
G4VPhysicsConstructor("G4EmDNAPhysics_option5"), verbose(ver)
{
G4EmParameters::Instance()->SetDefaults();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option5::G4EmDNAPhysics_option5(G4int ver, const G4String&) :
G4VPhysicsConstructor("G4EmDNAPhysics_option5"), 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);
}
@@ -148,10 +145,11 @@ void G4EmDNAPhysics_option5::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-")
@@ -324,7 +322,6 @@ void G4EmDNAPhysics_option5::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -75,6 +75,8 @@
#include "G4LivermoreGammaConversionModel.hh"
#include "G4RayleighScattering.hh"
#include "G4LivermoreRayleighModel.hh"
#include "G4EmParameters.hh"
// end of warning
#include "G4LossTableManager.hh"
@@ -89,17 +91,16 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAPhysics_option7);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option7::G4EmDNAPhysics_option7(G4int ver) :
G4VPhysicsConstructor("G4EmDNAPhysics_option7"), verbose(ver)
{
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmDNAPhysics_option7::G4EmDNAPhysics_option7(G4int ver, const G4String&) :
G4VPhysicsConstructor("G4EmDNAPhysics_option7"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetFluo(true);
param->SetAuger(true);
param->SetAugerCascade(true);
param->SetDeexcitationIgnoreCut(true);
SetPhysicsType(bElectromagnetic);
}
@@ -144,10 +145,11 @@ void G4EmDNAPhysics_option7::ConstructProcess()
}
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
aParticleIterator->reset();
while( (*aParticleIterator)() )
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() )
{
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "e-")
@@ -329,7 +331,6 @@ void G4EmDNAPhysics_option7::ConstructProcess()
//
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
de->SetFluo(true);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -69,6 +69,7 @@ G4EmLEPTSPhysics::G4EmLEPTSPhysics( const G4String& name)
: G4VPhysicsConstructor(name)
{
G4EmParameters::Instance()->SetDefaults();
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -100,10 +101,11 @@ void G4EmLEPTSPhysics::ConstructParticle()
void G4EmLEPTSPhysics::ConstructProcess()
{
aParticleIterator->reset();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition * particle = aParticleIterator->value();
while( (*myParticleIterator)() ){
G4ParticleDefinition * particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
G4ProcessManager * manager = particle->GetProcessManager();
G4cout << " particle " << particle->GetParticleName() << " manager " << manager << G4endl; //GDEB
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmLivermorePhysics.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmLivermorePhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
#include "G4EmLivermorePhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -123,40 +123,21 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmLivermorePhysics);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmLivermorePhysics::G4EmLivermorePhysics(G4int ver)
: G4VPhysicsConstructor("G4EmLivermorePhysics"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscRangeFactor(0.02);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmLivermorePhysics::G4EmLivermorePhysics(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmLivermorePhysics"), verbose(ver)
: G4VPhysicsConstructor("G4EmLivermore"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetMaxEnergy(1*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscRangeFactor(0.02);
param->SetMuHadLateralDisplacement(true);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
@@ -196,10 +177,6 @@ void G4EmLivermorePhysics::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -239,11 +216,12 @@ void G4EmLivermorePhysics::ConstructProcess()
G4NuclearStopping* pnuc = new G4NuclearStopping();
// Add Livermore EM Processes
aParticleIterator->reset();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*aParticleIterator)() ){
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -450,8 +428,7 @@ void G4EmLivermorePhysics::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmLivermorePolarizedPhysics.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmLivermorePolarizedPhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
#include "G4EmLivermorePolarizedPhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -121,36 +121,20 @@
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4EmLivermorePolarizedPhysics);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmLivermorePolarizedPhysics::G4EmLivermorePolarizedPhysics(G4int ver)
: G4VPhysicsConstructor("G4EmLivermorePolarizedPhysics"), verbose(ver)
G4EmLivermorePolarizedPhysics::G4EmLivermorePolarizedPhysics(G4int ver,
const G4String&)
: G4VPhysicsConstructor("G4EmLivermorePolarized"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmLivermorePolarizedPhysics::G4EmLivermorePolarizedPhysics(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmLivermorePolarizedPhysics"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetMaxEnergy(1*TeV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMuHadLateralDisplacement(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -189,10 +173,6 @@ void G4EmLivermorePolarizedPhysics::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -232,11 +212,12 @@ void G4EmLivermorePolarizedPhysics::ConstructProcess()
G4NuclearStopping* pnuc = new G4NuclearStopping();
// Add Livermore EM Processes
aParticleIterator->reset();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*aParticleIterator)() ){
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
//Applicability range for Livermore models
@@ -456,8 +437,7 @@ void G4EmLivermorePolarizedPhysics::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmLowEPPhysics.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmLowEPPhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
#include "G4EmLowEPPhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -123,23 +123,6 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmLowEPPhysics);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmLowEPPhysics::G4EmLowEPPhysics(G4int ver)
: G4VPhysicsConstructor("G4EmLowEPPhysics"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmLowEPPhysics::G4EmLowEPPhysics(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmLowEPPhysics"), verbose(ver)
{
@@ -147,7 +130,7 @@ G4EmLowEPPhysics::G4EmLowEPPhysics(G4int ver, const G4String&)
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetMaxEnergy(1*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
@@ -189,10 +172,6 @@ void G4EmLowEPPhysics::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -228,11 +207,12 @@ void G4EmLowEPPhysics::ConstructProcess()
G4NuclearStopping* pnuc = new G4NuclearStopping();
// Add Livermore EM Processes
aParticleIterator->reset();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*aParticleIterator)() ){
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if(verbose > 1)
@@ -423,8 +403,7 @@ void G4EmLowEPPhysics::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
File diff suppressed because it is too large Load Diff
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmPenelopePhysics.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmPenelopePhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
#include "G4EmPenelopePhysics.hh"
#include "G4ParticleDefinition.hh"
@@ -130,27 +130,8 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmPenelopePhysics);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmPenelopePhysics::G4EmPenelopePhysics(G4int ver)
: G4VPhysicsConstructor("G4EmPenelopePhysics"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->SetMscRangeFactor(0.02);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetFluo(true);
param->SetPIXEElectronCrossSectionModel("Penelope");
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmPenelopePhysics::G4EmPenelopePhysics(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmPenelopePhysics"), verbose(ver)
: G4VPhysicsConstructor("G4EmPenelope"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
@@ -161,6 +142,7 @@ G4EmPenelopePhysics::G4EmPenelopePhysics(G4int ver, const G4String&)
param->SetNumberOfBinsPerDecade(20);
param->SetMscRangeFactor(0.02);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetMuHadLateralDisplacement(true);
param->SetFluo(true);
param->SetPIXEElectronCrossSectionModel("Penelope");
SetPhysicsType(bElectromagnetic);
@@ -200,10 +182,6 @@ void G4EmPenelopePhysics::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -243,11 +221,12 @@ void G4EmPenelopePhysics::ConstructProcess()
G4NuclearStopping* pnuc = new G4NuclearStopping();
// Add Penelope EM Processes
aParticleIterator->reset();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*aParticleIterator)() ){
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
//Applicability range for Penelope models
@@ -487,8 +466,7 @@ void G4EmPenelopePhysics::ConstructProcess()
G4VAtomDeexcitation* deexcitation = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(deexcitation);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmStandardPhysics.cc 99938 2016-10-12 08:06:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -108,17 +108,6 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysics);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics::G4EmStandardPhysics(G4int ver)
: G4VPhysicsConstructor("G4EmStandard"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics::G4EmStandardPhysics(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmStandard"), verbose(ver)
{
@@ -162,10 +151,6 @@ void G4EmStandardPhysics::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -210,9 +195,10 @@ void G4EmStandardPhysics::ConstructProcess()
G4double highEnergyLimit = 100*MeV;
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -360,8 +346,7 @@ void G4EmStandardPhysics::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -106,24 +106,8 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysicsGS);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysicsGS::G4EmStandardPhysicsGS(G4int ver)
: G4VPhysicsConstructor("G4EmStandard"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetLowestElectronEnergy(10*eV);
param->SetMscRangeFactor(0.1);
param->SetMscStepLimitType(fUseSafetyPlus);// corresponds to Urban fUseSafety
// param->SetMscStepLimitType(fUseSafety);// corresponds to the error-free stepping
// param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysicsGS::G4EmStandardPhysicsGS(G4int ver, const G4String&)
: G4VPhysicsConstructor("G4EmStandard"), verbose(ver)
: G4VPhysicsConstructor("G4EmStandardGS"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
@@ -170,10 +154,6 @@ void G4EmStandardPhysicsGS::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -218,9 +198,10 @@ void G4EmStandardPhysicsGS::ConstructProcess()
G4double highEnergyLimit = 100*MeV;
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -383,8 +364,7 @@ void G4EmStandardPhysicsGS::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -160,10 +160,6 @@ void G4EmStandardPhysicsSS::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -195,9 +191,10 @@ void G4EmStandardPhysicsSS::ConstructProcess()
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -317,8 +314,7 @@ void G4EmStandardPhysicsSS::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -116,8 +116,8 @@ G4EmStandardPhysicsWVI::G4EmStandardPhysicsWVI(G4int ver)
param->SetDefaults();
param->SetVerbose(verbose);
param->SetLowestElectronEnergy(10*eV);
// param->SetLatDisplacementBeyondSafety(true);
param->SetMuHadLateralDisplacement(false);
//param->SetLatDisplacementBeyondSafety(true);
//param->SetMuHadLateralDisplacement(false);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscThetaLimit(0.15);
param->SetFluo(true);
@@ -158,10 +158,6 @@ void G4EmStandardPhysicsWVI::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -203,9 +199,10 @@ void G4EmStandardPhysicsWVI::ConstructProcess()
G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -336,8 +333,7 @@ void G4EmStandardPhysicsWVI::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option1.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmStandardPhysics_option1.cc 99938 2016-10-12 08:06:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -112,20 +112,6 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option1);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option1::G4EmStandardPhysics_option1(G4int ver)
: G4VPhysicsConstructor("G4EmStandard_opt1"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetApplyCuts(true);
param->SetMscRangeFactor(0.2);
param->SetMscStepLimitType(fMinimal);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option1::G4EmStandardPhysics_option1(G4int ver,
const G4String&)
: G4VPhysicsConstructor("G4EmStandard_opt1"), verbose(ver)
@@ -173,10 +159,6 @@ void G4EmStandardPhysics_option1::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -221,9 +203,10 @@ void G4EmStandardPhysics_option1::ConstructProcess()
G4double highEnergyLimit = 100*MeV;
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -378,8 +361,7 @@ void G4EmStandardPhysics_option1::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option2.cc 92821 2015-09-17 15:23:49Z gcosmo $
// $Id: G4EmStandardPhysics_option2.cc 99938 2016-10-12 08:06:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -118,20 +118,6 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option2);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option2::G4EmStandardPhysics_option2(G4int ver)
: G4VPhysicsConstructor("G4EmStandard_opt2"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetApplyCuts(false);
param->SetMscRangeFactor(0.2);
param->SetMscStepLimitType(fMinimal);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option2::G4EmStandardPhysics_option2(G4int ver,
const G4String&)
: G4VPhysicsConstructor("G4EmStandard_opt2"), verbose(ver)
@@ -179,10 +165,6 @@ void G4EmStandardPhysics_option2::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -227,9 +209,10 @@ void G4EmStandardPhysics_option2::ConstructProcess()
G4double highEnergyLimit = 100*MeV;
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -403,8 +386,7 @@ void G4EmStandardPhysics_option2::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option3.cc 96267 2016-04-01 12:38:51Z gcosmo $
// $Id: G4EmStandardPhysics_option3.cc 99938 2016-10-12 08:06:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -115,24 +115,6 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option3);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(G4int ver)
: G4VPhysicsConstructor("G4EmStandard_opt3"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(10*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetMuHadLateralDisplacement(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(G4int ver,
const G4String&)
: G4VPhysicsConstructor("G4EmStandard_opt3"), verbose(ver)
@@ -141,10 +123,11 @@ G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(G4int ver,
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(10*eV);
param->SetMaxEnergy(10*TeV);
param->SetMaxEnergy(100*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetMuHadLateralDisplacement(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -183,10 +166,6 @@ void G4EmStandardPhysics_option3::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -224,9 +203,10 @@ void G4EmStandardPhysics_option3::ConstructProcess()
G4NuclearStopping* pnuc = new G4NuclearStopping();
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -402,8 +382,7 @@ void G4EmStandardPhysics_option3::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmStandardPhysics_option4.cc 96209 2016-03-30 08:58:33Z gcosmo $
// $Id: G4EmStandardPhysics_option4.cc 99938 2016-10-12 08:06:52Z gcosmo $
//
//---------------------------------------------------------------------------
//
@@ -119,26 +119,6 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option4);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(G4int ver)
: G4VPhysicsConstructor("G4EmStandard_opt4"), verbose(ver)
{
G4EmParameters* param = G4EmParameters::Instance();
param->SetDefaults();
param->SetVerbose(verbose);
param->SetMinEnergy(100*eV);
param->SetMaxEnergy(10*TeV);
param->SetLowestElectronEnergy(100*eV);
param->SetNumberOfBinsPerDecade(20);
param->ActivateAngularGeneratorForIonisation(true);
param->SetMscRangeFactor(0.02);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetLatDisplacementBeyondSafety(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(G4int ver,
const G4String&)
: G4VPhysicsConstructor("G4EmStandard_opt4"), verbose(ver)
@@ -154,7 +134,7 @@ G4EmStandardPhysics_option4::G4EmStandardPhysics_option4(G4int ver,
param->SetMscRangeFactor(0.02);
param->SetMscStepLimitType(fUseDistanceToBoundary);
param->SetMuHadLateralDisplacement(true);
//param->SetLatDisplacementBeyondSafety(true);
// param->SetLatDisplacementBeyondSafety(true);
param->SetFluo(true);
SetPhysicsType(bElectromagnetic);
}
@@ -193,10 +173,6 @@ void G4EmStandardPhysics_option4::ConstructParticle()
G4He3::He3();
G4Alpha::Alpha();
G4GenericIon::GenericIonDefinition();
// dna
G4EmModelActivator mact;
mact.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -247,9 +223,10 @@ void G4EmStandardPhysics_option4::ConstructProcess()
G4NuclearStopping* pnuc = new G4NuclearStopping();
// Add standard EM Processes
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
@@ -480,8 +457,7 @@ void G4EmStandardPhysics_option4::ConstructProcess()
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
G4EmModelActivator mact;
mact.ConstructProcess();
G4EmModelActivator mact(GetPhysicsName());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -335,11 +335,12 @@ void G4OpticalPhysics::ConstructProcess()
UIhelpers::buildCommands(CerenkovProcess);
OpProcesses[kCerenkov] = CerenkovProcess;
aParticleIterator->reset();
auto myParticleIterator=GetParticleIterator();
myParticleIterator->reset();
while( (*aParticleIterator)() ){
while( (*myParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
G4ParticleDefinition* particle = myParticleIterator->value();
G4String particleName = particle->GetParticleName();
pManager = particle->GetProcessManager();