G4EmStandardPhysics Class Reference

#include <G4EmStandardPhysics.hh>

Inheritance diagram for G4EmStandardPhysics:

G4VPhysicsConstructor

Public Member Functions

 G4EmStandardPhysics (G4int ver=0)
 G4EmStandardPhysics (G4int ver, const G4String &name)
virtual ~G4EmStandardPhysics ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()

Detailed Description

Definition at line 52 of file G4EmStandardPhysics.hh.


Constructor & Destructor Documentation

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 }

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

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]

Definition at line 128 of file G4EmStandardPhysics.cc.

00129 {}


Member Function Documentation

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 }


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