00001 #ifndef GEO_H 00002 #define GEO_H 00003 00005 // Geo // 00006 // // 00007 // Package: Geo (Geometry). TGeo based geometry package. // 00008 // // 00009 // Concept: Define data types and static utility methods used by // 00010 // Geometry package. // 00011 // // 00012 // S. Kasahara 11/2003 // 00013 // // 00015 #include "Conventions/Detector.h" 00016 #include "Conventions/Munits.h" 00017 00018 namespace Geo { 00019 00020 // Nominal strip width and thickness 00021 const Float_t kStripWidth = 4.1 * Munits::cm; 00022 const Float_t kStripThick = 1.0 * Munits::cm; 00023 00024 // Nominal thickness of coextruded TiO2/Polystyrene coating 00025 const Float_t kCoexThick = 0.025 * Munits::cm; 00026 00027 // Nominal module Al skin thickness 00028 const Float_t kModuleSkinThick = 0.05 * Munits::cm; // tdr 00029 // Nominal module coil hole radius defined by coil bypass region below. 00030 const Float_t kFarModuleHoleRad = 19.7* Munits::cm; 00031 // The near detector coil hole radius defined here applies to the full 00032 // coverage planes 00033 const Float_t kNearModuleHoleRad = 27.9* Munits::cm; 00034 00035 // Nominal steel width 00036 const Float_t kFarSteelWidth = 8.0 * Munits::m; 00037 const Float_t kCalDetSteelWidth = 1.0 * Munits::m; 00038 00039 // Near coil hole center offset (== u,v origin offset) 00040 const Float_t kNearXOffset = -55.78 * Munits::cm; 00041 00042 // Coil dimensions from R. Hatcher's $GMINOSPATH/inc/coil_info.inc 00043 // and references therein. For far detector, the following dimensions 00044 // are used to define the radius of a tube. For the near detector, 00045 // the dimensions are used to define the half-width of a box. 00046 const Float_t kCoilRad = 12.0 * Munits::cm; // magnetized conducting coil 00047 const Float_t kThroatRad = 13.0 * Munits::cm; // magnetized air 00048 const Float_t kNeckRad = 14.0 * Munits::cm; // magnetized iron 00049 const Float_t kFeHoleRad = 15.0 * Munits::cm; // magnetized air 00050 // kFlange applies to region between steel planes (scint pln + air gaps) 00051 const Float_t kFlangeRad = 17.0 * Munits::cm; // magnetized iron 00052 // kDetail defines region within steel plane to which detailed 00053 // magnetic field map applies 00054 const Float_t kDetailRad = 29.8 * Munits::cm; // magnetized steel (FEPL) 00055 // Bypass region defines region within scint planes and air gaps, in air 00056 // filled coil bypass region, to which detailed field map will be applied. 00057 // For near full and far scint planes, the bypass radius is 00058 // used to defined the radius of a tube. For near partial, the bypass 00059 // radius is used to define the halfwidth of a box. 00060 const Float_t kNearFullBypassRad = 27.9 * Munits::cm; // magnetized air 00061 const Float_t kNearPartialBypassRad = 18.0 * Munits::cm; // magnetized air 00062 const Float_t kFarBypassRad = 19.7 * Munits::cm; // magnetized air 00063 // Cooling tubes inserted into near detector coil 00064 const Float_t kNearCoolRad = 0.8255 * Munits::cm; // magnetized water 00065 00066 enum EAppType { 00067 // Geometry application type 00068 kRecons, // for use in minos reconstruction framework 00069 kVMC, // for use in virtual monte carlo application 00070 kUnknownAppType 00071 }; 00072 00073 enum ESwimMethod { 00074 // Bfield swim method. Assigned to medium and used to determine 00075 // transport model used to swim particles through that medium in VMC. 00076 kNoFieldSwim, // swim as though no b-field 00077 // Runge-Kutta method recommended for fields with a strong gradient. 00078 kRungeKutta, 00079 // Step-wise helix method recommended for fields with a small gradient. 00080 // Tracking is performed along helix for each step, assuming a 00081 // constant B-field with the value of the step mid-point. 00082 // Better performance than kRungeKutta. 00083 kStepHelix, 00084 kUnknownSwimMethod 00085 }; 00086 00087 enum EDetComponent { 00088 // Detector components 00089 kMars, // rock 00090 kLinr, // cavern liner 00091 kHall, // cavern hall 00092 kStpScint, // strip scintillator 00093 kStpTiO2, // strip TiO2 coex coating 00094 kMdlAlSkin, // scint module Al skin 00095 kMdlAir, // scint module Air fill 00096 kPlnScint, // scint plane Air fill 00097 kPlnSteel, // steel plane 00098 kPlnAirGap, // scint/steel pln air gap 00099 kCRGapWater, // coil region air gap water 00100 kCRGapCoil, // coil region air gap coil 00101 kCRGapThroat, // coil region air gap throat 00102 kCRGapFlange, // coil region air gap flange 00103 kCRGapBypass, // coil region air gap bypass 00104 kCRStlWater, // coil region steel pln water 00105 kCRStlCoil, // coil region steel pln coil 00106 kCRStlThroat, // coil region steel pln throat 00107 kCRStlNeck, // coil region steel pln neck 00108 kCRStlHole, // coil region steel pln hole 00109 kCRStlDetail, // coil region steel pln detail 00110 kCRSctWater, // coil region scint pln water 00111 kCRSctCoil, // coil region scint pln coil 00112 kCRSctThroat, // coil region scint pln throat 00113 kCRSctFlange, // coil region scint pln flange 00114 kCRSctBypass, // coil region scint pln bypass 00115 kRCCoil, // return coil 00116 kRCAir, // return coil air fill 00117 kRCShaft, // return coil shaft 00118 kVSStpScint, // strip scintillator 00119 kVSStpTiO2, // strip TiO2 coex coating 00120 kVSMdlAlSkin, // scint module Al skin 00121 kVSMdlAir, // scint module Air fill 00122 kVSPlnScint, // scint plane Air fill 00123 kSoLo, // soudan low background counting facilities (lead stacks) 00124 kUnknownDetComponent // unknown 00125 }; 00126 00127 enum EFldStrength { 00128 // Field strength assigned to detector components 00129 kNoField, // e.g. hall,rock 00130 kLowField, // e.g. scint plane,plane air gaps 00131 kHighField, // e.g. steel plane, coil 00132 kUnknownFldStrength // unknown 00133 }; 00134 00135 // Return scale factor appropriate for application type (vmc or reco) 00136 Float_t GetScale(EAppType apptype); 00137 00138 // Return character string associated with enumerated type 00139 const char* AsString(EAppType apptype); 00140 const char* AsString(ESwimMethod swimmethod); 00141 const char* AsString(EDetComponent detcomponent); 00142 const char* AsString(EFldStrength fldstrength); 00143 00144 // Return enumerated type associated with the character string 00145 EAppType GetAppType(const char* apptypename); 00146 ESwimMethod GetSwimMethod(const char* swimmethodname); 00147 EDetComponent GetDetComponent(const char* detcomponentname); 00148 EFldStrength GetFldStrength(const char* fldstrengthname); 00149 00150 } 00151 #endif // GEO_H 00152 00153