G4EmStandardPhysics_option2 Class Reference

#include <G4EmStandardPhysics_option2.hh>

Inheritance diagram for G4EmStandardPhysics_option2:

G4VPhysicsConstructor

Public Member Functions

 G4EmStandardPhysics_option2 (G4int ver=1)
 G4EmStandardPhysics_option2 (G4int ver, const G4String &name)
virtual ~G4EmStandardPhysics_option2 ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()

Detailed Description

Definition at line 55 of file G4EmStandardPhysics_option2.hh.


Constructor & Destructor Documentation

G4EmStandardPhysics_option2::G4EmStandardPhysics_option2 ( G4int  ver = 1  ) 

Definition at line 124 of file G4EmStandardPhysics_option2.cc.

References bElectromagnetic, G4LossTableManager::Instance(), and G4VPhysicsConstructor::SetPhysicsType().

00125   : G4VPhysicsConstructor("G4EmStandard_opt2"), verbose(ver)
00126 {
00127   G4LossTableManager::Instance();
00128   SetPhysicsType(bElectromagnetic);
00129 }

G4EmStandardPhysics_option2::G4EmStandardPhysics_option2 ( G4int  ver,
const G4String name 
)

Definition at line 133 of file G4EmStandardPhysics_option2.cc.

References bElectromagnetic, G4LossTableManager::Instance(), and G4VPhysicsConstructor::SetPhysicsType().

00134   : G4VPhysicsConstructor("G4EmStandard_opt2"), verbose(ver)
00135 {
00136   G4LossTableManager::Instance();
00137   SetPhysicsType(bElectromagnetic);
00138 }

G4EmStandardPhysics_option2::~G4EmStandardPhysics_option2 (  )  [virtual]

Definition at line 142 of file G4EmStandardPhysics_option2.cc.

00143 {}


Member Function Documentation

