30static bool G4GIDI_pops_initialized =
false;
38static std::string projectileStringFromID(
int a_ip ) {
68 if( G4GIDI_pops_initialized )
return;
70 G4GIDI_pops_initialized =
true;
71 G4GIDI_pops.addFile( a_dataPath +
"/" +
"pops.xml",
false );
72 G4GIDI_pops.addFile( a_dataPath +
"/" +
"metastables_alias.xml",
false );
85 m_projectileIP( a_ip ),
86 m_projectile( projectileStringFromID( a_ip ) ) {
98 m_projectileIP( a_ip ),
99 m_projectile( projectileStringFromID( a_ip ) ) {
101 for(
auto mapIter = a_dataDirectories.begin( ); mapIter != a_dataDirectories.end( ); ++mapIter ) {
102 addDataDirectory( *mapIter );
111 for(
auto mapIter = m_maps.begin( ); mapIter != m_maps.end( ); ++mapIter )
delete *mapIter;
112 for(
auto protareIter = m_protares.begin( ); protareIter != m_protares.end( ); ++protareIter )
delete *protareIter;
123 for(
auto mapIter = m_maps.begin( ); mapIter != m_maps.end( ); ++mapIter ) {
124 if( (*mapIter)->fileName( ) == a_dataDirectory )
return( 0 );
140 std::size_t index = 0;
142 for(
auto mapIter = m_maps.begin( ); mapIter!= m_maps.end( ); ++mapIter, ++index ) {
143 if( a_dataDirectory == (*mapIter)->fileName( ) ) {
147 for( ; index < m_maps.size( ); ++index ) m_maps[index-1] = m_maps[index];
148 m_maps[index-1] =
nullptr;
149 m_maps.resize( m_maps.size( ) - 1 );
164 std::string nullString;
166 if( ( a_index < 0 ) || ( a_index >=
static_cast<int>( m_maps.size( ) ) ) )
return( nullString );
168 return( m_maps[a_index]->fileName( ) );
179 std::vector<std::string> *list =
new std::vector<std::string>( );
181 for(
auto mapIter = m_maps.begin( ); mapIter!= m_maps.end( ); ++mapIter ) {
182 list->push_back( (*mapIter)->fileName( ) );
215 for(
auto mapIter = m_maps.begin( ); mapIter!= m_maps.end( ); ++mapIter ) {
216 if( (*mapIter)->isProtareAvailable( m_projectile, a_targetName,
"", a_lib_name ) )
return(
true );
249 for(
auto mapIter = m_maps.begin( ); mapIter!= m_maps.end( ); ++mapIter ) {
250 std::string path = (*mapIter)->protareFilename( m_projectile, a_targetName,
"", a_lib_name );
251 if( path !=
"" )
return( path );
281 std::vector<std::string> *listOfLibraries =
new std::vector<std::string>( );
283 for(
auto mapIter = m_maps.cbegin( ); mapIter != m_maps.cend( ); ++mapIter ) {
284 std::vector<GIDI::Map::ProtareBase const *> entries;
285 (*mapIter)->findProtareEntries( entries, std::regex( m_projectile ), std::regex( a_targetName ) );
286 for(
auto entryIter = entries.begin( ); entryIter != entries.end( ); ++entryIter ) {
287 listOfLibraries->push_back( (*entryIter)->evaluation( ) );
291 return( listOfLibraries );
302 std::vector<std::string> *list =
new std::vector<std::string>( );
303 std::set<std::string> targetIDs;
305 for(
auto mapIter = m_maps.begin( ); mapIter!= m_maps.end( ); ++mapIter ) {
306 auto protareBases = (*mapIter)->directory( m_projectile );
308 for(
auto protareBaseIter = protareBases.begin( ); protareBaseIter != protareBases.end( ); ++protareBaseIter ) {
309 targetIDs.insert( (*protareBaseIter)->targetID( ) );
313 for(
auto targetIter = targetIDs.begin( ); targetIter != targetIDs.end( ); ++targetIter ) {
314 (*list).push_back( (*targetIter) );
348 for(
auto iter_protare = m_protares.cbegin( ); iter_protare != m_protares.cend( ); ++iter_protare ) {
349 if( *(*iter_protare)->getName( ) == a_targetName )
return(
nullptr );
355 for(
auto mapIter = m_maps.begin( ); mapIter!= m_maps.end( ); ++mapIter ) {
357 if( GIDI_protare !=
nullptr ) {
360 std::string label( temperatures[0].griddedCrossSection( ) );
365 std::set<size_t> reactionsToExclude;
369 particles.
add( neutron );
372 temperatures1.push_back( temperatures[0] );
374 temperatures1, reactionsToExclude );
379 if( a_bind ) m_protares.push_back( protare );
414 for(
auto iter_protare = m_protares.cbegin( ); iter_protare != m_protares.cend( ); ++iter_protare ) {
415 if( *(*iter_protare)->getName( ) == a_targetName )
return( *iter_protare );
432 for(
auto iter_protare = m_protares.cbegin( ); iter_protare != m_protares.cend( ); ++iter_protare ) {
433 if( *iter_protare == a_target ) {
434 m_protares.erase( iter_protare );
467 for(
auto iter_protare = m_protares.cbegin( ); iter_protare != m_protares.cend( ); ++iter_protare ) {
468 if( *(*iter_protare)->getName( ) == targetSymbol )
return(
freeTarget( *iter_protare ) );
482 std::vector<std::string> *listOfTargets =
new std::vector<std::string>( );
484 for(
auto iter_protare = m_protares.cbegin( ); iter_protare != m_protares.cend( ); ++iter_protare ) {
485 listOfTargets->push_back( *(*iter_protare)->getName( ) );
488 return( listOfTargets );
void G4GIDI_initialize(std::string const &a_dataPath)
std::string G4GIDI_Misc_Z_A_m_ToName(int a_Z, int a_A, int a_M)
PoPI::Database G4GIDI_pops
G4GIDI(G4int a_ip, std::string const &a_dataDirectory)
std::vector< std::string > * getListOfReadTargetsNames()
std::vector< std::string > * getDataDirectories() const
std::vector< std::string > * getNamesOfAvailableLibraries(G4int a_Z, G4int a_A, G4int a_M=0) const
G4int addDataDirectory(std::string const &a_dataDirectory)
G4GIDI_target * readTarget(std::string const &lib_name, G4int a_Z, G4int a_A, G4int a_M=0, bool a_bind=true)
std::vector< std::string > * getNamesOfAvailableTargets() const
std::string const getDataDirectoryAtIndex(G4int a_index) const
G4int removeDataDirectory(std::string const &a_dataDirectory)
G4int freeTarget(G4int a_Z, G4int a_A, G4int a_M=0)
G4GIDI_target * getAlreadyReadTarget(G4int a_Z, G4int a_A, G4int a_M=0)
std::string dataFilename(std::string const &lib_name, G4int a_Z, G4int a_A, G4int a_M=0) const
bool isThisDataAvailable(std::string const &a_lib_name, G4int a_Z, G4int a_A, G4int a_M=0) const
void setGRIN_continuumGammas(bool a_GRIN_continuumGammas)
virtual Styles::TemperatureInfos temperatures() const =0
virtual Styles::Suite & styles()=0
virtual ProtareSingle * protare(std::size_t a_index)=0
bool add(Particle const &a_particle)
void setThrowOnError(bool a_throwOnError)
LUPI_HOST void setSampleNonTransportingParticles(bool a_sampleNonTransportingParticles)
std::vector< Styles::TemperatureInfo > TemperatureInfos
LUPI_HOST Protare * protareFromGIDIProtare(LUPI::StatusMessageReporting &a_smr, GIDI::Protare const &a_protare, PoPI::Database const &a_pops, Transporting::MC &a_settings, GIDI::Transporting::Particles const &a_particles, DomainHash const &a_domainHash, GIDI::Styles::TemperatureInfos const &a_temperatureInfos, GIDI::ExcludeReactionsSet const &a_reactionsToExclude, std::size_t a_reactionsToExcludeOffset=0, bool a_allowFixedGrid=true)
std::string to_string(G4FermiAtomicMass mass)
static std::string const photon
static std::string const neutron
static std::string const familiarTriton
static std::string const familiarHelion
static std::string const proton
static std::string const familiarAlpha
static std::string const familiarDeuteron