#include <G4NeutronInelasticXS.hh>
|
| G4NeutronInelasticXS () |
|
virtual | ~G4NeutronInelasticXS () |
|
virtual G4bool | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *) |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *, const G4Material *) |
|
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=0) |
|
virtual G4double | GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso, const G4Element *elm, const G4Material *mat) |
|
virtual G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
| G4VCrossSectionDataSet (const G4String &nam="") |
|
virtual | ~G4VCrossSectionDataSet () |
|
G4double | GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
G4double | ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
|
virtual G4int | GetVerboseLevel () const |
|
virtual void | SetVerboseLevel (G4int value) |
|
G4double | GetMinKinEnergy () const |
|
void | SetMinKinEnergy (G4double value) |
|
G4double | GetMaxKinEnergy () const |
|
void | SetMaxKinEnergy (G4double value) |
|
const G4String & | GetName () const |
|
Definition at line 62 of file G4NeutronInelasticXS.hh.
G4NeutronInelasticXS::G4NeutronInelasticXS |
( |
| ) |
|
G4NeutronInelasticXS::~G4NeutronInelasticXS |
( |
| ) |
|
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 253 of file G4NeutronInelasticXS.cc.
References FatalException, G4cout, G4endl, G4Exception(), G4lrint(), G4Element::GetElementTable(), G4Element::GetNumberOfElements(), G4ParticleDefinition::GetParticleName(), MAXZINEL, G4Neutron::Neutron(), and G4VCrossSectionDataSet::verboseLevel.
255 if(isInitialized) {
return; }
257 G4cout <<
"G4NeutronCaptureXS::BuildPhysicsTable for "
263 <<
" only neutron is allowed";
264 G4Exception(
"G4NeutronInelasticXS::BuildPhysicsTable(..)",
"had012",
268 isInitialized =
true;
272 char* path = getenv(
"G4NEUTRONXSDATA");
281 for(
size_t i=0; i<numOfElm; ++i) {
287 if(!
data.GetElementData(Z)) { Initialise(Z, dynParticle, path); }
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
static size_t GetNumberOfElements()
static G4Neutron * Neutron()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
const XML_Char const XML_Char * data
void G4NeutronInelasticXS::CrossSectionDescription |
( |
std::ostream & |
outFile | ) |
const |
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 105 of file G4NeutronInelasticXS.cc.
107 outFile <<
"G4NeutronInelasticXS calculates the neutron inelastic scattering\n"
108 <<
"cross section on nuclei using data from the high precision\n"
109 <<
"neutron database. These data are simplified and smoothed over\n"
110 <<
"the resonance region in order to reduce CPU time.\n"
111 <<
"G4NeutronInelasticXS is valid for energies up to 20 MeV, for\n"
112 <<
"nuclei through U.\n";
Reimplemented from G4VCrossSectionDataSet.
Definition at line 131 of file G4NeutronInelasticXS.cc.
References G4PhysicsVector::Energy(), G4cout, G4endl, G4lrint(), G4HadronNucleonXsc::GetHadronNucleonXscPDG(), G4GlauberGribovCrossSection::GetInelasticGlauberGribovXsc(), G4HadronNucleonXsc::GetInelasticHadronNucleonXsc(), G4GlauberGribovCrossSection::GetIsoCrossSection(), G4DynamicParticle::GetKineticEnergy(), G4PhysicsVector::GetMaxEnergy(), G4NistManager::Instance(), MAXZINEL, G4PhysicsVector::Value(), and G4VCrossSectionDataSet::verboseLevel.
137 if(Z < 1 || Z >=
MAXZINEL) {
return xs; }
147 pv =
data.GetElementData(Z);
148 if(!pv) {
return xs; }
152 if(ekin <= e1) {
return xs; }
157 xs = pv->
Value(ekin);
167 G4cout <<
"ekin= " << ekin <<
", XSinel= " << xs <<
G4endl;
G4double GetMaxEnergy() const
G4double GetKineticEnergy() const
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
G4double Energy(size_t index) const
G4double Value(G4double theEnergy, size_t &lastidx) const
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4ParticleDefinition *)
const XML_Char const XML_Char * data
G4double GetInelasticHadronNucleonXsc()
G4double GetInelasticGlauberGribovXsc()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 208 of file G4NeutronInelasticXS.cc.
References G4lrint(), G4UniformRand, G4Element::GetIsotopeVector(), G4Element::GetNumberOfIsotopes(), G4Element::GetRelativeAbundanceVector(), G4Element::GetZ(), MAXZINEL, and nmax.
225 for (
G4int j = 0; j<nIso; ++j) {
226 sum += abundVector[j];
228 iso = (*isoVector)[j];
233 size_t nmax =
data.GetNumberOfComponents(Z);
234 if(temp.size() <
nmax) { temp.resize(nmax,0.0); }
235 for (
size_t i=0; i<
nmax; ++i) {
236 G4int A = (*isoVector)[i]->GetN();
237 sum += abundVector[i]*IsoCrossSection(kinEnergy, Z, A);
241 for (
size_t j = 0; j<
nmax; ++j) {
243 iso = (*isoVector)[j];
size_t GetNumberOfIsotopes() const
std::vector< G4Isotope * > G4IsotopeVector
G4double * GetRelativeAbundanceVector() const
G4IsotopeVector * GetIsotopeVector() const
const XML_Char const XML_Char * data
The documentation for this class was generated from the following files: