#include <G4PaulKxsModel.hh>
Public Member Functions | |
G4PaulKxsModel () | |
virtual | ~G4PaulKxsModel () |
G4double | CalculateKCrossSection (G4int zTarget, G4double massIncident, G4double energyIncident) |
Definition at line 51 of file G4PaulKxsModel.hh.
G4PaulKxsModel::G4PaulKxsModel | ( | ) |
Definition at line 56 of file G4PaulKxsModel.cc.
00057 { 00058 00059 00060 interpolation = new G4LogLogInterpolation(); 00061 00062 00063 for (G4int i=4; i<93; i++) { 00064 protonDataSetMap[i] = new G4EMDataSet(i,interpolation); 00065 protonDataSetMap[i]->LoadData("pixe/kpcsPaul/kcs-"); 00066 } 00067 for (G4int i=6; i<93; i++) { 00068 alphaDataSetMap[i] = new G4EMDataSet(i,interpolation); 00069 alphaDataSetMap[i]->LoadData("pixe/kacsPaul/kacs-"); 00070 } 00071 00072 00073 00074 00075 }
G4PaulKxsModel::~G4PaulKxsModel | ( | ) | [virtual] |
Definition at line 77 of file G4PaulKxsModel.cc.
00078 { 00079 00080 protonDataSetMap.clear(); 00081 alphaDataSetMap.clear(); 00082 delete interpolation; 00083 00084 }
G4double G4PaulKxsModel::CalculateKCrossSection | ( | G4int | zTarget, | |
G4double | massIncident, | |||
G4double | energyIncident | |||
) |
Definition at line 86 of file G4PaulKxsModel.cc.
References G4Alpha::Alpha(), G4ParticleDefinition::GetPDGMass(), and G4Proton::Proton().
Referenced by G4empCrossSection::CrossSection(), and G4empCrossSection::GetCrossSection().
00087 { 00088 00089 G4Proton* aProtone = G4Proton::Proton(); 00090 G4Alpha* aAlpha = G4Alpha::Alpha(); 00091 00092 G4double sigma = 0; 00093 00094 if (massIncident == aProtone->GetPDGMass() && zTarget < 93 && zTarget > 3) 00095 { 00096 00097 // G4EMDataSet* currentDataset = protonDataSetMap[zTarget]; 00098 // currentDataset->GetEnergies 00099 00100 if (energyIncident > protonDataSetMap[zTarget]->GetEnergies(0).back() || 00101 energyIncident < protonDataSetMap[zTarget]->GetEnergies(0).front() ) 00102 {sigma = 0;} 00103 else { 00104 sigma = protonDataSetMap[zTarget]->FindValue(energyIncident/MeV); 00105 } 00106 } 00107 else 00108 { 00109 if (massIncident == aAlpha->GetPDGMass() && zTarget < 93 && zTarget > 5) 00110 { 00111 if (energyIncident > alphaDataSetMap[zTarget]->GetEnergies(0).back() || 00112 energyIncident < alphaDataSetMap[zTarget]->GetEnergies(0).front() ) 00113 {sigma = 0;} 00114 else { 00115 sigma = alphaDataSetMap[zTarget]->FindValue(energyIncident/MeV); 00116 } 00117 } 00118 else 00119 { 00120 00121 // G4Exception("G4PaulKxsModel::CalculateKCrossSection()","de0004",JustWarning, "Energy deposited locally"); 00122 sigma = 0.; 00123 00124 } 00125 } 00126 00127 00128 // sigma is in internal units (mm^2) 00129 return sigma; 00130 }