MollerPhysicsList Class Reference

#include <MollerPhysicsList.hh>

Public Member Functions

 MollerPhysicsList ()
 ~MollerPhysicsList ()

Protected Member Functions

void ConstructParticle ()
void ConstructProcess ()
void ConstructGeneral ()
void ConstructEM ()
void SetCuts ()

Detailed Description

Definition at line 10 of file MollerPhysicsList.hh.


Constructor & Destructor Documentation

MollerPhysicsList::MollerPhysicsList (  ) 

Definition at line 12 of file MollerPhysicsList.cc.

00013 {
00014   defaultCutValue = 1.0*cm;
00015   SetVerboseLevel(1);
00016 }

MollerPhysicsList::~MollerPhysicsList (  ) 

Definition at line 18 of file MollerPhysicsList.cc.

00019 {;}


Member Function Documentation

void MollerPhysicsList::ConstructEM (  )  [protected]

Definition at line 154 of file MollerPhysicsList.cc.

Referenced by ConstructProcess().

00155 {
00156   theParticleIterator->reset();
00157   while( (*theParticleIterator)() ){
00158     G4ParticleDefinition* particle = theParticleIterator->value();
00159     G4ProcessManager* pmanager = particle->GetProcessManager();
00160     G4String particleName = particle->GetParticleName();
00161      
00162     if (particleName == "gamma") {
00163       // gamma         
00164       pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
00165       pmanager->AddDiscreteProcess(new G4ComptonScattering);
00166       pmanager->AddDiscreteProcess(new G4GammaConversion);
00167       pmanager->AddDiscreteProcess(new G4GammaConversionToMuons);
00168      
00169     } else if (particleName == "e-") {
00170       //electron
00171       #if G4VERSION_NUMBER < 940
00172       pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
00173       #else
00174       pmanager->AddProcess(new G4eMultipleScattering,-1, 1,1);
00175       #endif
00176       pmanager->AddProcess(new G4eIonisation,       -1, 2,2);
00177       pmanager->AddProcess(new G4eBremsstrahlung,   -1, 3,3); 
00178       
00179     } else if (particleName == "e+") {
00180       //positron
00181       #if G4VERSION_NUMBER < 940
00182       pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
00183       #else
00184       pmanager->AddProcess(new G4eMultipleScattering,-1, 1,1);
00185       #endif
00186       pmanager->AddProcess(new G4eIonisation,       -1, 2,2);
00187       pmanager->AddProcess(new G4eBremsstrahlung,   -1, 3,3);
00188       pmanager->AddProcess(new G4eplusAnnihilation,  0,-1,4);
00189 
00190     } else if (particleName == "proton") {
00191       //proton
00192       #if G4VERSION_NUMBER < 940
00193       pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
00194       #else
00195       pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1);
00196       #endif
00197       pmanager->AddProcess(new G4hIonisation,        -1,2,2);
00198       
00199       G4HadronElasticProcess* theElasticProcess = 
00200   new G4HadronElasticProcess;
00201       G4LElastic* theElasticModel = new G4LElastic;
00202       theElasticProcess->RegisterMe(theElasticModel);
00203       pmanager->AddDiscreteProcess(new G4HadronElasticProcess);
00204       
00205       G4ProtonInelasticProcess* theInelasticProcess = 
00206   new G4ProtonInelasticProcess("inelastic");
00207       G4LEProtonInelastic* theLEInelasticModel = new G4LEProtonInelastic;
00208       theInelasticProcess->RegisterMe(theLEInelasticModel);
00209       G4ProtonInelasticCrossSection* theProtonData1 = 
00210   new G4ProtonInelasticCrossSection;
00211       theInelasticProcess->AddDataSet(theProtonData1); 
00212       pmanager->AddDiscreteProcess(theInelasticProcess);
00213       
00214       /*} else if( particleName == "mu+" || 
00215                particleName == "mu-"    ) {
00216       //muon  
00217       #if G4VERSION_NUMBER < 940
00218       pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
00219       #else
00220       pmanager->AddProcess(new G4MuMultipleScattering,-1, 1,1);
00221       #endif
00222       pmanager->AddProcess(new G4MuIonisation,      -1, 2,2);
00223       pmanager->AddProcess(new G4MuBremsstrahlung,  -1, 3,3);
00224       pmanager->AddProcess(new G4MuPairProduction,  -1, 4,4);  */     
00225      
00226     } else if ((!particle->IsShortLived()) &&
00227          (particle->GetPDGCharge() != 0.0) && 
00228          (particle->GetParticleName() != "chargedgeantino")) {
00229       //all others charged particles except geantino
00230       #if G4VERSION_NUMBER < 940
00231       pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
00232       #else
00233       pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1);
00234       #endif
00235       pmanager->AddProcess(new G4hIonisation,       -1, 2,2);
00236       //step limit
00237       pmanager->AddProcess(new G4StepLimiter,       -1,-1,4);         
00238       pmanager->AddProcess(new G4UserSpecialCuts,   -1,-1,5);  
00239     }
00240   }
00241 }

Here is the caller graph for this function:

void MollerPhysicsList::ConstructGeneral (  )  [protected]

Definition at line 246 of file MollerPhysicsList.cc.

Referenced by ConstructProcess().

