#include <G4EmStandardPhysics_option3.hh>
Inheritance diagram for G4EmStandardPhysics_option3:
Public Member Functions | |
G4EmStandardPhysics_option3 (G4int ver=1) | |
G4EmStandardPhysics_option3 (G4int ver, const G4String &name) | |
virtual | ~G4EmStandardPhysics_option3 () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Definition at line 52 of file G4EmStandardPhysics_option3.hh.
G4EmStandardPhysics_option3::G4EmStandardPhysics_option3 | ( | G4int | ver = 1 |
) |
Definition at line 116 of file G4EmStandardPhysics_option3.cc.
References bElectromagnetic, G4LossTableManager::Instance(), and G4VPhysicsConstructor::SetPhysicsType().
00117 : G4VPhysicsConstructor("G4EmStandard_opt3"), verbose(ver) 00118 { 00119 G4LossTableManager::Instance(); 00120 SetPhysicsType(bElectromagnetic); 00121 }
Definition at line 125 of file G4EmStandardPhysics_option3.cc.
References bElectromagnetic, G4LossTableManager::Instance(), and G4VPhysicsConstructor::SetPhysicsType().
00126 : G4VPhysicsConstructor("G4EmStandard_opt3"), verbose(ver) 00127 { 00128 G4LossTableManager::Instance(); 00129 SetPhysicsType(bElectromagnetic); 00130 }
G4EmStandardPhysics_option3::~G4EmStandardPhysics_option3 | ( | ) | [virtual] |
void G4EmStandardPhysics_option3::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 139 of file G4EmStandardPhysics_option3.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().
00140 { 00141 // gamma 00142 G4Gamma::Gamma(); 00143 00144 // leptons 00145 G4Electron::Electron(); 00146 G4Positron::Positron(); 00147 G4MuonPlus::MuonPlus(); 00148 G4MuonMinus::MuonMinus(); 00149 00150 // mesons 00151 G4PionPlus::PionPlusDefinition(); 00152 G4PionMinus::PionMinusDefinition(); 00153 G4KaonPlus::KaonPlusDefinition(); 00154 G4KaonMinus::KaonMinusDefinition(); 00155 00156 // barions 00157 G4Proton::Proton(); 00158 G4AntiProton::AntiProton(); 00159 00160 // ions 00161 G4Deuteron::Deuteron(); 00162 G4Triton::Triton(); 00163 G4He3::He3(); 00164 G4Alpha::Alpha(); 00165 G4GenericIon::GenericIonDefinition(); 00166 }
void G4EmStandardPhysics_option3::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 170 of file G4EmStandardPhysics_option3.cc.
References G4VMultipleScattering::AddEmModel(), fUseDistanceToBoundary, G4cout, G4endl, G4ParticleDefinition::GetParticleName(), G4PhysicsListHelper::GetPhysicsListHelper(), G4VPhysicsConstructor::GetPhysicsName(), G4LossTableManager::Instance(), G4INCL::Math::pi, G4InuclParticleNames::pip, G4InuclParticleNames::pp, G4PhysicsListHelper::RegisterProcess(), G4ParticleTableIterator< K, V >::reset(), G4LossTableManager::SetAtomDeexcitation(), G4EmProcessOptions::SetDEDXBinning(), G4VEnergyLossProcess::SetEmModel(), G4VEmProcess::SetEmModel(), G4VAtomDeexcitation::SetFluo(), G4EmProcessOptions::SetLambdaBinning(), G4EmProcessOptions::SetMaxEnergy(), G4VEmProcess::SetMaxKinEnergy(), G4EmProcessOptions::SetMinEnergy(), G4EmProcessOptions::SetPolarAngleLimit(), G4VEnergyLossProcess::SetStepFunction(), G4VMultipleScattering::SetStepLimitType(), G4EmProcessOptions::SetVerbose(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().
00171 { 00172 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper(); 00173 00174 // muon & hadron bremsstrahlung and pair production 00175 G4MuBremsstrahlung* mub = new G4MuBremsstrahlung(); 00176 G4MuPairProduction* mup = new G4MuPairProduction(); 00177 G4hBremsstrahlung* pib = new G4hBremsstrahlung(); 00178 G4hPairProduction* pip = new G4hPairProduction(); 00179 G4hBremsstrahlung* kb = new G4hBremsstrahlung(); 00180 G4hPairProduction* kp = new G4hPairProduction(); 00181 G4hBremsstrahlung* pb = new G4hBremsstrahlung(); 00182 G4hPairProduction* pp = new G4hPairProduction(); 00183 00184 // muon & hadron multiple scattering 00185 G4MuMultipleScattering* mumsc = new G4MuMultipleScattering(); 00186 mumsc->AddEmModel(0, new G4WentzelVIModel()); 00187 //G4hMultipleScattering* pimsc = new G4hMultipleScattering(); 00188 // pimsc->AddEmModel(0, new G4WentzelVIModel()); 00189 // G4hMultipleScattering* kmsc = new G4hMultipleScattering(); 00190 // kmsc->AddEmModel(0, new G4WentzelVIModel()); 00191 //G4hMultipleScattering* pmsc = new G4hMultipleScattering(); 00192 //pmsc->AddEmModel(0, new G4WentzelVIModel()); 00193 G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc"); 00194 00195 // nuclear stopping 00196 G4NuclearStopping* ionnuc = new G4NuclearStopping(); 00197 G4NuclearStopping* pnuc = new G4NuclearStopping(); 00198 00199 // Add standard EM Processes 00200 theParticleIterator->reset(); 00201 while( (*theParticleIterator)() ){ 00202 G4ParticleDefinition* particle = theParticleIterator->value(); 00203 G4String particleName = particle->GetParticleName(); 00204 if(verbose > 1) 00205 G4cout << "### " << GetPhysicsName() << " instantiates for " 00206 << particleName << G4endl; 00207 00208 if (particleName == "gamma") { 00209 00210 G4ComptonScattering* cs = new G4ComptonScattering; 00211 cs->SetEmModel(new G4KleinNishinaModel()); 00212 00213 ph->RegisterProcess(new G4PhotoElectricEffect(), particle); 00214 ph->RegisterProcess(cs, particle); 00215 ph->RegisterProcess(new G4GammaConversion(), particle); 00216 ph->RegisterProcess(new G4RayleighScattering(), particle); 00217 00218 } else if (particleName == "e-") { 00219 00220 G4eMultipleScattering* msc = new G4eMultipleScattering(); 00221 //msc->AddEmModel(0, new G4UrbanMscModel95()); 00222 msc->SetStepLimitType(fUseDistanceToBoundary); 00223 G4eIonisation* eIoni = new G4eIonisation(); 00224 eIoni->SetStepFunction(0.2, 100*um); 00225 00226 G4eBremsstrahlung* brem = new G4eBremsstrahlung(); 00227 ph->RegisterProcess(msc, particle); 00228 ph->RegisterProcess(eIoni, particle); 00229 ph->RegisterProcess(brem, particle); 00230 00231 } else if (particleName == "e+") { 00232 00233 G4eMultipleScattering* msc = new G4eMultipleScattering(); 00234 //msc->AddEmModel(0, new G4UrbanMscModel95()); 00235 msc->SetStepLimitType(fUseDistanceToBoundary); 00236 G4eIonisation* eIoni = new G4eIonisation(); 00237 eIoni->SetStepFunction(0.2, 100*um); 00238 00239 ph->RegisterProcess(msc, particle); 00240 ph->RegisterProcess(eIoni, particle); 00241 ph->RegisterProcess(new G4eBremsstrahlung(), particle); 00242 ph->RegisterProcess(new G4eplusAnnihilation(), particle); 00243 00244 } else if (particleName == "mu+" || 00245 particleName == "mu-" ) { 00246 00247 G4MuIonisation* muIoni = new G4MuIonisation(); 00248 muIoni->SetStepFunction(0.2, 50*um); 00249 00250 ph->RegisterProcess(mumsc, particle); 00251 ph->RegisterProcess(muIoni, particle); 00252 ph->RegisterProcess(mub, particle); 00253 ph->RegisterProcess(mup, particle); 00254 ph->RegisterProcess(new G4CoulombScattering(), particle); 00255 00256 } else if (particleName == "alpha" || 00257 particleName == "He3") { 00258 00259 G4hMultipleScattering* msc = new G4hMultipleScattering(); 00260 G4ionIonisation* ionIoni = new G4ionIonisation(); 00261 ionIoni->SetStepFunction(0.1, 10*um); 00262 00263 ph->RegisterProcess(msc, particle); 00264 ph->RegisterProcess(ionIoni, particle); 00265 ph->RegisterProcess(ionnuc, particle); 00266 00267 } else if (particleName == "GenericIon") { 00268 00269 G4ionIonisation* ionIoni = new G4ionIonisation(); 00270 ionIoni->SetEmModel(new G4IonParametrisedLossModel()); 00271 ionIoni->SetStepFunction(0.1, 1*um); 00272 00273 ph->RegisterProcess(hmsc, particle); 00274 ph->RegisterProcess(ionIoni, particle); 00275 ph->RegisterProcess(ionnuc, particle); 00276 00277 } else if (particleName == "pi+" || 00278 particleName == "pi-" ) { 00279 00280 G4hMultipleScattering* pimsc = new G4hMultipleScattering(); 00281 G4hIonisation* hIoni = new G4hIonisation(); 00282 hIoni->SetStepFunction(0.2, 50*um); 00283 00284 ph->RegisterProcess(pimsc, particle); 00285 ph->RegisterProcess(hIoni, particle); 00286 ph->RegisterProcess(pib, particle); 00287 ph->RegisterProcess(pip, particle); 00288 00289 } else if (particleName == "kaon+" || 00290 particleName == "kaon-" ) { 00291 00292 G4hMultipleScattering* kmsc = new G4hMultipleScattering(); 00293 G4hIonisation* hIoni = new G4hIonisation(); 00294 hIoni->SetStepFunction(0.2, 50*um); 00295 00296 ph->RegisterProcess(kmsc, particle); 00297 ph->RegisterProcess(hIoni, particle); 00298 ph->RegisterProcess(kb, particle); 00299 ph->RegisterProcess(kp, particle); 00300 00301 } else if (particleName == "proton" || 00302 particleName == "anti_proton") { 00303 00304 G4hMultipleScattering* pmsc = new G4hMultipleScattering(); 00305 G4hIonisation* hIoni = new G4hIonisation(); 00306 hIoni->SetStepFunction(0.2, 50*um); 00307 00308 ph->RegisterProcess(pmsc, particle); 00309 ph->RegisterProcess(hIoni, particle); 00310 ph->RegisterProcess(pb, particle); 00311 ph->RegisterProcess(pp, particle); 00312 ph->RegisterProcess(pnuc, 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 00350 // Em options 00351 // 00352 G4EmProcessOptions opt; 00353 opt.SetVerbose(verbose); 00354 00355 // Multiple Coulomb scattering 00356 // 00357 opt.SetPolarAngleLimit(CLHEP::pi); 00358 00359 // Physics tables 00360 // 00361 opt.SetMinEnergy(10*eV); 00362 opt.SetMaxEnergy(10*TeV); 00363 opt.SetDEDXBinning(240); 00364 opt.SetLambdaBinning(240); 00365 00366 // Nuclear stopping 00367 pnuc->SetMaxKinEnergy(MeV); 00368 00369 // Ionization 00370 // 00371 //opt.SetSubCutoff(true); 00372 00373 // Deexcitation 00374 G4VAtomDeexcitation* de = new G4UAtomicDeexcitation(); 00375 G4LossTableManager::Instance()->SetAtomDeexcitation(de); 00376 de->SetFluo(true); 00377 }