ExN02PhysicsList Class Reference

#include <ExN02PhysicsList.hh>

List of all members.

Public Member Functions

 ExN02PhysicsList ()
 ~ExN02PhysicsList ()

Protected Member Functions

void ConstructParticle ()
void ConstructProcess ()
void SetCuts ()
void ConstructBosons ()
void ConstructLeptons ()
void ConstructMesons ()
void ConstructBaryons ()
void ConstructGeneral ()
void ConstructEM ()


Detailed Description

Definition at line 38 of file ExN02PhysicsList.hh.


Constructor & Destructor Documentation

ExN02PhysicsList::ExN02PhysicsList (  ) 

Definition at line 44 of file ExN02PhysicsList.cxx.

00044                                   :  G4VUserPhysicsList()
00045 {
00046   defaultCutValue = 1.0*cm;
00047    SetVerboseLevel(1);
00048 }

ExN02PhysicsList::~ExN02PhysicsList (  ) 

Definition at line 52 of file ExN02PhysicsList.cxx.

00053 {}


Member Function Documentation

void ExN02PhysicsList::ConstructBaryons (  )  [protected]

Definition at line 123 of file ExN02PhysicsList.cxx.

Referenced by ConstructParticle().

00124 {
00125   //  barions
00126   G4Proton::ProtonDefinition();
00127   G4AntiProton::AntiProtonDefinition();
00128 
00129   G4Neutron::NeutronDefinition();
00130   G4AntiNeutron::AntiNeutronDefinition();
00131 }

void ExN02PhysicsList::ConstructBosons (  )  [protected]

Definition at line 73 of file ExN02PhysicsList.cxx.

Referenced by ConstructParticle().

00074 {
00075   // pseudo-particles
00076   G4Geantino::GeantinoDefinition();
00077   G4ChargedGeantino::ChargedGeantinoDefinition();
00078 
00079   // gamma
00080   G4Gamma::GammaDefinition();
00081 }

void ExN02PhysicsList::ConstructEM (  )  [protected]

Definition at line 164 of file ExN02PhysicsList.cxx.

Referenced by ConstructProcess().

00165 {
00166   theParticleIterator->reset();
00167   while( (*theParticleIterator)() ){
00168     G4ParticleDefinition* particle = theParticleIterator->value();
00169     G4ProcessManager* pmanager = particle->GetProcessManager();
00170     G4String particleName = particle->GetParticleName();
00171      
00172     if (particleName == "gamma") {
00173     // gamma
00174       pmanager->AddDiscreteProcess(new G4GammaConversion());
00175       pmanager->AddDiscreteProcess(new G4ComptonScattering());      
00176       pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
00177 
00178     } else if (particleName == "e-") {
00179     //electron
00180       G4VProcess* theeminusMultipleScattering = new G4MultipleScattering();
00181       G4VProcess* theeminusIonisation         = new G4eIonisation();
00182       G4VProcess* theeminusBremsstrahlung     = new G4eBremsstrahlung();
00183       //
00184       // add processes
00185       pmanager->AddProcess(theeminusMultipleScattering);
00186       pmanager->AddProcess(theeminusIonisation);
00187       pmanager->AddProcess(theeminusBremsstrahlung);
00188       //      
00189       // set ordering for AlongStepDoIt
00190       pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1);
00191       pmanager->SetProcessOrdering(theeminusIonisation,         idxAlongStep,2);
00192       //
00193       // set ordering for PostStepDoIt
00194       pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1);
00195       pmanager->SetProcessOrdering(theeminusIonisation,         idxPostStep,2);
00196       pmanager->SetProcessOrdering(theeminusBremsstrahlung,     idxPostStep,3);
00197 
00198     } else if (particleName == "e+") {
00199     //positron
00200       G4VProcess* theeplusMultipleScattering = new G4MultipleScattering();
00201       G4VProcess* theeplusIonisation         = new G4eIonisation();
00202       G4VProcess* theeplusBremsstrahlung     = new G4eBremsstrahlung();
00203       G4VProcess* theeplusAnnihilation       = new G4eplusAnnihilation();
00204       //
00205       // add processes
00206       pmanager->AddProcess(theeplusMultipleScattering);
00207       pmanager->AddProcess(theeplusIonisation);
00208       pmanager->AddProcess(theeplusBremsstrahlung);
00209       pmanager->AddProcess(theeplusAnnihilation);
00210       //
00211       // set ordering for AtRestDoIt
00212       pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
00213       //
00214       // set ordering for AlongStepDoIt
00215       pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1);
00216       pmanager->SetProcessOrdering(theeplusIonisation,         idxAlongStep,2);
00217       //
00218       // set ordering for PostStepDoIt
00219       pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1);
00220       pmanager->SetProcessOrdering(theeplusIonisation,         idxPostStep,2);
00221       pmanager->SetProcessOrdering(theeplusBremsstrahlung,     idxPostStep,3);
00222       pmanager->SetProcessOrdering(theeplusAnnihilation,       idxPostStep,4);
00223   
00224     } else if( particleName == "mu+" || 
00225                particleName == "mu-"    ) {
00226     //muon  
00227       G4VProcess* aMultipleScattering = new G4MultipleScattering();
00228       G4VProcess* aBremsstrahlung     = new G4MuBremsstrahlung();
00229       G4VProcess* aPairProduction     = new G4MuPairProduction();
00230       G4VProcess* anIonisation        = new G4MuIonisation();
00231       //
00232       // add processes
00233       pmanager->AddProcess(anIonisation);
00234       pmanager->AddProcess(aMultipleScattering);
00235       pmanager->AddProcess(aBremsstrahlung);
00236       pmanager->AddProcess(aPairProduction);
00237       //
00238       // set ordering for AlongStepDoIt
00239       pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
00240       pmanager->SetProcessOrdering(anIonisation,        idxAlongStep,2);
00241       //
00242       // set ordering for PostStepDoIt
00243       pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
00244       pmanager->SetProcessOrdering(anIonisation,        idxPostStep,2);
00245       pmanager->SetProcessOrdering(aBremsstrahlung,     idxPostStep,3);
00246       pmanager->SetProcessOrdering(aPairProduction,     idxPostStep,4);
00247 
00248     } else if ((!particle->IsShortLived()) &&
00249                (particle->GetPDGCharge() != 0.0) && 
00250                (particle->GetParticleName() != "chargedgeantino")) {
00251      // all others charged particles except geantino
00252      G4VProcess* aMultipleScattering = new G4MultipleScattering();
00253      G4VProcess* anIonisation        = new G4hIonisation();     
00255      
00256      //
00257      // add processes
00258      pmanager->AddProcess(anIonisation);
00259      pmanager->AddProcess(aMultipleScattering);    
00261      
00262      //
00263      // set ordering for AlongStepDoIt
00264      pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
00265      pmanager->SetProcessOrdering(anIonisation,        idxAlongStep,2);
00266      
00267      //
00268      // set ordering for PostStepDoIt
00269      pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
00270      pmanager->SetProcessOrdering(anIonisation,        idxPostStep,2);
00272     }
00273   }
00274 }

