185{
187 G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
188 }
189
191
192
201
202
206
207
208 G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
209
210
212
213
214
215 G4double PenelopeHighEnergyLimit = 1.0*GeV;
216
217
219 for (
const auto& particleName :
fPartList.PartNames()) {
221 if (!particle) { continue; }
222 if (particleName == "gamma") {
223
224
228 thePEPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
229 thePhotoElectricEffect->SetEmModel(thePEPenelopeModel);
230 ph->RegisterProcess(thePhotoElectricEffect, particle);
231
232
236 theComptonPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
237 theComptonScattering->SetEmModel(theComptonPenelopeModel);
238 ph->RegisterProcess(theComptonScattering, particle);
239
240
244 theGammaConversion->SetEmModel(theGCPenelopeModel);
245 ph->RegisterProcess(theGammaConversion, particle);
246
247
251 theRayleighPenelopeModel->SetVerbosityLevel(1);
252 theRayleighPenelopeModel->SetMIActive(
fUseMIFlag);
253
254 theRayleigh->SetEmModel(theRayleighPenelopeModel);
255 ph->RegisterProcess(theRayleigh, particle);
256
257 } else if (particleName == "e-") {
258
259
263 msc1->SetHighEnergyLimit(highEnergyLimit);
264 msc2->SetLowEnergyLimit(highEnergyLimit);
265 msc->SetEmModel(msc1);
266 msc->SetEmModel(msc2);
267
270 ss->SetEmModel(ssm);
271 ss->SetMinKinEnergy(highEnergyLimit);
272 ssm->SetLowEnergyLimit(highEnergyLimit);
273 ssm->SetActivationLowEnergyLimit(highEnergyLimit);
274
275
279 theIoniPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
281 eIoni->SetStepFunction(0.2, 100*um);
282
283
287 theBremPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
288 eBrem->SetEmModel(theBremPenelope);
289
290
291 ph->RegisterProcess(msc, particle);
292 ph->RegisterProcess(eIoni, particle);
293 ph->RegisterProcess(eBrem, particle);
294 ph->RegisterProcess(ss, particle);
295
296 } else if (particleName == "e+") {
297
298
302 msc1->SetHighEnergyLimit(highEnergyLimit);
303 msc2->SetLowEnergyLimit(highEnergyLimit);
304 msc->SetEmModel(msc1);
305 msc->SetEmModel(msc2);
306
309 ss->SetEmModel(ssm);
310 ss->SetMinKinEnergy(highEnergyLimit);
311 ssm->SetLowEnergyLimit(highEnergyLimit);
312 ssm->SetActivationLowEnergyLimit(highEnergyLimit);
313
314
318 theIoniPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
320 eIoni->SetStepFunction(0.2, 100*um);
321
322
326 theBremPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
327 eBrem->SetEmModel(theBremPenelope);
328
329
333 theAnnPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
334 eAnni->AddEmModel(0, theAnnPenelope);
335
336
337 ph->RegisterProcess(msc, particle);
338 ph->RegisterProcess(eIoni, particle);
339 ph->RegisterProcess(eBrem, particle);
340 ph->RegisterProcess(eAnni, particle);
341 ph->RegisterProcess(ss, particle);
342
343 } else if (particleName == "mu+" ||particleName == "mu-") {
344
346 muIoni->SetStepFunction(0.2, 50*um);
347
348 ph->RegisterProcess(mumsc, particle);
349 ph->RegisterProcess(muIoni, particle);
350 ph->RegisterProcess(mub, particle);
351 ph->RegisterProcess(mup, particle);
353
354 } else if (particleName == "alpha" || particleName == "He3") {
355
358 ionIoni->SetStepFunction(0.1, 10*um);
359
360 ph->RegisterProcess(msc, particle);
361 ph->RegisterProcess(ionIoni, particle);
362 ph->RegisterProcess(pnuc, particle);
363
364 } else if (particleName == "GenericIon") {
365
368 ionIoni->SetStepFunction(0.1, 1*um);
369
370 ph->RegisterProcess(hmsc, particle);
371 ph->RegisterProcess(ionIoni, particle);
372 ph->RegisterProcess(pnuc, particle);
373
374 } else if (particleName == "pi+" || particleName == "pi-" ) {
375
378 hIoni->SetStepFunction(0.2, 50*um);
379
380 ph->RegisterProcess(pimsc, particle);
381 ph->RegisterProcess(hIoni, particle);
382 ph->RegisterProcess(pib, particle);
383 ph->RegisterProcess(pip, particle);
384
385 } else if (particleName == "kaon+" || particleName == "kaon-" ) {
386
389 hIoni->SetStepFunction(0.2, 50*um);
390
391 ph->RegisterProcess(kmsc, particle);
392 ph->RegisterProcess(hIoni, particle);
393 ph->RegisterProcess(kb, particle);
394 ph->RegisterProcess(kp, particle);
395
396 } else if (particleName == "proton" || particleName == "anti_proton") {
397
400 hIoni->SetStepFunction(0.2, 50*um);
401
402 ph->RegisterProcess(pmsc, particle);
403 ph->RegisterProcess(hIoni, particle);
404 ph->RegisterProcess(pb, particle);
405 ph->RegisterProcess(pp, particle);
406 ph->RegisterProcess(pnuc, particle);
407
408 } else if (particleName == "B+" ||
409 particleName == "B-" ||
410 particleName == "D+" ||
411 particleName == "D-" ||
412 particleName == "Ds+" ||
413 particleName == "Ds-" ||
414 particleName == "anti_He3" ||
415 particleName == "anti_alpha" ||
416 particleName == "anti_deuteron" ||
417 particleName == "anti_lambda_c+" ||
418 particleName == "anti_omega-" ||
419 particleName == "anti_sigma_c+" ||
420 particleName == "anti_sigma_c++" ||
421 particleName == "anti_sigma+" ||
422 particleName == "anti_sigma-" ||
423 particleName == "anti_triton" ||
424 particleName == "anti_xi_c+" ||
425 particleName == "anti_xi-" ||
426 particleName == "deuteron" ||
427 particleName == "lambda_c+" ||
428 particleName == "omega-" ||
429 particleName == "sigma_c+" ||
430 particleName == "sigma_c++" ||
431 particleName == "sigma+" ||
432 particleName == "sigma-" ||
433 particleName == "tau+" ||
434 particleName == "tau-" ||
435 particleName == "triton" ||
436 particleName == "xi_c+" ||
437 particleName == "xi-" ) {
438
439 ph->RegisterProcess(hmsc, particle);
441 }
442 }
443
444
445 pnuc->SetMaxKinEnergy(MeV);
446
447
449 G4LossTableManager::Instance()->SetAtomDeexcitation(deexcitation);
450
452}
G4EmParticleList fPartList