#include <G4IonsSihverCrossSection.hh>
Inheritance diagram for G4IonsSihverCrossSection:
Public Member Functions | |
G4IonsSihverCrossSection () | |
virtual | ~G4IonsSihverCrossSection () |
virtual G4bool | IsElementApplicable (const G4DynamicParticle *aDP, G4int Z, const G4Material *) |
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *) |
virtual void | CrossSectionDescription (std::ostream &) const |
Definition at line 46 of file G4IonsSihverCrossSection.hh.
G4IonsSihverCrossSection::G4IonsSihverCrossSection | ( | ) |
Definition at line 40 of file G4IonsSihverCrossSection.cc.
00041 : G4VCrossSectionDataSet("IonsSihver"), square_r0 ( (1.36*fermi) * (1.36*fermi) ) 00042 {}
G4IonsSihverCrossSection::~G4IonsSihverCrossSection | ( | ) | [virtual] |
void G4IonsSihverCrossSection::CrossSectionDescription | ( | std::ostream & | ) | const [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 48 of file G4IonsSihverCrossSection.cc.
00049 { 00050 outFile << "G4IonsSihverCrossSection calculates the total reaction cross\n" 00051 << "section for nucleus-nucleus scattering using the Sihver\n" 00052 << "parameterization. It is valid for projectiles and targets of\n" 00053 << "all Z, and for all projectile energies above 100 MeV/n.\n"; 00054 }
G4double G4IonsSihverCrossSection::GetElementCrossSection | ( | const G4DynamicParticle * | , | |
G4int | Z, | |||
const G4Material * | ||||
) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 67 of file G4IonsSihverCrossSection.cc.
References G4lrint(), G4ParticleDefinition::GetBaryonNumber(), G4DynamicParticle::GetDefinition(), G4Pow::GetInstance(), G4NistManager::Instance(), G4INCL::Math::pi, and G4Pow::Z13().
00069 { 00070 G4double xsection = 0.0; 00071 G4int At = G4lrint(G4NistManager::Instance()->GetAtomicMassAmu(Z)); 00072 00073 G4int Ap = aParticle->GetDefinition()->GetBaryonNumber(); 00074 00075 G4Pow* g4pow = G4Pow::GetInstance(); 00076 00077 G4double cubicrAt = g4pow->Z13(At); 00078 G4double cubicrAp = g4pow->Z13(Ap); 00079 00080 G4double b0 = 1.581 - 0.876 * (1.0/cubicrAp + 1.0/cubicrAt); 00081 00082 G4double xr = cubicrAp + cubicrAt - b0 * (1.0/cubicrAp + 1.0/cubicrAt); 00083 xsection = pi * square_r0 * xr * xr; 00084 00085 return xsection; 00086 }
G4bool G4IonsSihverCrossSection::IsElementApplicable | ( | const G4DynamicParticle * | aDP, | |
G4int | Z, | |||
const G4Material * | ||||
) | [virtual] |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 57 of file G4IonsSihverCrossSection.cc.
References G4ParticleDefinition::GetBaryonNumber(), G4DynamicParticle::GetDefinition(), and G4DynamicParticle::GetKineticEnergy().
00059 { 00060 G4int BaryonNumber = aDP->GetDefinition()->GetBaryonNumber(); 00061 G4double KineticEnergy = aDP->GetKineticEnergy(); 00062 if ( KineticEnergy / BaryonNumber >= 100*MeV && BaryonNumber > 1 ) { return true; } 00063 return false; 00064 }