#include <PhysicsList.hh>
Public Member Functions | |
PhysicsList () | |
~PhysicsList () | |
Protected Member Functions | |
void | ConstructParticle () |
void | ConstructProcess () |
void | SetCuts () |
void | ConstructEM () |
void | ConstructDecay () |
void | AddStepMax () |
Definition at line 16 of file PhysicsList.hh.
PhysicsList::PhysicsList | ( | ) |
Definition at line 16 of file PhysicsList.cc.
00016 : G4VUserPhysicsList() 00017 { 00018 defaultCutValue = 1.0*mm; 00019 SetVerboseLevel(1); 00020 }
PhysicsList::~PhysicsList | ( | ) |
void PhysicsList::ConstructParticle | ( | ) | [protected] |
Definition at line 29 of file PhysicsList.cc.
00030 { 00031 // pseudo-particles 00032 G4Geantino::GeantinoDefinition(); 00033 00034 // gamma 00035 G4Gamma::GammaDefinition(); 00036 00037 // e+/- 00038 G4Electron::ElectronDefinition(); 00039 G4Positron::PositronDefinition(); 00040 00041 // muon 00042 G4MuonPlus::MuonPlusDefinition(); 00043 G4MuonMinus::MuonMinusDefinition(); 00044 00045 // neutrino 00046 G4NeutrinoE::NeutrinoEDefinition(); 00047 G4AntiNeutrinoE::AntiNeutrinoEDefinition(); 00048 G4NeutrinoMu::NeutrinoMuDefinition(); 00049 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); 00050 00051 // proton+neutron 00052 G4Proton::ProtonDefinition(); 00053 G4Neutron::NeutronDefinition(); 00054 }
void PhysicsList::ConstructProcess | ( | ) | [protected] |
Definition at line 58 of file PhysicsList.cc.
00059 { 00060 AddTransportation(); 00061 ConstructEM(); 00062 ConstructDecay(); 00063 00064 // step limitation (as a full process) 00065 // 00066 AddStepMax(); 00067 }
void PhysicsList::SetCuts | ( | ) | [protected] |
Definition at line 177 of file PhysicsList.cc.
00178 { 00179 //G4VUserPhysicsList::SetCutsWithDefault method sets 00180 //the default cut value for all particle types 00181 // 00182 SetCutsWithDefault(); 00183 00184 if (verboseLevel>0) DumpCutValuesTable(); 00185 }
void PhysicsList::ConstructEM | ( | ) | [protected] |
Definition at line 89 of file PhysicsList.cc.
Referenced by ConstructProcess().
00090 { 00091 theParticleIterator->reset(); 00092 while( (*theParticleIterator)() ){ 00093 G4ParticleDefinition* particle = theParticleIterator->value(); 00094 G4ProcessManager* pmanager = particle->GetProcessManager(); 00095 G4String particleName = particle->GetParticleName(); 00096 00097 if (particleName == "gamma") { 00098 // gamma 00099 pmanager->AddDiscreteProcess(new G4PhotoElectricEffect); 00100 pmanager->AddDiscreteProcess(new G4ComptonScattering); 00101 pmanager->AddDiscreteProcess(new G4GammaConversion); 00102 00103 } else if (particleName == "e-") { 00104 //electron 00105 pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); 00106 pmanager->AddProcess(new G4eIonisation, -1, 2,2); 00107 pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); 00108 00109 } else if (particleName == "e+") { 00110 //positron 00111 pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); 00112 pmanager->AddProcess(new G4eIonisation, -1, 2,2); 00113 pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); 00114 pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); 00115 00116 } else if( particleName == "mu+" || 00117 particleName == "mu-" ) { 00118 //muon 00119 pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); 00120 pmanager->AddProcess(new G4MuIonisation, -1, 2,2); 00121 pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); 00122 pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); 00123 00124 } else if (particle->GetPDGCharge() != 0.0 && 00125 ! particle->IsShortLived() && 00126 particle->GetParticleName() != "chargedgeantino" ) { 00127 pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); 00128 pmanager->AddProcess(new G4hIonisation, -1, 2,2); 00129 } 00130 } 00131 }
void PhysicsList::ConstructDecay | ( | ) | [protected] |
Definition at line 137 of file PhysicsList.cc.
Referenced by ConstructProcess().
00138 { 00139 // Add Decay Process 00140 G4Decay* theDecayProcess = new G4Decay(); 00141 theParticleIterator->reset(); 00142 while( (*theParticleIterator)() ){ 00143 G4ParticleDefinition* particle = theParticleIterator->value(); 00144 G4ProcessManager* pmanager = particle->GetProcessManager(); 00145 if (theDecayProcess->IsApplicable(*particle)) { 00146 pmanager ->AddProcess(theDecayProcess); 00147 // set ordering for PostStepDoIt and AtRestDoIt 00148 pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); 00149 pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); 00150 } 00151 } 00152 00153 }
void PhysicsList::AddStepMax | ( | ) | [protected] |
Definition at line 159 of file PhysicsList.cc.
Referenced by ConstructProcess().
00160 { 00161 // Step limitation seen as a process 00162 G4StepLimiter* stepMaxProcess = new G4StepLimiter(); 00163 00164 theParticleIterator->reset(); 00165 while ((*theParticleIterator)()){ 00166 G4ParticleDefinition* particle = theParticleIterator->value(); 00167 G4ProcessManager* pmanager = particle->GetProcessManager(); 00168 if (particle->GetPDGCharge() != 0.0) 00169 { 00170 pmanager ->AddDiscreteProcess(stepMaxProcess); 00171 } 00172 } 00173 }