00001
00002
00003
00004
00005
00006
00007 #include "TrkExtAlg/ExtPhysicsList.h"
00008
00009 #include "TrkExtAlg/ExthIonisation.h"
00010 #include "TrkExtAlg/ExteIonisation.h"
00011 #include "TrkExtAlg/ExtMuIonisation.h"
00012
00013
00014 #include "G4ParticleTypes.hh"
00015
00016 #include "G4MultipleScattering.hh"
00017 #include "G4eIonisation.hh"
00018 #include "G4eBremsstrahlung.hh"
00019 #include "G4MuIonisation.hh"
00020 #include "G4MuBremsstrahlung.hh"
00021 #include "G4hIonisation.hh"
00022
00023 #include "G4ProcessManager.hh"
00024
00025 ExtPhysicsList::ExtPhysicsList()
00026 {
00027 defaultCutValue = 0.5*mm;
00028 }
00029
00030 ExtPhysicsList::~ExtPhysicsList(){;}
00031
00032 void ExtPhysicsList::ConstructParticle()
00033 {
00034
00035
00036
00037
00038 G4Gamma:: GammaDefinition();
00039 G4Electron:: ElectronDefinition();
00040 G4Positron:: PositronDefinition();
00041 G4MuonPlus:: MuonPlusDefinition();
00042 G4MuonMinus:: MuonMinusDefinition();
00043 G4PionPlus:: PionPlusDefinition();
00044 G4PionMinus:: PionMinusDefinition();
00045 G4KaonPlus:: KaonPlusDefinition();
00046 G4KaonMinus:: KaonMinusDefinition();
00047 G4Proton:: ProtonDefinition();
00048 G4AntiProton:: AntiProtonDefinition();
00049 }
00050
00051
00052 void ExtPhysicsList::ConstructProcess()
00053 {
00054
00055 AddTransportation();
00056
00057
00058 theParticleIterator->reset();
00059 while( (*theParticleIterator)() )
00060 {
00061 G4ParticleDefinition* particle = theParticleIterator->value();
00062 G4ProcessManager* pmanager = particle->GetProcessManager();
00063 G4String particleName = particle->GetParticleName();
00064 if(particleName == "e-" || particleName == "e+")
00065 {
00066
00067
00068 pmanager->AddProcess( new ExteIonisation,-1,1,1);
00069
00070 }
00071 else if(particleName == "mu-" || particleName == "mu+")
00072 {
00073
00074
00075 pmanager->AddProcess( new ExtMuIonisation,-1,1,1);
00076
00077 }
00078 else if((!particle->IsShortLived()) && (particle->GetPDGCharge() != 0.0) && (particleName != "chargedgeantino"))
00079 {
00080
00081
00082
00083 pmanager->AddProcess( new ExthIonisation,-1,1,1);
00084 }
00085 }
00086 }
00087
00088
00089 void ExtPhysicsList::SetCuts()
00090 {
00091
00092
00093 SetCutsWithDefault();
00094
00095 }