![]() |
![]() |
#include <VisExamples/VisG4ExN02/src/VisG4ExamplePhysics.h>
Public Member Functions | |
VisG4ExamplePhysics (void) | |
Protected Member Functions | |
virtual void | ConstructParticle (void) |
virtual void | ConstructProcess (void) |
virtual void | SetCuts (void) |
Definition at line 16 of file VisG4ExamplePhysics.h.
VisG4ExamplePhysics::VisG4ExamplePhysics | ( | void | ) |
Definition at line 44 of file VisG4ExamplePhysics.cc.
00045 { 00046 // pseudo-particles 00047 G4Geantino::GeantinoDefinition(); 00048 G4ChargedGeantino::ChargedGeantinoDefinition(); 00049 00050 // gamma 00051 G4Gamma::GammaDefinition(); 00052 G4Geantino::GeantinoDefinition (); 00053 00054 // leptons 00055 // e+/- 00056 G4Electron::ElectronDefinition(); 00057 G4Positron::PositronDefinition(); 00058 00059 // mu+/- 00060 G4MuonPlus::MuonPlusDefinition(); 00061 G4MuonMinus::MuonMinusDefinition(); 00062 00063 // nu_e 00064 G4NeutrinoE::NeutrinoEDefinition(); 00065 G4AntiNeutrinoE::AntiNeutrinoEDefinition(); 00066 00067 // nu_mu 00068 G4NeutrinoMu::NeutrinoMuDefinition(); 00069 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); 00070 00071 // mesons 00072 // light mesons 00073 G4PionPlus::PionPlusDefinition(); 00074 G4PionMinus::PionMinusDefinition(); 00075 G4PionZero::PionZeroDefinition(); 00076 G4Eta::EtaDefinition(); 00077 G4EtaPrime::EtaPrimeDefinition(); 00078 G4KaonPlus::KaonPlusDefinition(); 00079 G4KaonMinus::KaonMinusDefinition(); 00080 G4KaonZero::KaonZeroDefinition(); 00081 G4AntiKaonZero::AntiKaonZeroDefinition(); 00082 G4KaonZeroLong::KaonZeroLongDefinition(); 00083 G4KaonZeroShort::KaonZeroShortDefinition(); 00084 00085 // barions 00086 G4Proton::ProtonDefinition(); 00087 G4AntiProton::AntiProtonDefinition(); 00088 00089 G4Neutron::NeutronDefinition(); 00090 G4AntiNeutron::AntiNeutronDefinition(); 00091 }
Definition at line 94 of file VisG4ExamplePhysics.cc.
00095 { 00096 AddTransportation (); 00097 00099 theParticleIterator->reset(); 00100 while ((*theParticleIterator) ()) 00101 { 00102 G4ParticleDefinition *p = theParticleIterator->value (); 00103 G4ProcessManager *pm = p->GetProcessManager (); 00104 G4String name = p->GetParticleName (); 00105 00106 if (name == "gamma") 00107 { 00108 pm->AddDiscreteProcess (new G4GammaConversion ()); 00109 pm->AddDiscreteProcess (new G4ComptonScattering ()); 00110 pm->AddDiscreteProcess (new G4PhotoElectricEffect ()); 00111 } 00112 else if (name == "e-") 00113 { 00114 G4VProcess *multipleScattering = new G4MultipleScattering (); 00115 G4VProcess *ionisation = new G4eIonisation (); 00116 G4VProcess *bremsstrahlung = new G4eBremsstrahlung (); 00117 00118 pm->AddProcess (multipleScattering); 00119 pm->AddProcess (ionisation); 00120 pm->AddProcess (bremsstrahlung); 00121 00122 pm->SetProcessOrdering (multipleScattering, idxAlongStep, 1); 00123 pm->SetProcessOrdering (ionisation, idxAlongStep, 2); 00124 00125 pm->SetProcessOrdering (multipleScattering, idxPostStep, 1); 00126 pm->SetProcessOrdering (ionisation, idxPostStep, 2); 00127 pm->SetProcessOrdering (bremsstrahlung, idxPostStep, 3); 00128 } 00129 else if (name == "e+") 00130 { 00131 G4VProcess *multipleScattering = new G4MultipleScattering (); 00132 G4VProcess *ionisation = new G4eIonisation (); 00133 G4VProcess *bremsstrahlung = new G4eBremsstrahlung (); 00134 G4VProcess *annihilation = new G4eplusAnnihilation (); 00135 00136 pm->AddProcess (multipleScattering); 00137 pm->AddProcess (ionisation); 00138 pm->AddProcess (bremsstrahlung); 00139 pm->AddProcess (annihilation); 00140 00141 pm->SetProcessOrderingToFirst (annihilation, idxAtRest); 00142 00143 pm->SetProcessOrdering (multipleScattering, idxAlongStep, 1); 00144 pm->SetProcessOrdering (ionisation, idxAlongStep, 2); 00145 00146 pm->SetProcessOrdering (multipleScattering, idxPostStep, 1); 00147 pm->SetProcessOrdering (ionisation, idxPostStep, 2); 00148 pm->SetProcessOrdering (bremsstrahlung, idxPostStep, 3); 00149 pm->SetProcessOrdering (annihilation, idxPostStep, 4); 00150 } 00151 else if (name == "mu+" || name == "mu-") 00152 { 00153 G4VProcess *multipleScattering = new G4MultipleScattering (); 00154 G4VProcess *bremsstrahlung = new G4MuBremsstrahlung (); 00155 G4VProcess *pairProduction = new G4MuPairProduction (); 00156 G4VProcess *ionisation = new G4MuIonisation (); 00157 00158 pm->AddProcess (ionisation); 00159 pm->AddProcess (multipleScattering); 00160 pm->AddProcess (bremsstrahlung); 00161 pm->AddProcess (pairProduction); 00162 00163 pm->SetProcessOrdering (multipleScattering, idxAlongStep,1); 00164 pm->SetProcessOrdering (ionisation, idxAlongStep,2); 00165 00166 pm->SetProcessOrdering (multipleScattering, idxPostStep,1); 00167 pm->SetProcessOrdering (ionisation, idxPostStep,2); 00168 pm->SetProcessOrdering (bremsstrahlung, idxPostStep,3); 00169 pm->SetProcessOrdering (pairProduction, idxPostStep,4); 00170 } 00171 else if (! p->IsShortLived () 00172 && p->GetPDGCharge () != 0.0 00173 && p->GetParticleName () != "chargedgeantino") 00174 { 00175 // all others charged particles except geantino 00176 G4VProcess *multipleScattering = new G4MultipleScattering (); 00177 G4VProcess *ionisation = new G4hIonisation (); 00178 00179 pm->AddProcess (ionisation); 00180 pm->AddProcess (multipleScattering); 00181 00182 pm->SetProcessOrdering (multipleScattering, idxAlongStep,1); 00183 pm->SetProcessOrdering (ionisation, idxAlongStep,2); 00184 00185 pm->SetProcessOrdering (multipleScattering, idxPostStep,1); 00186 pm->SetProcessOrdering (ionisation, idxPostStep,2); 00187 } 00188 } 00189 00191 // Add Decay Process 00192 theParticleIterator->reset (); 00193 G4Decay *decay = new G4Decay (); 00194 while ((*theParticleIterator) ()) 00195 { 00196 G4ParticleDefinition *p = theParticleIterator->value (); 00197 G4ProcessManager *pm = p->GetProcessManager (); 00198 00199 if (decay->IsApplicable (*p)) 00200 { 00201 pm->AddProcess (decay); 00202 pm->SetProcessOrdering (decay, idxPostStep); 00203 pm->SetProcessOrdering (decay, idxAtRest); 00204 } 00205 } 00206 }