#include <G4ecpssrFormFactorKxsModel.hh>
Inheritance diagram for G4ecpssrFormFactorKxsModel:
Public Member Functions | |
G4ecpssrFormFactorKxsModel () | |
virtual | ~G4ecpssrFormFactorKxsModel () |
G4double | CalculateCrossSection (G4int zTarget, G4double massIncident, G4double energyIncident) |
Definition at line 47 of file G4ecpssrFormFactorKxsModel.hh.
G4ecpssrFormFactorKxsModel::G4ecpssrFormFactorKxsModel | ( | ) |
Definition at line 53 of file G4ecpssrFormFactorKxsModel.cc.
00054 { 00055 interpolation = new G4LogLogInterpolation(); 00056 00057 for (G4int i=6; i<93; i++) 00058 { 00059 protonDataSetMap[i] = new G4EMDataSet(i,interpolation); 00060 protonDataSetMap[i]->LoadData("pixe/ecpssr/proton/k-"); 00061 } 00062 00063 for (G4int i=6; i<93; i++) 00064 { 00065 alphaDataSetMap[i] = new G4EMDataSet(i,interpolation); 00066 alphaDataSetMap[i]->LoadData("pixe/ecpssr/alpha/k-"); 00067 } 00068 00069 }
G4ecpssrFormFactorKxsModel::~G4ecpssrFormFactorKxsModel | ( | ) | [virtual] |
Definition at line 73 of file G4ecpssrFormFactorKxsModel.cc.
00074 { 00075 protonDataSetMap.clear(); 00076 alphaDataSetMap.clear(); 00077 delete interpolation; 00078 }
G4double G4ecpssrFormFactorKxsModel::CalculateCrossSection | ( | G4int | zTarget, | |
G4double | massIncident, | |||
G4double | energyIncident | |||
) | [virtual] |
Implements G4VecpssrKModel.
Definition at line 82 of file G4ecpssrFormFactorKxsModel.cc.
References G4Alpha::Alpha(), G4ParticleDefinition::GetPDGMass(), and G4Proton::Proton().
00083 { 00084 G4Proton* aProton = G4Proton::Proton(); 00085 G4Alpha* aAlpha = G4Alpha::Alpha(); 00086 G4double sigma = 0; 00087 00088 if (energyIncident > 0.1*MeV && energyIncident < 100.*MeV && zTarget < 93 && zTarget > 5) { 00089 00090 if (massIncident == aProton->GetPDGMass()) 00091 { 00092 sigma = protonDataSetMap[zTarget]->FindValue(energyIncident/MeV); 00093 if (sigma !=0 && energyIncident > protonDataSetMap[zTarget]->GetEnergies(0).back()*MeV) return 0.; 00094 } 00095 else if (massIncident == aAlpha->GetPDGMass()) 00096 { 00097 sigma = alphaDataSetMap[zTarget]->FindValue(energyIncident/MeV); 00098 if (sigma !=0 && energyIncident > alphaDataSetMap[zTarget]->GetEnergies(0).back()*MeV) return 0.; 00099 } 00100 else 00101 { 00102 sigma = 0.; 00103 } 00104 } 00105 00106 // sigma is in internal units: it has been converted from 00107 // the input file in barns bt the EmDataset 00108 return sigma; 00109 }