62 1, 4, 6, 9, 10, 12, 14, 16, 19, 20,
63 23, 24, 27, 28, 31, 32, 35, 36, 39, 40,
64 45, 46, 50, 50, 55, 54, 59, 58, 63, 64,
65 69, 70, 75, 0, 0, 0, 0, 0, 0, 90,
66 0, 92, 0, 0, 0, 102, 107, 106, 113, 112,
67 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
68 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
69 0, 0, 181, 180, 0, 0, 0, 192, 197, 0,
70 0, 204, 209, 0, 0, 0, 0, 0, 0, 0,
74 2, 4, 7, 9, 11, 13, 15, 18, 19, 22,
75 23, 26, 27, 30, 31, 34, 37, 40, 41, 48,
76 45, 50, 51, 54, 55, 58, 59, 64, 65, 70,
77 71, 76, 75, 0, 0, 0, 0, 0, 0, 96,
78 0, 100, 0, 0, 0, 110, 109, 116, 115, 124,
79 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81 0, 0, 181, 186, 0, 0, 0, 198, 197, 0,
82 0, 208, 209, 0, 0, 0, 0, 0, 0, 0,
90 #ifdef G4MULTITHREADED
100 G4cout <<
"G4NeutronInelasticXS::G4NeutronInelasticXS Initialise for Z < "
117 outFile <<
"G4NeutronInelasticXS calculates the neutron inelastic scattering\n"
118 <<
"cross section on nuclei using data from the high precision\n"
119 <<
"neutron database. These data are simplified and smoothed over\n"
120 <<
"the resonance region in order to reduce CPU time.\n"
121 <<
"For high energy Glauber-Gribov cross section model is used\n";
149 if(!pv) {
return xs; }
154 if(ekin <= pv->Energy(0)) {
return xs; }
156 if(ekin <= pv->GetMaxEnergy()) {
199 if(!pv) {
return xs; }
202 if(ekin <= pv->Energy(0)) {
return xs; }
206 if(ekin <= emax &&
amin[Z] > 0 && A >=
amin[Z] && A <=
amax[Z]) {
207 auto pviso =
data->GetComponentDataByIndex(Z, A -
amin[Z]);
209 xs = pviso->LogVectorValue(ekin, logekin);
211 G4cout <<
"G4NeutronInelasticXS::IsoXS: Ekin(MeV)= "
214 <<
" Z= " << Z <<
" A= " << A <<
G4endl;
222 xs = pv->LogVectorValue(ekin, logekin);
229 G4cout <<
"G4NeutronInelasticXS::IsoXS: Z= " << Z <<
" A= " << A
243 if(1 == nIso) {
return iso; }
256 for (j=0; j<nIso; ++j) {
257 sum += abundVector[j];
268 if(nn < nIso) {
temp.resize(nIso, 0.); }
270 for (j=0; j<nIso; ++j) {
278 for (j = 0; j<nIso; ++j) {
291 G4cout <<
"G4NeutronInelasticXS::BuildPhysicsTable for "
297 <<
" only neutron is allowed";
298 G4Exception(
"G4NeutronInelasticXS::BuildPhysicsTable(..)",
"had012",
304 #ifdef G4MULTITHREADED
310 data->SetName(
"NeutronInelastic");
312 #ifdef G4MULTITHREADED
323 size_t numOfCouples = theCoupleTable->GetTableSize();
324 for(
size_t j=0; j<numOfCouples; ++j) {
325 auto mat = theCoupleTable->GetMaterialCutsCouple(j)->GetMaterial();
326 auto elmVec =
mat->GetElementVector();
327 size_t numOfElem =
mat->GetNumberOfElements();
328 for (
size_t ie = 0; ie < numOfElem; ++ie) {
341 pv =
data->GetElementData(Z);
351 char* path = std::getenv(
"G4PARTICLEXSDATA");
353 std::ostringstream ost;
354 ost << path <<
"/neutron/inel";
357 G4Exception(
"G4NeutronInelasticXS::Initialise(..)",
"had013",
359 "Environment variable G4PARTICLEXSDATA is not defined");
367 #ifdef G4MULTITHREADED
369 if(!
data->GetElementData(Z)) {
372 #ifdef G4MULTITHREADED
380 if(
data->GetElementData(Z)) {
return; }
383 std::ostringstream ost;
386 data->InitialiseForElement(Z, v);
395 data->InitialiseForComponent(Z, nmax);
398 std::ostringstream ost1;
401 data->AddComponent(Z, A, v1);
411 if(sig2 > 0.) {
coeff[
Z] = sig1/sig2; }
418 std::ifstream filein(ost.str().c_str());
422 ed <<
"Data file <" << ost.str().c_str()
423 <<
"> is not opened!";
424 G4Exception(
"G4NeutronInelasticXS::RetrieveVector(..)",
"had014",
429 G4cout <<
"File " << ost.str()
430 <<
" is opened by G4NeutronInelasticXS" <<
G4endl;
436 ed <<
"Data file <" << ost.str().c_str()
437 <<
"> is not retrieved!";
438 G4Exception(
"G4NeutronInelasticXS::RetrieveVector(..)",
"had015",