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

Geo.h

Go to the documentation of this file.
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 

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