casa
$Rev:20696$
|
00001 //# MSSelectionKeywords.h: selection keywords for the MS 00002 //# Copyright (C) 1997,1998,1999,2000,2001 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: MSSelectionKeywords.h 20838 2009-12-01 10:10:55Z gervandiepen $ 00028 00029 #ifndef MS_MSSELECTIONKEYWORDS_H 00030 #define MS_MSSELECTIONKEYWORDS_H 00031 00032 #include <casa/aips.h> 00033 00034 namespace casa { //# NAMESPACE CASA - BEGIN 00035 00036 template <class K, class V> class SimpleOrderedMap; 00037 template <class T> class Block; 00038 // forward declare the class so we can typedef it 00039 class MSSelectionKeywords; 00040 class String; 00041 00042 // Define a shorthand notation for this class, so enums can be specified 00043 // easily. 00044 typedef MSSelectionKeywords MSS; 00045 00046 // <summary> 00047 // MSSelectionKeywords specifies selection keywords for the MeasurementSet 00048 // </summary> 00049 00050 // <use visibility=export> 00051 00052 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos=""> 00053 // </reviewed> 00054 00055 // <prerequisite> 00056 // <li> MeasurementSet 00057 // <li> MSSelector 00058 // </prerequisite> 00059 // 00060 // <etymology> 00061 // MSSelectionKeywords is a class that defines selection keywords 00062 // </etymology> 00063 // 00064 // <synopsis> 00065 // This class is used to specify selections on a MeasurementSet. 00066 // It is a purely static class that just defines a mapping from 00067 // Strings to Enums, and provides these for use by classes like 00068 // MSSelector and MSRange 00069 // 00070 // <example> <srcblock> 00071 // </srcblock></example> 00072 // </synopsis> 00073 // 00074 // <motivation> 00075 // Selection keywords are needed for several classes, this class provides 00076 // them to all, avoiding duplication in each class. 00077 // </motivation> 00078 // 00079 // <thrown> 00080 // <li> 00081 // <li> 00082 // </thrown> 00083 // 00084 // <todo asof="yyyy/mm/dd"> 00085 // <li> add this feature 00086 // </todo> 00087 00088 class MSSelectionKeywords 00089 { 00090 public: 00091 // The fields in the MS for which selection and range operations are 00092 // defined. Some of these directly correspond to columns in the table, 00093 // others are derived quantities or columns in subtables. 00094 enum Field { 00095 // undefined field 00096 UNDEFINED=0, 00097 // the range of visibility amplitude 00098 AMPLITUDE, 00099 // the range of corrected vis amplitude 00100 CORRECTED_AMPLITUDE, 00101 // the range of model vis amplitude 00102 MODEL_AMPLITUDE, 00103 // the amplitude of the ratio corrected data/model data 00104 RATIO_AMPLITUDE, 00105 // the residual vis amplitude (corrected-model) 00106 RESIDUAL_AMPLITUDE, 00107 // the observed residual vis amplitude (observed-model) 00108 OBS_RESIDUAL_AMPLITUDE, 00109 // the list of antenna1 id values 00110 ANTENNA1, 00111 // the list of antenna2 id values 00112 ANTENNA2, 00113 // the list of antenna names 00114 ANTENNAS, 00115 // the list of array id values 00116 ARRAY_ID, 00117 // description of the data axes 00118 AXIS_INFO, 00119 // the channel frequencies, a vector for each selected spectral window 00120 CHAN_FREQ, 00121 // the list of polarizations present, this gives the String values 00122 CORR_NAMES, 00123 // the list of polarizations present, this gives the Stokes enum values 00124 CORR_TYPES, 00125 // the complex data 00126 DATA, 00127 // the complex corrected data 00128 CORRECTED_DATA, 00129 //the complex model data 00130 MODEL_DATA, 00131 // the ratio corrected data/model data 00132 RATIO_DATA, 00133 // the residual data (corrected - model) 00134 RESIDUAL_DATA, 00135 // the observed residual data (observed - model) 00136 OBS_RESIDUAL_DATA, 00137 // the list of dataDescription id values 00138 DATA_DESC_ID, 00139 // the list of feed1 id values 00140 FEED1, 00141 // the list of feed2 id values 00142 FEED2, 00143 // the list of field_id values 00144 FIELD_ID, 00145 // the list of field names 00146 FIELDS, 00147 // the flags 00148 FLAG, 00149 // the row flags 00150 FLAG_ROW, 00151 // a summary of flags (flag count summed over rows) 00152 FLAG_SUM, 00153 // the float data (optional single dish column) 00154 FLOAT_DATA, 00155 // Hour angle 00156 HA, 00157 // the list of interferometers (= 1000*ant1+ant2) present 00158 IFR_NUMBER, 00159 // the (range of the) imaginary part of the visibilities 00160 IMAGINARY, 00161 // the (range of the) imaginary part of the corrected visibilities 00162 CORRECTED_IMAGINARY, 00163 // the (range of the) imaginary part of the model visibilities 00164 MODEL_IMAGINARY, 00165 // the imaginary part of the ratio corrected data/model data 00166 RATIO_IMAGINARY, 00167 // the (range of the) imaginary part of the residual visibilities 00168 RESIDUAL_IMAGINARY, 00169 // the (range of the) imaginary part of the observed residual visibilities 00170 OBS_RESIDUAL_IMAGINARY, 00171 // Local Apparent Sidereal Time 00172 LAST, 00173 // the number of correlation products (polarizations) for selected spectral window 00174 NUM_CORR, 00175 // the number of spectral channels for selected spectral window 00176 NUM_CHAN, 00177 // the (range of the) phase of the visibilities 00178 PHASE, 00179 // the (range of the) phase of the corrected visibilities 00180 CORRECTED_PHASE, 00181 // the (range of the) phase of the model visibilities 00182 MODEL_PHASE, 00183 // the phase of the ratio corrected data/model data 00184 RATIO_PHASE, 00185 // the (range of the) phase of the residual visibilities 00186 RESIDUAL_PHASE, 00187 // the (range of the) phase of the observed residual visibilities 00188 OBS_RESIDUAL_PHASE, 00189 // the phase center direction for each field (matrix + epoch) 00190 PHASE_DIR, 00191 // the (range of the) real part of the visibilities 00192 REAL, 00193 // the (range of the) real part of the corrected visibilities 00194 CORRECTED_REAL, 00195 // the (range of the) real part of the model visibilities 00196 MODEL_REAL, 00197 // the real part of the ratio corrected data/model data 00198 RATIO_REAL, 00199 // the real part of the residual visibilities (corrected-model) 00200 RESIDUAL_REAL, 00201 // the real part of the observed residuals (observed-model) 00202 OBS_RESIDUAL_REAL, 00203 // the reference frequency for selected spectral window (or vector with all) 00204 REF_FREQUENCY, 00205 // the list of row numbers in the original MS 00206 ROWS, 00207 // the list of scan_number values 00208 SCAN_NUMBER, 00209 //# the list of spectral window id values 00210 //# SPECTRAL_WINDOW_ID, 00211 // the per spectrum sigmas 00212 SIGMA, 00213 // the range of times 00214 TIME, 00215 // the list of time values 00216 TIMES, 00217 // UT time (seconds of current day) 00218 UT, 00219 // the uvw coordinates 00220 UVW, 00221 // the (range of the) U coordinate (m) 00222 //# Note:order of U, V and W is important, no intervening items allowed 00223 //# without changing select() code. 00224 U, 00225 // the (range of the) V coordinate (m) 00226 V, 00227 // the (range of the) W coordinate (m) 00228 W, 00229 // the (range of the) UV-distance (m) 00230 UVDIST, 00231 // the weights 00232 WEIGHT, 00233 // Number of keywords 00234 NUMBER_KEYWORDS 00235 }; 00236 00237 00238 // convert a keyword string to the corresponding enum 00239 static Field field(const String& keyword); 00240 00241 // convert an enum value to the corresponding keyword string 00242 static const String& keyword(Field field); 00243 00244 protected: 00245 // This class is purely static, no instances are allowed. 00246 MSSelectionKeywords(); 00247 MSSelectionKeywords(const MSSelectionKeywords& other); 00248 MSSelectionKeywords& operator=(const MSSelectionKeywords& other); 00249 00250 // initialization function for the string to enum mapping 00251 static void initMap(SimpleOrderedMap<String,Int>*& fieldMap, 00252 Block<Int>*& reverseMap); 00253 }; 00254 00255 00256 } //# NAMESPACE CASA - END 00257 00258 #endif