00001 #include "BDSMagnetGeometryType.hh"
00002 #include "BDSDebug.hh"
00003 #include "globals.hh"
00004
00005 #include <map>
00006
00007 BDSMagnetGeometryType BDS::DetermineMagnetGeometryType(G4String geometryType)
00008 {
00009 std::map<G4String, BDSMagnetGeometryType> types;
00010 types["none"] = BDSMagnetGeometryType::none;
00011 types["cylindrical"] = BDSMagnetGeometryType::cylindrical;
00012 types["polescircular"] = BDSMagnetGeometryType::polescircular;
00013 types["polessquare"] = BDSMagnetGeometryType::polessquare;
00014 types["polesfacet"] = BDSMagnetGeometryType::polesfacet;
00015 types["polesfacetcrop"] = BDSMagnetGeometryType::polesfacetcrop;
00016 types["lhcleft"] = BDSMagnetGeometryType::lhcleft;
00017 types["lhcright"] = BDSMagnetGeometryType::lhcright;
00018
00019 geometryType.toLower();
00020
00021 if (types.find(geometryType) == types.end())
00022 {
00023
00024 G4cout << __METHOD_NAME__ << "\"" << geometryType << "\" is not a valid geometry type" << G4endl;
00025 G4cout << "Available geometry types are:" << G4endl;
00026 std::map<G4String, BDSMagnetGeometryType>::iterator it = types.begin();
00027 for (; it != types.end(); ++it)
00028 {G4cout << "\"" << (*it).first << "\"" << G4endl;}
00029 exit(1);
00030 }
00031
00032 BDSMagnetGeometryType returnValue = types[geometryType];
00033 #ifdef BDSDEBUG
00034 G4cout << __METHOD_NAME__ << " determined geometry type to be " << returnValue.underlying() << G4endl;
00035 #endif
00036 return returnValue;
00037 }