00001
00002
00003
00004
00005
00006
00007 #ifndef FILTERID_H
00008 #define FILTERID_H
00009
00010 #include "DataMethod.hxx"
00011 #include "DataOps.h"
00012 #include "FitsFile.h"
00013
00016 template<typename DataType>
00017 class FilterIDByFits : public DataMethod<DataType>
00018 {
00019 public:
00021 FilterIDByFits(const FitsFile& aFile)
00022 {
00023 DataMethod<DataType>::methodName = "FilterIDByFits";
00024 string filterName;
00025 aFile.movabsHdu(1);
00026 aFile.readKey(FitsFile::FILTER, filterName);
00027 mFilterID = DataOps::getFilterId(filterName);
00028 }
00029
00031 virtual ~FilterIDByFits() {}
00032
00034 void setSource(IntMap& tbls, IntMap& cols, StringMap units) { }
00035
00037 void setTarget(IntMap& cols, StringMap units)
00038 {
00039 fidColno = cols[0];
00040 }
00041
00043 void doit(TableData<DataType>& data, int row1, int row2)
00044 {
00045 for (int rowNo = row1; rowNo < row2; ++rowNo)
00046 {
00047 if (mFilterID > 0)
00048 {
00049 data.assign(fidColno, rowNo, mFilterID);
00050 }
00051 }
00052 }
00053
00054
00055 void doit2(TableData<DataType>& rawData, TableData<DataType>& data, int row1, int row2) { }
00056
00057 private:
00058 int fidColno;
00059 int mFilterID;
00060 };
00061
00064 template<typename DataType>
00065 class FilterID : public DataMethod<DataType>
00066 {
00067 public:
00069 FilterID() { DataMethod<DataType>::methodName = "FilterID"; }
00070
00072 virtual ~FilterID() { }
00073
00075 void setSource(IntMap& tbls, IntMap& cols, StringMap units)
00076 {
00077 fnameColno = cols[0];
00078 }
00079
00081 void setTarget(IntMap& cols, StringMap units)
00082 {
00083 fidColno = cols[0];
00084 if (fidColno < 0)
00085 {
00086 throw DataMethodException("FilterID method. Couldn't source");
00087 }
00088 }
00089
00091 void doit(TableData<DataType>& data, int row1, int row2)
00092 {
00093 for (int rowNo = row1; rowNo < row2; ++rowNo)
00094 {
00095 string filterName;
00096 data.value(fnameColno, rowNo, filterName);
00097 int mFilterID = DataOps::getFilterId(filterName);
00098 if (mFilterID > 0)
00099 {
00100 data.assign(fidColno, rowNo, mFilterID);
00101 }
00102 }
00103 }
00104
00105
00106 void doit2(TableData<DataType>& rawData, TableData<DataType>& data, int row1, int row2) { }
00107
00108 private:
00109 int fidColno;
00110 int fnameColno;
00111 };
00112
00113 #endif
00114
00115
00116
00117
00118