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