G4EmStandardPhysics_option3 Class Reference

#include <G4EmStandardPhysics_option3.hh>

Inheritance diagram for G4EmStandardPhysics_option3:

G4VPhysicsConstructor

Public Member Functions

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

Detailed Description

Definition at line 52 of file G4EmStandardPhysics_option3.hh.


Constructor & Destructor Documentation

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 }

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

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]

Definition at line 134 of file G4EmStandardPhysics_option3.cc.

00135 {}


Member Function Documentation

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 }


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