#include <G4HadronDElasticPhysics.hh>
Inheritance diagram for G4HadronDElasticPhysics:
Public Member Functions | |
G4HadronDElasticPhysics (G4int ver=1) | |
virtual | ~G4HadronDElasticPhysics () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
Definition at line 45 of file G4HadronDElasticPhysics.hh.
G4HadronDElasticPhysics::G4HadronDElasticPhysics | ( | G4int | ver = 1 |
) |
Definition at line 89 of file G4HadronDElasticPhysics.cc.
References G4cout, G4endl, and G4VPhysicsConstructor::GetPhysicsName().
00090 : G4VPhysicsConstructor("hElasticDIFFUSE"), verbose(ver), 00091 wasActivated(false) 00092 { 00093 if(verbose > 1) { 00094 G4cout << "### G4HadronDElasticPhysics: " << GetPhysicsName() 00095 << G4endl; 00096 } 00097 }
G4HadronDElasticPhysics::~G4HadronDElasticPhysics | ( | ) | [virtual] |
void G4HadronDElasticPhysics::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 102 of file G4HadronDElasticPhysics.cc.
References G4IonConstructor::ConstructParticle(), G4BaryonConstructor::ConstructParticle(), and G4MesonConstructor::ConstructParticle().
00103 { 00104 // G4cout << "G4HadronDElasticPhysics::ConstructParticle" << G4endl; 00105 G4MesonConstructor pMesonConstructor; 00106 pMesonConstructor.ConstructParticle(); 00107 00108 G4BaryonConstructor pBaryonConstructor; 00109 pBaryonConstructor.ConstructParticle(); 00110 00111 // Construct light ions 00112 G4IonConstructor pConstructor; 00113 pConstructor.ConstructParticle(); 00114 }
void G4HadronDElasticPhysics::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 116 of file G4HadronDElasticPhysics.cc.
References G4HadronicProcess::AddDataSet(), G4ProcessManager::AddDiscreteProcess(), G4ChipsKaonZeroElasticXS::Default_Name(), G4ChipsKaonPlusElasticXS::Default_Name(), G4ChipsKaonMinusElasticXS::Default_Name(), G4cout, G4endl, G4AntiNuclElastic::GetComponentCrossSection(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), G4VProcess::GetProcessName(), G4CrossSectionDataSetRegistry::Instance(), G4HadronicProcess::RegisterMe(), G4ParticleTableIterator< K, V >::reset(), G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().
00117 { 00118 if(wasActivated) return; 00119 wasActivated = true; 00120 00121 G4double elimitAntiNuc = 100*MeV; 00122 if(verbose > 1) { 00123 G4cout << "### HadronDElasticPhysics Construct Processes " 00124 << " for anti-neuclei " 00125 << elimitAntiNuc/GeV << " GeV" << G4endl; 00126 } 00127 00128 G4AntiNuclElastic* anuc = new G4AntiNuclElastic(); 00129 anuc->SetMinEnergy(elimitAntiNuc); 00130 G4CrossSectionElastic* anucxs = 00131 new G4CrossSectionElastic(anuc->GetComponentCrossSection()); 00132 00133 G4HadronElastic* lhep0 = new G4HadronElastic(); 00134 G4HadronElastic* lhep2 = new G4HadronElastic(); 00135 lhep2->SetMaxEnergy(elimitAntiNuc); 00136 00137 G4DiffuseElastic* model = 0; 00138 00139 theParticleIterator->reset(); 00140 while( (*theParticleIterator)() ) 00141 { 00142 G4ParticleDefinition* particle = theParticleIterator->value(); 00143 G4ProcessManager* pmanager = particle->GetProcessManager(); 00144 G4String pname = particle->GetParticleName(); 00145 if(pname == "anti_lambda" || 00146 pname == "anti_neutron" || 00147 pname == "anti_omega-" || 00148 pname == "anti_sigma-" || 00149 pname == "anti_sigma+" || 00150 pname == "anti_xi-" || 00151 pname == "anti_xi0" || 00152 pname == "lambda" || 00153 pname == "omega-" || 00154 pname == "sigma-" || 00155 pname == "sigma+" || 00156 pname == "xi-" || 00157 pname == "alpha" || 00158 pname == "deuteron" || 00159 pname == "triton" 00160 ) { 00161 00162 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00163 hel->RegisterMe(lhep0); 00164 pmanager->AddDiscreteProcess(hel); 00165 if(verbose > 1) { 00166 G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName() 00167 << " added for " << particle->GetParticleName() << G4endl; 00168 } 00169 00170 } else if(pname == "proton") { 00171 00172 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00173 hel->AddDataSet(new G4BGGNucleonElasticXS(particle)); 00174 //hel->AddDataSet(new G4CHIPSElasticXS()); 00175 model = new G4DiffuseElastic(); 00176 hel->RegisterMe(model); 00177 pmanager->AddDiscreteProcess(hel); 00178 if(verbose > 1) { 00179 G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName() 00180 << " added for " << particle->GetParticleName() << G4endl; 00181 } 00182 00183 } else if(pname == "neutron") { 00184 00185 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00186 hel->AddDataSet(new G4NeutronElasticXS()); 00187 model = new G4DiffuseElastic(); 00188 hel->RegisterMe(model); 00189 pmanager->AddDiscreteProcess(hel); 00190 if(verbose > 1) { 00191 G4cout << "### HadronDElasticPhysics: " 00192 << hel->GetProcessName() 00193 << " added for " << particle->GetParticleName() << G4endl; 00194 } 00195 00196 } else if (pname == "pi+" || pname == "pi-") { 00197 00198 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00199 hel->AddDataSet(new G4BGGPionElasticXS(particle)); 00200 model = new G4DiffuseElastic(); 00201 hel->RegisterMe(model); 00202 pmanager->AddDiscreteProcess(hel); 00203 if(verbose > 1) { 00204 G4cout << "### HadronDElasticPhysics: " << hel->GetProcessName() 00205 << " added for " << particle->GetParticleName() << G4endl; 00206 } 00207 00208 } else if(pname == "kaon-") { 00209 00210 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00211 hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusElasticXS::Default_Name())); 00212 model = new G4DiffuseElastic(); 00213 hel->RegisterMe(model); 00214 pmanager->AddDiscreteProcess(hel); 00215 if(verbose > 1) { 00216 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00217 << " added for " << particle->GetParticleName() << G4endl; 00218 } 00219 } else if(pname == "kaon+") { 00220 00221 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00222 hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusElasticXS::Default_Name())); 00223 model = new G4DiffuseElastic(); 00224 hel->RegisterMe(model); 00225 pmanager->AddDiscreteProcess(hel); 00226 if(verbose > 1) { 00227 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00228 << " added for " << particle->GetParticleName() << G4endl; 00229 } 00230 } else if(pname == "kaon0S" || 00231 pname == "kaon0L" 00232 ) { 00233 00234 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00235 hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroElasticXS::Default_Name())); 00236 model = new G4DiffuseElastic(); 00237 hel->RegisterMe(model); 00238 pmanager->AddDiscreteProcess(hel); 00239 if(verbose > 1) { 00240 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00241 << " added for " << particle->GetParticleName() << G4endl; 00242 } 00243 } else if( 00244 pname == "anti_proton" || 00245 pname == "anti_alpha" || 00246 pname == "anti_deuteron" || 00247 pname == "anti_triton" || 00248 pname == "anti_He3" ) { 00249 00250 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00251 hel->AddDataSet(anucxs); 00252 hel->RegisterMe(lhep2); 00253 hel->RegisterMe(anuc); 00254 pmanager->AddDiscreteProcess(hel); 00255 } 00256 } 00257 00258 //G4double elimit = 1.0*GeV; 00259 00260 if(verbose > 1) { 00261 G4cout << "### HadronDElasticPhysics Construct Processes " << G4endl; 00262 } 00263 }