Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4LivermoreIonisationCrossSection Class Reference

#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< G4doubleGetCrossSection (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0.0, const G4Material *mat=0)
 
std::vector< G4doubleProbabilities (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0, const G4Material *mat=0)
 
- Public Member Functions inherited from G4VhShellCrossSection
 G4VhShellCrossSection (const G4String &xname="")
 
virtual ~G4VhShellCrossSection ()
 
G4int SelectRandomShell (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)
 
virtual std::vector< G4doubleGetCrossSection (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)=0
 
virtual G4double CrossSection (G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass, const G4Material *mat)=0
 
virtual std::vector< G4doubleProbabilities (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)=0
 
virtual void SetTotalCS (G4double)
 
const G4StringGetName () const
 

Detailed Description

Definition at line 55 of file G4LivermoreIonisationCrossSection.hh.

Constructor & Destructor Documentation

◆ G4LivermoreIonisationCrossSection()

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

Definition at line 47 of file G4LivermoreIonisationCrossSection.cc.

48 : G4VhShellCrossSection(nam), crossSectionHandler(0)
49{
50 fLowEnergyLimit = 10.0*eV;
51 fHighEnergyLimit = 100.0*GeV;
52
53 transitionManager = G4AtomicTransitionManager::Instance();
54
55 verboseLevel = 0;
56
57 Initialise();
58}
static G4AtomicTransitionManager * Instance()

◆ ~G4LivermoreIonisationCrossSection()

G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection ( )
virtual

Definition at line 62 of file G4LivermoreIonisationCrossSection.cc.

63{
64 delete crossSectionHandler;
65}

Member Function Documentation

◆ CrossSection()

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.

93{
94 G4double cross = 0.0;
95 G4int n = G4int(shell);
96 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
97 if(Z > 6 && Z < 93 && n < nmax &&
98 kinEnergy >= fLowEnergyLimit && kinEnergy <= fHighEnergyLimit) {
99 //G4cout << "Z= " << Z << " n= " << n << " E(MeV)= " << kinEnergy/MeV << G4endl;
100 cross = crossSectionHandler->FindValue(Z, kinEnergy, n);
101 }
102 return cross;
103}
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4double FindValue(G4int Z, G4double e) const

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 
)
virtual

Implements G4VhShellCrossSection.

Definition at line 108 of file G4LivermoreIonisationCrossSection.cc.

112{
113 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
114 std::vector<G4double> vec(nmax,0.0);
115 for(G4int i=0; i<nmax; ++i) {
116 vec[i] = CrossSection(Z, G4AtomicShellEnumerator(i), kinEnergy);
117 }
118 return vec;
119}
G4AtomicShellEnumerator
G4double CrossSection(G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass=0.0, const G4Material *mat=0)

Referenced by Probabilities().

◆ Initialise()

void G4LivermoreIonisationCrossSection::Initialise ( )

Definition at line 69 of file G4LivermoreIonisationCrossSection.cc.

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

Referenced by G4LivermoreIonisationCrossSection().

◆ Probabilities()

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.

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

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