31 #include "G4ParticleDefinition.hh" 32 #include "G4ProcessManager.hh" 34 #include "G4ComptonScattering.hh" 35 #include "G4GammaConversion.hh" 36 #include "G4PhotoElectricEffect.hh" 38 #include "G4eMultipleScattering.hh" 39 #include "G4MuMultipleScattering.hh" 40 #include "G4hMultipleScattering.hh" 42 #include "G4eIonisation.hh" 43 #include "G4eBremsstrahlung.hh" 44 #include "G4eplusAnnihilation.hh" 46 #include "G4MuIonisation.hh" 47 #include "G4MuBremsstrahlung.hh" 48 #include "G4MuPairProduction.hh" 50 #include "G4hIonisation.hh" 51 #include "G4ionIonisation.hh" 53 #ifdef theParticleIterator 54 #undef theParticleIterator 60 : G4VPhysicsConstructor(name)
72 G4ParticleTable::G4PTblDicIterator*
73 theParticleIterator = theParticleTable-> GetIterator();
77 theParticleIterator->reset();
78 while( (*theParticleIterator)() ){
79 G4ParticleDefinition* particle = theParticleIterator->value();
80 G4ProcessManager* pmanager = particle->GetProcessManager();
81 G4String particleName = particle->GetParticleName();
83 if (particleName ==
"gamma") {
85 pmanager->AddDiscreteProcess(
new G4PhotoElectricEffect);
86 pmanager->AddDiscreteProcess(
new G4ComptonScattering);
87 pmanager->AddDiscreteProcess(
new G4GammaConversion);
89 }
else if (particleName ==
"e-") {
91 pmanager->AddProcess(
new G4eMultipleScattering, -1, 1,1);
92 pmanager->AddProcess(
new G4eIonisation, -1, 2,2);
93 pmanager->AddProcess(
new G4eBremsstrahlung, -1, 3,3);
95 }
else if (particleName ==
"e+") {
97 pmanager->AddProcess(
new G4eMultipleScattering, -1, 1,1);
98 pmanager->AddProcess(
new G4eIonisation, -1, 2,2);
99 pmanager->AddProcess(
new G4eBremsstrahlung, -1, 3,3);
100 pmanager->AddProcess(
new G4eplusAnnihilation, 0,-1,4);
102 }
else if( particleName ==
"mu+" ||
103 particleName ==
"mu-" ) {
105 pmanager->AddProcess(
new G4MuMultipleScattering,-1, 1,1);
106 pmanager->AddProcess(
new G4MuIonisation, -1, 2,2);
107 pmanager->AddProcess(
new G4MuBremsstrahlung, -1, 3,3);
108 pmanager->AddProcess(
new G4MuPairProduction, -1, 4,4);
110 }
else if( particleName ==
"alpha" || particleName ==
"GenericIon" ) {
111 pmanager->AddProcess(
new G4hMultipleScattering,-1, 1,1);
112 pmanager->AddProcess(
new G4ionIonisation, -1, 2,2);
114 }
else if ((!particle->IsShortLived()) &&
115 (particle->GetPDGCharge() != 0.0) &&
116 (particle->GetParticleName() !=
"chargedgeantino")) {
118 pmanager->AddProcess(
new G4hMultipleScattering,-1,1,1);
119 pmanager->AddProcess(
new G4hIonisation, -1,2,2);
PhysListEmStandard(const G4String &name="standard")