19#include "BDSFieldFormat.hh"
21#include "BDSException.hh"
22#include "BDSUtilities.hh"
33 new std::map<BDSFieldFormat, std::string> ({
34 {BDSFieldFormat::none,
"none"},
35 {BDSFieldFormat::bdsim1d,
"bdsim1d"},
36 {BDSFieldFormat::bdsim2d,
"bdsim2d"},
37 {BDSFieldFormat::bdsim3d,
"bdsim3d"},
38 {BDSFieldFormat::bdsim4d,
"bdsim4d"},
39 {BDSFieldFormat::poisson2d,
"poisson2d"},
40 {BDSFieldFormat::poisson2dquad,
"poisson2dquad"},
41 {BDSFieldFormat::poisson2ddipole,
"poisson2ddipole"}
46 std::map<G4String, BDSFieldFormat> formats;
47 formats[
"none"] = BDSFieldFormat::none;
48 formats[
"bdsim1d"] = BDSFieldFormat::bdsim1d;
49 formats[
"bdsim2d"] = BDSFieldFormat::bdsim2d;
50 formats[
"bdsim3d"] = BDSFieldFormat::bdsim3d;
51 formats[
"bdsim4d"] = BDSFieldFormat::bdsim4d;
52 formats[
"poisson2d"] = BDSFieldFormat::poisson2d;
53 formats[
"poisson2dquad"] = BDSFieldFormat::poisson2dquad;
54 formats[
"poisson2ddipole"] = BDSFieldFormat::poisson2ddipole;
58 auto result = formats.find(bFormat);
59 if (result == formats.end())
62 G4cerr << __METHOD_NAME__ <<
"\"" << bFormat
63 <<
"\" is not a valid field format" << G4endl;
64 G4cout <<
"Available field formats are:" << G4endl;
65 for (
auto it : formats)
66 {G4cout <<
"\"" << it.first <<
"\"" << G4endl;}
67 throw BDSException(__METHOD_NAME__,
"can't determine field type");
71 G4cout << __METHOD_NAME__ <<
"determined field format to be " << result->second << G4endl;
73 return result->second;
81 case BDSFieldFormat::bdsim1d:
83 case BDSFieldFormat::bdsim2d:
84 case BDSFieldFormat::poisson2d:
85 case BDSFieldFormat::poisson2dquad:
86 case BDSFieldFormat::poisson2ddipole:
88 case BDSFieldFormat::bdsim3d:
90 case BDSFieldFormat::bdsim4d:
92 case BDSFieldFormat::none:
General exception with possible name of object and message.
static std::map< BDSTypeSafeEnum< fieldformats_def, int >, std::string > * dictionary
type underlying() const
return underlying value (can be used in switch statement)
BDSFieldFormat DetermineFieldFormat(G4String fieldformat)
Function that gives corresponding enum value for string (case-insensitive)
G4String LowerCase(const G4String &str)
Utility function to simplify lots of syntax changes for pedantic g4 changes.
G4int NDimensionsOfFieldFormat(const BDSFieldFormat &ff)
Report the number of dimensions for that format.