G4QHadronElasticDataSet Class Reference

#include <G4QHadronElasticDataSet.hh>

Inheritance diagram for G4QHadronElasticDataSet:

G4VCrossSectionDataSet

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

Detailed Description

Definition at line 78 of file G4QHadronElasticDataSet.hh.


Constructor & Destructor Documentation

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]

Definition at line 83 of file G4QHadronElasticDataSet.hh.

00083 {};


Member Function Documentation

void G4QHadronElasticDataSet::BuildPhysicsTable ( const G4ParticleDefinition  )  [inline, virtual]

Reimplemented from G4VCrossSectionDataSet.

Definition at line 88 of file G4QHadronElasticDataSet.hh.

00088 {};

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.

00089 {};

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:08 2013 for Geant4 by  doxygen 1.4.7