void ExN02PhysicsList::ConstructGeneral (  )  [protected]

Definition at line 279 of file ExN02PhysicsList.cxx.

Referenced by ConstructProcess().

00280 {
00281   // Add Decay Process
00282   G4Decay* theDecayProcess = new G4Decay();
00283   theParticleIterator->reset();
00284   while( (*theParticleIterator)() ){
00285     G4ParticleDefinition* particle = theParticleIterator->value();
00286     G4ProcessManager* pmanager = particle->GetProcessManager();
00287     if (theDecayProcess->IsApplicable(*particle)) { 
00288       pmanager ->AddProcess(theDecayProcess);
00289       // set ordering for PostStepDoIt and AtRestDoIt
00290       pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
00291       pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
00292     }
00293   }
00294 }

void ExN02PhysicsList::ConstructLeptons (  )  [protected]

Definition at line 85 of file ExN02PhysicsList.cxx.

Referenced by ConstructParticle().

00086 {
00087   // leptons
00088   //  e+/-
00089   G4Electron::ElectronDefinition();
00090   G4Positron::PositronDefinition();
00091   // mu+/-
00092   G4MuonPlus::MuonPlusDefinition();
00093   G4MuonMinus::MuonMinusDefinition();
00094   // nu_e
00095   G4NeutrinoE::NeutrinoEDefinition();
00096   G4AntiNeutrinoE::AntiNeutrinoEDefinition();
00097   // nu_mu
00098   G4NeutrinoMu::NeutrinoMuDefinition();
00099   G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
00100 }

void ExN02PhysicsList::ConstructMesons (  )  [protected]

Definition at line 104 of file ExN02PhysicsList.cxx.

Referenced by ConstructParticle().

00105 {
00106   //  mesons
00107   //    light mesons
00108   G4PionPlus::PionPlusDefinition();
00109   G4PionMinus::PionMinusDefinition();
00110   G4PionZero::PionZeroDefinition();
00111   G4Eta::EtaDefinition();
00112   G4EtaPrime::EtaPrimeDefinition();
00113   G4KaonPlus::KaonPlusDefinition();
00114   G4KaonMinus::KaonMinusDefinition();
00115   G4KaonZero::KaonZeroDefinition();
00116   G4AntiKaonZero::AntiKaonZeroDefinition();
00117   G4KaonZeroLong::KaonZeroLongDefinition();
00118   G4KaonZeroShort::KaonZeroShortDefinition();
00119 }

void ExN02PhysicsList::ConstructParticle (  )  [protected]

Definition at line 57 of file ExN02PhysicsList.cxx.

References ConstructBaryons(), ConstructBosons(), ConstructLeptons(), and ConstructMesons().

00058 {
00059   // In this method, static member functions should be called
00060   // for all particles which you want to use.
00061   // This ensures that objects of these particle types will be
00062   // created in the program. 
00063 
00064   ConstructBosons();
00065   ConstructLeptons();
00066   ConstructMesons();
00067   ConstructBaryons();
00068 
00069 }

void ExN02PhysicsList::ConstructProcess (  )  [protected]

Definition at line 135 of file ExN02PhysicsList.cxx.

References ConstructEM(), and ConstructGeneral().

00136 {
00137   AddTransportation();
00138   ConstructEM();
00139   ConstructGeneral();
00140 }

void ExN02PhysicsList::SetCuts (  )  [protected]

Definition at line 298 of file ExN02PhysicsList.cxx.

00299 {
00300   //G4VUserPhysicsList::SetCutsWithDefault method sets 
00301   //the default cut value for all particle types 
00302   //
00303   SetCutsWithDefault();
00304      
00305   if (verboseLevel>0) DumpCutValuesTable();
00306 }


Generated on Tue Nov 29 23:19:32 2016 for BOSS_7.0.2 by  doxygen 1.4.7