00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00014 #include <TString.h>
00015
00016 #include "GeoGeometry/Geo.h"
00017 #include "MessageService/MsgService.h"
00018
00019 CVSID("$Id: Geo.cxx,v 1.9 2008/07/21 03:40:56 schubert Exp $");
00020
00021
00022
00023
00024 Float_t Geo::GetScale(Geo::EAppType apptype) {
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 switch (apptype) {
00035
00036 case kRecons:
00037 return 1./Munits::cm;
00038
00039 case kVMC:
00040 return 1./Munits::cm;
00041
00042 default:
00043 MSG("Geo",Msg::kWarning) << "Scale factor for application type "
00044 << Geo::AsString(apptype) << " unavailable." << endl;
00045 return 1;
00046 }
00047 }
00048
00049
00050 const char* Geo::AsString(Geo::EAppType apptype) {
00051
00052
00053 switch (apptype) {
00054
00055 case kRecons:
00056 return "Recons";
00057
00058 case kVMC:
00059 return "VMC";
00060
00061 default:
00062 MSG("Geo",Msg::kWarning) << "Geo::AsString called with unknown apptype "
00063 << (int)apptype << "." << endl;
00064 return "UnknownAppType";
00065 }
00066 }
00067
00068
00069 const char* Geo::AsString(Geo::ESwimMethod swimmethod) {
00070
00071
00072 switch (swimmethod) {
00073
00074 case kNoFieldSwim:
00075 return "NoFieldSwim";
00076
00077 case kRungeKutta:
00078 return "RungeKutta";
00079
00080 case kStepHelix:
00081 return "StepHelix";
00082
00083 default:
00084 MSG("Geo",Msg::kWarning)
00085 << "Geo::AsString called with unknown ESwimMethod "
00086 << (int)swimmethod << "." << endl;
00087 return "UnknownSwimMethod";
00088 }
00089 }
00090
00091
00092 const char* Geo::AsString(Geo::EDetComponent component) {
00093
00094
00095 switch (component) {
00096
00097 case kMars:
00098 return "Mars";
00099 case kLinr:
00100 return "Linr";
00101 case kHall:
00102 return "Hall";
00103 case kStpScint:
00104 return "StpScint";
00105 case kStpTiO2:
00106 return "StpTiO2";
00107 case kMdlAlSkin:
00108 return "MdlAlSkin";
00109 case kMdlAir:
00110 return "MdlAir";
00111 case kPlnScint:
00112 return "PlnScint";
00113 case kPlnSteel:
00114 return "PlnSteel";
00115 case kPlnAirGap:
00116 return "PlnAirGap";
00117 case kCRGapWater:
00118 return "CRGapWater";
00119 case kCRGapCoil:
00120 return "CRGapCoil";
00121 case kCRGapThroat:
00122 return "CRGapThroat";
00123 case kCRGapFlange:
00124 return "CRGapFlange";
00125 case kCRGapBypass:
00126 return "CRGapBypass";
00127 case kCRStlWater:
00128 return "CRStlWater";
00129 case kCRStlCoil:
00130 return "CRStlCoil";
00131 case kCRStlThroat:
00132 return "CRStlThroat";
00133 case kCRStlNeck:
00134 return "CRStlNeck";
00135 case kCRStlHole:
00136 return "CRStlHole";
00137 case kCRStlDetail:
00138 return "CRStlDetail";
00139 case kCRSctWater:
00140 return "CRSctWater";
00141 case kCRSctCoil:
00142 return "CRSctCoil";
00143 case kCRSctThroat:
00144 return "CRSctThroat";
00145 case kCRSctFlange:
00146 return "CRSctFlange";
00147 case kCRSctBypass:
00148 return "CRSctBypass";
00149 case kRCCoil:
00150 return "RCCoil";
00151 case kRCAir:
00152 return "RCAir";
00153 case kRCShaft:
00154 return "RCShaft";
00155 case kVSStpScint:
00156 return "VSStpScint";
00157 case kVSStpTiO2:
00158 return "VSStpTiO2";
00159 case kVSMdlAlSkin:
00160 return "VSMdlAlSkin";
00161 case kVSMdlAir:
00162 return "VSMdlAir";
00163 case kVSPlnScint:
00164 return "VSPlnScint";
00165 case kSoLo:
00166 return "SoLo";
00167 default:
00168 MSG("Geo",Msg::kWarning) << "Geo::AsString called with unknown detector "
00169 << "component " << (int)component << "." << endl;
00170 return "UnknownDetComponent";
00171 }
00172 }
00173
00174
00175 const char* Geo::AsString(Geo::EFldStrength fldstrength) {
00176
00177
00178 switch (fldstrength) {
00179
00180 case kNoField:
00181 return "NoField";
00182
00183 case kLowField:
00184 return "LowField";
00185
00186 case kHighField:
00187 return "HighField";
00188
00189 default:
00190 MSG("Geo",Msg::kWarning)
00191 << "Geo::AsString called with unknown EFldStrength "
00192 << (int)fldstrength << "." << endl;
00193 return "UnknownFldStrength";
00194 }
00195 }
00196
00197
00198 Geo::EAppType Geo::GetAppType(const char* apptypename) {
00199
00200
00201
00202 TString tmpstr(apptypename);
00203 tmpstr.ToLower();
00204 if ( strcmp(tmpstr.Data(),"recons") == 0 ) return kRecons;
00205 else if ( strcmp(tmpstr.Data(),"vmc") == 0 ) return kVMC;
00206
00207 return kUnknownAppType;
00208
00209 }
00210
00211
00212 Geo::ESwimMethod Geo::GetSwimMethod(const char* swimmethodname) {
00213
00214
00215
00216 TString tmpstr(swimmethodname);
00217 tmpstr.ToLower();
00218 if ( strcmp(tmpstr.Data(),"nofieldswim") == 0 ) return kNoFieldSwim;
00219 else if ( strcmp(tmpstr.Data(),"rungekutta") == 0 )
00220 return kRungeKutta;
00221 else if ( strcmp(tmpstr.Data(),"stephelix" ) == 0 )
00222 return kStepHelix;
00223
00224 return kUnknownSwimMethod;
00225
00226 }
00227
00228
00229 Geo::EDetComponent Geo::GetDetComponent(const char* detcomponentname) {
00230
00231
00232
00233 TString tmpstr(detcomponentname);
00234 tmpstr.ToLower();
00235 if ( strcmp(tmpstr.Data(),"mars") == 0 ) return kMars;
00236 else if ( strcmp(tmpstr.Data(),"linr") == 0 ) return kLinr;
00237 else if ( strcmp(tmpstr.Data(),"hall" ) == 0 ) return kHall;
00238 else if ( strcmp(tmpstr.Data(),"stpscint" ) == 0 ) return kStpScint;
00239 else if ( strcmp(tmpstr.Data(),"stptio2" ) == 0 ) return kStpTiO2;
00240 else if ( strcmp(tmpstr.Data(),"mdlalskin" ) == 0 ) return kMdlAlSkin;
00241 else if ( strcmp(tmpstr.Data(),"mdlair" ) == 0 ) return kMdlAir;
00242 else if ( strcmp(tmpstr.Data(),"plnscint" ) == 0 ) return kPlnScint;
00243 else if ( strcmp(tmpstr.Data(),"plnsteel" ) == 0 ) return kPlnSteel;
00244 else if ( strcmp(tmpstr.Data(),"plnairgap" ) == 0 ) return kPlnAirGap;
00245 else if ( strcmp(tmpstr.Data(),"crgapwater" ) == 0 ) return kCRGapWater;
00246 else if ( strcmp(tmpstr.Data(),"crgapcoil" ) == 0 ) return kCRGapCoil;
00247 else if ( strcmp(tmpstr.Data(),"crgapthroat" ) == 0 ) return kCRGapThroat;
00248 else if ( strcmp(tmpstr.Data(),"crgapflange" ) == 0 ) return kCRGapFlange;
00249 else if ( strcmp(tmpstr.Data(),"crgapbypass" ) == 0 ) return kCRGapBypass;
00250 else if ( strcmp(tmpstr.Data(),"crstlwater" ) == 0 ) return kCRStlWater;
00251 else if ( strcmp(tmpstr.Data(),"crstlcoil" ) == 0 ) return kCRStlCoil;
00252 else if ( strcmp(tmpstr.Data(),"crstlthroat" ) == 0 ) return kCRStlThroat;
00253 else if ( strcmp(tmpstr.Data(),"crstlneck" ) == 0 ) return kCRStlNeck;
00254 else if ( strcmp(tmpstr.Data(),"crstlhole" ) == 0 ) return kCRStlHole;
00255 else if ( strcmp(tmpstr.Data(),"crstldetail" ) == 0 ) return kCRStlDetail;
00256 else if ( strcmp(tmpstr.Data(),"crsctwater" ) == 0 ) return kCRSctWater;
00257 else if ( strcmp(tmpstr.Data(),"crsctcoil" ) == 0 ) return kCRSctCoil;
00258 else if ( strcmp(tmpstr.Data(),"crsctthroat" ) == 0 ) return kCRSctThroat;
00259 else if ( strcmp(tmpstr.Data(),"crsctflange" ) == 0 ) return kCRSctFlange;
00260 else if ( strcmp(tmpstr.Data(),"crsctbypass" ) == 0 ) return kCRSctBypass;
00261 else if ( strcmp(tmpstr.Data(),"rccoil" ) == 0 ) return kRCCoil;
00262 else if ( strcmp(tmpstr.Data(),"rcair" ) == 0 ) return kRCAir;
00263 else if ( strcmp(tmpstr.Data(),"rcshaft" ) == 0 ) return kRCShaft;
00264 else if ( strcmp(tmpstr.Data(),"vsstpscint" ) == 0 ) return kVSStpScint;
00265 else if ( strcmp(tmpstr.Data(),"vsstptio2" ) == 0 ) return kVSStpTiO2;
00266 else if ( strcmp(tmpstr.Data(),"vsmdlalskin" ) == 0 ) return kVSMdlAlSkin;
00267 else if ( strcmp(tmpstr.Data(),"vsmdlair" ) == 0 ) return kVSMdlAir;
00268 else if ( strcmp(tmpstr.Data(),"vsplnscint" ) == 0 ) return kVSPlnScint;
00269 else if ( strcmp(tmpstr.Data(),"solo" ) == 0 ) return kSoLo;
00270 return kUnknownDetComponent;
00271
00272 }
00273
00274
00275 Geo::EFldStrength Geo::GetFldStrength(const char* fldstrengthname) {
00276
00277
00278
00279 TString tmpstr(fldstrengthname);
00280 tmpstr.ToLower();
00281 if ( strcmp(tmpstr.Data(),"nofield") == 0 ) return kNoField;
00282 else if ( strcmp(tmpstr.Data(),"lowfield") == 0 )
00283 return kLowField;
00284 else if ( strcmp(tmpstr.Data(),"highfield" ) == 0 )
00285 return kHighField;
00286
00287 return kUnknownFldStrength;
00288
00289 }