32 #include "G4ParticleDefinition.hh" 33 #include "G4ProcessManager.hh" 35 #include "G4ComptonScattering.hh" 36 #include "G4GammaConversion.hh" 37 #include "G4PhotoElectricEffect.hh" 39 #include "G4eMultipleScattering.hh" 40 #include "G4MuMultipleScattering.hh" 41 #include "G4hMultipleScattering.hh" 43 #include "G4eIonisation.hh" 44 #include "G4eBremsstrahlung.hh" 45 #include "G4eplusAnnihilation.hh" 47 #include "G4MuIonisation.hh" 48 #include "G4MuBremsstrahlung.hh" 49 #include "G4MuPairProduction.hh" 51 #include "G4hIonisation.hh" 52 #include "G4ionIonisation.hh" 54 #ifdef theParticleIterator 55 #undef theParticleIterator 61 : G4VPhysicsConstructor(name)
73 G4ParticleTable::G4PTblDicIterator*
74 theParticleIterator = theParticleTable-> GetIterator();
78 theParticleIterator->reset();
79 while( (*theParticleIterator)() ){
80 G4ParticleDefinition* particle = theParticleIterator->value();
81 G4ProcessManager* pmanager = particle->GetProcessManager();
82 G4String particleName = particle->GetParticleName();
84 if (particleName ==
"gamma") {
86 pmanager->AddDiscreteProcess(
new G4PhotoElectricEffect);
87 pmanager->AddDiscreteProcess(
new G4ComptonScattering);
88 pmanager->AddDiscreteProcess(
new G4GammaConversion);
90 }
else if (particleName ==
"e-") {
92 pmanager->AddProcess(
new G4eMultipleScattering, -1, 1,1);
93 pmanager->AddProcess(
new G4eIonisation, -1, 2,2);
94 pmanager->AddProcess(
new G4eBremsstrahlung, -1, 3,3);
96 }
else if (particleName ==
"e+") {
98 pmanager->AddProcess(
new G4eMultipleScattering, -1, 1,1);
99 pmanager->AddProcess(
new G4eIonisation, -1, 2,2);
100 pmanager->AddProcess(
new G4eBremsstrahlung, -1, 3,3);
101 pmanager->AddProcess(
new G4eplusAnnihilation, 0,-1,4);
103 }
else if( particleName ==
"mu+" ||
104 particleName ==
"mu-" ) {
106 pmanager->AddProcess(
new G4MuMultipleScattering,-1, 1,1);
107 pmanager->AddProcess(
new G4MuIonisation, -1, 2,2);
108 pmanager->AddProcess(
new G4MuBremsstrahlung, -1, 3,3);
109 pmanager->AddProcess(
new G4MuPairProduction, -1, 4,4);
111 }
else if( particleName ==
"alpha" || particleName ==
"GenericIon" ) {
112 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1,1);
113 pmanager->AddProcess(
new G4ionIonisation, -1, 2,2);
115 }
else if ((!particle->IsShortLived()) &&
116 (particle->GetPDGCharge() != 0.0) &&
117 (particle->GetParticleName() !=
"chargedgeantino")) {
119 pmanager->AddProcess(
new G4hMultipleScattering,-1,1,1);
120 pmanager->AddProcess(
new G4hIonisation, -1,2,2);
PhysListEmStandard(const G4String &name="standard")