00247 {
00248   // Add Decay Process
00249   G4Decay* theDecayProcess = new G4Decay();
00250   theParticleIterator->reset();
00251   while( (*theParticleIterator)() ){
00252     G4ParticleDefinition* particle = theParticleIterator->value();
00253     G4ProcessManager* pmanager = particle->GetProcessManager();
00254     if (theDecayProcess->IsApplicable(*particle)) { 
00255       pmanager ->AddProcess(theDecayProcess);
00256       // set ordering for PostStepDoIt and AtRestDoIt
00257       pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
00258       pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
00259     }
00260   }
00261 }

Here is the caller graph for this function:

void MollerPhysicsList::ConstructParticle (  )  [protected]

Definition at line 21 of file MollerPhysicsList.cc.

00022 {
00023 
00024   // pseudo-particles
00025   G4Geantino::GeantinoDefinition();//1
00026 
00027   // gamma
00028   G4Gamma::GammaDefinition();//2
00029 
00030   // leptons
00031   //  e+/-
00032   G4Electron::ElectronDefinition();//3
00033   G4Positron::PositronDefinition();//4
00034   // mu+/-
00035   G4MuonPlus::MuonPlusDefinition();//5
00036   G4MuonMinus::MuonMinusDefinition();//6
00037   // nu_e
00038   G4NeutrinoE::NeutrinoEDefinition();//7
00039   G4AntiNeutrinoE::AntiNeutrinoEDefinition();//7
00040 
00041   // nu_mu
00042   G4NeutrinoMu::NeutrinoMuDefinition();//7
00043   G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();//7
00044 
00045   // nu_tau
00046   G4NeutrinoTau::NeutrinoTauDefinition();//7
00047   G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();//7
00048 
00049   //  mesons
00050   //    light mesons
00051   G4PionPlus::PionPlusDefinition();//8
00052   G4PionMinus::PionMinusDefinition();//9
00053   G4PionZero::PionZeroDefinition();//10
00054 
00055   G4UnknownParticle::UnknownParticleDefinition();//11
00056 
00057   G4KaonPlus::KaonPlusDefinition();//13
00058   G4KaonMinus::KaonMinusDefinition();//14
00059 
00060   G4KaonZeroLong::KaonZeroLongDefinition();//15
00061   G4KaonZeroShort::KaonZeroShortDefinition();//16
00062 
00063   //  barions
00064   G4Proton::ProtonDefinition();//17
00065   G4AntiProton::AntiProtonDefinition();//18
00066 
00067   G4Neutron::NeutronDefinition();//19
00068   G4AntiNeutron::AntiNeutronDefinition();//20
00069 
00070   //Other
00071   G4Eta::EtaDefinition();//21
00072   G4Alpha::AlphaDefinition();//22
00073   //G4Omega::OmegaDefinition();//23
00074 
00075   G4Lambda::LambdaDefinition();//24
00076   G4AntiLambda::AntiLambdaDefinition();//25
00077 
00078   G4SigmaPlus::SigmaPlusDefinition();//26
00079   G4SigmaMinus::SigmaMinusDefinition();//27
00080   G4SigmaZero::SigmaZeroDefinition();//28
00081 
00082   G4AntiSigmaPlus::AntiSigmaPlusDefinition();//29
00083   G4AntiSigmaMinus::AntiSigmaMinusDefinition();//30
00084   G4AntiSigmaZero::AntiSigmaZeroDefinition();//31
00085 
00086   G4TauPlus::TauPlusDefinition();//32
00087   G4TauMinus::TauMinusDefinition();//33
00088 
00089   G4XiZero::XiZeroDefinition();//34
00090   G4XiMinus::XiMinusDefinition();//35
00091 
00092   G4AntiXiZero::AntiXiZeroDefinition();//36
00093   //G4AntiXiPlus::AntiXiPlusDefinition();//37
00094 
00095   G4Deuteron::DeuteronDefinition();//38
00096   //G4Tritium::TritiumDefinition();//39
00097   G4He3::He3Definition();//40
00098 
00099   G4GenericIon::GenericIonDefinition();
00100 
00101   G4DMesonPlus::DMesonPlusDefinition();//41
00102   G4DMesonMinus::DMesonMinusDefinition();//42
00103   G4DMesonZero::DMesonZeroDefinition();//43
00104   G4AntiDMesonZero::AntiDMesonZeroDefinition();//44
00105 
00106   G4DsMesonPlus::DsMesonPlusDefinition();//45
00107   G4DsMesonMinus::DsMesonMinusDefinition();//45
00108   
00109   G4LambdacPlus::LambdacPlusDefinition();//47
00110 }

void MollerPhysicsList::ConstructProcess (  )  [protected]

Definition at line 112 of file MollerPhysicsList.cc.

References ConstructEM(), and ConstructGeneral().

00113 {
00114   AddTransportation();
00115   ConstructEM();
00116   ConstructGeneral();
00117 }

Here is the call graph for this function:

void MollerPhysicsList::SetCuts (  )  [protected]

Definition at line 263 of file MollerPhysicsList.cc.

00264 {
00265   G4int temp = GetVerboseLevel();
00266 
00267   SetVerboseLevel(0);
00268   SetCutsWithDefault();
00269   SetVerboseLevel(temp);
00270 }


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

Generated on 16 Jun 2013 for mollersim by  doxygen 1.6.1