Geant4 10.7.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 54 of file G4LivermoreIonisationCrossSection.hh.

Constructor & Destructor Documentation

◆ G4LivermoreIonisationCrossSection()

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

Definition at line 46 of file G4LivermoreIonisationCrossSection.cc.

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

◆ ~G4LivermoreIonisationCrossSection()

G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection ( )
virtual

Definition at line 61 of file G4LivermoreIonisationCrossSection.cc.

62{
63 delete crossSectionHandler;
64}

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 89 of file G4LivermoreIonisationCrossSection.cc.

92{
93 G4double cross = 0.0;
94 G4int n = G4int(shell);
95 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
96 if(Z > 6 && Z < 93 && n < nmax &&
97 kinEnergy >= fLowEnergyLimit && kinEnergy <= fHighEnergyLimit) {
98 //G4cout << "Z= " << Z << " n= " << n << " E(MeV)= " << kinEnergy/MeV << G4endl;
99 cross = crossSectionHandler->FindValue(Z, kinEnergy, n);
100 }
101 return cross;
102}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
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 107 of file G4LivermoreIonisationCrossSection.cc.

111{
112 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
113 std::vector<G4double> vec(nmax,0.0);
114 for(G4int i=0; i<nmax; ++i) {
115 vec[i] = CrossSection(Z, G4AtomicShellEnumerator(i), kinEnergy);
116 }
117 return vec;
118}
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 68 of file G4LivermoreIonisationCrossSection.cc.

69{
70 const G4int binForFluo = 20;
71 G4int nbin = G4int(std::log10(fHighEnergyLimit/fLowEnergyLimit) + 0.5);
72 if(nbin <= 0) { nbin = 1; }
73 nbin *= binForFluo;
74
75 // Data on shell ionisation x-sections
76 if (crossSectionHandler) {
77 crossSectionHandler->Clear();
78 delete crossSectionHandler;
79 }
80
82 crossSectionHandler =
83 new G4eCrossSectionHandler(inter,fLowEnergyLimit,fHighEnergyLimit,nbin);
84 crossSectionHandler->LoadShellData("ioni/ion-ss-cs-");
85 //G4cout << "!!! G4LivermoreIonisationCrossSection::Initialise()" << G4endl;
86}
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 123 of file G4LivermoreIonisationCrossSection.cc.

128{
129 std::vector<G4double> vec = GetCrossSection(Z, kinEnergy);
130 size_t n = vec.size();
131 size_t i;
132 G4double sum = 0.0;
133 for(i=0; i<n; ++i) { sum += vec[i]; }
134 if(sum > 0.0) {
135 sum = 1.0/sum;
136 for(i=0; i<n; ++i) { vec[i] = vec[i]*sum; }
137 }
138 return vec;
139}
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: