casa
$Rev:20696$
|
00001 //# MeasData.h: MeasData provides Measure computing data 00002 //# Copyright (C) 1995,1996,1997,1999,2003 00003 //# Associated Universities, Inc. Washington DC, USA. 00004 //# 00005 //# This library is free software; you can redistribute it and/or modify it 00006 //# under the terms of the GNU Library General Public License as published by 00007 //# the Free Software Foundation; either version 2 of the License, or (at your 00008 //# option) any later version. 00009 //# 00010 //# This library is distributed in the hope that it will be useful, but WITHOUT 00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00012 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00013 //# License for more details. 00014 //# 00015 //# You should have received a copy of the GNU Library General Public License 00016 //# along with this library; if not, write to the Free Software Foundation, 00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 00018 //# 00019 //# Correspondence concerning AIPS++ should be addressed as follows: 00020 //# Internet email: aips2-request@nrao.edu. 00021 //# Postal address: AIPS++ Project Office 00022 //# National Radio Astronomy Observatory 00023 //# 520 Edgemont Road 00024 //# Charlottesville, VA 22903-2475 USA 00025 //# 00026 //# 00027 //# $Id: MeasData.h 20739 2009-09-29 01:15:15Z Malte.Marquarding $ 00028 00029 #ifndef MEASURES_MEASDATA_H 00030 #define MEASURES_MEASDATA_H 00031 00032 //# Includes 00033 #include <casa/aips.h> 00034 00035 namespace casa { //# NAMESPACE CASA - BEGIN 00036 00037 //# Forward Declarations 00038 class RotMatrix; 00039 00040 // <summary> 00041 // MeasData provides Measure computing data 00042 // </summary> 00043 00044 // <use visibility=local> 00045 00046 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasMath" demos=""> 00047 // </reviewed> 00048 00049 // <prerequisite> 00050 // <li> <linkto class=Measure>Measure</linkto> class 00051 // </prerequisite> 00052 // 00053 // <etymology> 00054 // MeasData from Measure and Data 00055 // </etymology> 00056 // 00057 // <synopsis> 00058 // MeasData contains the constant data 00059 // necessary for precession, nutation and other 00060 // <linkto class=Measure>Measure</linkto> related calculations.<br> 00061 // Database (Table) related data, or data that can be changed by the user, 00062 // is available in the <linkto class=MeasTable>MeasTable</linkto> class. <br> 00063 // All data. apart from a set of simple constants: 00064 // <srcblock> 00065 // MeasData::MJD2000 00066 // MeasData::MJDB1950 00067 // MeasData::MJDB1900 00068 // MeasData::MJDB1850 00069 // MeasData::TROPCEN 00070 // MeasData::JDCEN 00071 // MeasData::SECinDAY 00072 // </srcblock> 00073 // are obtained by calls to a method. 00074 // This class contains no constructors or destructors, only static 00075 // methods and (static) constants. 00076 // <br> References:<br> Explanatory supplements to the Astronomical Almanac 00077 // <br> C. Ron and J. Vondrak, Bull. Astron. Inst. Czechosl. 37, p96, 1986 00078 // <br> M. Soma, Th. Hirayama and H. Kinoshita, Celest. Mech. 41, p389, 1988 00079 // <br> V.S. Gubanov, Astron. Zh. 49, p1112, 1972 (English translation: 00080 // Sov. Astronomy - AJ, Vol. 16, No. 5, p. 907) 00081 // </synopsis> 00082 // 00083 // <example> 00084 // Usage examples can be found in <linkto class=Precession>Precession</linkto> 00085 // </example> 00086 // 00087 // <motivation> 00088 // To create a clean interface between the actual calculations and the 00089 // methods to obtain the parameters for these calculations. Note that the 00090 // tables are in general in the format and units found in the literature. This 00091 // is to be able to easy check and change them. However, in the future 00092 // re-arrangement could produce faster and more compact code. 00093 // </motivation> 00094 // 00095 // <todo asof="1997/04/17"> 00096 // <li> more precise data for VLBI and pulsar 00097 // </todo> 00098 00099 class MeasData { 00100 00101 public: 00102 00103 //# Constants 00104 // General constants 00105 // <group> 00106 // MJD of J2000.0 00107 static const Double MJD2000; 00108 // MJD of B1950.0 00109 static const Double MJDB1950; 00110 // MJD of B1900.0 00111 static const Double MJDB1900; 00112 // MJD of B1850.0 00113 static const Double MJDB1850; 00114 // Length Tropical century 00115 static const Double TROPCEN; 00116 // Length Julian century 00117 static const Double JDCEN; 00118 // Length of day in sec 00119 static const Double SECinDAY; 00120 // </group> 00121 00122 //# General Member Functions 00123 00124 // Get the rotation matrices for galactic coordinates 00125 // <group> 00126 static const RotMatrix &GALtoB1950(); 00127 static const RotMatrix &GALtoJ2000(); 00128 static const RotMatrix &J2000toGAL(); 00129 static const RotMatrix &B1950toGAL(); 00130 // </group> 00131 00132 // Get one of the 4 3x3 sub rotation matrices for B1950-J2000 conversions 00133 // <group> 00134 static const RotMatrix &MToB1950(uInt which); 00135 static const RotMatrix &MToJ2000(uInt which); 00136 // </group> 00137 00138 // Get the solar semi diameter at 1 AU in rad 00139 static Double SunSemiDiameter(); 00140 00141 // J2000 obliquity 00142 static Double eps0J2000(); 00143 00144 private: 00145 00146 //# Constructors 00147 // Default constructor, NOT defined 00148 MeasData(); 00149 00150 // Copy assign, NOT defined 00151 MeasData &operator=(const MeasData &other); 00152 00153 //# Destructor 00154 // Destructor (NOT defined) and not declared to stop warning 00155 // ~MeasData(); 00156 //# General member functions 00157 }; 00158 00159 00160 } //# NAMESPACE CASA - END 00161 00162 #endif