00001 #include "BDSMagnetColours.hh"
00002
00003 #include "globals.hh"
00004 #include <map>
00005 #include "G4Colour.hh"
00006
00007
00008 BDSMagnetColours* BDSMagnetColours::_instance = 0;
00009
00010 BDSMagnetColours* BDSMagnetColours::Instance()
00011 {
00012 if (_instance == 0)
00013 {_instance = new BDSMagnetColours();}
00014 return _instance;
00015 }
00016
00017 BDSMagnetColours::BDSMagnetColours()
00018 {
00019 magnetName[2] = "quadrupole";
00020 magnetName[3] = "sextupole";
00021 magnetName[4] = "octupole";
00022 magnetName[5] = "decapole";
00023
00024 colours["default"] = new G4Colour(1, 0.078, 0.576);
00025 colours["sectorbend"] = new G4Colour(0, 0.4, 0.8);
00026 colours["rectangularbend"] = new G4Colour(0, 0.4, 0.8);
00027 colours["quadrupole"] = new G4Colour(1, 0, 0);
00028 colours["sextupole"] = new G4Colour(1, 0.8, 0);
00029 colours["octupole"] = new G4Colour(0, 0.6, 0.3);
00030 colours["decapole"] = new G4Colour(0.4, 0, 0.8);
00031 colours["solenoid"] = new G4Colour(1, 0.549, 0);
00032 colours["multipole"] = new G4Colour(0.466, 0.533, 0.6);
00033 colours["rfcavity"] = new G4Colour(0.466, 0.533, 0.6);
00034 colours["muspoiler"] = new G4Colour(0, 0.807, 0.819);
00035 colours["vkicker"] = new G4Colour(0, 0.4, 0.8);
00036 colours["hkicker"] = new G4Colour(0, 0.4, 0.8);
00037 colours["coil"] = new G4Colour(0.722, 0.451, 0.2);
00038 }
00039
00040 G4Colour* BDSMagnetColours::GetMagnetColour(G4String magnetTypeName)
00041 {
00042 if (colours.find(magnetTypeName) == colours.end())
00043 {
00044 return colours["default"];
00045 }
00046 else
00047 {
00048 return colours[magnetTypeName];
00049 }
00050 }
00051
00052 G4Colour* BDSMagnetColours::GetMagnetColour(G4int magnetOrder)
00053 {
00054 if (magnetOrder < 2)
00055 {
00056 return colours["default"];
00057 }
00058 else if (magnetOrder > 5)
00059 {
00060 return colours["multipole"];
00061 }
00062 else
00063 {
00064 return colours[magnetName[magnetOrder]];
00065 }
00066 }