#include <G4HadronElasticPhysics.hh>
Inheritance diagram for G4HadronElasticPhysics:
Public Member Functions | |
G4HadronElasticPhysics (G4int ver=0) | |
G4HadronElasticPhysics (const G4String &name, G4int ver=0, G4bool hp=false, const G4String &type="") | |
virtual | ~G4HadronElasticPhysics () |
virtual void | ConstructParticle () |
virtual void | ConstructProcess () |
G4HadronElastic * | GetNeutronModel () |
G4HadronicProcess * | GetNeutronProcess () |
Definition at line 52 of file G4HadronElasticPhysics.hh.
G4HadronElasticPhysics::G4HadronElasticPhysics | ( | G4int | ver = 0 |
) |
Definition at line 84 of file G4HadronElasticPhysics.cc.
References G4cout, G4endl, and G4VPhysicsConstructor::GetPhysicsName().
00085 : G4VPhysicsConstructor("hElasticWEL_CHIPS"), verbose(ver), 00086 wasActivated(false) 00087 { 00088 if(verbose > 1) { 00089 G4cout << "### G4HadronElasticPhysics: " << GetPhysicsName() 00090 << G4endl; 00091 } 00092 neutronProcess = 0; 00093 neutronModel = 0; 00094 }
G4HadronElasticPhysics::G4HadronElasticPhysics | ( | const G4String & | name, | |
G4int | ver = 0 , |
|||
G4bool | hp = false , |
|||
const G4String & | type = "" | |||
) |
Definition at line 96 of file G4HadronElasticPhysics.cc.
References G4cout, G4endl, and G4VPhysicsConstructor::GetPhysicsName().
00098 : G4VPhysicsConstructor("hElasticWEL_CHIPS"), verbose(ver), 00099 wasActivated(false) 00100 { 00101 if(verbose > 1) { 00102 G4cout << "### G4HadronElasticPhysics: " << GetPhysicsName() 00103 << G4endl; 00104 } 00105 neutronProcess = 0; 00106 neutronModel = 0; 00107 }
G4HadronElasticPhysics::~G4HadronElasticPhysics | ( | ) | [virtual] |
void G4HadronElasticPhysics::ConstructParticle | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 112 of file G4HadronElasticPhysics.cc.
References G4IonConstructor::ConstructParticle(), G4BaryonConstructor::ConstructParticle(), and G4MesonConstructor::ConstructParticle().
Referenced by G4HadronElasticPhysicsXS::ConstructParticle(), G4HadronElasticPhysicsLEND::ConstructParticle(), and G4HadronElasticPhysicsHP::ConstructParticle().
00113 { 00114 // G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl; 00115 G4MesonConstructor pMesonConstructor; 00116 pMesonConstructor.ConstructParticle(); 00117 00118 G4BaryonConstructor pBaryonConstructor; 00119 pBaryonConstructor.ConstructParticle(); 00120 00121 G4IonConstructor pConstructor; 00122 pConstructor.ConstructParticle(); 00123 }
void G4HadronElasticPhysics::ConstructProcess | ( | ) | [virtual] |
Implements G4VPhysicsConstructor.
Definition at line 125 of file G4HadronElasticPhysics.cc.
References G4HadronicProcess::AddDataSet(), G4ProcessManager::AddDiscreteProcess(), G4ChipsNeutronElasticXS::Default_Name(), G4ChipsProtonElasticXS::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().
Referenced by G4HadronElasticPhysicsXS::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), and G4HadronElasticPhysicsHP::ConstructProcess().
00126 { 00127 if(wasActivated) { return; } 00128 wasActivated = true; 00129 00130 G4double elimitPi = 1.0*GeV; 00131 G4double elimitAntiNuc = 100*MeV; 00132 if(verbose > 1) { 00133 G4cout << "### HadronElasticPhysics Construct Processes with the limit for pi " 00134 << elimitPi/GeV << " GeV" 00135 << " for anti-neuclei " 00136 << elimitAntiNuc/GeV << " GeV" << G4endl; 00137 } 00138 00139 G4AntiNuclElastic* anuc = new G4AntiNuclElastic(); 00140 anuc->SetMinEnergy(elimitAntiNuc); 00141 G4CrossSectionElastic* anucxs = 00142 new G4CrossSectionElastic(anuc->GetComponentCrossSection()); 00143 00144 G4HadronElastic* lhep0 = new G4HadronElastic(); 00145 G4HadronElastic* lhep1 = new G4HadronElastic(); 00146 G4HadronElastic* lhep2 = new G4HadronElastic(); 00147 lhep1->SetMaxEnergy(elimitPi); 00148 lhep2->SetMaxEnergy(elimitAntiNuc); 00149 00150 G4CHIPSElastic* chipsp = new G4CHIPSElastic(); 00151 neutronModel = new G4CHIPSElastic(); 00152 00153 G4ElasticHadrNucleusHE* he = new G4ElasticHadrNucleusHE(); 00154 he->SetMinEnergy(elimitPi); 00155 00156 theParticleIterator->reset(); 00157 while( (*theParticleIterator)() ) 00158 { 00159 G4ParticleDefinition* particle = theParticleIterator->value(); 00160 G4ProcessManager* pmanager = particle->GetProcessManager(); 00161 G4String pname = particle->GetParticleName(); 00162 if(pname == "anti_lambda" || 00163 pname == "anti_neutron" || 00164 pname == "anti_omega-" || 00165 pname == "anti_sigma-" || 00166 pname == "anti_sigma+" || 00167 pname == "anti_xi-" || 00168 pname == "anti_xi0" || 00169 pname == "lambda" || 00170 pname == "omega-" || 00171 pname == "sigma-" || 00172 pname == "sigma+" || 00173 pname == "xi-" || 00174 pname == "alpha" || 00175 pname == "deuteron" || 00176 pname == "triton" 00177 ) { 00178 00179 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00180 hel->RegisterMe(lhep0); 00181 pmanager->AddDiscreteProcess(hel); 00182 if(verbose > 1) { 00183 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00184 << " added for " << particle->GetParticleName() << G4endl; 00185 } 00186 00187 } else if(pname == "proton") { 00188 00189 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00190 //hel->AddDataSet(new G4BGGNucleonElasticXS(particle)); 00191 00192 // hel->AddDataSet(new G4ChipsProtonElasticXS()); 00193 hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsProtonElasticXS::Default_Name())); 00194 00195 hel->RegisterMe(chipsp); 00196 pmanager->AddDiscreteProcess(hel); 00197 if(verbose > 1) { 00198 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00199 << " added for " << particle->GetParticleName() << G4endl; 00200 } 00201 00202 } else if(pname == "neutron") { 00203 00204 neutronProcess = new G4HadronElasticProcess(); 00205 //neutronProcess->AddDataSet(new G4BGGNucleonElasticXS(particle)); 00206 neutronProcess->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsNeutronElasticXS::Default_Name())); 00207 neutronProcess->RegisterMe(neutronModel); 00208 pmanager->AddDiscreteProcess(neutronProcess); 00209 if(verbose > 1) { 00210 G4cout << "### HadronElasticPhysics: " 00211 << neutronProcess->GetProcessName() 00212 << " added for " << particle->GetParticleName() << G4endl; 00213 } 00214 00215 } else if (pname == "pi+" || pname == "pi-") { 00216 00217 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00218 hel->AddDataSet(new G4BGGPionElasticXS(particle)); 00219 hel->RegisterMe(lhep1); 00220 hel->RegisterMe(he); 00221 pmanager->AddDiscreteProcess(hel); 00222 if(verbose > 1) { 00223 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00224 << " added for " << particle->GetParticleName() << G4endl; 00225 } 00226 00227 } else if(pname == "kaon-" || 00228 pname == "kaon+" || 00229 pname == "kaon0S" || 00230 pname == "kaon0L" 00231 ) { 00232 00233 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00234 hel->RegisterMe(lhep0); 00235 pmanager->AddDiscreteProcess(hel); 00236 if(verbose > 1) { 00237 G4cout << "### HadronElasticPhysics: " << hel->GetProcessName() 00238 << " added for " << particle->GetParticleName() << G4endl; 00239 } 00240 00241 } else if( 00242 pname == "anti_proton" || 00243 pname == "anti_alpha" || 00244 pname == "anti_deuteron" || 00245 pname == "anti_triton" || 00246 pname == "anti_He3" ) { 00247 00248 G4HadronElasticProcess* hel = new G4HadronElasticProcess(); 00249 hel->AddDataSet(anucxs); 00250 hel->RegisterMe(lhep2); 00251 hel->RegisterMe(anuc); 00252 pmanager->AddDiscreteProcess(hel); 00253 } 00254 } 00255 }
G4HadronElastic * G4HadronElasticPhysics::GetNeutronModel | ( | ) | [inline] |
Definition at line 92 of file G4HadronElasticPhysics.hh.
Referenced by G4HadronElasticPhysicsLEND::ConstructProcess(), and G4HadronElasticPhysicsHP::ConstructProcess().
G4HadronicProcess * G4HadronElasticPhysics::GetNeutronProcess | ( | ) | [inline] |
Definition at line 97 of file G4HadronElasticPhysics.hh.
Referenced by G4HadronElasticPhysicsXS::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), and G4HadronElasticPhysicsHP::ConstructProcess().