31 m_projectile(
"",
"", -1.0 ),
32 m_target(
"",
"", -1.0 ),
33 m_GNDS_target(
"",
"", -1.0 ) {
56 bool a_targetRequiredInGlobalPoPs,
bool a_requiredInPoPs ) {
61 m_projectile =
ParticleInfo( projectileID, a_pops, a_internalPoPs, a_requiredInPoPs );
64 m_GNDS_target =
ParticleInfo( targetID, a_pops, a_internalPoPs, a_targetRequiredInGlobalPoPs && a_requiredInPoPs );
68 m_target = iter->second; }
70 m_target = m_GNDS_target;
133 if( a_checkActiveState && !reaction1->
active( ) )
continue;
134 if( a_CValues.find( reaction1->
ENDL_C( ) ) != a_CValues.end( ) ) indices.insert( i1 );
156 std::string
const &a_interaction, std::string
const &a_formatVersion ) :
158 m_dataManager( nullptr ),
159 m_numberOfLazyParsingHelperForms( 0 ),
160 m_numberOfLazyParsingHelperFormsReplaced( 0 ),
161 m_formatVersion( a_formatVersion ),
162 m_evaluation( a_evaluation ),
163 m_interaction( a_interaction ),
165 m_decayPositronium( false ),
166 m_thresholdFactor( 0.0 ),
167 m_nuclearPlusCoulombInterferenceOnlyReaction( nullptr ),
193 std::string
const &a_interaction,
bool a_targetRequiredInGlobalPoPs,
bool a_requiredInPoPs ) :
196 m_dataManager( nullptr ),
197 m_numberOfLazyParsingHelperForms( 0 ),
198 m_numberOfLazyParsingHelperFormsReplaced( 0 ),
199 m_libraries( a_libraries ),
200 m_interaction( a_interaction ),
201 m_fileName( a_fileName ),
202 m_realFileName(
LUPI::FileInfo::realPath( a_fileName ) ),
203 m_decayPositronium( a_construction.decayPositronium( ) ),
206#ifdef HAPI_USE_PUGIXML
208 m_doc =
new HAPI::PugiXMLFile( a_fileName.c_str( ),
"ProtareSingle::ProtareSingle" );
213 m_doc =
new HAPI::HDFFile( a_fileName.c_str( ) );
216 if( m_doc ==
nullptr ) {
217 throw std::runtime_error(
"Only XML/HDF file types supported." );
220#ifdef GIDIP_TEST_PARSING
223 HAPI::Node protare = m_doc->first_child( );
225 SetupInfo setupInfo( this );
226 ParticleSubstitution particleSubstitution( a_particleSubstitution );
227 setupInfo.m_particleSubstitution = &particleSubstitution;
229 initialize( a_construction, protare, setupInfo, a_pops, a_targetRequiredInGlobalPoPs, a_requiredInPoPs );
230#ifdef GIDIP_TEST_PARSING
249 ParticleSubstitution const &a_particleSubstitution, std::vector<std::string>
const &a_libraries,
250 LUPI_maybeUnused std::string
const &a_interaction,
bool a_targetRequiredInGlobalPoPs,
bool a_requiredInPoPs ) :
253 m_dataManager( nullptr ),
254 m_numberOfLazyParsingHelperForms( 0 ),
255 m_numberOfLazyParsingHelperFormsReplaced( 0 ),
256 m_libraries( a_libraries ),
261 setupInfo.m_particleSubstitution = &particleSubstitution;
263 initialize( a_construction, a_node, setupInfo, a_pops, a_targetRequiredInGlobalPoPs, a_requiredInPoPs );
270void ProtareSingle::initialize( ) {
295 m_RutherfordScatteringPresent =
false;
296 m_onlyRutherfordScatteringPresent =
false;
297 m_nuclearPlusCoulombInterferenceOnlyReaction =
nullptr;
298 m_multiGroupSummedReaction =
nullptr;
299 m_multiGroupSummedDelayedNeutrons =
nullptr;
304 m_photoAtomicIncoherentDoppler.
setAncestor(
this );
307 m_pointwiseAverageProductEnergy.
setAncestor(
this );
308 m_GRIN_continuumGammas =
nullptr;
323 PoPI::Database
const &a_pops,
bool a_targetRequiredInGlobalPoPs,
bool a_requiredInPoPs ) {
328 std::string parentDir = m_fileName.substr( 0, m_fileName.find_last_of(
"/" ) );
329 m_externalFiles.registerBinaryFiles( parentDir, a_setupInfo );
333 std::vector<PoPI::Alias *>
const aliases = m_internalPoPs.aliases( );
334 for(
auto alias = aliases.begin( ); alias != aliases.end( ); ++alias ) {
335 a_setupInfo.m_particleSubstitution->insert( { (*alias)->pid( ), ParticleInfo( (*alias)->ID( ), a_pops, a_pops,
true ) } );
341 Protare::initialize( a_node, a_setupInfo, a_pops, m_internalPoPs, a_targetRequiredInGlobalPoPs, a_requiredInPoPs );
345 if( !m_formatVersion.supported( ) )
throw Exception(
"unsupported GNDS format version" );
346 a_setupInfo.m_formatVersion = m_formatVersion;
348 if( m_formatVersion.major( ) > 1 ) {
356 PoPI::Database
const *GRIN_pops =
nullptr;
358 std::vector<std::string> extraGammaBranchStates;
359 for( HAPI::Node child1 = applicationData.
first_child( ); !child1.
empty( ); child1.to_next_sibling( ) ) {
360 std::string nodeName( child1.name( ) );
365 if( a_construction.GRIN_continuumGammas( ) ) {
366 m_GRIN_continuumGammas =
new GRIN::GRIN_continuumGammas( a_construction, child2, a_setupInfo, a_pops, m_internalPoPs, *
this, &m_styles );
367 GRIN_pops = &(m_GRIN_continuumGammas->pops( ));
368 extraGammaBranchStates.push_back( m_GRIN_continuumGammas->captureResidualId( ) );
373 m_internalPoPs.calculateNuclideGammaBranchStateInfos( m_nuclideGammaBranchStateInfos, GRIN_pops, extraGammaBranchStates );
375 m_isTNSL_ProtareSingle =
false;
378 m_isTNSL_ProtareSingle =
true; }
381 m_isTNSL_ProtareSingle =
name.find(
"thermalNeutronScatteringLaw" ) != std::string::npos;
385 m_thresholdFactor = 1.0;
395 m_styles.updateChainEnds( );
397 Styles::Evaluated *evaluated = m_styles.get<Styles::Evaluated>( 0 );
399 m_projectileEnergyMin = evaluated->projectileEnergyDomain( ).minimum( );
400 m_projectileEnergyMax = evaluated->projectileEnergyDomain( ).maximum( );
406 m_sums.parse( a_construction, a_node.
child(
GIDI_sumsChars ), a_setupInfo, a_pops, m_internalPoPs );
409 m_RutherfordScatteringPresent =
false;
410 m_onlyRutherfordScatteringPresent =
false;
411 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
412 Reaction
const *reaction1 = m_reactions.get<Reaction>( i1 );
413 if( reaction1->RutherfordScatteringPresent( ) ) {
414 m_RutherfordScatteringPresent =
true;
415 m_onlyRutherfordScatteringPresent = reaction1->onlyRutherfordScatteringPresent( );
420 for( HAPI::Node child1 = applicationData.
first_child( ); !child1.
empty( ); child1.to_next_sibling( ) ) {
421 std::string nodeName( child1.name( ) );
429 a_setupInfo.m_isENDL_C_9 =
true;
430 m_nuclearPlusCoulombInterferenceOnlyReaction =
new Reaction( a_construction, reactionNode, a_setupInfo, a_pops, m_internalPoPs, *
this, &m_styles );
431 a_setupInfo.m_isENDL_C_9 =
false;
432 bool dropC_9 =
false;
433 auto &crossSectionSuite = m_nuclearPlusCoulombInterferenceOnlyReaction->crossSection( );
434 for(
auto crossSectionIter = crossSectionSuite.begin( ); crossSectionIter != crossSectionSuite.end( ); ++crossSectionIter ) {
435 auto iter = crossSectionSuite.checkLazyParsingHelperFormIterator( crossSectionIter );
437 Functions::XYs1d *xys1d =
static_cast<Functions::XYs1d *
>( *iter );
438 auto ys = xys1d->ys( );
439 for(
auto yIter = ys.begin( ); yIter != ys.end( ); ++yIter ) {
449 delete m_nuclearPlusCoulombInterferenceOnlyReaction;
450 m_nuclearPlusCoulombInterferenceOnlyReaction =
nullptr;
456 m_multiGroupSummedReaction =
new Reaction( a_construction, child2, a_setupInfo, a_pops, m_internalPoPs, *
this, &m_styles ); }
459 m_multiGroupSummedDelayedNeutrons =
new OutputChannel( a_construction, child2, a_setupInfo, a_pops, m_internalPoPs, &m_styles,
true,
false ); }
465 m_photoAtomicIncoherentDoppler.parse( a_construction, child2, a_setupInfo, a_pops, m_internalPoPs,
parseReaction, &m_styles );
466 if( a_construction.usePhotoAtomicIncoherentDoppler( ) && m_photoAtomicIncoherentDoppler.size( ) > 0 ) {
468 while( m_photoAtomicIncoherentDoppler.size( ) > 0 ) {
469 Reaction *photoAtomicIncoherentDopplerReaction = m_photoAtomicIncoherentDoppler.pop<Reaction>( 0 );
470 m_reactions.add( photoAtomicIncoherentDopplerReaction );
472 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
473 Reaction *reaction1 = m_reactions.get<Reaction>( i1 );
474 if( reaction1->ENDF_MT( ) == 504 ) {
475 reaction1->setActive(
false);
481 m_pointwiseAverageProductEnergy.parse( a_construction, child1.child(
GIDI_averageEnergyChars ), a_setupInfo, a_pops,
487 std::cout <<
"parseStylesSuite: Ignoring unsupported style = '" << nodeName <<
"'." << std::endl;
498 delete m_dataManager;
499 delete m_nuclearPlusCoulombInterferenceOnlyReaction;
500 delete m_multiGroupSummedReaction;
501 delete m_multiGroupSummedDelayedNeutrons;
515 if( m_multiGroupSummedReaction ==
nullptr )
return(
false );
517 if( m_decayPositronium )
return(
false );
530bool ProtareSingle::useMultiGroupSummedDelayedNeutronsData( Transporting::MG
const &a_settings )
const {
548 return( m_nuclearPlusCoulombInterferenceOnlyReaction );
551 return( a_reaction );
569 if( !reaction1->
active( ) )
return(
nullptr );
570 if( a_reactionsToExclude.find( a_index ) != a_reactionsToExclude.end( ) )
return(
nullptr );
585 if( a_index != 0 )
return(
nullptr );
599 if( a_index != 0 )
return(
nullptr );
613 return( m_internalPoPs.intid( a_id ) );
627 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
630 if( !reaction1->
active( ) )
continue;
631 reaction1->
productIDs( a_ids, a_particles, a_transportablesOnly );
634 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
637 if( !reaction1->
active( ) )
continue;
638 reaction1->
productIDs( a_ids, a_particles, a_transportablesOnly );
656 int _maximumLegendreOrder = -1;
659 if( useMultiGroupSummedData( a_settings, excludeReactionsSet ) ) {
660 _maximumLegendreOrder = m_multiGroupSummedReaction->maximumLegendreOrder( a_smr, a_settings, a_temperatureInfo, a_productID );
661 if( useMultiGroupSummedDelayedNeutronsData( a_settings ) ) {
662 _maximumLegendreOrder = std::max( _maximumLegendreOrder, m_multiGroupSummedDelayedNeutrons->maximumLegendreOrder(
663 a_smr, a_settings, a_temperatureInfo, a_productID ) );
666 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
669 if( !reaction1->
active( ) )
continue;
670 int r_maximumLegendreOrder = reaction1->
maximumLegendreOrder( a_smr, a_settings, a_temperatureInfo, a_productID );
671 if( r_maximumLegendreOrder > _maximumLegendreOrder ) _maximumLegendreOrder = r_maximumLegendreOrder;
674 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
677 if( !reaction1->
active( ) )
continue;
678 int r_maximumLegendreOrder = reaction1->
maximumLegendreOrder( a_smr, a_settings, a_temperatureInfo, a_productID );
679 if( r_maximumLegendreOrder > _maximumLegendreOrder ) _maximumLegendreOrder = r_maximumLegendreOrder;
683 return( _maximumLegendreOrder );
702 std::size_t size( m_styles.size( ) );
705 for( std::size_t i1 = 0; i1 < size; ++i1 ) {
710 std::string heated_cross_section( style1->
label( ) );
711 std::string gridded_cross_section(
"" );
712 std::string URR_probability_tables(
"" );
713 std::string heated_multi_group(
"" );
714 std::string Sn_elastic_upscatter(
"" );
716 for( std::size_t i2 = 0; i2 < size; ++i2 ) {
723 gridded_cross_section = style2->
label( ); }
725 URR_probability_tables = style2->
label( ); }
727 Sn_elastic_upscatter = style2->
label( ); }
729 heated_multi_group = style2->
label( );
732 temperature_infos.push_back(
Styles::TemperatureInfo( temperature, heated_cross_section, gridded_cross_section, URR_probability_tables,
733 heated_multi_group, Sn_elastic_upscatter ) );
737 std::sort( temperature_infos.begin( ), temperature_infos.end( ), sortTemperatures );
739 return( temperature_infos );
782 std::size_t count = 0;
784 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
787 if( !reaction1->
active( ) ) ++count;
800 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
803 reaction1->setReactionIndex( i1 );
805 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
808 reaction1->setReactionIndex( i1 );
810 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
813 reaction1->setReactionIndex( i1 );
860 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
863 if( !reaction1->
active( ) )
continue;
864 if( reaction1->
hasFission( ) )
return(
true );
877 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
880 if( !reaction1->
active( ) )
continue;
945 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
946 vector = m_multiGroupSummedReaction->multiGroupCrossSection( a_smr, a_settings, a_temperatureInfo, a_label ); }
948 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
951 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupCrossSection( a_smr, a_settings, a_temperatureInfo, a_label );
976 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
977 vector = m_multiGroupSummedReaction->multiGroupMultiplicity( a_smr, a_settings, a_temperatureInfo, a_productID );
978 if( useMultiGroupSummedDelayedNeutronsData( a_settings ) ) {
979 vector += m_multiGroupSummedDelayedNeutrons->multiGroupMultiplicity( a_smr, a_settings, a_temperatureInfo, a_productID );
982 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
985 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupMultiplicity( a_smr, a_settings, a_temperatureInfo, a_productID );
988 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
991 if( !reaction1->
active( ) )
continue;
1015 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1018 if( !reaction1->
active( ) )
continue;
1041 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1044 if( !reaction1->
active( ) )
continue;
1070 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
1071 vector = m_multiGroupSummedReaction->multiGroupQ( a_smr, a_settings, a_temperatureInfo, a_final );
1072 if( useMultiGroupSummedDelayedNeutronsData( a_settings ) ) {
1073 vector += m_multiGroupSummedDelayedNeutrons->multiGroupQ( a_smr, a_settings, a_temperatureInfo, a_final );
1076 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1079 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupQ( a_smr, a_settings, a_temperatureInfo, a_final );
1103 std::string
const &a_productID, std::size_t a_order,
ExcludeReactionsSet const &a_reactionsToExclude )
const {
1107 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
1108 matrix = m_multiGroupSummedReaction->multiGroupProductMatrix( a_smr, a_settings, a_temperatureInfo, a_particles, a_productID, a_order );
1109 if( useMultiGroupSummedDelayedNeutronsData( a_settings ) ) {
1110 matrix += m_multiGroupSummedDelayedNeutrons->multiGroupProductMatrix( a_smr, a_settings, a_temperatureInfo, a_particles, a_productID, a_order );
1113 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1116 if( reaction1 !=
nullptr ) matrix += reaction1->
multiGroupProductMatrix( a_smr, a_settings, a_temperatureInfo, a_particles, a_productID, a_order );
1119 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
1122 if( !reaction1->
active( ) )
continue;
1123 matrix += reaction1->
multiGroupProductMatrix( a_smr, a_settings, a_temperatureInfo, a_particles, a_productID, a_order );
1149 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1152 if( !reaction1->
active( ) )
continue;
1183 std::size_t size = matrixCollapsed.
size( );
1184 std::vector<double> transportCorrection1( size, 0 );
1189 for( std::size_t index = 0; index < size; ++index ) transportCorrection1[index] = matrixCollapsed[index][index]; }
1191 throw Exception(
"Unsupported transport correction: only None and Pendlebury (i.e., Pendlebury/Underhill) are currently supported." );
1193 return(
Vector( transportCorrection1 ) );
1213 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
1214 vector = m_multiGroupSummedReaction->multiGroupAvailableEnergy( a_smr, a_settings, a_temperatureInfo ); }
1216 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1245 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
1246 vector = m_multiGroupSummedReaction->multiGroupAverageEnergy( a_smr, a_settings, a_temperatureInfo, a_productID );
1247 if( useMultiGroupSummedDelayedNeutronsData( a_settings ) ) {
1248 vector += m_multiGroupSummedDelayedNeutrons->multiGroupAverageEnergy( a_smr, a_settings, a_temperatureInfo, a_productID );
1251 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1254 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupAverageEnergy( a_smr, a_settings, a_temperatureInfo, a_productID );
1257 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
1260 if( !reaction1->
active( ) )
continue;
1286 bool atLeastOneReactionHasAllParticlesTracked =
false;
1290 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1293 if( reaction1 !=
nullptr ) {
1295 atLeastOneReactionHasAllParticlesTracked =
true;
1302 if( atLeastOneReactionHasAllParticlesTracked ) {
1303 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1306 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupDepositionEnergy( a_smr, a_settings, a_temperatureInfo, a_particles );
1308 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
1311 if( !reaction1->
active( ) )
continue;
1315 std::map<std::string, Transporting::Particle>
const &products( a_particles.
particles( ) );
1317 Vector availableEnergy( vector );
1319 for( std::map<std::string, Transporting::Particle>::const_iterator iter = products.begin( ); iter != products.end( ); ++iter ) {
1323 for( std::size_t index = 0; index < availableEnergy.
size( ); ++index ) {
1324 if( std::fabs( vector[index] ) < std::fabs( 1e-14 * availableEnergy[index] ) ) vector[index] = 0.0;
1348 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
1349 vector = m_multiGroupSummedReaction->multiGroupAvailableMomentum( a_smr, a_settings, a_temperatureInfo ); }
1351 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1380 if( useMultiGroupSummedData( a_settings, a_reactionsToExclude ) ) {
1381 vector = m_multiGroupSummedReaction->multiGroupAverageMomentum( a_smr, a_settings, a_temperatureInfo, a_productID );
1382 if( useMultiGroupSummedDelayedNeutronsData( a_settings ) ) {
1383 vector += m_multiGroupSummedDelayedNeutrons->multiGroupAverageMomentum( a_smr, a_settings, a_temperatureInfo, a_productID );
1386 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1389 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupAverageMomentum( a_smr, a_settings, a_temperatureInfo, a_productID );
1392 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
1395 if( !reaction1->
active( ) )
continue;
1421 std::map<std::string, Transporting::Particle>
const &products( a_particles.
particles( ) );
1424 for( std::map<std::string, Transporting::Particle>::const_iterator iter = products.begin( ); iter != products.end( ); ++iter ) {
1450 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1453 if( reaction1 !=
nullptr ) vector += reaction1->
multiGroupGain( a_smr, a_settings, a_temperatureInfo, a_productID, projectile_ID );
1469 for( std::size_t i1 = 0; i1 < m_styles.size( ); ++i1 ) {
1477 muCutoffs.push_back( std::move( labelMu ) );
1481 return( muCutoffs );
1495 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1498 if( !reaction1->
active( ) )
continue;
1503 return( delayedNeutronProducts1 );
1515 for( std::size_t i1 = 0; i1 < m_reactions.size( ); ++i1 ) {
1518 if( !reaction1->
active( ) )
continue;
1522 for( std::size_t i1 = 0; i1 < m_orphanProducts.size( ); ++i1 ) {
1525 if( !reaction1->
active( ) )
continue;
1542 std::ofstream fileio;
1543 fileio.open( a_fileName.c_str( ) );
1544 for( std::list<std::string>::iterator iter = writeInfo.
m_lines.begin( ); iter != writeInfo.
m_lines.end( ); ++iter ) {
1545 fileio << *iter << std::endl;
1561 std::string attributes;
1573 m_externalFiles.toXMLList( a_writeInfo, indent2 );
1574 m_styles.toXMLList( a_writeInfo, indent2 );
1576 std::vector<std::string> pops_XMLList;
1577 m_internalPoPs.toXMLList( pops_XMLList, indent2 );
1578 for( std::vector<std::string>::iterator iter = pops_XMLList.begin( ); iter != pops_XMLList.end( ); ++iter ) a_writeInfo.
push_back( *iter );
1580 m_reactions.toXMLList( a_writeInfo, indent2 );
1581 m_orphanProducts.toXMLList( a_writeInfo, indent2 );
1582 m_sums.toXMLList( a_writeInfo, indent2 );
1583 m_fissionComponents.toXMLList( a_writeInfo, indent2 );
1596 m_targetInfo.parseEvaluatedTargetInfo( a_node );
#define GIDI_multiGroupStyleChars
#define GIDI_MapInteractionTNSLChars
#define GIDI_MapInteractionAtomicChars
#define GIDI_ENDF_MT_Chars
#define GIDI_griddedCrossSectionStyleChars
#define GIDI_LLNL_photoAtomicIncoherentDoppler_Chars
#define GIDI_CoulombPlusNuclearElasticMuCutoffStyleChars
#define GIDI_URR_probabilityTablesStyleChars
#define GIDI_projectileChars
#define GIDI_outputChannelChars
#define GIDI_externalFilesChars
#define GIDI_nuclearPlusCoulombInterferenceChars
#define GIDI_applicationDataChars
#define GIDI_reactionChars
#define GIDI_reactionsChars
#define GIDI_LLNL_multiGroupReactions_Chars
#define GIDI_evaluationChars
#define GIDI_LLNL_multiGroupDelayedNeutrons_Chars
#define GIDI_heatedMultiGroupStyleChars
#define GIDI_heatedStyleChars
#define GIDI_orphanProductsChars
#define GIDI_doubleDifferentialCrossSectionChars
#define GIDI_LLNL_URR_probability_tables_Chars
#define GIDI_LLNL_GRIN_continuumGammas
#define GIDI_GRIN_continuumGammasChars
#define GIDI_LLNL_pointwiseAverageProductEnergies
#define GIDI_interactionChars
#define GIDI_projectileFrameChars
#define GIDI_averageEnergyChars
#define GIDI_topLevelChars
#define GIDI_SnElasticUpScatterStyleChars
#define GIDI_incompleteReactionsChars
#define GIDI_institutionChars
#define GIDI_documentations_1_10_Chars
#define GIDI_fissionComponentsChars
#define GIDI_ACE_URR_probabilityTablesChars
#define LUPI_XML_verionEncoding
ParseMode parseMode() const
bool isDelayedFissionNeutronComplete() const
PhysicalQuantity const & mass() const
std::string const & ID() const
Vector multiGroupFissionGammaMultiplicity(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Reaction * reaction(std::size_t a_index)
Styles::TemperatureInfos temperatures() const
void updateReactionIndices(std::size_t a_offset) const
Matrix multiGroupFissionMatrix(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::size_t a_order, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Vector multiGroupTransportCorrection(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::size_t a_order, TransportCorrectionType a_transportCorrectionType, double a_temperature, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
std::vector< double > groupBoundaries(Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Vector multiGroupAvailableMomentum(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Vector multiGroupAvailableEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
void saveAs(std::string const &a_fileName) const
void parseEvaluatedTargetInfo(HAPI::Node const &a_node)
void toXMLList(GUPI::WriteInfo &a_writeInfo, std::string const &a_indent="") const
void productIDs(std::set< std::string > &a_ids, Transporting::Particles const &a_particles, bool a_transportablesOnly) const
void incompleteParticles(Transporting::Settings const &a_settings, std::set< std::string > &a_incompleteParticles) const
int maximumLegendreOrder(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
std::string const & evaluation(LUPI_maybeUnused std::size_t a_index=0) const
Vector multiGroupAverageMomentum(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
PoPI::Database const & internalPoPs() const
Vector multiGroupDepositionEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
GUPI::Ancestry * findInAncestry3(std::string const &a_item)
bool isDelayedFissionNeutronComplete() const
int intid(std::string const &a_id) const
ProtareSingle(PoPI::Database const &a_pops, std::string const &a_projectileID, std::string const &a_targetID, std::string const &a_evaluation, std::string const &a_interaction, std::string const &a_formatVersion=GNDS_formatVersion_1_10Chars)
Vector multiGroupDepositionMomentum(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
std::size_t numberOfInactiveReactions() const
Reaction const * checkIf_nuclearPlusCoulombInterferenceWanted(Transporting::MG const &a_settings, Reaction const *a_reaction) const
Frame projectileFrame(LUPI_maybeUnused std::size_t a_index=0) const
DelayedNeutronProducts delayedNeutronProducts() const
Vector multiGroupAverageEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Vector multiGroupMultiplicity(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
ProtareSingle * protare(std::size_t a_index)
Vector multiGroupQ(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, bool a_final, bool a_effectivePhotoAtomic=true, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Vector multiGroupCrossSection(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}, std::string const &a_label="") const
stringAndDoublePairs muCutoffForCoulombPlusNuclearElastic() const
Vector multiGroupInverseSpeed(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo) const
Reaction const * reactionToMultiGroup(Transporting::MG const &a_settings, std::size_t a_index, ExcludeReactionsSet const &a_reactionsToExclude) const
Matrix multiGroupProductMatrix(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::string const &a_productID, std::size_t a_order, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Vector multiGroupGain(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
Vector multiGroupFissionNeutronMultiplicity(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, ExcludeReactionsSet const &a_reactionsToExclude=ExcludeReactionsSet {}) const
void setTarget(ParticleInfo const &a_target)
virtual std::size_t numberOfReactions() const =0
virtual void TNSL_crossSectionSumCorrection(std::string const &a_label, Functions::XYs1d &a_crossSectionSum)
void setProjectile(ParticleInfo const &a_projectile)
void initialize(HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, bool a_targetRequiredInGlobalPoPs, bool a_requiredInPoPs=true)
ParticleInfo const & target() const
ExcludeReactionsSet reactionIndicesMatchingENDLCValues(std::set< int > const &a_CValues, bool a_checkActiveState=true)
ParticleInfo const & GNDS_target() const
virtual Reaction * reaction(std::size_t a_index)=0
ParticleInfo const & projectile() const
bool areAllProductsTracked(Transporting::Particles const &a_particles) const
Matrix multiGroupFissionMatrix(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::size_t a_order) const
Vector multiGroupQ(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, bool a_final) const
Vector multiGroupAvailableEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo) const
Vector multiGroupAvailableMomentum(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo) const
OutputChannel * outputChannel() const
bool RutherfordScatteringPresent() const
int maximumLegendreOrder(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Vector multiGroupCrossSection(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_label="") const
Matrix multiGroupProductMatrix(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::string const &a_productID, std::size_t a_order) const
void incompleteParticles(Transporting::Settings const &a_settings, std::set< std::string > &a_incompleteParticles) const
Vector multiGroupAverageEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
void productIDs(std::set< std::string > &a_ids, Transporting::Particles const &a_particles, bool a_transportablesOnly) const
Vector multiGroupDepositionEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles) const
Vector multiGroupGain(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID, std::string const &a_projectileID) const
void delayedNeutronProducts(DelayedNeutronProducts &a_delayedNeutronProducts) const
Vector multiGroupAverageMomentum(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Vector multiGroupMultiplicity(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
ParticleSubstitution * m_particleSubstitution
virtual PhysicalQuantity const & temperature() const =0
std::string const & label() const
Vector inverseSpeedData() const
std::vector< double > groupBoundaries(std::string const &a_ID) const
PhysicalQuantity const & temperature() const
std::string const & heatedMultiGroup() const
bool useMultiGroupSummedData() const
std::map< std::string, Particle > & particles()
bool zeroDepositionIfAllProductsTracked() const
bool nuclearPlusCoulombInterferenceOnly() const
void setMoniker(std::string const &a_moniker)
void setAncestor(Ancestry *a_ancestor)
std::string const & moniker() const
Ancestry(std::string const &a_moniker, std::string const &a_attribute="")
void push_back(std::string const &a_line)
std::list< std::string > m_lines
void addNodeEnder(std::string const &a_moniker)
std::string incrementalIndent(std::string const &indent)
void addNodeStarter(std::string const &indent, std::string const &a_moniker, std::string const &a_attributes="")
std::string addAttribute(std::string const &a_name, std::string const &a_value) const
std::string attribute_as_string(const char *a_name) const
void to_next_sibling() const
Node child(const char *name) const
int attribute_as_int(const char *a_name) const
bool exists(std::string const &a_id) const
const char * name(G4int ptype)
std::vector< Styles::TemperatureInfo > TemperatureInfos
std::map< std::string, ParticleInfo > ParticleSubstitution
std::pair< std::string, double > stringAndDoublePair
Form * parseFissionComponent(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseACE_URR_probabilityTables(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseAverageEnergySuite(Construction::Settings const &a_construction, Suite *parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pop, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
std::vector< stringAndDoublePair > stringAndDoublePairs
std::string frameToString(Frame a_frame)
Form * parseExternalFilesSuite(Construction::Settings const &a_construction, Suite *parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pop, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseReaction(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Vector collapse(Vector const &a_vector, Transporting::Settings const &a_settings, Transporting::Particles const &a_particles, double a_temperature)
Form * parseOrphanProduct(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseStylesSuite(Construction::Settings const &a_construction, Suite *parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pop, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
std::set< std::size_t > ExcludeReactionsSet
Frame parseFrame(HAPI::Node const &a_node, SetupInfo &a_setupInfo, std::string const &a_name)
std::vector< DelayedNeutronProduct > DelayedNeutronProducts
static std::string const photon
static std::string const neutron