#include <G4EmStandardPhysics.hh>
Inheritance diagram for G4EmStandardPhysics:
Public Member Functions | |
G4EmStandardPhysics (G4int ver=0) | |
G4EmStandardPhysics (G4int ver, const G4String &name) | |
virtual | ~G4EmStandardPhysics () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Definition at line 52 of file G4EmStandardPhysics.hh.
G4EmStandardPhysics::G4EmStandardPhysics | ( | G4int | ver = 0 |
) |
Definition at line 110 of file G4EmStandardPhysics.cc.
References bElectromagnetic, G4LossTableManager::Instance(), and G4VPhysicsConstructor::SetPhysicsType().
00111 : G4VPhysicsConstructor("G4EmStandard"), verbose(ver) 00112 { 00113 G4LossTableManager::Instance(); 00114 SetPhysicsType(bElectromagnetic); 00115 }
Definition at line 119 of file G4EmStandardPhysics.cc.
References bElectromagnetic, G4LossTableManager::Instance(), and G4VPhysicsConstructor::SetPhysicsType().
00120 : G4VPhysicsConstructor("G4EmStandard"), verbose(ver) 00121 { 00122 G4LossTableManager::Instance(); 00123 SetPhysicsType(bElectromagnetic); 00124 }
G4EmStandardPhysics::~G4EmStandardPhysics | ( | ) | [virtual] |
void G4EmStandardPhysics::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 133 of file G4EmStandardPhysics.cc.
References G4Alpha::Alpha(), G4AntiProton::AntiProton(), G4Deuteron::Deuteron(), G4Electron::Electron(), G4Gamma::Gamma(), G4GenericIon::GenericIonDefinition(), G4He3::He3(), G4KaonMinus::KaonMinusDefinition(), G4KaonPlus::KaonPlusDefinition(), G4MuonMinus::MuonMinus(), G4MuonPlus::MuonPlus(), G4PionMinus::PionMinusDefinition(), G4PionPlus::PionPlusDefinition(), G4Positron::Positron(), G4Proton::Proton(), and G4Triton::Triton().
00134 { 00135 // gamma 00136 G4Gamma::Gamma(); 00137 00138 // leptons 00139 G4Electron::Electron(); 00140 G4Positron::Positron(); 00141 G4MuonPlus::MuonPlus(); 00142 G4MuonMinus::MuonMinus(); 00143 00144 // mesons 00145 G4PionPlus::PionPlusDefinition(); 00146 G4PionMinus::PionMinusDefinition(); 00147 G4KaonPlus::KaonPlusDefinition(); 00148 G4KaonMinus::KaonMinusDefinition(); 00149 00150 // barions 00151 G4Proton::Proton(); 00152 G4AntiProton::AntiProton(); 00153 00154 // ions 00155 G4Deuteron::Deuteron(); 00156 G4Triton::Triton(); 00157 G4He3::He3(); 00158 G4Alpha::Alpha(); 00159 G4GenericIon::GenericIonDefinition(); 00160 }
void G4EmStandardPhysics::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 164 of file G4EmStandardPhysics.cc.
References G4VMultipleScattering::AddEmModel(), G4cout, G4endl, G4ParticleDefinition::GetParticleName(), G4PhysicsListHelper::GetPhysicsListHelper(), G4VPhysicsConstructor::GetPhysicsName(), G4LossTableManager::Instance(), G4INCL::Math::pi, G4InuclParticleNames::pip, G4InuclParticleNames::pp, G4PhysicsListHelper::RegisterProcess(), G4ParticleTableIterator< K, V >::reset(), G4VEmModel::SetActivationLowEnergyLimit(), G4LossTableManager::SetAtomDeexcitation(), G4VEmProcess::SetEmModel(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), G4VEmProcess::SetMinKinEnergy(), G4EmProcessOptions::SetPolarAngleLimit(), G4EmProcessOptions::SetVerbose(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().
00165 { 00166 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper(); 00167 00168 // muon & hadron bremsstrahlung and pair production 00169 G4MuBremsstrahlung* mub = new G4MuBremsstrahlung(); 00170 G4MuPairProduction* mup = new G4MuPairProduction(); 00171 G4hBremsstrahlung* pib = new G4hBremsstrahlung(); 00172 G4hPairProduction* pip = new G4hPairProduction(); 00173 G4hBremsstrahlung* kb = new G4hBremsstrahlung(); 00174 G4hPairProduction* kp = new G4hPairProduction(); 00175 G4hBremsstrahlung* pb = new G4hBremsstrahlung(); 00176 G4hPairProduction* pp = new G4hPairProduction(); 00177 00178 // muon & hadron multiple scattering 00179 G4MuMultipleScattering* mumsc = new G4MuMultipleScattering(); 00180 mumsc->AddEmModel(0, new G4WentzelVIModel()); 00181 G4MuMultipleScattering* pimsc = new G4MuMultipleScattering(); 00182 pimsc->AddEmModel(0, new G4WentzelVIModel()); 00183 G4MuMultipleScattering* kmsc = new G4MuMultipleScattering(); 00184 kmsc->AddEmModel(0, new G4WentzelVIModel()); 00185 G4MuMultipleScattering* pmsc = new G4MuMultipleScattering(); 00186 pmsc->AddEmModel(0, new G4WentzelVIModel()); 00187 G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc"); 00188 00189 // high energy limit for e+- scattering models 00190 G4double highEnergyLimit = 100*MeV; 00191 00192 // Add standard EM Processes 00193 theParticleIterator->reset(); 00194 while( (*theParticleIterator)() ){ 00195 G4ParticleDefinition* particle = theParticleIterator->value(); 00196 G4String particleName = particle->GetParticleName(); 00197 if(verbose > 1) 00198 G4cout << "### " << GetPhysicsName() << " instantiates for " 00199 << particleName << G4endl; 00200 00201 if (particleName == "gamma") { 00202 00203 ph->RegisterProcess(new G4PhotoElectricEffect(), particle); 00204 ph->RegisterProcess(new G4ComptonScattering(), particle); 00205 ph->RegisterProcess(new G4GammaConversion(), particle); 00206 00207 } else if (particleName == "e-") { 00208 00209 G4eMultipleScattering* msc = new G4eMultipleScattering; 00210 G4UrbanMscModel95* msc1 = new G4UrbanMscModel95(); 00211 G4WentzelVIModel* msc2 = new G4WentzelVIModel(); 00212 msc1->SetHighEnergyLimit(highEnergyLimit); 00213 msc2->SetLowEnergyLimit(highEnergyLimit); 00214 msc->AddEmModel(0, msc1); 00215 msc->AddEmModel(0, msc2); 00216 00217 G4eCoulombScatteringModel* ssm = new G4eCoulombScatteringModel(); 00218 G4CoulombScattering* ss = new G4CoulombScattering(); 00219 ss->SetEmModel(ssm, 1); 00220 ss->SetMinKinEnergy(highEnergyLimit); 00221 ssm->SetLowEnergyLimit(highEnergyLimit); 00222 ssm->SetActivationLowEnergyLimit(highEnergyLimit); 00223 00224 ph->RegisterProcess(msc, particle); 00225 ph->RegisterProcess(new G4eIonisation(), particle); 00226 ph->RegisterProcess(new G4eBremsstrahlung(), particle); 00227 ph->RegisterProcess(ss, particle); 00228 00229 } else if (particleName == "e+") { 00230 00231 G4eMultipleScattering* msc = new G4eMultipleScattering; 00232 G4UrbanMscModel95* msc1 = new G4UrbanMscModel95(); 00233 G4WentzelVIModel* msc2 = new G4WentzelVIModel(); 00234 msc1->SetHighEnergyLimit(highEnergyLimit); 00235 msc2->SetLowEnergyLimit(highEnergyLimit); 00236 msc->AddEmModel(0, msc1); 00237 msc->AddEmModel(0, msc2); 00238 00239 G4eCoulombScatteringModel* ssm = new G4eCoulombScatteringModel(); 00240 G4CoulombScattering* ss = new G4CoulombScattering(); 00241 ss->SetEmModel(ssm, 1); 00242 ss->SetMinKinEnergy(highEnergyLimit); 00243 ssm->SetLowEnergyLimit(highEnergyLimit); 00244 ssm->SetActivationLowEnergyLimit(highEnergyLimit); 00245 00246 ph->RegisterProcess(msc, particle); 00247 ph->RegisterProcess(new G4eIonisation(), particle); 00248 ph->RegisterProcess(new G4eBremsstrahlung(), particle); 00249 ph->RegisterProcess(new G4eplusAnnihilation(), particle); 00250 ph->RegisterProcess(ss, particle); 00251 00252 } else if (particleName == "mu+" || 00253 particleName == "mu-" ) { 00254 00255 ph->RegisterProcess(mumsc, particle); 00256 ph->RegisterProcess(new G4MuIonisation(), particle); 00257 ph->RegisterProcess(mub, particle); 00258 ph->RegisterProcess(mup, particle); 00259 ph->RegisterProcess(new G4CoulombScattering(), particle); 00260 00261 } else if (particleName == "alpha" || 00262 particleName == "He3") { 00263 00264 //ph->RegisterProcess(hmsc, particle); 00265 ph->RegisterProcess(new G4hMultipleScattering(), particle); 00266 ph->RegisterProcess(new G4ionIonisation(), particle); 00267 00268 } else if (particleName == "GenericIon") { 00269 00270 ph->RegisterProcess(hmsc, particle); 00271 ph->RegisterProcess(new G4ionIonisation(), particle); 00272 00273 } else if (particleName == "pi+" || 00274 particleName == "pi-" ) { 00275 00276 //G4hMultipleScattering* pimsc = new G4hMultipleScattering(); 00277 ph->RegisterProcess(pimsc, particle); 00278 ph->RegisterProcess(new G4hIonisation(), particle); 00279 ph->RegisterProcess(pib, particle); 00280 ph->RegisterProcess(pip, particle); 00281 00282 } else if (particleName == "kaon+" || 00283 particleName == "kaon-" ) { 00284 00285 //G4hMultipleScattering* kmsc = new G4hMultipleScattering(); 00286 ph->RegisterProcess(kmsc, particle); 00287 ph->RegisterProcess(new G4hIonisation(), particle); 00288 ph->RegisterProcess(kb, particle); 00289 ph->RegisterProcess(kp, particle); 00290 00291 } else if (particleName == "proton" || 00292 particleName == "anti_proton") { 00293 00294 //G4hMultipleScattering* pmsc = new G4hMultipleScattering(); 00295 ph->RegisterProcess(pmsc, particle); 00296 ph->RegisterProcess(new G4hIonisation(), particle); 00297 ph->RegisterProcess(pb, particle); 00298 ph->RegisterProcess(pp, particle); 00299 00300 } else if (particleName == "B+" || 00301 particleName == "B-" || 00302 particleName == "D+" || 00303 particleName == "D-" || 00304 particleName == "Ds+" || 00305 particleName == "Ds-" || 00306 particleName == "anti_He3" || 00307 particleName == "anti_alpha" || 00308 particleName == "anti_deuteron" || 00309 particleName == "anti_lambda_c+" || 00310 particleName == "anti_omega-" || 00311 particleName == "anti_sigma_c+" || 00312 particleName == "anti_sigma_c++" || 00313 particleName == "anti_sigma+" || 00314 particleName == "anti_sigma-" || 00315 particleName == "anti_triton" || 00316 particleName == "anti_xi_c+" || 00317 particleName == "anti_xi-" || 00318 particleName == "deuteron" || 00319 particleName == "lambda_c+" || 00320 particleName == "omega-" || 00321 particleName == "sigma_c+" || 00322 particleName == "sigma_c++" || 00323 particleName == "sigma+" || 00324 particleName == "sigma-" || 00325 particleName == "tau+" || 00326 particleName == "tau-" || 00327 particleName == "triton" || 00328 particleName == "xi_c+" || 00329 particleName == "xi-" ) { 00330 00331 ph->RegisterProcess(hmsc, particle); 00332 ph->RegisterProcess(new G4hIonisation(), particle); 00333 } 00334 } 00335 G4EmProcessOptions opt; 00336 opt.SetVerbose(verbose); 00337 opt.SetPolarAngleLimit(CLHEP::pi); 00338 00339 // Deexcitation 00340 // 00341 G4VAtomDeexcitation* de = new G4UAtomicDeexcitation(); 00342 G4LossTableManager::Instance()->SetAtomDeexcitation(de); 00343 }