53 Verbosity_(G4FFGDefaultValues::
Verbosity),
54 YieldType_(WhichYield)
67 Verbosity_(Verbosity),
68 YieldType_(WhichYield)
80 Verbosity_(Verbosity),
81 YieldType_(WhichYield)
109 }
catch (std::exception &
e)
146 return NumberOfElements;
155 if(WhichYield >= 0 && WhichYield < YieldContainerTable_->G4GetNumberOfElements())
180 if(!dataStream.good())
185 "Fission product data not available");
189 throw std::exception();
410 G4int currentEnergy = 0;
423 std::vector< G4double > projectileEnergies;
424 std::map< const G4int, std::pair< std::vector< G4double >, std::vector< G4double > > > intermediateData;
425 std::map< const G4int, std::pair< std::vector< G4double >, std::vector< G4double > > >::iterator dataIterator;
427 while(dataStream.good())
429 dataStream >> MT >> MF >> dummy >> blockCount;
433 for(
G4int b = 0;
b < blockCount; ++
b)
435 dataStream >> incidentEnergy >> itemCount >> interpolation;
436 maxSize = maxSize >= itemCount ? maxSize : itemCount;
441 projectileEnergies.push_back(incidentEnergy);
442 currentEnergy = projectileEnergies.size() - 1;
449 for(
G4int i = 0; i < itemCount; ++i)
451 dataStream >> isotope >> metastate >> yield;
455 identifier = isotope * 10 + metastate;
457 dataIterator = intermediateData.insert(std::make_pair(
460 std::vector< G4double >(projectileEnergies.size(), 0.0),
461 std::vector< G4double >(projectileEnergies.size(), 0.0)))).first;
463 if(dataIterator->second.first.size() < projectileEnergies.size())
465 dataIterator->second.first.resize(projectileEnergies.size());
466 dataIterator->second.second.resize(projectileEnergies.size());
469 dataIterator->second.first[currentEnergy] = yield;
470 dataIterator->second.second[currentEnergy] =
error;
495 for(dataIterator = intermediateData.begin(); dataIterator != intermediateData.end(); ++dataIterator)
497 identifier = dataIterator->first;
498 metastate = identifier % 10;
513 "Unsupported metastable state supplied in fission yield data. Defaulting to the ground state");
519 NewProduct = (identifier - metastate) / 10;
523 if(energyGroup < (
signed)dataIterator->second.first.size())
525 yield = dataIterator->second.first[energyGroup];
526 error = dataIterator->second.second[energyGroup];
533 NewYield[energyGroup] = yield;
534 NewError[energyGroup] =
error;