void G4EmStandardPhysics_option2::ConstructParticle (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 147 of file G4EmStandardPhysics_option2.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().

00148 {
00149 // gamma
00150   G4Gamma::Gamma();
00151 
00152 // leptons
00153   G4Electron::Electron();
00154   G4Positron::Positron();
00155   G4MuonPlus::MuonPlus();
00156   G4MuonMinus::MuonMinus();
00157 
00158 // mesons
00159   G4PionPlus::PionPlusDefinition();
00160   G4PionMinus::PionMinusDefinition();
00161   G4KaonPlus::KaonPlusDefinition();
00162   G4KaonMinus::KaonMinusDefinition();
00163 
00164 // barions
00165   G4Proton::Proton();
00166   G4AntiProton::AntiProton();
00167 
00168 // ions
00169   G4Deuteron::Deuteron();
00170   G4Triton::Triton();
00171   G4He3::He3();
00172   G4Alpha::Alpha();
00173   G4GenericIon::GenericIonDefinition();
00174 }

void G4EmStandardPhysics_option2::ConstructProcess (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 178 of file G4EmStandardPhysics_option2.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(), G4VEmModel::SetAngularDistribution(), G4EmProcessOptions::SetApplyCuts(), G4LossTableManager::SetAtomDeexcitation(), G4VEnergyLossProcess::SetEmModel(), G4VEmProcess::SetEmModel(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), G4VEmProcess::SetMinKinEnergy(), G4EmProcessOptions::SetPolarAngleLimit(), G4VEnergyLossProcess::SetStepFunction(), G4VMultipleScattering::SetStepLimitType(), G4EmProcessOptions::SetVerbose(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().

00179 {
00180   G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
00181 
00182   // muon & hadron bremsstrahlung and pair production
00183   G4MuBremsstrahlung* mub = new G4MuBremsstrahlung();
00184   G4MuPairProduction* mup = new G4MuPairProduction();
00185   G4hBremsstrahlung* pib = new G4hBremsstrahlung();
00186   G4hPairProduction* pip = new G4hPairProduction();
00187   G4hBremsstrahlung* kb = new G4hBremsstrahlung();
00188   G4hPairProduction* kp = new G4hPairProduction();
00189   G4hBremsstrahlung* pb = new G4hBremsstrahlung();
00190   G4hPairProduction* pp = new G4hPairProduction();
00191 
00192   // muon & hadron multiple scattering
00193   G4MuMultipleScattering* mumsc = new G4MuMultipleScattering();
00194   mumsc->AddEmModel(0, new G4WentzelVIModel());
00195   G4hMultipleScattering* pmsc = new G4hMultipleScattering();
00196   pmsc->AddEmModel(0, new G4WentzelVIModel());
00197   G4hMultipleScattering* pimsc = new G4hMultipleScattering();
00198   pimsc->AddEmModel(0, new G4WentzelVIModel());
00199   G4hMultipleScattering* kmsc = new G4hMultipleScattering();
00200   kmsc->AddEmModel(0, new G4WentzelVIModel());
00201   G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
00202 
00203   // high energy limit for e+- scattering models and bremsstrahlung
00204   G4double highEnergyLimit = 100*MeV;
00205 
00206   // Add standard EM Processes
00207   theParticleIterator->reset();
00208   while( (*theParticleIterator)() ){
00209     G4ParticleDefinition* particle = theParticleIterator->value();
00210     G4String particleName = particle->GetParticleName();
00211     if(verbose > 1)
00212       G4cout << "### " << GetPhysicsName() << " instantiates for " 
00213              << particleName << G4endl;
00214 
00215     if (particleName == "gamma") {
00216 
00217       ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
00218       ph->RegisterProcess(new G4ComptonScattering(), particle);
00219       ph->RegisterProcess(new G4GammaConversion(), particle);
00220       ph->RegisterProcess(new G4RayleighScattering(), particle);
00221 
00222     } else if (particleName == "e-") {
00223 
00224       G4eIonisation* eioni = new G4eIonisation();
00225       eioni->SetStepFunction(0.8, 1.0*mm);
00226 
00227       G4eMultipleScattering* msc = new G4eMultipleScattering;
00228       msc->SetStepLimitType(fMinimal);
00229       G4UrbanMscModel93* msc1 = new G4UrbanMscModel93();
00230       G4WentzelVIModel* msc2 = new G4WentzelVIModel();
00231       msc1->SetHighEnergyLimit(highEnergyLimit);
00232       msc2->SetLowEnergyLimit(highEnergyLimit);
00233       msc->AddEmModel(0, msc1);
00234       msc->AddEmModel(0, msc2);
00235 
00236       G4eCoulombScatteringModel* ssm = new G4eCoulombScatteringModel(); 
00237       G4CoulombScattering* ss = new G4CoulombScattering();
00238       ss->SetEmModel(ssm, 1); 
00239       ss->SetMinKinEnergy(highEnergyLimit);
00240       ssm->SetLowEnergyLimit(highEnergyLimit);
00241       ssm->SetActivationLowEnergyLimit(highEnergyLimit);
00242 
00243       G4eBremsstrahlung* brem = new G4eBremsstrahlung();
00244       G4SeltzerBergerModel* br1 = new G4SeltzerBergerModel();
00245       G4eBremsstrahlungRelModel* br2 = new G4eBremsstrahlungRelModel();
00246       br1->SetAngularDistribution(new G4Generator2BS());
00247       br2->SetAngularDistribution(new G4Generator2BS());
00248       brem->SetEmModel(br1,1);
00249       brem->SetEmModel(br2,2);
00250       br2->SetLowEnergyLimit(GeV);
00251 
00252       ph->RegisterProcess(msc, particle);
00253       ph->RegisterProcess(eioni, particle);
00254       ph->RegisterProcess(brem, particle);
00255       ph->RegisterProcess(ss, particle);
00256 
00257     } else if (particleName == "e+") {
00258 
00259       G4eIonisation* eioni = new G4eIonisation();
00260       eioni->SetStepFunction(0.8, 1.0*mm);
00261 
00262       G4eMultipleScattering* msc = new G4eMultipleScattering;
00263       msc->SetStepLimitType(fMinimal);
00264       G4UrbanMscModel93* msc1 = new G4UrbanMscModel93();
00265       G4WentzelVIModel* msc2 = new G4WentzelVIModel();
00266       msc1->SetHighEnergyLimit(highEnergyLimit);
00267       msc2->SetLowEnergyLimit(highEnergyLimit);
00268       msc->AddEmModel(0, msc1);
00269       msc->AddEmModel(0, msc2);
00270 
00271       G4eCoulombScatteringModel* ssm = new G4eCoulombScatteringModel(); 
00272       G4CoulombScattering* ss = new G4CoulombScattering();
00273       ss->SetEmModel(ssm, 1); 
00274       ss->SetMinKinEnergy(highEnergyLimit);
00275       ssm->SetLowEnergyLimit(highEnergyLimit);
00276       ssm->SetActivationLowEnergyLimit(highEnergyLimit);
00277 
00278       ph->RegisterProcess(msc, particle);
00279       ph->RegisterProcess(eioni, particle);
00280       ph->RegisterProcess(new G4eBremsstrahlung(), particle);
00281       ph->RegisterProcess(new G4eplusAnnihilation(), particle);
00282       ph->RegisterProcess(ss, particle);
00283 
00284     } else if (particleName == "mu+" ||
00285                particleName == "mu-"    ) {
00286 
00287       ph->RegisterProcess(mumsc, particle);
00288       ph->RegisterProcess(new G4MuIonisation(), particle);
00289       ph->RegisterProcess(mub, particle);
00290       ph->RegisterProcess(mup, particle);
00291       ph->RegisterProcess(new G4CoulombScattering(), particle);
00292 
00293     } else if (particleName == "alpha" ||
00294                particleName == "He3") {
00295 
00296       //ph->RegisterProcess(hmsc, particle);
00297       ph->RegisterProcess(new G4hMultipleScattering(), particle);
00298       ph->RegisterProcess(new G4ionIonisation(), particle);
00299 
00300     } else if (particleName == "GenericIon") {
00301 
00302       G4ionIonisation* ionIoni = new G4ionIonisation();
00303       //ionIoni->SetEmModel(new G4IonParametrisedLossModel());
00304       //ionIoni->SetStepFunction(0.1, 20*um);
00305 
00306       ph->RegisterProcess(hmsc, particle);
00307       ph->RegisterProcess(ionIoni, particle);
00308 
00309     } else if (particleName == "pi+" ||
00310                particleName == "pi-" ) {
00311 
00312       ph->RegisterProcess(pimsc, particle);
00313       ph->RegisterProcess(new G4hIonisation(), particle);
00314       ph->RegisterProcess(pib, particle);
00315       ph->RegisterProcess(pip, particle);
00316 
00317     } else if (particleName == "kaon+" ||
00318                particleName == "kaon-" ) {
00319 
00320       ph->RegisterProcess(kmsc, particle);
00321       ph->RegisterProcess(new G4hIonisation(), particle);
00322       ph->RegisterProcess(kb, particle);
00323       ph->RegisterProcess(kp, particle);
00324 
00325     } else if (particleName == "proton" || 
00326                particleName == "anti_proton") {
00327 
00328       ph->RegisterProcess(pmsc, particle);
00329       ph->RegisterProcess(new G4hIonisation(), particle);
00330       ph->RegisterProcess(pb, particle);
00331       ph->RegisterProcess(pp, particle);
00332 
00333     } else if (particleName == "B+" ||
00334                particleName == "B-" ||
00335                particleName == "D+" ||
00336                particleName == "D-" ||
00337                particleName == "Ds+" ||
00338                particleName == "Ds-" ||
00339                particleName == "anti_He3" ||
00340                particleName == "anti_alpha" ||
00341                particleName == "anti_deuteron" ||
00342                particleName == "anti_lambda_c+" ||
00343                particleName == "anti_omega-" ||
00344                particleName == "anti_sigma_c+" ||
00345                particleName == "anti_sigma_c++" ||
00346                particleName == "anti_sigma+" ||
00347                particleName == "anti_sigma-" ||
00348                particleName == "anti_triton" ||
00349                particleName == "anti_xi_c+" ||
00350                particleName == "anti_xi-" ||
00351                particleName == "deuteron" ||
00352                particleName == "lambda_c+" ||
00353                particleName == "omega-" ||
00354                particleName == "sigma_c+" ||
00355                particleName == "sigma_c++" ||
00356                particleName == "sigma+" ||
00357                particleName == "sigma-" ||
00358                particleName == "tau+" ||
00359                particleName == "tau-" ||
00360                particleName == "triton" ||
00361                particleName == "xi_c+" ||
00362                particleName == "xi-" ) {
00363 
00364       ph->RegisterProcess(hmsc, particle);
00365       ph->RegisterProcess(new G4hIonisation(), particle);
00366     }
00367   }
00368     
00369   // Em options
00370   //    
00371   G4EmProcessOptions opt;
00372   opt.SetVerbose(verbose);
00373   opt.SetApplyCuts(true);
00374   
00375   // Scattering options
00376   //
00377   opt.SetPolarAngleLimit(CLHEP::pi);
00378     
00379   // Ionization
00380   //
00381   //opt.SetSubCutoff(true);  
00382 
00383   // Deexcitation
00384   //
00385   G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
00386   G4LossTableManager::Instance()->SetAtomDeexcitation(de);
00387 
00388 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:53 2013 for Geant4 by  doxygen 1.4.7