Import Geant4 10.5.0.beta source tree
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$Id: History 106588 2017-10-13 13:44:45Z gcosmo $
|
||||
$Id: History 109315 2018-04-11 06:42:51Z gcosmo $
|
||||
----------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -14,7 +14,16 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
|
||||
10-04-18 mma (testem18-V10-04-02)
|
||||
- testem18.cc : set visualisation only in interactive mode
|
||||
|
||||
21-03-18 mma (testem18-V10-04-01)
|
||||
- testem18.cc : remove G4UI_USE and G4VIS_USE
|
||||
|
||||
15-12-17 mma (testem18-V10-04-00)
|
||||
- update PhysListEmLivermore and Penelope
|
||||
|
||||
13-10-17 mma (testem18-V10-03-06)
|
||||
- add edep.mac
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/// \brief Main program of the electromagnetic/TestEm18 example
|
||||
//
|
||||
//
|
||||
// $Id: TestEm18.cc 105252 2017-07-17 09:40:37Z gcosmo $
|
||||
// $Id: TestEm18.cc 109315 2018-04-11 06:42:51Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -46,18 +46,17 @@
|
||||
#include "SteppingVerbose.hh"
|
||||
#include "StackingAction.hh"
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "G4VisExecutive.hh"
|
||||
#endif
|
||||
|
||||
#ifdef G4UI_USE
|
||||
#include "G4UIExecutive.hh"
|
||||
#endif
|
||||
#include "G4VisExecutive.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
int main(int argc,char** argv) {
|
||||
|
||||
//detect interactive mode (if no arguments) and define UI session
|
||||
G4UIExecutive* ui = nullptr;
|
||||
if (argc == 1) ui = new G4UIExecutive(argc,argv);
|
||||
|
||||
//choose the Random engine
|
||||
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
|
||||
|
||||
@@ -86,52 +85,42 @@ int main(int argc,char** argv) {
|
||||
//eventAction
|
||||
EventAction* eventaction = new EventAction(runaction);
|
||||
runManager->SetUserAction(eventaction);
|
||||
|
||||
|
||||
//TrackingAction
|
||||
TrackingAction* trackingaction = new TrackingAction(runaction);
|
||||
runManager->SetUserAction(trackingaction);
|
||||
|
||||
|
||||
//stepAction
|
||||
SteppingAction* steppingaction = new SteppingAction(runaction, eventaction);
|
||||
runManager->SetUserAction(steppingaction);
|
||||
|
||||
|
||||
//stackAction
|
||||
StackingAction* stackingaction = new StackingAction();
|
||||
runManager->SetUserAction(stackingaction);
|
||||
|
||||
// get the pointer to the User Interface manager
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
runManager->SetUserAction(stackingaction);
|
||||
|
||||
if (argc!=1) // batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UI->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
else //define visualization and UI terminal for interactive mode
|
||||
{
|
||||
#ifdef G4VIS_USE
|
||||
G4VisManager* visManager = new G4VisExecutive;
|
||||
//initialize visualization
|
||||
G4VisManager* visManager = nullptr;
|
||||
|
||||
//get the pointer to the User Interface manager
|
||||
G4UImanager* UImanager = G4UImanager::GetUIpointer();
|
||||
|
||||
if (ui) {
|
||||
//interactive mode
|
||||
visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
#ifdef G4UI_USE
|
||||
G4UIExecutive * ui = new G4UIExecutive(argc,argv);
|
||||
ui->SessionStart();
|
||||
delete ui;
|
||||
#endif
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
}
|
||||
|
||||
// job termination
|
||||
//
|
||||
delete runManager;
|
||||
ui->SessionStart();
|
||||
delete ui;
|
||||
}
|
||||
else {
|
||||
//batch mode
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UImanager->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
return 0;
|
||||
//job termination
|
||||
delete visManager;
|
||||
delete runManager;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
############################################
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-10-04-patch-02 (25-May-2018)
|
||||
Geant4 version Name: geant4-10-05-beta-01 (29-June-2018)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -21,7 +21,6 @@ Spline of EM tables enabled 1
|
||||
Apply cuts on all EM processes 0
|
||||
Use integral approach for tracking 1
|
||||
X-section factor for integral approach 0.8
|
||||
Use built-in Birks satuaration 0
|
||||
Min kinetic energy for tables 10 eV
|
||||
Max kinetic energy for tables 10 TeV
|
||||
Number of bins in tables 120
|
||||
@@ -30,20 +29,23 @@ Verbose level 0
|
||||
Verbose level for worker thread 0
|
||||
Bremsstrahlung energy threshold above which
|
||||
primary is added to the list of secondary 100 TeV
|
||||
Lowest triplet kinetic energy 1 MeV
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
=======================================================================
|
||||
Step function for e+- (0.2, 1 mm)
|
||||
Step function for muons/hadrons (0.2, 0.1 mm)
|
||||
Lowest e+e- kinetic energy 1 keV
|
||||
Lowest muon/hadron kinetic energy 1 keV
|
||||
Fluctuations of dE/dx are enabled 1
|
||||
Use built-in Birks satuaration 0
|
||||
Build CSDA range enabled 1
|
||||
Use cut as a final range enabled 1
|
||||
Enable angular generator interface 0
|
||||
Factor of cut reduction for sub-cutoff method 1
|
||||
Max kinetic energy for CSDA tables 10 TeV
|
||||
Lowest e+e- kinetic energy 1 keV
|
||||
Lowest muon/hadron kinetic energy 1 keV
|
||||
Lowest triplet kinetic energy 1 MeV
|
||||
Linear loss limit 0.01
|
||||
=======================================================================
|
||||
====== Multiple Scattering Parameters ========
|
||||
@@ -52,7 +54,7 @@ Type of msc step limit algorithm for e+- 1
|
||||
Type of msc step limit algorithm for muons/hadrons 0
|
||||
Msc lateral displacement for e+- enabled 1
|
||||
Msc lateral displacement for muons and hadrons 0
|
||||
Msc lateral displacement alg96 for e+- 1
|
||||
Urban msc model lateral displacement alg96 1
|
||||
Msc lateral displacement beyond geometry safety 0
|
||||
Range factor for msc step limit for e+- 0.04
|
||||
Range factor for msc step limit for muons/hadrons 0.2
|
||||
@@ -63,6 +65,7 @@ Factor used for dynamic computation of angular
|
||||
limit between single and multiple scattering 1
|
||||
Fixed angular limit between single
|
||||
and multiple scattering 3.1416 rad
|
||||
Upper energy limit for e+- multiple scattering 100 MeV
|
||||
Type of nuclear form-factor 1
|
||||
Screening factor 1
|
||||
=======================================================================
|
||||
@@ -82,6 +85,7 @@ Type of PIXE cross section for e+- Livermore
|
||||
Use fast sampling in DNA models 0
|
||||
Use Stationary option in DNA models 0
|
||||
Use DNA with multiple scattering of e- 0
|
||||
Use DNA e- solvation model type 3
|
||||
=======================================================================
|
||||
/run/verbose 2
|
||||
#
|
||||
@@ -165,7 +169,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=0.81s Real=0.82s Sys=0s
|
||||
User=0.700000s Real=0.703023s Sys=0.000000s
|
||||
|
||||
======================== run summary ======================
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/// \brief Implementation of the PhysListEmLivermore class
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmLivermore.cc 105252 2017-07-17 09:40:37Z gcosmo $
|
||||
// $Id: PhysListEmLivermore.cc 108015 2017-12-19 09:06:35Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
|
||||
// gamma
|
||||
|
||||
@@ -75,6 +76,11 @@
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
// deexcitation
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -104,13 +110,14 @@ PhysListEmLivermore::~PhysListEmLivermore()
|
||||
|
||||
void PhysListEmLivermore::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
|
||||
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// Add Livermore EM Processes
|
||||
|
||||
auto particleIterator=GetParticleIterator();
|
||||
particleIterator->reset();
|
||||
while( (*particleIterator)() ){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
//Applicability range for Livermore models
|
||||
@@ -125,28 +132,28 @@ void PhysListEmLivermore::ConstructProcess()
|
||||
photModel = new G4LivermorePhotoElectricModel();
|
||||
photModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
phot->AddEmModel(0, photModel);
|
||||
pmanager->AddDiscreteProcess(phot);
|
||||
list->RegisterProcess(phot, particle);
|
||||
|
||||
G4ComptonScattering* compt = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel*
|
||||
comptModel = new G4LivermoreComptonModel();
|
||||
comptModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
compt->AddEmModel(0, comptModel);
|
||||
pmanager->AddDiscreteProcess(compt);
|
||||
list->RegisterProcess(compt, particle);
|
||||
|
||||
G4GammaConversion* conv = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel*
|
||||
convModel = new G4LivermoreGammaConversionModel();
|
||||
convModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
conv->AddEmModel(0, convModel);
|
||||
pmanager->AddDiscreteProcess(conv);
|
||||
list->RegisterProcess(conv, particle);
|
||||
|
||||
G4RayleighScattering* rayl = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel*
|
||||
raylModel = new G4LivermoreRayleighModel();
|
||||
raylModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
rayl->AddEmModel(0, raylModel);
|
||||
pmanager->AddDiscreteProcess(rayl);
|
||||
list->RegisterProcess(rayl, particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
@@ -156,38 +163,42 @@ void PhysListEmLivermore::ConstructProcess()
|
||||
eIoniModel = new G4LivermoreIonisationModel();
|
||||
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
|
||||
pmanager->AddProcess(eIoni, -1, 1, 1);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4LivermoreBremsstrahlungModel*
|
||||
eBremModel = new G4LivermoreBremsstrahlungModel();
|
||||
eBremModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eBrem->AddEmModel(0, eBremModel);
|
||||
pmanager->AddProcess(eBrem, -1, 2, 2);
|
||||
list->RegisterProcess(eBrem, particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
|
||||
list->RegisterProcess(new G4eIonisation, particle);
|
||||
list->RegisterProcess(new G4eBremsstrahlung, particle);
|
||||
list->RegisterProcess(new G4eplusAnnihilation, particle);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
|
||||
list->RegisterProcess(new G4MuIonisation, particle);
|
||||
list->RegisterProcess(new G4MuBremsstrahlung, particle);
|
||||
list->RegisterProcess(new G4MuPairProduction, particle);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 1, 1);
|
||||
list->RegisterProcess(new G4ionIonisation, particle);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 1, 1);
|
||||
list->RegisterProcess(new G4hIonisation, particle);
|
||||
}
|
||||
}
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/// \brief Implementation of the PhysListEmPenelope class
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmPenelope.cc 105252 2017-07-17 09:40:37Z gcosmo $
|
||||
// $Id: PhysListEmPenelope.cc 108015 2017-12-19 09:06:35Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "G4BuilderType.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4PhysicsListHelper.hh"
|
||||
|
||||
// gamma
|
||||
|
||||
@@ -76,6 +77,11 @@
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
// deexcitation
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UAtomicDeexcitation.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -105,13 +111,14 @@ PhysListEmPenelope::~PhysListEmPenelope()
|
||||
|
||||
void PhysListEmPenelope::ConstructProcess()
|
||||
{
|
||||
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// Add standard EM Processes
|
||||
|
||||
auto particleIterator=GetParticleIterator();
|
||||
particleIterator->reset();
|
||||
while( (*particleIterator)() ){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
//Applicability range for Penelope models
|
||||
@@ -126,28 +133,28 @@ void PhysListEmPenelope::ConstructProcess()
|
||||
photModel = new G4PenelopePhotoElectricModel();
|
||||
photModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
phot->AddEmModel(0, photModel);
|
||||
pmanager->AddDiscreteProcess(phot);
|
||||
list->RegisterProcess(phot, particle);
|
||||
|
||||
G4ComptonScattering* compt = new G4ComptonScattering();
|
||||
G4PenelopeComptonModel*
|
||||
comptModel = new G4PenelopeComptonModel();
|
||||
comptModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
compt->AddEmModel(0, comptModel);
|
||||
pmanager->AddDiscreteProcess(compt);
|
||||
list->RegisterProcess(compt, particle);
|
||||
|
||||
G4GammaConversion* conv = new G4GammaConversion();
|
||||
G4PenelopeGammaConversionModel*
|
||||
convModel = new G4PenelopeGammaConversionModel();
|
||||
convModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
conv->AddEmModel(0, convModel);
|
||||
pmanager->AddDiscreteProcess(conv);
|
||||
list->RegisterProcess(conv, particle);
|
||||
|
||||
G4RayleighScattering* rayl = new G4RayleighScattering();
|
||||
G4PenelopeRayleighModel*
|
||||
raylModel = new G4PenelopeRayleighModel();
|
||||
raylModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
rayl->AddEmModel(0, raylModel);
|
||||
pmanager->AddDiscreteProcess(rayl);
|
||||
list->RegisterProcess(rayl, particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
@@ -157,14 +164,14 @@ void PhysListEmPenelope::ConstructProcess()
|
||||
eIoniModel = new G4PenelopeIonisationModel();
|
||||
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
|
||||
pmanager->AddProcess(eIoni, -1, 1, 1);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4PenelopeBremsstrahlungModel*
|
||||
eBremModel = new G4PenelopeBremsstrahlungModel();
|
||||
eBremModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eBrem->AddEmModel(0, eBremModel);
|
||||
pmanager->AddProcess(eBrem, -1, 2, 2);
|
||||
list->RegisterProcess(eBrem, particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
@@ -173,39 +180,43 @@ void PhysListEmPenelope::ConstructProcess()
|
||||
eIoniModel = new G4PenelopeIonisationModel();
|
||||
eIoniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
|
||||
pmanager->AddProcess(eIoni, -1, 1, 1);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4PenelopeBremsstrahlungModel*
|
||||
eBremModel = new G4PenelopeBremsstrahlungModel();
|
||||
eBremModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eBrem->AddEmModel(0, eBremModel);
|
||||
pmanager->AddProcess(eBrem, -1, 2, 2);
|
||||
list->RegisterProcess(eBrem, particle);
|
||||
|
||||
G4eplusAnnihilation* eAnni = new G4eplusAnnihilation();
|
||||
G4PenelopeAnnihilationModel*
|
||||
eAnniModel = new G4PenelopeAnnihilationModel();
|
||||
eAnniModel->SetHighEnergyLimit(highEnergyLimit);
|
||||
eAnni->AddEmModel(0, eAnniModel);
|
||||
pmanager->AddProcess(eAnni, 0,-1, 3);
|
||||
list->RegisterProcess(eAnni, particle);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
|
||||
list->RegisterProcess(new G4MuIonisation, particle);
|
||||
list->RegisterProcess(new G4MuBremsstrahlung, particle);
|
||||
list->RegisterProcess(new G4MuPairProduction, particle);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 1, 1);
|
||||
list->RegisterProcess(new G4ionIonisation, particle);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 1, 1);
|
||||
list->RegisterProcess(new G4hIonisation, particle);
|
||||
}
|
||||
}
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/// \file electromagnetic/TestEm18/src/PhysListEmStandard.cc
|
||||
/// \brief Implementation of the PhysListEmStandard class
|
||||
//
|
||||
// $Id: PhysListEmStandard.cc 105252 2017-07-17 09:40:37Z gcosmo $
|
||||
// $Id: PhysListEmStandard.cc 108015 2017-12-19 09:06:35Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -92,7 +92,7 @@ PhysListEmStandard::~PhysListEmStandard()
|
||||
|
||||
void PhysListEmStandard::ConstructProcess()
|
||||
{
|
||||
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
G4PhysicsListHelper* list = G4PhysicsListHelper::GetPhysicsListHelper();
|
||||
|
||||
// Add standard EM Processes
|
||||
//
|
||||
@@ -104,36 +104,36 @@ void PhysListEmStandard::ConstructProcess()
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
////ph->RegisterProcess(new G4RayleighScattering, particle);
|
||||
ph->RegisterProcess(new G4PhotoElectricEffect, particle);
|
||||
G4ComptonScattering* cs = new G4ComptonScattering;
|
||||
cs->SetEmModel(new G4KleinNishinaModel());
|
||||
ph->RegisterProcess(cs, particle);
|
||||
ph->RegisterProcess(new G4GammaConversion, particle);
|
||||
////list->RegisterProcess(new G4RayleighScattering, particle);
|
||||
list->RegisterProcess(new G4PhotoElectricEffect, particle);
|
||||
G4ComptonScattering* compt = new G4ComptonScattering;
|
||||
compt->SetEmModel(new G4KleinNishinaModel());
|
||||
list->RegisterProcess(compt, particle);
|
||||
list->RegisterProcess(new G4GammaConversion, particle);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.1, 100*um);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
list->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.1, 100*um);
|
||||
ph->RegisterProcess(eIoni, particle);
|
||||
ph->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
list->RegisterProcess(eIoni, particle);
|
||||
list->RegisterProcess(new G4eBremsstrahlung(), particle);
|
||||
list->RegisterProcess(new G4eplusAnnihilation(), particle);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.1, 50*um);
|
||||
ph->RegisterProcess(muIoni, particle);
|
||||
ph->RegisterProcess(new G4MuBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4MuPairProduction(), particle);
|
||||
list->RegisterProcess(muIoni, particle);
|
||||
list->RegisterProcess(new G4MuBremsstrahlung(), particle);
|
||||
list->RegisterProcess(new G4MuPairProduction(), particle);
|
||||
|
||||
} else if( particleName == "proton" ||
|
||||
particleName == "pi-" ||
|
||||
@@ -141,39 +141,39 @@ void PhysListEmStandard::ConstructProcess()
|
||||
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.1, 20*um);
|
||||
ph->RegisterProcess(hIoni, particle);
|
||||
ph->RegisterProcess(new G4hBremsstrahlung(), particle);
|
||||
ph->RegisterProcess(new G4hPairProduction(), particle);
|
||||
list->RegisterProcess(hIoni, particle);
|
||||
list->RegisterProcess(new G4hBremsstrahlung(), particle);
|
||||
list->RegisterProcess(new G4hPairProduction(), particle);
|
||||
|
||||
} else if( particleName == "alpha" ||
|
||||
particleName == "He3" ) {
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetStepFunction(0.1, 1*um);
|
||||
ph->RegisterProcess(ionIoni, particle);
|
||||
ph->RegisterProcess(new G4NuclearStopping(), particle);
|
||||
list->RegisterProcess(ionIoni, particle);
|
||||
list->RegisterProcess(new G4NuclearStopping(), particle);
|
||||
|
||||
} else if( particleName == "GenericIon" ) {
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
ionIoni->SetStepFunction(0.1, 1*um);
|
||||
ph->RegisterProcess(ionIoni, particle);
|
||||
ph->RegisterProcess(new G4NuclearStopping(), particle);
|
||||
list->RegisterProcess(ionIoni, particle);
|
||||
list->RegisterProcess(new G4NuclearStopping(), particle);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
|
||||
//all others charged particles except geantino
|
||||
ph->RegisterProcess(new G4hIonisation(), particle);
|
||||
list->RegisterProcess(new G4hIonisation(), particle);
|
||||
}
|
||||
}
|
||||
|
||||
// Deexcitation
|
||||
//
|
||||
G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(de);
|
||||
G4VAtomDeexcitation* deex = new G4UAtomicDeexcitation();
|
||||
G4LossTableManager::Instance()->SetAtomDeexcitation(deex);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Reference in New Issue
Block a user