G4CHIPSElasticXS Class Reference

#include <G4CHIPSElasticXS.hh>

Inheritance diagram for G4CHIPSElasticXS:

G4VCrossSectionDataSet

Public Member Functions

 G4CHIPSElasticXS ()
virtual ~G4CHIPSElasticXS ()
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int, G4int, const G4Element *, const G4Material *)
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int, G4int, const G4Isotope *, const G4Element *, const G4Material *)
virtual void Description () const

Detailed Description

Definition at line 59 of file G4CHIPSElasticXS.hh.


Constructor & Destructor Documentation

G4CHIPSElasticXS::G4CHIPSElasticXS (  ) 

Definition at line 59 of file G4CHIPSElasticXS.cc.

References G4QKaonMinusElasticCrossSection::GetPointer(), G4QKaonPlusElasticCrossSection::GetPointer(), G4QPionMinusElasticCrossSection::GetPointer(), G4QPionPlusElasticCrossSection::GetPointer(), G4QAntiBaryonElasticCrossSection::GetPointer(), G4QNeutronElasticCrossSection::GetPointer(), and G4QProtonElasticCrossSection::GetPointer().

00060   :  G4VCrossSectionDataSet("CHIPSElasticXS"),
00061      theProton(G4Proton::Proton()), 
00062      theNeutron(G4Neutron::Neutron()),
00063      thEnergy(19*CLHEP::MeV),
00064      isInitialized(false)
00065 {
00066   //  verboseLevel = 0;
00067   pCManager   = G4QProtonElasticCrossSection::GetPointer();
00068   nCManager   = G4QNeutronElasticCrossSection::GetPointer();
00069 
00070   PBARxsManager = G4QAntiBaryonElasticCrossSection::GetPointer(); // Uzhi
00071   PIPxsManager  = G4QPionPlusElasticCrossSection::GetPointer();   // Uzhi
00072   PIMxsManager  = G4QPionMinusElasticCrossSection::GetPointer();  // Uzhi
00073   KPxsManager   = G4QKaonPlusElasticCrossSection::GetPointer();   // Uzhi
00074   KMxsManager   = G4QKaonMinusElasticCrossSection::GetPointer();  // Uzhi
00075   //Description();
00076   theParticle   = 0;
00077 }

G4CHIPSElasticXS::~G4CHIPSElasticXS (  )  [virtual]

Definition at line 79 of file G4CHIPSElasticXS.cc.

00080 {}


Member Function Documentation

void G4CHIPSElasticXS::Description (  )  const [virtual]

Definition at line 83 of file G4CHIPSElasticXS.cc.

References G4VCrossSectionDataSet::GetName().

00084 {
00085   char* dirName = getenv("G4PhysListDocDir");
00086   if (dirName) {
00087     std::ofstream outFile;
00088     G4String outFileName = GetName() + ".html";
00089     G4String pathName = G4String(dirName) + "/" + outFileName;
00090 
00091     outFile.open(pathName);
00092     outFile << "<html>\n";
00093     outFile << "<head>\n";
00094 
00095     outFile << "<title>Description of CHIPS Elastic Cross Section</title>\n";
00096     outFile << "</head>\n";
00097     outFile << "<body>\n";
00098 
00099     outFile << "G4CHIPSElasticXS provides hadron-nuclear elastic scattering\n"
00100             << "cross sections for protons and neutrons with incident energies\n"
00101             << "between 19 MeV and X GeV.  These cross sections represent\n"
00102             << "parameterizations developed by M. Kossov. (more detail)\n";
00103 
00104     outFile << "</body>\n";
00105     outFile << "</html>\n";
00106     outFile.close();
00107   }
00108 }

G4double G4CHIPSElasticXS::GetIsoCrossSection ( const G4DynamicParticle ,
G4int  ,
G4int  ,
const G4Isotope ,
const G4Element ,
const G4Material  
) [virtual]

Reimplemented from G4VCrossSectionDataSet.

Definition at line 119 of file G4CHIPSElasticXS.cc.

References G4VQCrossSection::GetCrossSection(), G4DynamicParticle::GetPDGcode(), and G4DynamicParticle::GetTotalMomentum().

00123 {
00124   G4int N = A - Z;
00125   if(Z == 1) {
00126     if(N > 1) { N = 1; }
00127   } else if(Z == 2) { N = 2; }
00128 
00129   G4double momentum = dyn->GetTotalMomentum();
00130   G4int    uPDGcode = dyn->GetPDGcode();
00131   G4VQCrossSection* CHIPSmanager = 0; 
00132   G4double cross = 0.0;
00133 
00134   switch(uPDGcode) {
00135   case 2212:
00136     CHIPSmanager=pCManager;
00137     break;
00138   case 2112:
00139     CHIPSmanager=nCManager;
00140     break;
00141   case -2212:
00142     CHIPSmanager=PBARxsManager;
00143     break;
00144   case -2112:
00145     CHIPSmanager=PBARxsManager;
00146     break;
00147   case 211:
00148     CHIPSmanager=PIPxsManager;
00149     break;
00150   case -211:
00151     CHIPSmanager=PIMxsManager;
00152     break;
00153   case 321:
00154     CHIPSmanager=KPxsManager;
00155     break;
00156   case -321:
00157     CHIPSmanager=KMxsManager;
00158     break;
00159   case 130:
00160     break;
00161   case 310:
00162     break;
00163   case 311:
00164     break;
00165   case -311:
00166     break;
00167   default:
00168     throw G4HadronicException(__FILE__, __LINE__,
00169                               "G4CHIPSElasticXS: not applicable for a particle"); 
00170     return cross; 
00171   }
00172   if(CHIPSmanager) {
00173     cross = CHIPSmanager->GetCrossSection(false,momentum,Z,N,uPDGcode);
00174   } else {
00175     cross = 0.5*(KPxsManager->GetCrossSection(false,momentum,Z,N,uPDGcode) +
00176                  KMxsManager->GetCrossSection(false,momentum,Z,N,uPDGcode));
00177   }
00178   return cross; 
00179 }

G4bool G4CHIPSElasticXS::IsIsoApplicable ( const G4DynamicParticle ,
G4int  ,
G4int  ,
const G4Element ,
const G4Material  
) [virtual]

Reimplemented from G4VCrossSectionDataSet.

Definition at line 111 of file G4CHIPSElasticXS.cc.

00114 {
00115   return (Z <= 2 && dyn->GetKineticEnergy() > thEnergy);
00116 }


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