Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4LivermoreIonisationCrossSection Class Reference

#include <G4LivermoreIonisationCrossSection.hh>

Inheritance diagram for G4LivermoreIonisationCrossSection:
Collaboration 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 void SetTotalCS (G4double)
 
const G4StringGetName () const
 

Detailed Description

Definition at line 55 of file G4LivermoreIonisationCrossSection.hh.

Constructor & Destructor Documentation

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 }
G4VhShellCrossSection(const G4String &xname="")
static constexpr double eV
Definition: G4SIunits.hh:215
static constexpr double GeV
Definition: G4SIunits.hh:217
static G4AtomicTransitionManager * Instance()

Here is the call graph for this function:

G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection ( )
virtual

Definition at line 62 of file G4LivermoreIonisationCrossSection.cc.

63 {
64  delete crossSectionHandler;
65 }

Member Function Documentation

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 }
int G4int
Definition: G4Types.hh:78
G4double FindValue(G4int Z, G4double e) const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

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 }
int G4int
Definition: G4Types.hh:78
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double CrossSection(G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass=0.0, const G4Material *mat=0)
G4AtomicShellEnumerator

Here is the call graph for this function:

Here is the caller graph for this function:

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 }
int G4int
Definition: G4Types.hh:78
void LoadShellData(const G4String &dataFile)

Here is the call graph for this function:

Here is the caller graph for this function:

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)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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