60 0, 0, 6, 0,10,12,14,16, 0, 0,
61 0, 0, 0,28, 0, 0, 0,36, 0,40,
62 0, 0, 0, 0, 0,54, 0,58,63,64,
63 0,70, 0, 0, 0, 0, 0, 0, 0,90,
64 0, 0, 0, 0, 0, 0,107,106, 0,112,
65 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
66 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
67 0, 0, 0,180, 0, 0, 0, 0, 0, 0,
68 0,204, 0, 0, 0, 0, 0, 0, 0, 0,
71 0, 0, 7, 0,11,13,15,18, 0, 0,
72 0, 0, 0,30, 0, 0, 0,40, 0,48,
73 0, 0, 0, 0, 0,58, 0,64,65,70,
74 0,76, 0, 0, 0, 0, 0, 0, 0,96,
75 0, 0, 0, 0, 0, 0,109,116, 0,124,
76 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78 0, 0, 0,186, 0, 0, 0, 0, 0, 0,
79 0,208, 0, 0, 0, 0, 0, 0, 0, 0,
88 G4cout <<
"G4NeutronInelasticXS::G4NeutronInelasticXS Initialise for Z < "
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";
137 if(Z < 1 || Z >=
MAXZINEL) {
return xs; }
148 if(!pv) {
return xs; }
152 if(ekin <= e1) {
return xs; }
157 xs = pv->
Value(ekin);
167 G4cout <<
"ekin= " << ekin <<
", XSinel= " << xs <<
G4endl;
195 if(!pv) {
return xs; }
198 if(pviso) { pv = pviso; }
200 xs = pv->
Value(ekin);
225 for (
G4int j = 0; j<nIso; ++j) {
226 sum += abundVector[j];
228 iso = (*isoVector)[j];
235 for (
size_t i=0; i<
nmax; ++i) {
236 G4int A = (*isoVector)[i]->GetN();
241 for (
size_t j = 0; j<
nmax; ++j) {
243 iso = (*isoVector)[j];
257 G4cout <<
"G4NeutronCaptureXS::BuildPhysicsTable for "
263 <<
" only neutron is allowed";
264 G4Exception(
"G4NeutronInelasticXS::BuildPhysicsTable(..)",
"had012",
272 char* path = getenv(
"G4NEUTRONXSDATA");
281 for(
size_t i=0; i<numOfElm; ++i) {
298 const char* path = p;
302 path = getenv(
"G4NEUTRONXSDATA");
304 G4Exception(
"G4NeutronInelasticXS::Initialise(..)",
"had013",
306 "Environment variable G4NEUTRONXSDATA is not defined");
319 std::ostringstream ost;
320 ost << path <<
"/inelast" << Z ;
331 std::ostringstream ost1;
332 ost1 << path <<
"/cap" << Z <<
"_" <<
A;
339 for(
size_t j=0; j<i; ++j) {
356 if(sig2 > 0.) {
coeff[Z] = sig1/sig2; }
357 if(!dp) {
delete dynParticle; }
364 std::ifstream filein(ost.str().c_str());
366 if(!warn) {
return v; }
368 ed <<
"Data file <" << ost.str().c_str()
369 <<
"> is not opened!";
370 G4Exception(
"G4NeutronElasticXS::RetrieveVector(..)",
"had014",
374 G4cout <<
"File " << ost.str()
375 <<
" is opened by G4NeutronCaptureXS" <<
G4endl;
381 ed <<
"Data file <" << ost.str().c_str()
382 <<
"> is not retrieved!";
383 G4Exception(
"G4NeutronInelasticXS::RetrieveVector(..)",
"had015",
virtual ~G4NeutronInelasticXS()
size_t GetNumberOfIsotopes() const
void Initialise(G4int Z, G4DynamicParticle *dp=0, const char *=0)
virtual G4bool Retrieve(std::ifstream &fIn, G4bool ascii)
G4double GetMaxEnergy() const
std::vector< G4Isotope * > G4IsotopeVector
void AddComponent(G4int Z, G4int id, G4PhysicsVector *v)
std::ostringstream G4ExceptionDescription
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
G4PhysicsVector * GetComponentDataByID(G4int Z, G4int id)
G4PhysicsVector * GetElementData(G4int Z)
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
static const G4int amax[MAXZINEL]
const G4ParticleDefinition * proton
virtual G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *, const G4Material *)
size_t GetVectorLength() const
static G4NistManager * Instance()
const G4String & GetParticleName() const
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
void InitialiseForElement(G4int Z, G4PhysicsVector *v)
G4GLOB_DLL std::ostream G4cout
static size_t GetNumberOfElements()
std::vector< G4PhysicsVector * > work
static const G4int amin[MAXZINEL]
G4double * GetRelativeAbundanceVector() const
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso, const G4Element *elm, const G4Material *mat)
static G4Neutron * Neutron()
G4double Energy(size_t index) const
size_t GetNumberOfComponents(G4int Z)
G4double Value(G4double theEnergy, size_t &lastidx) const
static const G4double A[nN]
void SetKineticEnergy(G4double aEnergy)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double IsoCrossSection(G4double ekin, G4int Z, G4int A)
G4IsotopeVector * GetIsotopeVector() const
std::vector< G4double > temp
virtual void CrossSectionDescription(std::ostream &) const
G4HadronNucleonXsc * fNucleon
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *)
virtual G4Isotope * SelectIsotope(const G4Element *, G4double kinEnergy)
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4ParticleDefinition *)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
std::vector< G4double > coeff
void SetName(const G4String &nam)
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
void InitialiseForComponent(G4int Z, G4int nComponents=0)
G4PhysicsVector * RetrieveVector(std::ostringstream &in, G4bool warn)
G4double GetInelasticHadronNucleonXsc()
G4GlauberGribovCrossSection * ggXsection
G4double GetInelasticGlauberGribovXsc()