00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef CALTABLES_CALSETMETAINFO_H
00029 #define CALTABLES_CALSETMETAINFO_H
00030
00031 #include <casa/aips.h>
00032 #include <ms/MeasurementSets/MSAntennaColumns.h>
00033 #include <ms/MeasurementSets/MSAntenna.h>
00034 #include <ms/MeasurementSets/MSFieldColumns.h>
00035 #include <ms/MeasurementSets/MSField.h>
00036 #include <ms/MeasurementSets/MSSpWindowColumns.h>
00037 #include <ms/MeasurementSets/MSSpectralWindow.h>
00038
00039
00040
00041
00042
00043 namespace casa {
00044
00045
00046
00047
00048
00049 class CalSetMetaInfo {
00050 public:
00051
00052 CalSetMetaInfo():
00053 antTableName("ANTENNA"), fieldTableName("FIELD"), spwTableName("SPECTRAL_WINDOW"),
00054 calTableMSAC(NULL), calTableMSFC(NULL), calTableMSSpC(NULL),
00055 calAntTable(NULL), calFieldTable(NULL), calSpwTable(NULL)
00056 {rootName="";};
00057
00058 CalSetMetaInfo(const String& root);
00059
00060 ~CalSetMetaInfo() {cleanUp();};
00061
00062 void setRootName(const String& root) {rootName=root;};
00063 String fullSubTableName(String& subTableName,const String& base)
00064 {return String(base + "/" + subTableName);};
00065 String fullSubTableName(String& subTableName)
00066 {return fullSubTableName(subTableName,rootName);};
00067
00068 void reset(const String& root);
00069 String getAntName(Int ant);
00070 String getFieldName(Int field);
00071 String getSpwName(Int spw);
00072 Double getSpwRefFreq(Int spw);
00073
00074 Double getSpwTotalBandwidth(Int spw);
00075
00076 Vector<String> getFieldNames();
00077 Vector<String> getAntNames();
00078 Vector<String> getSpwNames();
00079 Vector<Double> getSpwRefFreqs();
00080 Bool verify(CalSetMetaInfo& otherCSMI);
00081
00082 void copyMetaTables(const String& target);
00083
00084 protected:
00085
00086 void cleanUp()
00087 {
00088 if (calTableMSAC != NULL) {delete calTableMSAC; calTableMSAC = NULL;}
00089 if (calTableMSFC != NULL) {delete calTableMSFC; calTableMSFC = NULL;}
00090 if (calTableMSSpC != NULL) {delete calTableMSSpC; calTableMSSpC = NULL;}
00091
00092 if (calAntTable != NULL) {delete calAntTable; calAntTable = NULL;}
00093 if (calFieldTable != NULL) {delete calFieldTable; calFieldTable = NULL;}
00094 if (calSpwTable != NULL) {delete calSpwTable; calSpwTable = NULL;}
00095 }
00096 private:
00097 String rootName, antTableName, fieldTableName, spwTableName;
00098 ROMSAntennaColumns *calTableMSAC;
00099 ROMSFieldColumns *calTableMSFC;
00100 ROMSSpWindowColumns *calTableMSSpC;
00101 MSAntenna *calAntTable;
00102 MSField *calFieldTable;
00103 MSSpectralWindow *calSpwTable;
00104 };
00105
00106
00107
00108
00109 }
00110
00111 #endif