Geant4-11
Public Member Functions | Private Attributes
G4LivermoreIonisationCrossSection Class Reference

#include <G4LivermoreIonisationCrossSection.hh>

Inheritance diagram for G4LivermoreIonisationCrossSection:
G4VhShellCrossSection

Public Member Functions

G4double CrossSection (G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass=0.0, const G4Material *mat=0) override
 
 G4LivermoreIonisationCrossSection (const G4LivermoreIonisationCrossSection &)=delete
 
 G4LivermoreIonisationCrossSection (const G4String &nam="LivermorePIXE")
 
std::vector< G4doubleGetCrossSection (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0.0, const G4Material *mat=0) override
 
const G4StringGetName () const
 
void Initialise ()
 
G4LivermoreIonisationCrossSectionoperator= (const G4LivermoreIonisationCrossSection &right)=delete
 
std::vector< G4doubleProbabilities (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0, const G4Material *mat=0) override
 
G4int SelectRandomShell (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)
 
virtual void SetTotalCS (G4double)
 
virtual ~G4LivermoreIonisationCrossSection ()
 

Private Attributes

G4VCrossSectionHandlercrossSectionHandler
 
G4double fHighEnergyLimit
 
G4double fLowEnergyLimit
 
G4String name
 
const G4AtomicTransitionManagertransitionManager
 
G4int verboseLevel
 

Detailed Description

Definition at line 54 of file G4LivermoreIonisationCrossSection.hh.

Constructor & Destructor Documentation

◆ G4LivermoreIonisationCrossSection() [1/2]

G4LivermoreIonisationCrossSection::G4LivermoreIonisationCrossSection ( const G4String nam = "LivermorePIXE")
explicit

Definition at line 46 of file G4LivermoreIonisationCrossSection.cc.

References eV, fHighEnergyLimit, fLowEnergyLimit, GeV, Initialise(), G4AtomicTransitionManager::Instance(), transitionManager, and verboseLevel.

◆ ~G4LivermoreIonisationCrossSection()

G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection ( )
virtual

Definition at line 60 of file G4LivermoreIonisationCrossSection.cc.

61{
63}

References crossSectionHandler.

◆ G4LivermoreIonisationCrossSection() [2/2]

G4LivermoreIonisationCrossSection::G4LivermoreIonisationCrossSection ( const G4LivermoreIonisationCrossSection )
delete

Member Function Documentation

◆ CrossSection()

G4double G4LivermoreIonisationCrossSection::CrossSection ( G4int  Z,
G4AtomicShellEnumerator  shell,
G4double  incidentEnergy,
G4double  mass = 0.0,
const G4Material mat = 0 
)
overridevirtual

Implements G4VhShellCrossSection.

Definition at line 88 of file G4LivermoreIonisationCrossSection.cc.

91{
92 G4double cross = 0.0;
93 G4int n = G4int(shell);
95 if(Z > 6 && Z < 93 && n < nmax &&
96 kinEnergy >= fLowEnergyLimit && kinEnergy <= fHighEnergyLimit) {
97 cross = crossSectionHandler->FindValue(Z, kinEnergy, n);
98 }
99 return cross;
100}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
G4double FindValue(G4int Z, G4double e) const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References crossSectionHandler, fHighEnergyLimit, G4VCrossSectionHandler::FindValue(), fLowEnergyLimit, G4INCL::Math::min(), CLHEP::detail::n, G4AtomicTransitionManager::NumberOfShells(), transitionManager, and Z.

Referenced by GetCrossSection().

◆ GetCrossSection()

std::vector< G4double > G4LivermoreIonisationCrossSection::GetCrossSection ( G4int  Z,
G4double  incidentEnergy,
G4double  mass = 0.0,
G4double  deltaEnergy = 0.0,
const G4Material mat = 0 
)
overridevirtual

Implements G4VhShellCrossSection.

Definition at line 105 of file G4LivermoreIonisationCrossSection.cc.

109{
111 std::vector<G4double> vec(nmax,0.0);
112 for(G4int i=0; i<nmax; ++i) {
113 vec[i] = CrossSection(Z, G4AtomicShellEnumerator(i), kinEnergy);
114 }
115 return vec;
116}
G4AtomicShellEnumerator
G4double CrossSection(G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass=0.0, const G4Material *mat=0) override

References CrossSection(), G4INCL::Math::min(), G4AtomicTransitionManager::NumberOfShells(), transitionManager, and Z.

