#include <MollerPhysicsList.hh>
Public Member Functions | |
MollerPhysicsList () | |
~MollerPhysicsList () | |
Protected Member Functions | |
void | ConstructParticle () |
void | ConstructProcess () |
void | ConstructGeneral () |
void | ConstructEM () |
void | SetCuts () |
Definition at line 10 of file MollerPhysicsList.hh.
MollerPhysicsList::MollerPhysicsList | ( | ) |
Definition at line 12 of file MollerPhysicsList.cc.
MollerPhysicsList::~MollerPhysicsList | ( | ) |
Definition at line 18 of file MollerPhysicsList.cc.
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 }
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 }
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 }
void MollerPhysicsList::SetCuts | ( | ) | [protected] |
Definition at line 263 of file MollerPhysicsList.cc.