28 #include "ParisPenelopeEMPhysicsList.hh"
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"
37 #include "G4Material.hh"
41 #include "G4PhotoElectricEffect.hh"
42 #include "G4PenelopePhotoElectricModel.hh"
44 #include "G4ComptonScattering.hh"
45 #include "G4PenelopeComptonModel.hh"
47 #include "G4GammaConversion.hh"
48 #include "G4PenelopeGammaConversionModel.hh"
50 #include "G4RayleighScattering.hh"
51 #include "G4PenelopeRayleighModel.hh"
54 #include "G4eMultipleScattering.hh"
55 #include "G4UniversalFluctuation.hh"
57 #include "G4eIonisation.hh"
58 #include "G4PenelopeIonisationModel.hh"
60 #include "G4eBremsstrahlung.hh"
61 #include "G4PenelopeBremsstrahlungModel.hh"
64 #include "G4eplusAnnihilation.hh"
65 #include "G4PenelopeAnnihilationModel.hh"
69 ParisPenelopeEMPhysicsList::ParisPenelopeEMPhysicsList(
const G4String& name): G4VPhysicsConstructor(name)
80 G4Gamma::GammaDefinition();
83 G4Electron::ElectronDefinition();
84 G4Positron::PositronDefinition();
87 G4Geantino::GeantinoDefinition();
92 theParticleIterator->reset();
94 while( (*theParticleIterator)() ){
95 G4ParticleDefinition* particle = theParticleIterator->value();
96 G4ProcessManager* pmanager = particle->GetProcessManager();
97 G4String particleName = particle->GetParticleName();
99 if (particleName ==
"gamma") {
101 G4PhotoElectricEffect* thePhotoElectricEffect =
new G4PhotoElectricEffect();
102 thePhotoElectricEffect->SetModel(
new G4PenelopePhotoElectricModel());
104 G4ComptonScattering* theComptonScattering =
new G4ComptonScattering();
105 theComptonScattering->SetModel(
new G4PenelopeComptonModel());
107 G4GammaConversion* theGammaConversion =
new G4GammaConversion();
108 theGammaConversion->SetModel(
new G4PenelopeGammaConversionModel());
110 G4RayleighScattering* theRayleigh =
new G4RayleighScattering();
111 theRayleigh->SetModel(
new G4PenelopeRayleighModel());
113 pmanager->AddDiscreteProcess(thePhotoElectricEffect);
114 pmanager->AddDiscreteProcess(theComptonScattering);
115 pmanager->AddDiscreteProcess(theGammaConversion);
116 pmanager->AddDiscreteProcess(theRayleigh);
118 }
else if (particleName ==
"e-") {
120 G4eMultipleScattering* msc =
new G4eMultipleScattering();
123 G4eIonisation* eIoni =
new G4eIonisation();
124 eIoni->SetEmModel(
new G4PenelopeIonisationModel());
125 eIoni->SetFluctModel(
new G4UniversalFluctuation() );
128 G4eBremsstrahlung* eBrem =
new G4eBremsstrahlung();
129 eBrem->SetEmModel(
new G4PenelopeBremsstrahlungModel());
131 pmanager->AddProcess(msc ,-1, 1,1);
132 pmanager->AddProcess(eIoni ,-1, 2,2);
133 pmanager->AddProcess(eBrem ,-1,-1,3);
135 }
else if (particleName ==
"e+") {
137 G4eMultipleScattering* msc =
new G4eMultipleScattering();
140 G4eIonisation* eIoni =
new G4eIonisation();
141 eIoni->SetEmModel(
new G4PenelopeIonisationModel());
142 eIoni->SetFluctModel(
new G4UniversalFluctuation());
145 G4eBremsstrahlung* eBrem =
new G4eBremsstrahlung();
146 eBrem->SetEmModel(
new G4PenelopeBremsstrahlungModel());
149 G4eplusAnnihilation* eAnni =
new G4eplusAnnihilation();
150 eAnni->AddEmModel(0,
new G4PenelopeAnnihilationModel());
152 pmanager->AddProcess(msc ,-1, 1,1);
153 pmanager->AddProcess(eIoni ,-1, 2,2);
154 pmanager->AddProcess(eBrem ,-1,-1,3);
155 pmanager->AddProcess(eAnni , 0,-1,4);
virtual ~ParisPenelopeEMPhysicsList()
void ConstructParticle()
these methods Construct particles