32 #include "G4Version.hh"
37 #if G4VERSION_NUMBER < 1000
43 #include "G4LossTableManager.hh"
44 #include "G4ProcessManager.hh"
45 #include "G4ProcessVector.hh"
46 #include "G4PhysicsListHelper.hh"
49 #include "G4ParticleDefinition.hh"
50 #include "G4ParticleWithCuts.hh"
51 #include "G4ParticleTypes.hh"
52 #include "G4ParticleTable.hh"
53 #include "G4BosonConstructor.hh"
54 #include "G4LeptonConstructor.hh"
55 #include "G4MesonConstructor.hh"
56 #include "G4BosonConstructor.hh"
57 #include "G4BaryonConstructor.hh"
58 #include "G4IonConstructor.hh"
59 #include "G4ShortLivedConstructor.hh"
60 #include "G4Neutron.hh"
63 #include "G4PhotoElectricEffect.hh"
64 #include "G4LivermorePhotoElectricModel.hh"
65 #include "G4ComptonScattering.hh"
66 #include "G4LivermoreComptonModel.hh"
67 #include "G4GammaConversion.hh"
68 #include "G4LivermoreGammaConversionModel.hh"
69 #include "G4RayleighScattering.hh"
70 #include "G4LivermoreRayleighModel.hh"
73 #include "G4eMultipleScattering.hh"
74 #include "G4UniversalFluctuation.hh"
75 #include "G4eIonisation.hh"
76 #include "G4LivermoreIonisationModel.hh"
77 #include "G4eBremsstrahlung.hh"
78 #include "G4LivermoreBremsstrahlungModel.hh"
79 #include "G4eIonisation.hh"
80 #include "G4eBremsstrahlung.hh"
81 #include "G4eplusAnnihilation.hh"
82 #include "G4KleinNishinaModel.hh"
83 #include "G4eMultipleScattering.hh"
84 #include "G4MuMultipleScattering.hh"
85 #include "G4MuIonisation.hh"
86 #include "G4MuBremsstrahlung.hh"
87 #include "G4MuPairProduction.hh"
88 #include "G4hMultipleScattering.hh"
89 #include "G4hIonisation.hh"
90 #include "G4hBremsstrahlung.hh"
91 #include "G4hPairProduction.hh"
92 #include "G4ionIonisation.hh"
93 #include "G4IonParametrisedLossModel.hh"
94 #include "G4NuclearStopping.hh"
95 #include "G4SystemOfUnits.hh"
96 #include "G4HadronElasticPhysics.hh"
97 #include "G4HadronicProcess.hh"
98 #include "G4HadronElastic.hh"
99 #include "G4HadronElasticProcess.hh"
102 #include "G4TripathiCrossSection.hh"
103 #include "G4IonsShenCrossSection.hh"
104 #include "G4ProtonInelasticCrossSection.hh"
105 #include "G4NeutronInelasticCrossSection.hh"
108 #include "G4RadioactiveDecay.hh"
109 #include "G4GenericIon.hh"
111 #include "G4UrbanMscModel96.hh"
115 #include "G4HadronElasticPhysicsHP.hh"
116 #include "HadronPhysicsFTFP_BERT_HP.hh"
119 #include "G4NeutronHPThermalScatteringData.hh"
120 #include "G4NeutronHPThermalScattering.hh"
122 #include "G4HadronFissionProcess.hh"
123 #include "G4NeutronHPFissionData.hh"
124 #include "G4NeutronHPFission.hh"
126 #include "G4NeutronHPElastic.hh"
127 #include "G4NeutronHPElasticData.hh"
129 #include "G4HadronCaptureProcess.hh"
130 #include "G4NeutronHPCapture.hh"
131 #include "G4NeutronHPCaptureData.hh"
133 #include "G4NeutronInelasticProcess.hh"
134 #include "G4NeutronHPInelastic.hh"
135 #include "G4NeutronHPInelasticData.hh"
179 G4LossTableManager::Instance();
182 G4cout << G4endl <<
" ------ INFO ------ You are working with an hadronic PhysicsList (transportation, electromagnetic and hadronic processes)" << G4endl;
189 G4LeptonConstructor lepton;
190 lepton.ConstructParticle();
192 G4BosonConstructor boson;
193 boson.ConstructParticle();
195 G4MesonConstructor meson;
196 meson.ConstructParticle();
198 G4BaryonConstructor baryon;
199 baryon.ConstructParticle();
201 G4ShortLivedConstructor shortLived;
202 shortLived.ConstructParticle();
204 G4IonConstructor ion;
205 ion.ConstructParticle();
208 G4cout <<
" ------ INFO ------ PARTICLES DEFINITION FINISHED" << G4endl;
215 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
218 theParticleIterator->reset();
220 while( (*theParticleIterator)() ){
221 G4ParticleDefinition* particle = theParticleIterator->value();
222 G4ProcessManager* pmanager = particle->GetProcessManager();
223 G4String particleName = particle->GetParticleName();
230 if (particleName ==
"gamma") {
233 ph->RegisterProcess(
new G4PhotoElectricEffect, particle);
236 G4ComptonScattering* cs =
new G4ComptonScattering;
237 cs->SetEmModel(
new G4KleinNishinaModel());
238 ph->RegisterProcess(cs, particle);
241 ph->RegisterProcess(
new G4GammaConversion, particle);
246 else if (particleName ==
"e-") {
249 G4eMultipleScattering* msc =
new G4eMultipleScattering();
250 msc -> AddEmModel(0,
new G4UrbanMscModel96());
251 ph->RegisterProcess(msc, particle);
254 G4eIonisation* eIoni =
new G4eIonisation();
255 eIoni->SetStepFunction(0.1, 100*um);
256 ph->RegisterProcess(eIoni, particle);
259 ph->RegisterProcess(
new G4eBremsstrahlung(), particle);
264 else if (particleName ==
"e+") {
267 G4eMultipleScattering* msc =
new G4eMultipleScattering();
268 msc -> AddEmModel(0,
new G4UrbanMscModel96());
269 ph->RegisterProcess(msc, particle);
272 G4eIonisation* eIoni =
new G4eIonisation();
273 eIoni->SetStepFunction(0.1, 100*um);
274 ph->RegisterProcess(eIoni, particle);
277 ph->RegisterProcess(
new G4eBremsstrahlung(), particle);
280 ph->RegisterProcess(
new G4eplusAnnihilation(), particle);
285 else if (particleName ==
"mu+" || particleName ==
"mu-") {
288 ph->RegisterProcess(
new G4MuMultipleScattering(), particle);
291 G4MuIonisation* muIoni =
new G4MuIonisation();
292 muIoni->SetStepFunction(0.1, 50*um);
293 ph->RegisterProcess(muIoni, particle);
296 ph->RegisterProcess(
new G4MuBremsstrahlung(), particle);
299 ph->RegisterProcess(
new G4MuPairProduction(), particle);
304 else if( particleName ==
"proton" ||
305 particleName ==
"pi-" ||
306 particleName ==
"pi+") {
309 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
312 G4hIonisation* hIoni =
new G4hIonisation();
313 hIoni->SetStepFunction(0.1, 20*um);
314 ph->RegisterProcess(hIoni, particle);
317 ph->RegisterProcess(
new G4hBremsstrahlung(), particle);
320 ph->RegisterProcess(
new G4hPairProduction(), particle);
325 else if( particleName ==
"alpha" ||
326 particleName ==
"He3") {
329 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
332 G4ionIonisation* ionIoni =
new G4ionIonisation();
333 ionIoni->SetStepFunction(0.1, 1*um);
334 ph->RegisterProcess(ionIoni, particle);
337 ph->RegisterProcess(
new G4NuclearStopping(), particle);
342 else if( particleName ==
"GenericIon" ) {
345 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
348 G4ionIonisation* ionIoni =
new G4ionIonisation();
349 ionIoni->SetEmModel(
new G4IonParametrisedLossModel());
350 ionIoni->SetStepFunction(0.1, 1*um);
351 ph->RegisterProcess(ionIoni, particle);
354 ph->RegisterProcess(
new G4NuclearStopping(), particle);
359 else if ((!particle->IsShortLived()) &&
360 (particle->GetPDGCharge() != 0.0) &&
361 (particle->GetParticleName() !=
"chargedgeantino")) {
364 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
367 ph->RegisterProcess(
new G4hIonisation(), particle);
380 G4HadronElasticPhysicsHP* hadronicElastic =
new G4HadronElasticPhysicsHP();
381 hadronicElastic->ConstructProcess();
384 HadronPhysicsFTFP_BERT_HP* hadronicPhysics =
new HadronPhysicsFTFP_BERT_HP();
385 hadronicPhysics->ConstructProcess();
417 #include "G4LossTableManager.hh"
418 #include "G4ProcessManager.hh"
419 #include "G4ProcessVector.hh"
420 #include "G4PhysicsListHelper.hh"
423 #include "G4ParticleDefinition.hh"
424 #include "G4ParticleWithCuts.hh"
425 #include "G4ParticleTypes.hh"
426 #include "G4ParticleTable.hh"
427 #include "G4BosonConstructor.hh"
428 #include "G4LeptonConstructor.hh"
429 #include "G4MesonConstructor.hh"
430 #include "G4BosonConstructor.hh"
431 #include "G4BaryonConstructor.hh"
432 #include "G4IonConstructor.hh"
433 #include "G4ShortLivedConstructor.hh"
434 #include "G4Neutron.hh"
437 #include "G4PhotoElectricEffect.hh"
438 #include "G4LivermorePhotoElectricModel.hh"
439 #include "G4ComptonScattering.hh"
440 #include "G4LivermoreComptonModel.hh"
441 #include "G4GammaConversion.hh"
442 #include "G4LivermoreGammaConversionModel.hh"
443 #include "G4RayleighScattering.hh"
444 #include "G4LivermoreRayleighModel.hh"
447 #include "G4eMultipleScattering.hh"
448 #include "G4UniversalFluctuation.hh"
449 #include "G4eIonisation.hh"
450 #include "G4LivermoreIonisationModel.hh"
451 #include "G4eBremsstrahlung.hh"
452 #include "G4LivermoreBremsstrahlungModel.hh"
453 #include "G4eIonisation.hh"
454 #include "G4eBremsstrahlung.hh"
455 #include "G4eplusAnnihilation.hh"
456 #include "G4KleinNishinaModel.hh"
457 #include "G4eMultipleScattering.hh"
458 #include "G4MuMultipleScattering.hh"
459 #include "G4MuIonisation.hh"
460 #include "G4MuBremsstrahlung.hh"
461 #include "G4MuPairProduction.hh"
462 #include "G4hMultipleScattering.hh"
463 #include "G4hIonisation.hh"
464 #include "G4hBremsstrahlung.hh"
465 #include "G4hPairProduction.hh"
466 #include "G4ionIonisation.hh"
467 #include "G4IonParametrisedLossModel.hh"
468 #include "G4NuclearStopping.hh"
469 #include "G4SystemOfUnits.hh"
470 #include "G4HadronElasticPhysics.hh"
471 #include "G4HadronicProcess.hh"
472 #include "G4HadronElastic.hh"
473 #include "G4HadronElasticProcess.hh"
476 #include "G4TripathiCrossSection.hh"
477 #include "G4IonsShenCrossSection.hh"
478 #include "G4ProtonInelasticCrossSection.hh"
479 #include "G4NeutronInelasticCrossSection.hh"
482 #include "G4RadioactiveDecay.hh"
483 #include "G4GenericIon.hh"
485 #include "G4UrbanMscModel.hh"
486 #include "G4HadronElasticPhysicsHP.hh"
487 #include "QGSP_BERT_HP.hh"
490 #include "G4NeutronHPThermalScatteringData.hh"
491 #include "G4NeutronHPThermalScattering.hh"
493 #include "G4HadronFissionProcess.hh"
494 #include "G4NeutronHPFissionData.hh"
495 #include "G4NeutronHPFission.hh"
497 #include "G4NeutronHPElastic.hh"
498 #include "G4NeutronHPElasticData.hh"
500 #include "G4HadronCaptureProcess.hh"
501 #include "G4NeutronHPCapture.hh"
502 #include "G4NeutronHPCaptureData.hh"
504 #include "G4NeutronInelasticProcess.hh"
505 #include "G4NeutronHPInelastic.hh"
506 #include "G4NeutronHPInelasticData.hh"
509 #include "G4NeutronHPThermalScatteringData.hh"
510 #include "G4NeutronHPThermalScattering.hh"
512 #include "G4HadronFissionProcess.hh"
513 #include "G4NeutronHPFissionData.hh"
514 #include "G4NeutronHPFission.hh"
516 #include "G4NeutronHPElastic.hh"
517 #include "G4NeutronHPElasticData.hh"
519 #include "G4HadronCaptureProcess.hh"
520 #include "G4NeutronHPCapture.hh"
521 #include "G4NeutronHPCaptureData.hh"
523 #include "G4NeutronInelasticProcess.hh"
524 #include "G4NeutronHPInelastic.hh"
525 #include "G4NeutronHPInelasticData.hh"
535 G4LossTableManager::Instance();
538 G4cout << G4endl <<
" ------ INFO ------ You are working with an hadronic PhysicsList (transportation, electromagnetic and hadronic processes)" << G4endl;
545 G4LeptonConstructor lepton;
546 lepton.ConstructParticle();
548 G4BosonConstructor boson;
549 boson.ConstructParticle();
551 G4MesonConstructor meson;
552 meson.ConstructParticle();
554 G4BaryonConstructor baryon;
555 baryon.ConstructParticle();
557 G4ShortLivedConstructor shortLived;
558 shortLived.ConstructParticle();
560 G4IonConstructor ion;
561 ion.ConstructParticle();
564 G4cout <<
" ------ INFO ------ PARTICLES DEFINITION FINISHED" << G4endl;
571 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
573 theParticleTable->GetIterator()->reset();
576 while( (*theParticleTable->GetIterator())() ){
577 G4ParticleDefinition* particle = theParticleTable->GetIterator()->value();
578 G4ProcessManager* pmanager = particle->GetProcessManager();
579 G4String particleName = particle->GetParticleName();
593 if (particleName ==
"gamma") {
596 ph->RegisterProcess(
new G4PhotoElectricEffect, particle);
599 G4ComptonScattering* cs =
new G4ComptonScattering;
600 cs->SetEmModel(
new G4KleinNishinaModel());
601 ph->RegisterProcess(cs, particle);
604 ph->RegisterProcess(
new G4GammaConversion, particle);
610 else if (particleName ==
"e-") {
613 G4eMultipleScattering* msc =
new G4eMultipleScattering();
614 msc -> AddEmModel(0,
new G4UrbanMscModel());
615 ph->RegisterProcess(msc, particle);
618 G4eIonisation* eIoni =
new G4eIonisation();
619 eIoni->SetStepFunction(0.1, 100*CLHEP::um);
620 ph->RegisterProcess(eIoni, particle);
623 ph->RegisterProcess(
new G4eBremsstrahlung(), particle);
628 else if (particleName ==
"e+") {
631 G4eMultipleScattering* msc =
new G4eMultipleScattering();
632 msc -> AddEmModel(0,
new G4UrbanMscModel());
633 ph->RegisterProcess(msc, particle);
636 G4eIonisation* eIoni =
new G4eIonisation();
637 eIoni->SetStepFunction(0.1, 100*CLHEP::um);
638 ph->RegisterProcess(eIoni, particle);
641 ph->RegisterProcess(
new G4eBremsstrahlung(), particle);
644 ph->RegisterProcess(
new G4eplusAnnihilation(), particle);
650 else if (particleName ==
"mu+" || particleName ==
"mu-") {
653 ph->RegisterProcess(
new G4MuMultipleScattering(), particle);
656 G4MuIonisation* muIoni =
new G4MuIonisation();
657 muIoni->SetStepFunction(0.1, 50*CLHEP::um);
658 ph->RegisterProcess(muIoni, particle);
661 ph->RegisterProcess(
new G4MuBremsstrahlung(), particle);
664 ph->RegisterProcess(
new G4MuPairProduction(), particle);
670 else if( particleName ==
"proton" ||
671 particleName ==
"pi-" ||
672 particleName ==
"pi+") {
675 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
678 G4hIonisation* hIoni =
new G4hIonisation();
679 hIoni->SetStepFunction(0.1, 20*CLHEP::um);
680 ph->RegisterProcess(hIoni, particle);
683 ph->RegisterProcess(
new G4hBremsstrahlung(), particle);
686 ph->RegisterProcess(
new G4hPairProduction(), particle);
691 else if( particleName ==
"alpha" ||
692 particleName ==
"He3") {
695 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
698 G4ionIonisation* ionIoni =
new G4ionIonisation();
699 ionIoni->SetStepFunction(0.1, 1*CLHEP::um);
700 ph->RegisterProcess(ionIoni, particle);
703 ph->RegisterProcess(
new G4NuclearStopping(), particle);
708 else if( particleName ==
"GenericIon" ) {
711 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
714 G4ionIonisation* ionIoni =
new G4ionIonisation();
715 ionIoni->SetEmModel(
new G4IonParametrisedLossModel());
716 ionIoni->SetStepFunction(0.1, 1*CLHEP::um);
717 ph->RegisterProcess(ionIoni, particle);
720 ph->RegisterProcess(
new G4NuclearStopping(), particle);
725 else if ((!particle->IsShortLived()) &&
726 (particle->GetPDGCharge() != 0.0) &&
727 (particle->GetParticleName() !=
"chargedgeantino")) {
730 ph->RegisterProcess(
new G4hMultipleScattering(), particle);
733 ph->RegisterProcess(
new G4hIonisation(), particle);
746 G4HadronElasticPhysicsHP* hadronicElastic =
new G4HadronElasticPhysicsHP();
747 hadronicElastic->ConstructProcess();
750 QGSP_BERT_HP* hadronicPhysics =
new QGSP_BERT_HP();
751 hadronicPhysics->ConstructProcess();
void ConstructProcess()
these methods Construct processes
void ConstructParticle()
these methods Construct particles
virtual ~HadronPhysicsList()
HadronPhysicsList(const G4String &name="SToGSHadron")