30 #include "G4ProcessManager.hh"
31 #include "G4ProcessVector.hh"
32 #include "G4LossTableManager.hh"
33 #include "G4ParticleDefinition.hh"
34 #include "G4ParticleWithCuts.hh"
35 #include "G4ParticleTypes.hh"
36 #include "G4ParticleTable.hh"
40 #include "G4PhotoElectricEffect.hh"
41 #include "G4LivermorePhotoElectricModel.hh"
43 #include "G4ComptonScattering.hh"
44 #include "G4LivermoreComptonModel.hh"
46 #include "G4GammaConversion.hh"
47 #include "G4LivermoreGammaConversionModel.hh"
49 #include "G4RayleighScattering.hh"
50 #include "G4LivermoreRayleighModel.hh"
53 #include "G4eMultipleScattering.hh"
54 #include "G4UniversalFluctuation.hh"
56 #include "G4eIonisation.hh"
57 #include "G4LivermoreIonisationModel.hh"
59 #include "G4eBremsstrahlung.hh"
60 #include "G4LivermoreBremsstrahlungModel.hh"
62 #include "G4eIonisation.hh"
63 #include "G4eBremsstrahlung.hh"
64 #include "G4eplusAnnihilation.hh"
67 ParisLowEnergyEMPhysicsList::ParisLowEnergyEMPhysicsList(
const G4String& name): G4VPhysicsConstructor(name)
71 ParisLowEnergyEMPhysicsList::~ParisLowEnergyEMPhysicsList()
75 void ParisLowEnergyEMPhysicsList::ConstructParticle()
78 G4Gamma::GammaDefinition();
81 G4Electron::ElectronDefinition();
82 G4Positron::PositronDefinition();
85 G4Geantino::GeantinoDefinition();
89 void ParisLowEnergyEMPhysicsList::ConstructProcess()
91 theParticleIterator->reset();
93 while( (*theParticleIterator)() ){
94 G4ParticleDefinition* particle = theParticleIterator->value();
95 G4ProcessManager* pmanager = particle->GetProcessManager();
96 G4String particleName = particle->GetParticleName();
98 if (particleName ==
"gamma") {
100 G4PhotoElectricEffect* thePhotoElectricEffect =
new G4PhotoElectricEffect();
101 thePhotoElectricEffect->SetModel(
new G4LivermorePhotoElectricModel());
103 G4ComptonScattering* theComptonScattering =
new G4ComptonScattering();
104 theComptonScattering->SetModel(
new G4LivermoreComptonModel());
106 G4GammaConversion* theGammaConversion =
new G4GammaConversion();
107 theGammaConversion->SetModel(
new G4LivermoreGammaConversionModel());
109 G4RayleighScattering* theRayleigh =
new G4RayleighScattering();
110 theRayleigh->SetModel(
new G4LivermoreRayleighModel());
112 pmanager->AddDiscreteProcess(thePhotoElectricEffect);
113 pmanager->AddDiscreteProcess(theComptonScattering);
114 pmanager->AddDiscreteProcess(theGammaConversion);
115 pmanager->AddDiscreteProcess(theRayleigh);
117 }
else if (particleName ==
"e-") {
119 G4eMultipleScattering* msc =
new G4eMultipleScattering();
122 G4eIonisation* eIoni =
new G4eIonisation();
123 eIoni->SetEmModel(
new G4LivermoreIonisationModel());
124 eIoni->SetFluctModel(
new G4UniversalFluctuation() );
127 G4eBremsstrahlung* eBrem =
new G4eBremsstrahlung();
128 eBrem->SetEmModel(
new G4LivermoreBremsstrahlungModel());
130 pmanager->AddProcess(msc ,-1, 1,1);
131 pmanager->AddProcess(eIoni ,-1, 2,2);
132 pmanager->AddProcess(eBrem ,-1,-1,3);
134 }
else if (particleName ==
"e+") {
136 G4eMultipleScattering* msc =
new G4eMultipleScattering();
139 G4eIonisation* eIoni =
new G4eIonisation();
140 eIoni->SetEmModel(
new G4LivermoreIonisationModel());
141 eIoni->SetFluctModel(
new G4UniversalFluctuation());
144 G4eBremsstrahlung* eBrem =
new G4eBremsstrahlung();
145 eBrem->SetEmModel(
new G4LivermoreBremsstrahlungModel());
148 G4eplusAnnihilation* eAnni =
new G4eplusAnnihilation();
150 pmanager->AddProcess(msc ,-1, 1,1);
151 pmanager->AddProcess(eIoni ,-1, 2,2);
152 pmanager->AddProcess(eBrem ,-1,-1,3);
153 pmanager->AddProcess(eAnni , 0,-1,4);
192 void ParisLowEnergyEMPhysicsList::SetCuts()