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

Ast.h

Go to the documentation of this file.
00001 #ifndef AST_H
00002 #define AST_H
00003 
00005 // Ast                                                                //
00006 //                                                                    //
00007 // Package: Ast (AstroUtil).                                          //
00008 //                                                                    //
00009 // Concept:  Define data types and static utility methods used by     //
00010 //           AstroUtil package.                                       //
00011 //                                                                    //
00012 // S. Kasahara  04/2003                                               //
00013 //                                                                    //
00015 
00016 #include "Conventions/Detector.h"
00017 
00018 namespace AstUtil {
00019 
00020 // Values for longitude, latitude, and offset between true north and
00021 // local detector z-axis are from Wes Smart minossoft correspondence 
00022 // of 4/7/2003, in which he states:
00023 // "These positions are given in the datum NAD 83, which uses the reference
00024 //  ellipsoid GRS 80.  The semi-major axis of GRS 80 is 6,378,137 m and
00025 //  the semi-minor axis is 6,356,752.3141 m."
00026 // This data can also be found in the NUMI Technical Design Handbook.
00027 const double kFarDetLongitude = -92.24141202;  // degrees  
00028 const double kFarDetLatitude  =  47.82026653;  // degrees
00029 
00030 // Rotation matrix is determined from the measured -26.554823 degree offset 
00031 // of the local far detector z-axis from true north measured clockwise.
00032 // The rotation matrix R[9] from local (O-frame) to ideal (O' frame) 
00033 // coordinates is set up such that:
00034 //  x' = R[0]*x + R[1]*y + R[2]*z  
00035 //  y' = R[3]*x + R[4]*y + R[5]*z
00036 //  z' - R[6]*x + R[7]*y + R[8]*z
00037 // where local and ideal coordinates are defined as:
00038 //  Local Det. Coordinate direction cosines (dcosx,dcosy,dcosz) are 
00039 //  defined in the local coordinate system of a specified detector
00040 //  type (Detector::Detector_t):
00041 //    +z: horizontal component of the beam direction.
00042 //    +y: local vertical.
00043 //    +x: chosen to make coordinate system right-handed.
00044 //
00045 //  Ideal Det. Coordinate direction cosines (dcosx_ideal,dcosy_ideal,
00046 //  dcosz_ideal) are defined such that:
00047 //    +z: points North.
00048 //    +y: radius vector originating at center of earth.
00049 //    +x: points West.   
00050 //
00051 
00052 const double kFarDetRotMatrixLocalToIdeal[9] 
00053              = { 0.894507011,0,0.447053919,
00054                  0,          1,          0,
00055                 -0.447053919,0,0.894507011};
00056 const double kFarDetRotMatrixIdealToLocal[9] =
00057  { kFarDetRotMatrixLocalToIdeal[0],
00058    kFarDetRotMatrixLocalToIdeal[3],
00059    kFarDetRotMatrixLocalToIdeal[6],
00060    kFarDetRotMatrixLocalToIdeal[1],
00061    kFarDetRotMatrixLocalToIdeal[4],
00062    kFarDetRotMatrixLocalToIdeal[7],
00063    kFarDetRotMatrixLocalToIdeal[2],
00064    kFarDetRotMatrixLocalToIdeal[5],
00065    kFarDetRotMatrixLocalToIdeal[8] };
00066 const double kNearDetLongitude = -88.27062086;  // degrees
00067 const double kNearDetLatitude  =  41.84056333;  // degrees
00068 // Rotation matrix is determined from the measured -23.909201 degree offset 
00069 // of the local near detector z-axis from true north measured clockwise.
00070 const double kNearDetRotMatrixLocalToIdeal[9] 
00071                           = { 0.914188882,0,0.405288399,
00072                               0,          1,          0,
00073                              -0.405288399,0,0.914188882};
00074 const double kNearDetRotMatrixIdealToLocal[9] =
00075 { kNearDetRotMatrixLocalToIdeal[0],
00076   kNearDetRotMatrixLocalToIdeal[3],
00077   kNearDetRotMatrixLocalToIdeal[6],
00078   kNearDetRotMatrixLocalToIdeal[1],
00079   kNearDetRotMatrixLocalToIdeal[4],
00080   kNearDetRotMatrixLocalToIdeal[7],
00081   kNearDetRotMatrixLocalToIdeal[2],
00082   kNearDetRotMatrixLocalToIdeal[5],
00083   kNearDetRotMatrixLocalToIdeal[8] };
00084                                                      
00085   double GetDetLongitude(Detector::Detector_t detector);
00086   double GetDetLatitude(Detector::Detector_t detector);
00087   const double* GetDetRotMatrixLocalToIdeal(Detector::Detector_t detector);
00088   const double* GetDetRotMatrixIdealToLocal(Detector::Detector_t detector);
00089 
00090 }
00091 
00092 #endif  // AST_H
00093 
00094 

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