Referenced by Probabilities().

◆ GetName()

const G4String & G4VhShellCrossSection::GetName ( ) const
inlineinherited

Definition at line 102 of file G4VhShellCrossSection.hh.

103{
104 return name;
105}

References G4VhShellCrossSection::name.

Referenced by G4UAtomicDeexcitation::InitialiseForNewRun().

◆ Initialise()

void G4LivermoreIonisationCrossSection::Initialise ( )

Definition at line 67 of file G4LivermoreIonisationCrossSection.cc.

68{
69 const G4int binForFluo = 20;
70 G4int nbin = G4int(std::log10(fHighEnergyLimit/fLowEnergyLimit) + 0.5);
71 if(nbin <= 0) { nbin = 1; }
72 nbin *= binForFluo;
73
74 // Data on shell ionisation x-sections
77 delete crossSectionHandler;
78 }
79
83 crossSectionHandler->LoadShellData("ioni/ion-ss-cs-");
84 //G4cout << "!!! G4LivermoreIonisationCrossSection::Initialise()" << G4endl;
85}
void LoadShellData(const G4String &dataFile)

References G4VCrossSectionHandler::Clear(), crossSectionHandler, fHighEnergyLimit, fLowEnergyLimit, and G4VCrossSectionHandler::LoadShellData().

Referenced by G4LivermoreIonisationCrossSection().

◆ operator=()

G4LivermoreIonisationCrossSection & G4LivermoreIonisationCrossSection::operator= ( const G4LivermoreIonisationCrossSection right)
delete

◆ Probabilities()

std::vector< G4double > G4LivermoreIonisationCrossSection::Probabilities ( G4int  Z,
G4double  incidentEnergy,
G4double  mass = 0.0,
G4double  deltaEnergy = 0,
const G4Material mat = 0 
)
overridevirtual

Implements G4VhShellCrossSection.

Definition at line 121 of file G4LivermoreIonisationCrossSection.cc.

126{
127 std::vector<G4double> vec = GetCrossSection(Z, kinEnergy);
128 size_t n = vec.size();
129 size_t i;
130 G4double sum = 0.0;
131 for(i=0; i<n; ++i) { sum += vec[i]; }
132 if(sum > 0.0) {
133 sum = 1.0/sum;
134 for(i=0; i<n; ++i) { vec[i] = vec[i]*sum; }
135 }
136 return vec;
137}
std::vector< G4double > GetCrossSection(G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0.0, const G4Material *mat=0) override

References GetCrossSection(), CLHEP::detail::n, and Z.

◆ SelectRandomShell()

G4int G4VhShellCrossSection::SelectRandomShell ( G4int  Z,
G4double  incidentEnergy,
G4double  mass,
G4double  deltaEnergy,
const G4Material mat 
)
inherited

Definition at line 63 of file G4VhShellCrossSection.cc.

70{
71 std::vector<G4double> p =
72 Probabilities(Z,incidentEnergy,mass,deltaEnergy,mat);
73 G4int shell = -1;
74 size_t nShells = p.size();
76 for (size_t i=0; i<nShells; i++) {
77
78 if (p[i] >= q) {
79 shell = i;
80 break;
81 }
82 q -= p[i];
83 }
84 return shell;
85}
#define G4UniformRand()
Definition: Randomize.hh:52
virtual std::vector< G4double > Probabilities(G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)=0

References G4UniformRand, G4VhShellCrossSection::Probabilities(), and Z.

◆ SetTotalCS()

void G4VhShellCrossSection::SetTotalCS ( G4double  )
virtualinherited

Reimplemented in G4empCrossSection, and G4teoCrossSection.

Definition at line 58 of file G4VhShellCrossSection.cc.

59{}

Field Documentation

◆ crossSectionHandler

G4VCrossSectionHandler* G4LivermoreIonisationCrossSection::crossSectionHandler
private

◆ fHighEnergyLimit

G4double G4LivermoreIonisationCrossSection::fHighEnergyLimit
private

◆ fLowEnergyLimit

G4double G4LivermoreIonisationCrossSection::fLowEnergyLimit
private

◆ name

G4String G4VhShellCrossSection::name
privateinherited

◆ transitionManager

const G4AtomicTransitionManager* G4LivermoreIonisationCrossSection::transitionManager
private

◆ verboseLevel

G4int G4LivermoreIonisationCrossSection::verboseLevel
private

The documentation for this class was generated from the following files: