Geant4 11.1.1
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) override
 
std::vector< G4doubleGetCrossSection (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0.0, const G4Material *mat=0) override
 
std::vector< G4doubleProbabilities (G4int Z, G4double incidentEnergy, G4double mass=0.0, G4double deltaEnergy=0, const G4Material *mat=0) override
 
G4LivermoreIonisationCrossSectionoperator= (const G4LivermoreIonisationCrossSection &right)=delete
 
 G4LivermoreIonisationCrossSection (const G4LivermoreIonisationCrossSection &)=delete
 
- 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
 
 G4VhShellCrossSection (const G4VhShellCrossSection &)=delete
 
G4VhShellCrossSectionoperator= (const G4VhShellCrossSection &right)=delete
 

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.

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

◆ ~G4LivermoreIonisationCrossSection()

G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection ( )
virtual

Definition at line 60 of file G4LivermoreIonisationCrossSection.cc.

61{
62 delete crossSectionHandler;
63}

◆ 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);
94 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
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

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{
110 G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
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

Referenced by Probabilities().

◆ 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
75 if (crossSectionHandler) {
76 crossSectionHandler->Clear();
77 delete crossSectionHandler;
78 }
79
81 crossSectionHandler =
82 new G4eCrossSectionHandler(inter,fLowEnergyLimit,fHighEnergyLimit,nbin);
83 crossSectionHandler->LoadShellData("ioni/ion-ss-cs-");
84 //G4cout << "!!! G4LivermoreIonisationCrossSection::Initialise()" << G4endl;
85}
void LoadShellData(const G4String &dataFile)

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

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