61 0, 0, 6, 0,10,12,14,16, 0, 0,
62 0, 0, 0,28, 0, 0, 0,36, 0,40,
63 0, 0, 0, 0, 0,54, 0,58,63,64,
64 0,70, 0, 0, 0, 0, 0, 0, 0,90,
65 0, 0, 0, 0, 0, 0,107,106, 0,112,
66 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
67 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
68 0, 0, 0,180, 0, 0, 0, 0, 0, 0,
69 0,204, 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 7, 0,11,13,15,18, 0, 0,
74 0, 0, 0,30, 0, 0, 0,40, 0,48,
75 0, 0, 0, 0, 0,58, 0,64,65,70,
76 0,76, 0, 0, 0, 0, 0, 0, 0,96,
77 0, 0, 0, 0, 0, 0,109,116, 0,124,
78 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80 0, 0, 0,186, 0, 0, 0, 0, 0, 0,
81 0,208, 0, 0, 0, 0, 0, 0, 0, 0,
92 G4cout <<
"G4NeutronCaptureXS::G4NeutronCaptureXS: Initialise for Z < "
105 outFile <<
"G4NeutronCaptureXS calculates the neutron capture cross sections\n"
106 <<
"on nuclei using data from the high precision neutron database.\n"
107 <<
"These data are simplified and smoothed over the resonance region\n"
108 <<
"in order to reduce CPU time. G4NeutronCaptureXS is valid up to\n"
109 <<
"20 MeV for all targets through U.\n";
141 if(!pv) {
return xs; }
145 if(ekin < e1) { xs = (*pv)[0]*std::sqrt(e1/ekin); }
146 else if(ekin <= pv->GetMaxEnergy()) { xs = pv->
Value(ekin); }
186 if(ekin < e1) { xs = (*pv)[1]*std::sqrt(e1/ekin); }
187 else if(ekin <= pv->GetMaxEnergy()) { xs = pv->
Value(ekin); }
191 G4cout <<
"G4NeutronCaptureXS::IsoCrossSection: Ekin(MeV)= " << ekin/
MeV
192 <<
" xs(b)= " << xs/
barn
193 <<
" Z= " << Z <<
" A= " << A <<
G4endl;
216 for (j = 0; j<nIso; ++j) {
217 sum += abundVector[j];
219 iso = (*isoVector)[j];
228 if(nn < nIso) {
temp.resize(nIso, 0.); }
230 for (j=0; j<nIso; ++j) {
232 (*isoVector)[j]->GetN());
236 for (j = 0; j<nIso; ++j) {
238 iso = (*isoVector)[j];
251 G4cout <<
"G4NeutronCaptureXS::BuildPhysicsTable for "
257 <<
" only neutron is allowed";
258 G4Exception(
"G4NeutronCaptureXS::BuildPhysicsTable(..)",
"had012",
275 char* path = getenv(
"G4NEUTRONXSDATA");
281 for(
size_t i=0; i<numOfElm; ++i) {
297 const char* path = p;
301 path = getenv(
"G4NEUTRONXSDATA");
304 "Environment variable G4NEUTRONXSDATA is not defined");
310 std::ostringstream ost;
311 ost << path <<
"/cap" << Z ;
321 std::ostringstream ost1;
322 ost1 << path <<
"/cap" << Z <<
"_" <<
A;
333 std::ifstream filein(ost.str().c_str());
337 ed <<
"Data file <" << ost.str().c_str()
338 <<
"> is not opened!";
339 G4Exception(
"G4NeutronCaptureXS::RetrieveVector(..)",
"had014",
344 G4cout <<
"File " << ost.str()
345 <<
" is opened by G4NeutronCaptureXS" <<
G4endl;
351 ed <<
"Data file <" << ost.str().c_str()
352 <<
"> is not retrieved!";
353 G4Exception(
"G4NeutronCaptureXS::RetrieveVector(..)",
"had015",
size_t GetNumberOfIsotopes() const
virtual ~G4NeutronCaptureXS()
static const G4int amin[MAXZCAPTURE]
G4PhysicsVector * RetrieveVector(std::ostringstream &in, G4bool warn)
virtual G4bool Retrieve(std::ifstream &fIn, G4bool ascii)
std::vector< G4Isotope * > G4IsotopeVector
void AddComponent(G4int Z, G4int id, G4PhysicsVector *v)
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat=0)
std::ostringstream G4ExceptionDescription
G4double GetKineticEnergy() const
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso, const G4Element *elm, const G4Material *mat)
G4PhysicsVector * GetComponentDataByID(G4int Z, G4int id)
std::vector< G4double > temp
G4PhysicsVector * GetElementData(G4int Z)
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *)
const G4String & GetParticleName() const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
void InitialiseForElement(G4int Z, G4PhysicsVector *v)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
static size_t GetNumberOfElements()
void Initialise(G4int Z, const char *=0)
G4double * GetRelativeAbundanceVector() const
G4double Energy(size_t index) const
G4double Value(G4double theEnergy, size_t &lastidx) const
G4_DECLARE_XS_FACTORY(G4NeutronCaptureXS)
G4double IsoCrossSection(G4double ekin, G4int Z, G4int A)
virtual void CrossSectionDescription(std::ostream &) const
virtual G4Isotope * SelectIsotope(const G4Element *, G4double kinEnergy)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static const G4double emax
virtual G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *, const G4Material *)
G4IsotopeVector * GetIsotopeVector() const
static const G4int amax[MAXZCAPTURE]
void SetName(const G4String &nam)
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
void InitialiseForComponent(G4int Z, G4int nComponents=0)
static G4ElementData * data