#include <G4QHadronElasticDataSet.hh>
Inheritance diagram for G4QHadronElasticDataSet:
Public Member Functions | |
G4QHadronElasticDataSet (const G4String &dataSetName="CHIPSElasticXS") | |
~G4QHadronElasticDataSet () | |
G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0) |
G4double | GetIsoCrossSection (const G4DynamicParticle *P, G4int Z, G4int A, const G4Isotope *, const G4Element *, const G4Material *) |
void | BuildPhysicsTable (const G4ParticleDefinition &) |
void | DumpPhysicsTable (const G4ParticleDefinition &) |
void | Description () const |
Definition at line 78 of file G4QHadronElasticDataSet.hh.
G4QHadronElasticDataSet::G4QHadronElasticDataSet | ( | const G4String & | dataSetName = "CHIPSElasticXS" |
) |
Definition at line 49 of file G4QHadronElasticDataSet.cc.
References Description().
00050 : G4VCrossSectionDataSet(dataSetName) 00051 { 00052 //Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton 00053 Description(); 00054 }
G4QHadronElasticDataSet::~G4QHadronElasticDataSet | ( | ) | [inline] |
void G4QHadronElasticDataSet::BuildPhysicsTable | ( | const G4ParticleDefinition & | ) | [inline, virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 88 of file G4QHadronElasticDataSet.hh.
void G4QHadronElasticDataSet::Description | ( | ) | const |
Definition at line 56 of file G4QHadronElasticDataSet.cc.
References G4VCrossSectionDataSet::GetName().
Referenced by G4QHadronElasticDataSet().
00057 { 00058 char* dirName = getenv("G4PhysListDocDir"); 00059 if (dirName) { 00060 std::ofstream outFile; 00061 G4String outFileName = GetName() + ".html"; 00062 G4String pathName = G4String(dirName) + "/" + outFileName; 00063 00064 outFile.open(pathName); 00065 outFile << "<html>\n"; 00066 outFile << "<head>\n"; 00067 00068 outFile << "<title>Description of CHIPSElasticXS</title>\n"; 00069 outFile << "</head>\n"; 00070 outFile << "<body>\n"; 00071 00072 outFile << "CHIPSElasticXS provides hadron-nuclear elastic cross\n" 00073 << "sections for all hadrons at all energies. These cross\n" 00074 << "sections represent parameterizations developed by M. Kossov.\n"; 00075 00076 outFile << "</body>\n"; 00077 outFile << "</html>\n"; 00078 outFile.close(); 00079 } 00080 }
void G4QHadronElasticDataSet::DumpPhysicsTable | ( | const G4ParticleDefinition & | ) | [inline, virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 89 of file G4QHadronElasticDataSet.hh.
G4double G4QHadronElasticDataSet::GetIsoCrossSection | ( | const G4DynamicParticle * | P, | |
G4int | Z, | |||
G4int | A, | |||
const G4Isotope * | , | |||
const G4Element * | , | |||
const G4Material * | ||||
) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 182 of file G4QHadronElasticDataSet.cc.
References G4AntiKaonZero::AntiKaonZero(), G4AntiLambda::AntiLambda(), G4AntiNeutron::AntiNeutron(), G4AntiOmegaMinus::AntiOmegaMinus(), G4AntiProton::AntiProton(), G4AntiSigmaMinus::AntiSigmaMinus(), G4AntiSigmaPlus::AntiSigmaPlus(), G4AntiSigmaZero::AntiSigmaZero(), G4AntiXiMinus::AntiXiMinus(), G4AntiXiZero::AntiXiZero(), G4cerr, G4endl, G4UniformRand, G4VQCrossSection::GetCrossSection(), G4DynamicParticle::GetDefinition(), G4ParticleDefinition::GetPDGEncoding(), G4QAntiBaryonElasticCrossSection::GetPointer(), G4QHyperonElasticCrossSection::GetPointer(), G4QKaonPlusElasticCrossSection::GetPointer(), G4QKaonMinusElasticCrossSection::GetPointer(), G4QPionPlusElasticCrossSection::GetPointer(), G4QPionMinusElasticCrossSection::GetPointer(), G4QProtonElasticCrossSection::GetPointer(), G4QNeutronElasticCrossSection::GetPointer(), G4DynamicParticle::GetTotalMomentum(), G4KaonMinus::KaonMinus(), G4KaonPlus::KaonPlus(), G4KaonZero::KaonZero(), G4KaonZeroLong::KaonZeroLong(), G4KaonZeroShort::KaonZeroShort(), G4Lambda::Lambda(), G4Neutron::Neutron(), G4OmegaMinus::OmegaMinus(), G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), G4Proton::Proton(), G4SigmaMinus::SigmaMinus(), G4SigmaPlus::SigmaPlus(), G4SigmaZero::SigmaZero(), G4XiMinus::XiMinus(), and G4XiZero::XiZero().
00185 { 00186 G4ParticleDefinition* particle = Pt->GetDefinition(); 00187 G4double Momentum=Pt->GetTotalMomentum(); 00188 G4VQCrossSection* CSmanager=0; 00189 G4VQCrossSection* CSmanager2=0; 00190 00191 G4int pPDG=0; 00192 if(particle == G4Neutron::Neutron()) 00193 { 00194 CSmanager=G4QNeutronElasticCrossSection::GetPointer(); 00195 pPDG=2112; 00196 } 00197 else if(particle == G4Proton::Proton()) 00198 { 00199 CSmanager=G4QProtonElasticCrossSection::GetPointer(); 00200 pPDG=2212; 00201 } 00202 else if(particle == G4PionMinus::PionMinus()) 00203 { 00204 CSmanager=G4QPionMinusElasticCrossSection::GetPointer(); 00205 pPDG=-211; 00206 } 00207 else if(particle == G4PionPlus::PionPlus()) 00208 { 00209 CSmanager=G4QPionPlusElasticCrossSection::GetPointer(); 00210 pPDG=211; 00211 } 00212 else if(particle == G4KaonMinus::KaonMinus()) 00213 { 00214 CSmanager=G4QKaonMinusElasticCrossSection::GetPointer(); 00215 pPDG=-321; 00216 } 00217 else if(particle == G4KaonPlus::KaonPlus()) 00218 { 00219 CSmanager=G4QKaonPlusElasticCrossSection::GetPointer(); 00220 pPDG=321; 00221 } 00222 else if(particle == G4KaonZeroLong::KaonZeroLong() || 00223 particle == G4KaonZeroShort::KaonZeroShort() || 00224 particle == G4KaonZero::KaonZero() || 00225 particle == G4AntiKaonZero::AntiKaonZero() ) 00226 { 00227 CSmanager=G4QKaonMinusElasticCrossSection::GetPointer(); 00228 CSmanager2=G4QKaonPlusElasticCrossSection::GetPointer(); 00229 if(G4UniformRand() > 0.5) pPDG= 321; 00230 else pPDG=-321; 00231 } 00232 else if(particle == G4Lambda::Lambda()) 00233 { 00234 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00235 pPDG=3122; 00236 } 00237 else if(particle == G4SigmaPlus::SigmaPlus()) 00238 { 00239 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00240 pPDG=3222; 00241 } 00242 else if(particle == G4SigmaMinus::SigmaMinus()) 00243 { 00244 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00245 pPDG=3112; 00246 } 00247 else if(particle == G4SigmaZero::SigmaZero()) 00248 { 00249 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00250 pPDG=3212; 00251 } 00252 else if(particle == G4XiMinus::XiMinus()) 00253 { 00254 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00255 pPDG=3312; 00256 } 00257 else if(particle == G4XiZero::XiZero()) 00258 { 00259 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00260 pPDG=3322; 00261 } 00262 else if(particle == G4OmegaMinus::OmegaMinus()) 00263 { 00264 CSmanager=G4QHyperonElasticCrossSection::GetPointer(); 00265 pPDG=3334; 00266 } 00267 else if(particle == G4AntiNeutron::AntiNeutron()) 00268 { 00269 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00270 pPDG=-2112; 00271 } 00272 else if(particle == G4AntiProton::AntiProton()) 00273 { 00274 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00275 pPDG=-2212; 00276 } 00277 else if(particle == G4AntiLambda::AntiLambda()) 00278 { 00279 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00280 pPDG=-3122; 00281 } 00282 else if(particle == G4AntiSigmaPlus::AntiSigmaPlus()) 00283 { 00284 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00285 pPDG=-3222; 00286 } 00287 else if(particle == G4AntiSigmaMinus::AntiSigmaMinus()) 00288 { 00289 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00290 pPDG=-3112; 00291 } 00292 else if(particle == G4AntiSigmaZero::AntiSigmaZero()) 00293 { 00294 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00295 pPDG=-3212; 00296 } 00297 else if(particle == G4AntiXiMinus::AntiXiMinus()) 00298 { 00299 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00300 pPDG=-3312; 00301 } 00302 else if(particle == G4AntiXiZero::AntiXiZero()) 00303 { 00304 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00305 pPDG=-3322; 00306 } 00307 else if(particle == G4AntiOmegaMinus::AntiOmegaMinus()) 00308 { 00309 CSmanager=G4QAntiBaryonElasticCrossSection::GetPointer(); 00310 pPDG=-3334; 00311 } 00312 else 00313 { 00314 G4cerr << "-ERROR-G4QHadronElasticDataSet::GetIsoZACrossSection: PDG=" 00315 << particle->GetPDGEncoding() << " isn't supported by CHIPS" << G4endl; 00316 //throw G4HadronicException(__FILE__, __LINE__, 00317 // "G4QHadronElasticDataSet::GetIsoZACrossSection: Particle isn't supported by CHIPS"); 00318 return 0; 00319 } 00320 G4int N=A-Z; 00321 G4double CSI=CSmanager->GetCrossSection(true, Momentum, Z, N, pPDG); // CS(j,i) basic 00322 if(CSmanager2) CSI = (CSI + CSmanager2->GetCrossSection(true, Momentum, Z, N, pPDG))/2; 00323 return CSI; 00324 }
G4bool G4QHadronElasticDataSet::IsIsoApplicable | ( | const G4DynamicParticle * | , | |
G4int | Z, | |||
G4int | A, | |||
const G4Element * | elm = 0 , |
|||
const G4Material * | mat = 0 | |||
) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 82 of file G4QHadronElasticDataSet.cc.
References G4AntiLambda::AntiLambda(), G4AntiNeutron::AntiNeutron(), G4AntiOmegaMinus::AntiOmegaMinus(), G4AntiProton::AntiProton(), G4AntiSigmaMinus::AntiSigmaMinus(), G4AntiSigmaPlus::AntiSigmaPlus(), G4AntiSigmaZero::AntiSigmaZero(), G4AntiXiMinus::AntiXiMinus(), G4AntiXiZero::AntiXiZero(), G4DynamicParticle::GetDefinition(), G4KaonMinus::KaonMinus(), G4KaonPlus::KaonPlus(), G4KaonZeroLong::KaonZeroLong(), G4KaonZeroShort::KaonZeroShort(), G4Lambda::Lambda(), G4Neutron::Neutron(), G4OmegaMinus::OmegaMinus(), G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), G4Proton::Proton(), G4SigmaMinus::SigmaMinus(), G4SigmaPlus::SigmaPlus(), G4SigmaZero::SigmaZero(), G4XiMinus::XiMinus(), and G4XiZero::XiZero().
00084 { 00085 G4ParticleDefinition* particle = Pt->GetDefinition(); 00086 if (particle == G4Neutron::Neutron() ) return true; // @@ isotopes? 00087 else if (particle == G4Proton::Proton() ) return true; 00088 else if (particle == G4PionMinus::PionMinus() ) return true; 00089 else if (particle == G4PionPlus::PionPlus() ) return true; 00090 else if (particle == G4KaonPlus::KaonPlus() ) return true; 00091 else if (particle == G4KaonMinus::KaonMinus() ) return true; 00092 else if (particle == G4KaonZeroLong::KaonZeroLong() ) return true; 00093 else if (particle == G4KaonZeroShort::KaonZeroShort() ) return true; 00094 else if (particle == G4Lambda::Lambda() ) return true; 00095 else if (particle == G4SigmaPlus::SigmaPlus() ) return true; 00096 else if (particle == G4SigmaMinus::SigmaMinus() ) return true; 00097 else if (particle == G4SigmaZero::SigmaZero() ) return true; 00098 else if (particle == G4XiMinus::XiMinus() ) return true; 00099 else if (particle == G4XiZero::XiZero() ) return true; 00100 else if (particle == G4OmegaMinus::OmegaMinus() ) return true; 00101 else if (particle == G4AntiNeutron::AntiNeutron() ) return true; 00102 else if (particle == G4AntiProton::AntiProton() ) return true; 00103 else if (particle == G4AntiLambda::AntiLambda() ) return true; 00104 else if (particle == G4AntiSigmaPlus::AntiSigmaPlus() ) return true; 00105 else if (particle == G4AntiSigmaMinus::AntiSigmaMinus() ) return true; 00106 else if (particle == G4AntiSigmaZero::AntiSigmaZero() ) return true; 00107 else if (particle == G4AntiXiMinus::AntiXiMinus() ) return true; 00108 else if (particle == G4AntiXiZero::AntiXiZero() ) return true; 00109 else if (particle == G4AntiOmegaMinus::AntiOmegaMinus() ) return true; 00110 return false; 00111 }