60 1, 4, 6, 9, 10, 12, 14, 16, 19, 20,
61 23, 24, 27, 28, 31, 32, 35, 36, 39, 40,
62 45, 46, 50, 50, 55, 54, 59, 58, 63, 64,
63 69, 70, 75, 0, 0, 0, 0, 0, 0, 90,
64 0, 92, 0, 0, 0, 102, 107, 106, 113, 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, 181, 180, 0, 0, 0, 192, 197, 0,
68 0, 204, 209, 0, 0, 0, 0, 0, 0, 0,
72 2, 4, 7, 9, 11, 13, 15, 18, 19, 22,
73 23, 26, 27, 30, 31, 34, 37, 40, 41, 48,
74 45, 50, 51, 54, 55, 58, 59, 64, 65, 70,
75 71, 76, 75, 0, 0, 0, 0, 0, 0, 96,
76 0, 100, 0, 0, 0, 110, 109, 116, 115, 124,
77 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79 0, 0, 181, 186, 0, 0, 0, 198, 197, 0,
80 0, 208, 209, 0, 0, 0, 0, 0, 0, 0,
88 #ifdef G4MULTITHREADED
101 G4Exception(
"G4ParticleInelasticXS::G4ParticleInelasticXS(..)",
"had015",
107 G4cout <<
"G4ParticleInelasticXS::G4ParticleInelasticXS for "
110 if(particleName ==
"neutron" || particleName ==
"proton") {
128 outFile <<
"G4ParticleInelasticXS calculates n, p, d, t, he3, he4 inelastic \n"
129 <<
"cross section on nuclei using data from the high precision\n"
130 <<
"neutron database. These data are simplified and smoothed over\n"
131 <<
"the resonance region in order to reduce CPU time.\n"
132 <<
"For high energy Glauber-Gribov cross section model is used\n";
160 if(!pv) {
return xs; }
165 if(ekin <= pv->Energy(0)) {
return xs; }
167 if(ekin <= pv->GetMaxEnergy()) {
181 <<
" xs(bn)= " << xs/
CLHEP::barn <<
" element data for "
219 if(!pv) {
return xs; }
222 if(ekin <= pv->Energy(0)) {
return xs; }
226 if(ekin <= emax &&
amin[Z]>0 && A >=
amin[Z] && A <=
amax[Z]) {
227 auto pviso =
data->GetComponentDataByIndex(Z, A -
amin[Z]);
229 xs = pviso->LogVectorValue(ekin, logE);
231 G4cout <<
"G4ParticleInelasticXS::IsoXS: for "
234 <<
" Z= " << Z <<
" A= " << A <<
G4endl;
241 xs = pv->LogVectorValue(ekin, logE);
254 <<
" Target Z= " << Z <<
" A= " << A
268 if(1 == nIso) {
return iso; }
281 for (j=0; j<nIso; ++j) {
282 sum += abundVector[j];
292 if(nn < nIso) {
temp.resize(nIso, 0.); }
294 for (j=0; j<nIso; ++j) {
302 for (j=0; j<nIso; ++j) {
315 G4cout <<
"G4ParticleInelasticXS::BuildPhysicsTable for "
322 G4Exception(
"G4ParticleInelasticXS::BuildPhysicsTable(..)",
"had012",
328 #ifdef G4MULTITHREADED
335 #ifdef G4MULTITHREADED
346 size_t numOfCouples = theCoupleTable->GetTableSize();
347 for(
size_t j=0; j<numOfCouples; ++j) {
348 auto mat = theCoupleTable->GetMaterialCutsCouple(j)->GetMaterial();
349 auto elmVec =
mat->GetElementVector();
350 size_t numOfElem =
mat->GetNumberOfElements();
351 for (
size_t ie = 0; ie < numOfElem; ++ie) {
364 pv =
data->GetElementData(Z);
374 char* path = std::getenv(
"G4PARTICLEXSDATA");
376 std::ostringstream ost;
380 G4Exception(
"G4NeutronInelasticXS::Initialise(..)",
"had013",
382 "Environment variable G4PARTICLEXSDATA is not defined");
390 #ifdef G4MULTITHREADED
392 if(!
data->GetElementData(Z)) {
395 #ifdef G4MULTITHREADED
403 if(
data->GetElementData(Z)) {
return; }
406 std::ostringstream ost;
409 data->InitialiseForElement(Z, v);
418 data->InitialiseForComponent(Z, nmax);
421 std::ostringstream ost1;
424 data->AddComponent(Z, A, v1);
439 if(sig2 > 0.) {
coeff[
Z] = sig1/sig2; }
446 std::ifstream filein(ost.str().c_str());
450 ed <<
"Data file <" << ost.str().c_str()
451 <<
"> is not opened!";
452 G4Exception(
"G4ParticleInelasticXS::RetrieveVector(..)",
"had014",
457 G4cout <<
"File " << ost.str()
458 <<
" is opened by G4ParticleInelasticXS" <<
G4endl;
464 ed <<
"Data file <" << ost.str().c_str()
465 <<
"> is not retrieved!";
466 G4Exception(
"G4ParticleInelasticXS::RetrieveVector(..)",
"had015",