187 G4cout <<
"### " << GetPhysicsName() <<
" Construct Processes " << G4endl;
208 G4double highEnergyLimit = G4EmParameters::Instance()->MscEnergyLimit();
215 G4double PenelopeHighEnergyLimit = 1.0*GeV;
219 for (
const auto& particleName :
fPartList.PartNames()) {
221 if (!particle) {
continue; }
222 if (particleName ==
"gamma") {
228 thePEPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
229 thePhotoElectricEffect->SetEmModel(thePEPenelopeModel);
230 ph->RegisterProcess(thePhotoElectricEffect, particle);
236 theComptonPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
237 theComptonScattering->SetEmModel(theComptonPenelopeModel);
238 ph->RegisterProcess(theComptonScattering, particle);
244 theGammaConversion->SetEmModel(theGCPenelopeModel);
245 ph->RegisterProcess(theGammaConversion, particle);
251 theRayleighPenelopeModel->SetVerbosityLevel(1);
252 theRayleighPenelopeModel->SetMIActive(
fUseMIFlag);
254 theRayleigh->SetEmModel(theRayleighPenelopeModel);
255 ph->RegisterProcess(theRayleigh, particle);
257 }
else if (particleName ==
"e-") {
263 msc1->SetHighEnergyLimit(highEnergyLimit);
264 msc2->SetLowEnergyLimit(highEnergyLimit);
265 msc->SetEmModel(msc1);
266 msc->SetEmModel(msc2);
271 ss->SetMinKinEnergy(highEnergyLimit);
272 ssm->SetLowEnergyLimit(highEnergyLimit);
273 ssm->SetActivationLowEnergyLimit(highEnergyLimit);
279 theIoniPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
281 eIoni->SetStepFunction(0.2, 100*um);
287 theBremPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
288 eBrem->SetEmModel(theBremPenelope);
291 ph->RegisterProcess(msc, particle);
292 ph->RegisterProcess(eIoni, particle);
293 ph->RegisterProcess(eBrem, particle);
294 ph->RegisterProcess(ss, particle);
296 }
else if (particleName ==
"e+") {
302 msc1->SetHighEnergyLimit(highEnergyLimit);
303 msc2->SetLowEnergyLimit(highEnergyLimit);
304 msc->SetEmModel(msc1);
305 msc->SetEmModel(msc2);
310 ss->SetMinKinEnergy(highEnergyLimit);
311 ssm->SetLowEnergyLimit(highEnergyLimit);
312 ssm->SetActivationLowEnergyLimit(highEnergyLimit);
318 theIoniPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
320 eIoni->SetStepFunction(0.2, 100*um);
326 theBremPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
327 eBrem->SetEmModel(theBremPenelope);
333 theAnnPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
334 eAnni->AddEmModel(0, theAnnPenelope);
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);
343 }
else if (particleName ==
"mu+" ||particleName ==
"mu-") {
346 muIoni->SetStepFunction(0.2, 50*um);
348 ph->RegisterProcess(mumsc, particle);
349 ph->RegisterProcess(muIoni, particle);
350 ph->RegisterProcess(mub, particle);
351 ph->RegisterProcess(mup, particle);
354 }
else if (particleName ==
"alpha" || particleName ==
"He3") {
358 ionIoni->SetStepFunction(0.1, 10*um);
360 ph->RegisterProcess(msc, particle);
361 ph->RegisterProcess(ionIoni, particle);
362 ph->RegisterProcess(pnuc, particle);
364 }
else if (particleName ==
"GenericIon") {
368 ionIoni->SetStepFunction(0.1, 1*um);
370 ph->RegisterProcess(hmsc, particle);
371 ph->RegisterProcess(ionIoni, particle);
372 ph->RegisterProcess(pnuc, particle);
374 }
else if (particleName ==
"pi+" || particleName ==
"pi-" ) {
378 hIoni->SetStepFunction(0.2, 50*um);
380 ph->RegisterProcess(pimsc, particle);
381 ph->RegisterProcess(hIoni, particle);
382 ph->RegisterProcess(pib, particle);
383 ph->RegisterProcess(pip, particle);
385 }
else if (particleName ==
"kaon+" || particleName ==
"kaon-" ) {
389 hIoni->SetStepFunction(0.2, 50*um);
391 ph->RegisterProcess(kmsc, particle);
392 ph->RegisterProcess(hIoni, particle);
393 ph->RegisterProcess(kb, particle);
394 ph->RegisterProcess(kp, particle);
396 }
else if (particleName ==
"proton" || particleName ==
"anti_proton") {
400 hIoni->SetStepFunction(0.2, 50*um);
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);
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-" ) {
439 ph->RegisterProcess(hmsc, particle);
445 pnuc->SetMaxKinEnergy(MeV);
449 G4LossTableManager::Instance()->SetAtomDeexcitation(deexcitation);