#include <G4empCrossSection.hh>
Inheritance diagram for G4empCrossSection:
Public Member Functions | |
G4empCrossSection (const G4String &nam="") | |
virtual | ~G4empCrossSection () |
std::vector< G4double > | GetCrossSection (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat) |
G4double | CrossSection (G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass, const G4Material *mat) |
std::vector< G4double > | Probabilities (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat) |
void | SetTotalCS (G4double) |
Definition at line 51 of file G4empCrossSection.hh.
G4empCrossSection::G4empCrossSection | ( | const G4String & | nam = "" |
) |
Definition at line 43 of file G4empCrossSection.cc.
00044 :G4VhShellCrossSection(nam),totalCS(0.0) 00045 { 00046 00047 paulShellK = new G4PaulKxsModel(); 00048 orlicShellLi = new G4OrlicLiXsModel(); 00049 00050 }
G4empCrossSection::~G4empCrossSection | ( | ) | [virtual] |
G4double G4empCrossSection::CrossSection | ( | G4int | Z, | |
G4AtomicShellEnumerator | shell, | |||
G4double | incidentEnergy, | |||
G4double | mass, | |||
const G4Material * | mat | |||
) | [virtual] |
Implements G4VhShellCrossSection.
Definition at line 91 of file G4empCrossSection.cc.
References G4PaulKxsModel::CalculateKCrossSection(), G4OrlicLiXsModel::CalculateL1CrossSection(), G4OrlicLiXsModel::CalculateL2CrossSection(), G4OrlicLiXsModel::CalculateL3CrossSection(), fKShell, fL1Shell, fL2Shell, fL3Shell, G4ParticleDefinition::GetPDGMass(), and G4Proton::Proton().
00095 { 00096 00097 //let's reproduce 00098 00099 G4double res = 0.0; 00100 G4ParticleDefinition* aProton = G4Proton::Proton(); 00101 if(fKShell == shell) { 00102 res = paulShellK->CalculateKCrossSection(Z, mass, incidentEnergy); 00103 } 00104 // this check should be done in the Orlic class, that can handle only protons; 00105 // however this would lead up tp three checks of the mass, while here we have only one 00106 // moreover, at the present time,this class handles explicitly Paul and Orlic models, 00107 // so it can hadle the responsibility of this check too 00108 00109 00110 else if (mass == aProton->GetPDGMass()) { 00111 00112 if(fL1Shell == shell) { 00113 res = orlicShellLi->CalculateL1CrossSection(Z, incidentEnergy); 00114 } 00115 else if(fL2Shell == shell) { 00116 res = orlicShellLi->CalculateL2CrossSection(Z, incidentEnergy); 00117 } 00118 else if(fL3Shell == shell) { 00119 res = orlicShellLi->CalculateL3CrossSection(Z, incidentEnergy); 00120 } 00121 } 00122 return res; 00123 }
std::vector< G4double > G4empCrossSection::GetCrossSection | ( | G4int | Z, | |
G4double | incidentEnergy, | |||
G4double | mass, | |||
G4double | deltaEnergy, | |||
const G4Material * | mat | |||
) | [virtual] |
Implements G4VhShellCrossSection.
Definition at line 60 of file G4empCrossSection.cc.
References G4PaulKxsModel::CalculateKCrossSection(), G4OrlicLiXsModel::CalculateL1CrossSection(), G4OrlicLiXsModel::CalculateL2CrossSection(), G4OrlicLiXsModel::CalculateL3CrossSection(), G4ParticleDefinition::GetPDGMass(), and G4Proton::Proton().
Referenced by Probabilities().
00065 { 00066 std::vector<G4double> crossSections; 00067 G4ParticleDefinition* aProton = G4Proton::Proton(); 00068 00069 crossSections.push_back( paulShellK->CalculateKCrossSection(Z, mass, incidentEnergy) ); 00070 00071 // this check should be done in the Orlic class, that can handle only protons; 00072 // however this would lead up tp three checks of the mass, while here we have only one 00073 // moreover, at the present time,this class handles explicitly Paul and Orlic models, 00074 // so it can hadle the responsibility of this check too 00075 00076 if (mass == aProton->GetPDGMass()) { 00077 crossSections.push_back( orlicShellLi->CalculateL1CrossSection(Z, incidentEnergy) ); 00078 crossSections.push_back( orlicShellLi->CalculateL2CrossSection(Z, incidentEnergy) ); 00079 crossSections.push_back( orlicShellLi->CalculateL3CrossSection(Z, incidentEnergy) ); 00080 } 00081 00082 else { 00083 crossSections.push_back( 0. ); 00084 crossSections.push_back( 0. ); 00085 crossSections.push_back( 0. ); 00086 } 00087 return crossSections; 00088 00089 }
std::vector< G4double > G4empCrossSection::Probabilities | ( | G4int | Z, | |
G4double | incidentEnergy, | |||
G4double | mass, | |||
G4double | deltaEnergy, | |||
const G4Material * | mat | |||
) | [virtual] |
Implements G4VhShellCrossSection.
Definition at line 125 of file G4empCrossSection.cc.
References GetCrossSection().
00130 { 00131 00132 std::vector<G4double> crossSections = GetCrossSection(Z, incidentEnergy, mass, deltaEnergy,mat); 00133 00134 for (size_t i=0; i<crossSections.size(); i++ ) { 00135 00136 if (totalCS) { 00137 crossSections[i] = crossSections[i]/totalCS; 00138 } 00139 00140 } 00141 00142 return crossSections; 00143 00144 }
void G4empCrossSection::SetTotalCS | ( | G4double | ) | [virtual] |