PhysicsList Class Reference

#include <PhysicsList.hh>

Inheritance diagram for PhysicsList:

Inheritance graph
[legend]
Collaboration diagram for PhysicsList:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 PhysicsList ()
 ~PhysicsList ()

Protected Member Functions

void ConstructParticle ()
void ConstructProcess ()
void SetCuts ()
void ConstructEM ()
void ConstructHad ()
void ConstructDecay ()
void AddStepMax ()


Detailed Description

Definition at line 16 of file PhysicsList.hh.


Constructor & Destructor Documentation

PhysicsList::PhysicsList (  ) 

Definition at line 16 of file PhysicsList.cc.

00016                         :  G4VUserPhysicsList()
00017 {
00018   defaultCutValue = 1.0*mm;
00019   SetVerboseLevel(1);
00020 }

PhysicsList::~PhysicsList (  ) 

Definition at line 24 of file PhysicsList.cc.

00025 {}


Member Function Documentation

void PhysicsList::ConstructParticle (  )  [protected]

Definition at line 36 of file PhysicsList.cc.

00037 {
00038   // pseudo-particles
00039   G4Geantino::GeantinoDefinition();
00040 
00041   // gamma
00042   G4Gamma::GammaDefinition();
00043   
00044   // e+/-
00045   G4Electron::ElectronDefinition();
00046   G4Positron::PositronDefinition();
00047   
00048   // muon
00049   G4MuonPlus::MuonPlusDefinition();
00050   G4MuonMinus::MuonMinusDefinition();
00051   // neutrino
00052   G4NeutrinoE::NeutrinoEDefinition();
00053   G4AntiNeutrinoE::AntiNeutrinoEDefinition();
00054   G4NeutrinoMu::NeutrinoMuDefinition();
00055   G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
00056   
00057   G4Proton::ProtonDefinition();
00058   G4Neutron::NeutronDefinition();
00059 
00060   G4LeptonConstructor pLeptonConstructor;
00061   pLeptonConstructor.ConstructParticle();
00062   
00063   G4MesonConstructor pMesonConstructor;
00064   pMesonConstructor.ConstructParticle();
00065 
00066   G4BaryonConstructor pBaryonConstructor;
00067   pBaryonConstructor.ConstructParticle();
00068 
00069   G4ShortLivedConstructor pShortLivedConstructor;
00070   pShortLivedConstructor.ConstructParticle();  
00071 
00072   G4BosonConstructor  pBosonConstructor;
00073   pBosonConstructor.ConstructParticle();
00074 
00075   G4IonConstructor pConstructor;
00076   pConstructor.ConstructParticle();  
00077 
00078 }

void PhysicsList::ConstructProcess (  )  [protected]

Definition at line 82 of file PhysicsList.cc.

00083 {
00084   AddTransportation();
00085   ConstructEM();
00086   ConstructDecay();
00087   ConstructHad();
00088 
00089   // step limitation (as a full process)
00090   //  
00091   AddStepMax();      
00092 }

void PhysicsList::SetCuts (  )  [protected]

Definition at line 319 of file PhysicsList.cc.

00320 {
00321   //G4VUserPhysicsList::SetCutsWithDefault method sets 
00322   //the default cut value for all particle types 
00323   //
00324   SetCutsWithDefault();
00325      
00326   if (verboseLevel>0) DumpCutValuesTable();
00327 }

void PhysicsList::ConstructEM (  )  [protected]

Definition at line 114 of file PhysicsList.cc.

Referenced by ConstructProcess().

00115 {
00116   theParticleIterator->reset();
00117   while( (*theParticleIterator)() ){
00118     G4ParticleDefinition* particle = theParticleIterator->value();
00119     G4ProcessManager* pmanager = particle->GetProcessManager();
00120     G4String particleName = particle->GetParticleName();
00121      
00122     if (particleName == "gamma") {
00123       // gamma         
00124       pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
00125       pmanager->AddDiscreteProcess(new G4ComptonScattering);
00126       pmanager->AddDiscreteProcess(new G4GammaConversion);
00127       
00128     } else if (particleName == "e-") {
00129       //electron
00130       pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
00131       pmanager->AddProcess(new G4eIonisation,        -1, 2,2);
00132       pmanager->AddProcess(new G4eBremsstrahlung,    -1, 3,3);      
00133 
00134     } else if (particleName == "e+") {
00135       //positron
00136       pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
00137       pmanager->AddProcess(new G4eIonisation,        -1, 2,2);
00138       pmanager->AddProcess(new G4eBremsstrahlung,    -1, 3,3);
00139       pmanager->AddProcess(new G4eplusAnnihilation,   0,-1,4);
00140 
00141     } else if( particleName == "mu+" || 
00142                particleName == "mu-"    ) {
00143       //muon  
00144       pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
00145       pmanager->AddProcess(new G4MuIonisation,       -1, 2,2);
00146       pmanager->AddProcess(new G4MuBremsstrahlung,   -1, 3,3);
00147       pmanager->AddProcess(new G4MuPairProduction,   -1, 4,4);
00148                   
00149     } else if (particle->GetPDGCharge() != 0.0 && 
00150                ! particle->IsShortLived()      &&
00151                particle->GetParticleName() != "chargedgeantino" ) {
00152       pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
00153       pmanager->AddProcess(new G4hIonisation,        -1, 2,2);
00154     }
00155   }
00156 }

void PhysicsList::ConstructHad (  )  [protected]

Definition at line 198 of file PhysicsList.cc.

Referenced by ConstructProcess().

