#include <G4LivermoreIonisationCrossSection.hh>
Inheritance diagram for G4LivermoreIonisationCrossSection:
Public Member Functions | |
G4LivermoreIonisationCrossSection (const G4String &nam="LivermorePIXE") | |
virtual | ~G4LivermoreIonisationCrossSection () |
void | Initialise () |
G4double | CrossSection (G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass=0.0, const G4Material *mat=0) |
std::vector< G4double > | GetCrossSection (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0.0, const G4Material *mat=0) |
std::vector< G4double > | Probabilities (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0, const G4Material *mat=0) |
Definition at line 55 of file G4LivermoreIonisationCrossSection.hh.
G4LivermoreIonisationCrossSection::G4LivermoreIonisationCrossSection | ( | const G4String & | nam = "LivermorePIXE" |
) |
Definition at line 47 of file G4LivermoreIonisationCrossSection.cc.
References Initialise(), and G4AtomicTransitionManager::Instance().
00048 : G4VhShellCrossSection(nam), crossSectionHandler(0) 00049 { 00050 fLowEnergyLimit = 10.0*eV; 00051 fHighEnergyLimit = 100.0*GeV; 00052 00053 transitionManager = G4AtomicTransitionManager::Instance(); 00054 00055 verboseLevel = 0; 00056 00057 Initialise(); 00058 }
G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection | ( | ) | [virtual] |
G4double G4LivermoreIonisationCrossSection::CrossSection | ( | G4int | Z, | |
G4AtomicShellEnumerator | shell, | |||
G4double | incidentEnergy, | |||
G4double | mass = 0.0 , |
|||
const G4Material * | mat = 0 | |||
) | [virtual] |
Implements G4VhShellCrossSection.
Definition at line 90 of file G4LivermoreIonisationCrossSection.cc.
References G4VCrossSectionHandler::FindValue(), CLHEP::detail::n, and G4AtomicTransitionManager::NumberOfShells().
Referenced by GetCrossSection().
00093 { 00094 G4double cross = 0.0; 00095 G4int n = G4int(shell); 00096 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z)); 00097 if(Z > 6 && Z < 93 && n < nmax && 00098 kinEnergy >= fLowEnergyLimit && kinEnergy <= fHighEnergyLimit) { 00099 //G4cout << "Z= " << Z << " n= " << n << " E(MeV)= " << kinEnergy/MeV << G4endl; 00100 cross = crossSectionHandler->FindValue(Z, kinEnergy, n); 00101 } 00102 return cross; 00103 }
std::vector< G4double > G4LivermoreIonisationCrossSection::GetCrossSection | ( | G4int | Z, | |
G4double | incidentEnergy, | |||
G4double | mass = 0.0 , |
|||
G4double | deltaEnergy = 0.0 , |
|||
const G4Material * | mat = 0 | |||
) | [virtual] |
Implements G4VhShellCrossSection.
Definition at line 108 of file G4LivermoreIonisationCrossSection.cc.
References CrossSection(), and G4AtomicTransitionManager::NumberOfShells().
Referenced by Probabilities().
00112 { 00113 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z)); 00114 std::vector<G4double> vec(nmax,0.0); 00115 for(G4int i=0; i<nmax; ++i) { 00116 vec[i] = CrossSection(Z, G4AtomicShellEnumerator(i), kinEnergy); 00117 } 00118 return vec; 00119 }
void G4LivermoreIonisationCrossSection::Initialise | ( | ) |
Definition at line 69 of file G4LivermoreIonisationCrossSection.cc.
References G4VCrossSectionHandler::Clear(), and G4VCrossSectionHandler::LoadShellData().
Referenced by G4LivermoreIonisationCrossSection().
00070 { 00071 const G4int binForFluo = 20; 00072 G4int nbin = G4int(std::log10(fHighEnergyLimit/fLowEnergyLimit) + 0.5); 00073 if(nbin <= 0) { nbin = 1; } 00074 nbin *= binForFluo; 00075 00076 // Data on shell ionisation x-sections 00077 if (crossSectionHandler) { 00078 crossSectionHandler->Clear(); 00079 delete crossSectionHandler; 00080 } 00081 00082 G4VDataSetAlgorithm* inter = new G4SemiLogInterpolation(); 00083 crossSectionHandler = 00084 new G4eCrossSectionHandler(inter,fLowEnergyLimit,fHighEnergyLimit,nbin); 00085 crossSectionHandler->LoadShellData("ioni/ion-ss-cs-"); 00086 //G4cout << "!!! G4LivermoreIonisationCrossSection::Initialise()" << G4endl; 00087 }
std::vector< G4double > G4LivermoreIonisationCrossSection::Probabilities | ( | G4int | Z, | |
G4double | incidentEnergy, | |||
G4double | mass = 0.0 , |
|||
G4double | deltaEnergy = 0 , |
|||
const G4Material * | mat = 0 | |||
) | [virtual] |
Implements G4VhShellCrossSection.
Definition at line 124 of file G4LivermoreIonisationCrossSection.cc.
References GetCrossSection(), and CLHEP::detail::n.
00129 { 00130 std::vector<G4double> vec = GetCrossSection(Z, kinEnergy); 00131 size_t n = vec.size(); 00132 size_t i; 00133 G4double sum = 0.0; 00134 for(i=0; i<n; ++i) { sum += vec[i]; } 00135 if(sum > 0.0) { 00136 sum = 1.0/sum; 00137 for(i=0; i<n; ++i) { vec[i] = vec[i]*sum; } 00138 } 00139 return vec; 00140 }