G4EmStandardPhysics_option1 Class Reference

#include <G4EmStandardPhysics_option1.hh>

Inheritance diagram for G4EmStandardPhysics_option1:

G4VPhysicsConstructor

Public Member Functions

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

Detailed Description

Definition at line 54 of file G4EmStandardPhysics_option1.hh.


Constructor & Destructor Documentation

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 }

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

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]

Definition at line 133 of file G4EmStandardPhysics_option1.cc.

00134 {}


Member Function Documentation

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 }


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