G4LivermoreIonisationCrossSection Class Reference

#include <G4LivermoreIonisationCrossSection.hh>

Inheritance diagram for G4LivermoreIonisationCrossSection:

G4VhShellCrossSection

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)

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.

References Initialise(), and G4AtomicTransitionManager::Instance().

00048                        : G4VhShellCrossSection(nam), crossSectionHandler(0)
00049 {
00050   fLowEnergyLimit  = 10.0*eV;
00051   fHighEnergyLimit = 100.0*GeV;
00052 
00053   transitionManager = G4AtomicTransitionManager::Instance();
00054 
00055   verboseLevel = 0;
00056   
00057   Initialise();
00058 }

G4LivermoreIonisationCrossSection::~G4LivermoreIonisationCrossSection (  )  [virtual]

Definition at line 62 of file G4LivermoreIonisationCrossSection.cc.

00063 {
00064   delete crossSectionHandler;
00065 }


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.

References G4VCrossSectionHandler::FindValue(), CLHEP::detail::n, and G4AtomicTransitionManager::NumberOfShells().

Referenced by GetCrossSection().

00093 {
00094   G4double cross = 0.0;
00095   G4int n = G4int(shell);
00096   G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
00097   if(Z > 6 && Z < 93 && n < nmax && 
00098      kinEnergy >= fLowEnergyLimit && kinEnergy <= fHighEnergyLimit) {
00099     //G4cout << "Z= " << Z << "  n= " << n << " E(MeV)= " << kinEnergy/MeV << G4endl;
00100     cross = crossSectionHandler->FindValue(Z, kinEnergy, n);
00101   }
00102   return cross;
00103 }

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.

References CrossSection(), and G4AtomicTransitionManager::NumberOfShells().

Referenced by Probabilities().

00112 {
00113   G4int nmax = std::min(9,transitionManager->NumberOfShells(Z));
00114   std::vector<G4double> vec(nmax,0.0); 
00115   for(G4int i=0; i<nmax; ++i) {
00116     vec[i] = CrossSection(Z, G4AtomicShellEnumerator(i), kinEnergy); 
00117   }
00118   return vec;
00119 }

void G4LivermoreIonisationCrossSection::Initialise (  ) 

Definition at line 69 of file G4LivermoreIonisationCrossSection.cc.

References G4VCrossSectionHandler::Clear(), and G4VCrossSectionHandler::LoadShellData().

Referenced by G4LivermoreIonisationCrossSection().

00070 {
00071   const G4int binForFluo = 20;
00072   G4int nbin = G4int(std::log10(fHighEnergyLimit/fLowEnergyLimit) + 0.5);
00073   if(nbin <= 0) { nbin = 1; }
00074   nbin *= binForFluo;
00075 
00076   // Data on shell ionisation x-sections
00077   if (crossSectionHandler) { 
00078     crossSectionHandler->Clear();
00079     delete crossSectionHandler; 
00080   }
00081 
00082   G4VDataSetAlgorithm* inter = new G4SemiLogInterpolation();
00083   crossSectionHandler = 
00084     new G4eCrossSectionHandler(inter,fLowEnergyLimit,fHighEnergyLimit,nbin);
00085   crossSectionHandler->LoadShellData("ioni/ion-ss-cs-");
00086   //G4cout << "!!!  G4LivermoreIonisationCrossSection::Initialise()" << G4endl;
00087 }

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.

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

00129 {
00130   std::vector<G4double> vec = GetCrossSection(Z, kinEnergy);
00131   size_t n = vec.size();
00132   size_t i;
00133   G4double sum = 0.0;
00134   for(i=0; i<n; ++i) { sum += vec[i]; }
00135   if(sum > 0.0) { 
00136     sum = 1.0/sum; 
00137     for(i=0; i<n; ++i) { vec[i] = vec[i]*sum; }
00138   }
00139   return vec;
00140 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:25 2013 for Geant4 by  doxygen 1.4.7