00165 {
00166 theParticleIterator->reset();
00167 while( (*theParticleIterator)() ){
00168 G4ParticleDefinition* particle = theParticleIterator->value();
00169 G4ProcessManager* pmanager = particle->GetProcessManager();
00170 G4String particleName = particle->GetParticleName();
00171
00172 if (particleName == "gamma") {
00173
00174 pmanager->AddDiscreteProcess(new G4GammaConversion());
00175 pmanager->AddDiscreteProcess(new G4ComptonScattering());
00176 pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
00177
00178 } else if (particleName == "e-") {
00179
00180 G4VProcess* theeminusMultipleScattering = new G4MultipleScattering();
00181 G4VProcess* theeminusIonisation = new G4eIonisation();
00182 G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
00183
00184
00185 pmanager->AddProcess(theeminusMultipleScattering);
00186 pmanager->AddProcess(theeminusIonisation);
00187 pmanager->AddProcess(theeminusBremsstrahlung);
00188
00189
00190 pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1);
00191 pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep,2);
00192
00193
00194 pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1);
00195 pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep,2);
00196 pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep,3);
00197
00198 } else if (particleName == "e+") {
00199
00200 G4VProcess* theeplusMultipleScattering = new G4MultipleScattering();
00201 G4VProcess* theeplusIonisation = new G4eIonisation();
00202 G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
00203 G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
00204
00205
00206 pmanager->AddProcess(theeplusMultipleScattering);
00207 pmanager->AddProcess(theeplusIonisation);
00208 pmanager->AddProcess(theeplusBremsstrahlung);
00209 pmanager->AddProcess(theeplusAnnihilation);
00210
00211
00212 pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
00213
00214
00215 pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1);
00216 pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2);
00217
00218
00219 pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1);
00220 pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep,2);
00221 pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep,3);
00222 pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep,4);
00223
00224 } else if( particleName == "mu+" ||
00225 particleName == "mu-" ) {
00226
00227 G4VProcess* aMultipleScattering = new G4MultipleScattering();
00228 G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
00229 G4VProcess* aPairProduction = new G4MuPairProduction();
00230 G4VProcess* anIonisation = new G4MuIonisation();
00231
00232
00233 pmanager->AddProcess(anIonisation);
00234 pmanager->AddProcess(aMultipleScattering);
00235 pmanager->AddProcess(aBremsstrahlung);
00236 pmanager->AddProcess(aPairProduction);
00237
00238
00239 pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
00240 pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
00241
00242
00243 pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
00244 pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
00245 pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep,3);
00246 pmanager->SetProcessOrdering(aPairProduction, idxPostStep,4);
00247
00248 } else if ((!particle->IsShortLived()) &&
00249 (particle->GetPDGCharge() != 0.0) &&
00250 (particle->GetParticleName() != "chargedgeantino")) {
00251
00252 G4VProcess* aMultipleScattering = new G4MultipleScattering();
00253 G4VProcess* anIonisation = new G4hIonisation();
00255
00256
00257
00258 pmanager->AddProcess(anIonisation);
00259 pmanager->AddProcess(aMultipleScattering);
00261
00262
00263
00264 pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
00265 pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
00266
00267
00268
00269 pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
00270 pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
00272 }
00273 }
00274 }