59 G4double elimit = 1.0*GeV;
61 G4cout <<
"### HadronElasticPhysics Construct Processes with HE limit "
62 << elimit <<
" MeV" << G4endl;
65 G4VHadronElastic* plep0 =
new G4VHadronElastic();
66 G4VHadronElastic* plep1 =
new G4VHadronElastic();
67 plep1->SetMaxEnergy(elimit);
69 G4CHIPSElastic* chipsp =
new G4CHIPSElastic();
70 G4CHIPSElastic* chipsn =
new G4CHIPSElastic();
72 G4ElasticHadrNucleusHE* he =
new G4ElasticHadrNucleusHE();
73 he->SetMinEnergy(elimit);
75 theParticleIterator->reset();
76 while( (*theParticleIterator)() )
78 G4ParticleDefinition* particle = theParticleIterator->value();
79 G4String pname = particle->GetParticleName();
80 if(pname ==
"anti_lambda" ||
81 pname ==
"anti_neutron" ||
82 pname ==
"anti_omega-" ||
83 pname ==
"anti_proton" ||
84 pname ==
"anti_sigma-" ||
85 pname ==
"anti_sigma+" ||
86 pname ==
"anti_xi-" ||
87 pname ==
"anti_xi0" ||
101 pname ==
"deuteron" ||
104 G4ProcessManager* pmanager = particle->GetProcessManager();
105 G4WHadronElasticProcess* hel =
new G4WHadronElasticProcess();
106 if(pname ==
"proton") {
107 hel->AddDataSet(
new G4BGGNucleonElasticXS(particle));
108 hel->RegisterMe(chipsp);
109 }
else if (pname ==
"pi+" || pname ==
"pi-") {
110 hel->AddDataSet(
new G4BGGPionElasticXS(particle));
111 hel->RegisterMe(plep1);
114 hel->RegisterMe(plep0);
116 pmanager->AddDiscreteProcess(hel);
118 G4cout <<
"### HadronElasticPhysicsXS: " << hel->GetProcessName()
119 <<
" added for " << particle->GetParticleName() << G4endl;
123 }
else if(pname ==
"neutron") {
125 G4ProcessManager* pmanager = particle->GetProcessManager();
126 G4WHadronElasticProcess* hel =
new G4WHadronElasticProcess();
127 hel->AddDataSet(
new G4NeutronElasticXS());
128 hel->RegisterMe(chipsn);
130 pmanager->AddDiscreteProcess(hel);
133 G4cout <<
"### HadronElasticPhysicsXS: " << hel->GetProcessName()
134 <<
" added for " << particle->GetParticleName() << G4endl;