00199 {
00200 // add hadronic processes for Proton
00201 //
00202   G4ParticleDefinition* proton = G4Proton::Proton();
00203   G4ProcessManager* proton_manager = proton->GetProcessManager();
00204 
00205   // process: elastic scattering
00206   //
00207   G4HadronElasticProcess* theElasticProcess = new G4HadronElasticProcess();
00208   
00209   // model:  use LElastic, i.e. parameterized model
00210   //
00211   G4LElastic* theElasticModel = new G4LElastic();
00212   theElasticProcess->RegisterMe(theElasticModel);
00213   proton_manager->AddDiscreteProcess(theElasticProcess);
00214 
00215   // process: inelastic interaction
00216   //   
00217   G4ProtonInelasticProcess* protonInelasticprocess 
00218                                     =  new G4ProtonInelasticProcess();
00219                                     
00220   // model:  use Binary cascade as model (good up to several GeV)
00221   //
00222   G4BinaryCascade* theModel = new G4BinaryCascade();  
00223   protonInelasticprocess->RegisterMe(theModel);
00224   
00225   // cross Section
00226   //
00227   protonInelasticprocess->AddDataSet(new G4NucleonNuclearCrossSection());
00228   
00229   // add process
00230   //
00231   proton_manager->AddDiscreteProcess(protonInelasticprocess);
00232 
00233 // add hadronic processes for Neutron 
00234 //  
00235   G4ParticleDefinition* neutron = G4Neutron::Neutron();
00236   G4ProcessManager* neutron_manager = neutron->GetProcessManager();
00237 
00238   // process:  elastic scattering
00239   //
00240   neutron_manager->AddDiscreteProcess(theElasticProcess);
00241 
00242   // process: inelastic interaction
00243   //     
00244   G4NeutronInelasticProcess* neutronInelasticprocess 
00245                                   =  new G4NeutronInelasticProcess();
00246   
00247   // model
00248   //                              
00249   neutronInelasticprocess->RegisterMe(theModel);
00250   
00251   // cross Section
00252   //
00253   neutronInelasticprocess->AddDataSet(new G4NucleonNuclearCrossSection());
00254   
00255   // add process
00256   //  
00257   neutron_manager->AddDiscreteProcess(neutronInelasticprocess);
00258 
00259 // process : Capture
00260 //  
00261   G4HadronCaptureProcess * theNeutronCapture = new G4HadronCaptureProcess();
00262   G4LCapture * theNeutronCaptureModel = new G4LCapture();
00263   theNeutronCapture->RegisterMe(theNeutronCaptureModel);
00264   neutron_manager->AddDiscreteProcess(theNeutronCapture);
00265 
00266 // process : Fission
00267 //    
00268   G4HadronFissionProcess * theNeutronFission = new G4HadronFissionProcess();
00269   G4LFission * theNeutronFissionModel = new G4LFission();
00270   theNeutronFission->RegisterMe(theNeutronFissionModel);
00271   neutron_manager->AddDiscreteProcess(theNeutronFission);
00272 
00273 //  code for higher energies
00274 /* 
00275 
00276    G4TheoFSGenerator * theHEModel = new G4TheoFSGenerator();
00277    G4FTFModel * theStringModel = new G4FTFModel();
00278    G4ExcitedStringDecay * theStringFrag = 
00279                     new G4ExcitedStringDecay(new G4LundStringFragmentation());
00280    theStringModel->SetFragmentationModel(theStringFrag);
00281         
00282    theHEModel->SetTransport(new G4BinaryCascade());
00283    theHEModel->SetMinEnergy(4.*GeV);
00284    theHEModel->SetMaxEnergy(100*TeV);
00285    theHEModel->SetHighEnergyGenerator(theStringModel);
00286    
00287    theModel->SetMaxEnergy(5*GeV);  // reduce use of casacde to below 5 GeV
00288 
00289    protonInelasticprocess->RegisterMe(theHEModel);
00290   
00291    neutronInelasticprocess->RegisterMe(theHEModel);
00292    
00293 */    
00294 }

void PhysicsList::ConstructDecay (  )  [protected]

Definition at line 162 of file PhysicsList.cc.

Referenced by ConstructProcess().

00163 {
00164   // Add Decay Process
00165   G4Decay* theDecayProcess = new G4Decay();
00166   theParticleIterator->reset();
00167   while( (*theParticleIterator)() ){
00168     G4ParticleDefinition* particle = theParticleIterator->value();
00169     G4ProcessManager* pmanager = particle->GetProcessManager();
00170     if (theDecayProcess->IsApplicable(*particle)) {
00171       pmanager ->AddProcess(theDecayProcess);
00172       // set ordering for PostStepDoIt and AtRestDoIt
00173       pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
00174       pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
00175     }
00176   }  
00177 }

void PhysicsList::AddStepMax (  )  [protected]

Definition at line 301 of file PhysicsList.cc.

Referenced by ConstructProcess().

00302 {
00303   // Step limitation seen as a process
00304   G4StepLimiter* stepMaxProcess = new G4StepLimiter();
00305 
00306   theParticleIterator->reset();
00307   while ((*theParticleIterator)()){
00308       G4ParticleDefinition* particle = theParticleIterator->value();
00309       G4ProcessManager* pmanager = particle->GetProcessManager();
00310       if (particle->GetPDGCharge() != 0.0)
00311         {
00312           pmanager ->AddDiscreteProcess(stepMaxProcess);
00313         }
00314   }
00315 }


The documentation for this class was generated from the following files:

Generated on Fri Nov 21 10:21:42 2008 for jour4e by  doxygen 1.5.7.1