Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Geo.cxx

Go to the documentation of this file.
00001 
00002 //
00003 // Geo
00004 //
00005 // Package: Geo (Geometry).
00006 //
00007 // S. Kasahara 11/03
00008 //
00009 // Purpose: Define data types and provide general purpose utility routines 
00010 //          to the Geometry package.
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 // Definition of methods (alphabetical order)
00022 // ******************************************
00023 //_____________________________________________________________________________
00024 Float_t Geo::GetScale(Geo::EAppType apptype) {
00025   // Return the scale factor to be used when building the detector geometry
00026   // The scale factor will be applied to build the geometry in the units
00027   // appropriate for the given application type. 
00028   // GeoGeometry is now built in cm for both vmc and reconstruction. 
00029   // UgliXXXHandle (used by reconstruction) operates in meters, and a
00030   // scale factor is applied as appropriate to "hide" the GeoGeometry
00031   // implementation in cm so that the user of UgliXXXHandle sees a geometry
00032   // built in m.
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   }// end of switch
00047 }
00048 
00049 //_____________________________________________________________________________
00050 const char* Geo::AsString(Geo::EAppType apptype) {
00051   // Convert enumerated application type to an application type string
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   }// end of switch
00066 }
00067 
00068 //_____________________________________________________________________________
00069 const char* Geo::AsString(Geo::ESwimMethod swimmethod) {
00070   // Convert enumerated swimmethod to a swimmethod string
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   }// end of switch
00089 }
00090 
00091 //_____________________________________________________________________________
00092 const char* Geo::AsString(Geo::EDetComponent component) {
00093   // Convert enumerated detector component to a detector component string
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   }// end of switch
00172 }
00173 
00174 //_____________________________________________________________________________
00175 const char* Geo::AsString(Geo::EFldStrength fldstrength) {
00176   // Convert enumerated field strength to a field strength string
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   }// end of switch
00195 }
00196 
00197 //_____________________________________________________________________________
00198 Geo::EAppType Geo::GetAppType(const char* apptypename) {
00199   // Purpose: Convert text string apptype to an enumerated code.
00200   // Returns enumerated EAppType or kUnknown if no match
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   // Purpose: Convert text string swimmethodname to an enumerated code.
00214   // Returns enumerated ESwimMethod or kUnknownSwimMethod if no match
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   // Purpose: Convert text string detcomponent to an enumerated code.
00231   // Returns enumerated EDetComponent or kUnknownDetComponent if no match
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   // Purpose: Convert text string fldstrengthname to an enumerated code.
00277   // Returns enumerated EFldStrength or kUnknownFldStrength if no match
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 }

Generated on Mon Feb 15 11:06:45 2010 for loon by  doxygen 1.3.9.1