#include <ExN03PhysicsList.hh>
Public Member Functions | |
ExN03PhysicsList () | |
~ExN03PhysicsList () | |
Protected Member Functions | |
void | ConstructParticle () |
void | ConstructProcess () |
void | SetCuts () |
void | ConstructBosons () |
void | ConstructLeptons () |
void | ConstructMesons () |
void | ConstructBaryons () |
void | ConstructGeneral () |
void | ConstructEM () |
Definition at line 40 of file ExN03PhysicsList.hh.
ExN03PhysicsList::ExN03PhysicsList | ( | ) |
Definition at line 45 of file ExN03PhysicsList.cxx.
00045 : G4VUserPhysicsList() 00046 { 00047 defaultCutValue = 1.0*mm; 00048 SetVerboseLevel(1); 00049 }
ExN03PhysicsList::~ExN03PhysicsList | ( | ) |
void ExN03PhysicsList::ConstructBaryons | ( | ) | [protected] |
Definition at line 122 of file ExN03PhysicsList.cxx.
Referenced by ConstructParticle().
00123 { 00124 // barions 00125 G4Proton::ProtonDefinition(); 00126 G4AntiProton::AntiProtonDefinition(); 00127 G4Neutron::NeutronDefinition(); 00128 G4AntiNeutron::AntiNeutronDefinition(); 00129 }
void ExN03PhysicsList::ConstructBosons | ( | ) | [protected] |
Definition at line 73 of file ExN03PhysicsList.cxx.
Referenced by ConstructParticle().
00074 { 00075 // pseudo-particles 00076 G4Geantino::GeantinoDefinition(); 00077 G4ChargedGeantino::ChargedGeantinoDefinition(); 00078 00079 // gamma 00080 G4Gamma::GammaDefinition(); 00081 00082 // optical photon 00083 G4OpticalPhoton::OpticalPhotonDefinition(); 00084 }
void ExN03PhysicsList::ConstructEM | ( | ) | [protected] |
Definition at line 161 of file ExN03PhysicsList.cxx.
Referenced by ConstructProcess().
00162 { 00163 theParticleIterator->reset(); 00164 while( (*theParticleIterator)() ){ 00165 G4ParticleDefinition* particle = theParticleIterator->value(); 00166 G4ProcessManager* pmanager = particle->GetProcessManager(); 00167 G4String particleName = particle->GetParticleName(); 00168 00169 if (particleName == "gamma") { 00170 // gamma 00171 pmanager->AddDiscreteProcess(new G4GammaConversion()); 00172 pmanager->AddDiscreteProcess(new G4ComptonScattering()); 00173 pmanager->AddDiscreteProcess(new G4PhotoElectricEffect()); 00174 00175 } else if (particleName == "e-") { 00176 //electron 00177 G4VProcess* theeminusMultipleScattering = new G4MultipleScattering(); 00178 G4VProcess* theeminusIonisation = new G4eIonisation(); 00179 G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung(); 00180 // 00181 // add processes 00182 pmanager->AddProcess(theeminusMultipleScattering); 00183 pmanager->AddProcess(theeminusIonisation); 00184 pmanager->AddProcess(theeminusBremsstrahlung); 00185 // 00186 // set ordering for AlongStepDoIt 00187 pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1); 00188 pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep,2); 00189 // 00190 // set ordering for PostStepDoIt 00191 pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1); 00192 pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep,2); 00193 pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep,3); 00194 00195 } else if (particleName == "e+") { 00196 //positron 00197 G4VProcess* theeplusMultipleScattering = new G4MultipleScattering(); 00198 G4VProcess* theeplusIonisation = new G4eIonisation(); 00199 G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung(); 00200 G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation(); 00201 // 00202 // add processes 00203 pmanager->AddProcess(theeplusMultipleScattering); 00204 pmanager->AddProcess(theeplusIonisation); 00205 pmanager->AddProcess(theeplusBremsstrahlung); 00206 pmanager->AddProcess(theeplusAnnihilation); 00207 // 00208 // set ordering for AtRestDoIt 00209 pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest); 00210 // 00211 // set ordering for AlongStepDoIt 00212 pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1); 00213 pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2); 00214 // 00215 // set ordering for PostStepDoIt 00216 pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1); 00217 pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep,2); 00218 pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep,3); 00219 pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep,4); 00220 00221 } else if( particleName == "mu+" || 00222 particleName == "mu-" ) { 00223 //muon 00224 G4VProcess* aMultipleScattering = new G4MultipleScattering(); 00225 G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung(); 00226 G4VProcess* aPairProduction = new G4MuPairProduction(); 00227 G4VProcess* anIonisation = new G4MuIonisation(); 00228 // 00229 // add processes 00230 pmanager->AddProcess(anIonisation); 00231 pmanager->AddProcess(aMultipleScattering); 00232 pmanager->AddProcess(aBremsstrahlung); 00233 pmanager->AddProcess(aPairProduction); 00234 // 00235 // set ordering for AlongStepDoIt 00236 pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1); 00237 pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2); 00238 // 00239 // set ordering for PostStepDoIt 00240 pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1); 00241 pmanager->SetProcessOrdering(anIonisation, idxPostStep,2); 00242 pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep,3); 00243 pmanager->SetProcessOrdering(aPairProduction, idxPostStep,4); 00244 00245 } else if ((!particle->IsShortLived()) && 00246 (particle->GetPDGCharge() != 0.0) && 00247 (particle->GetParticleName() != "chargedgeantino")) { 00248 // all others charged particles except geantino 00249 G4VProcess* aMultipleScattering = new G4MultipleScattering(); 00250 G4VProcess* anIonisation = new G4hIonisation(); 00251 // 00252 // add processes 00253 pmanager->AddProcess(anIonisation); 00254 pmanager->AddProcess(aMultipleScattering); 00255 // 00256 // set ordering for AlongStepDoIt 00257 pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1); 00258 pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2); 00259 // 00260 // set ordering for PostStepDoIt 00261 pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1); 00262 pmanager->SetProcessOrdering(anIonisation, idxPostStep,2); 00263 } 00264 } 00265 }
void ExN03PhysicsList::ConstructGeneral | ( | ) | [protected] |
Definition at line 271 of file ExN03PhysicsList.cxx.
Referenced by ConstructProcess().
00272 { 00273 // Add Decay Process 00274 G4Decay* theDecayProcess = new G4Decay(); 00275 theParticleIterator->reset(); 00276 while( (*theParticleIterator)() ){ 00277 G4ParticleDefinition* particle = theParticleIterator->value(); 00278 G4ProcessManager* pmanager = particle->GetProcessManager(); 00279 if (theDecayProcess->IsApplicable(*particle)) { 00280 pmanager ->AddProcess(theDecayProcess); 00281 // set ordering for PostStepDoIt and AtRestDoIt 00282 pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); 00283 pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); 00284 } 00285 } 00286 }
void ExN03PhysicsList::ConstructLeptons | ( | ) | [protected] |
Definition at line 88 of file ExN03PhysicsList.cxx.
Referenced by ConstructParticle().
00089 { 00090 // leptons 00091 G4Electron::ElectronDefinition(); 00092 G4Positron::PositronDefinition(); 00093 G4MuonPlus::MuonPlusDefinition(); 00094 G4MuonMinus::MuonMinusDefinition(); 00095 00096 G4NeutrinoE::NeutrinoEDefinition(); 00097 G4AntiNeutrinoE::AntiNeutrinoEDefinition(); 00098 G4NeutrinoMu::NeutrinoMuDefinition(); 00099 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); 00100 }
void ExN03PhysicsList::ConstructMesons | ( | ) | [protected] |
Definition at line 104 of file ExN03PhysicsList.cxx.
Referenced by ConstructParticle().
00105 { 00106 // mesons 00107 G4PionPlus::PionPlusDefinition(); 00108 G4PionMinus::PionMinusDefinition(); 00109 G4PionZero::PionZeroDefinition(); 00110 G4Eta::EtaDefinition(); 00111 G4EtaPrime::EtaPrimeDefinition(); 00112 G4KaonPlus::KaonPlusDefinition(); 00113 G4KaonMinus::KaonMinusDefinition(); 00114 G4KaonZero::KaonZeroDefinition(); 00115 G4AntiKaonZero::AntiKaonZeroDefinition(); 00116 G4KaonZeroLong::KaonZeroLongDefinition(); 00117 G4KaonZeroShort::KaonZeroShortDefinition(); 00118 }
void ExN03PhysicsList::ConstructParticle | ( | ) | [protected] |
Definition at line 58 of file ExN03PhysicsList.cxx.
References ConstructBaryons(), ConstructBosons(), ConstructLeptons(), and ConstructMesons().
00059 { 00060 // In this method, static member functions should be called 00061 // for all particles which you want to use. 00062 // This ensures that objects of these particle types will be 00063 // created in the program. 00064 00065 ConstructBosons(); 00066 ConstructLeptons(); 00067 ConstructMesons(); 00068 ConstructBaryons(); 00069 }
void ExN03PhysicsList::ConstructProcess | ( | ) | [protected] |
Definition at line 134 of file ExN03PhysicsList.cxx.
References ConstructEM(), and ConstructGeneral().
00135 { 00136 AddTransportation(); 00137 ConstructEM(); 00138 ConstructGeneral(); 00139 }
void ExN03PhysicsList::SetCuts | ( | ) | [protected] |
Definition at line 290 of file ExN03PhysicsList.cxx.
00291 { 00292 if (verboseLevel >0){ 00293 G4cout << "ExN03PhysicsList::SetCuts:"; 00294 G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; 00295 } 00296 00297 // set cut values for gamma at first and for e- second and next for e+, 00298 // because some processes for e+/e- need cut values for gamma 00299 // 00300 SetCutValue(defaultCutValue, "gamma"); 00301 SetCutValue(defaultCutValue, "e-"); 00302 SetCutValue(defaultCutValue, "e+"); 00303 00304 if (verboseLevel>0) DumpCutValuesTable(); 00305 }