231 bool allKnown =
false;
243 size_t nb = availBases.size();
244 for (
size_t ib=0; ib<nb; ++ib) {
245 const G4String& testBase = availBases[ib];
246 size_t ipos = workingName.find(testBase);
248 if ( testBase.size() > plBase.size() ) {
251 if ( verb > 3 ) {
G4cout <<
" physlist current best guess: " << testBase <<
G4endl; }
253 if ( verb > 3 ) {
G4cout <<
" physlist match but shorter: " << testBase <<
G4endl; }
256 if ( verb > 3 ) {
G4cout <<
" physlist reject: " << testBase <<
G4endl; }
260 G4cout <<
" physlist " << name <<
", base known " << allKnown
261 <<
" chosen plBase \"" << plBase <<
"\"" <<
G4endl;
269 workingName.erase(0,plBase.size());
274 size_t ne = availExtras.size();
275 while ( ! workingName.empty() ) {
276 char c = workingName.
data()[0];
277 if (
'_' == c ||
'+' == c ) workingName.erase(0,1);
278 G4int replaceExtra = ( c !=
'+' );
280 G4bool extraKnown =
false;
281 for (
size_t ie=0; ie<ne; ++ie) {
282 const G4String& testExtra = availExtras[ie];
283 size_t ipos = workingName.find(testExtra);
285 if ( testExtra.size() > extraName.size() ) {
286 extraName = testExtra;
289 if ( verb > 3 ) {
G4cout <<
" physextra current best guess: " << testExtra <<
G4endl; }
291 if ( verb > 3 ) {
G4cout <<
" physextra match but shorter: " << testExtra <<
G4endl; }
296 if ( verb > 3 ) {
G4cout <<
" physextra reject: " << testExtra <<
G4endl; }
302 G4cout <<
" physextra " << name <<
" [" << workingName <<
"]" 303 <<
", extra known " << extraKnown
304 <<
" chosen extra \"" << extraName <<
"\"" 305 <<
" replace " << replaceExtra <<
G4endl;
311 std::map<G4String,G4String>::const_iterator itr =
318 G4cout <<
" extraName \"" << extraName <<
"\" maps to physics ctor \"" 319 << pcname <<
"\" which is itself realknown " << realknown
323 if ( ! realknown ) allKnown =
false;
324 physExt.push_back(extraName);
325 replace.push_back(replaceExtra);
327 workingName.erase(0,extraName.size());
const std::vector< G4String > & AvailablePhysicsExtensions() const
const char * data() const
G4bool IsKnownPhysicsConstructor(const G4String &name)
G4GLOB_DLL std::ostream G4cout
const std::vector< G4String > & AvailablePhysLists() const
static G4PhysicsConstructorRegistry * Instance()
std::map< G4String, G4String > physicsExtensions