FilterID.hxx
Go to the documentation of this file.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 if (aFile.isTile()) {
00026 aFile.movabsHdu(2);
00027 } else {
00028 aFile.movabsHdu(1);
00029 }
00030 aFile.readKey(FitsFile::FILTER, filterName);
00031 mFilterID = DataOps::getFilterId(filterName);
00032 }
00033
00035 virtual ~FilterIDByFits() {}
00036
00038 void setSource(IntMap& tbls, IntMap& cols, StringMap units) { }
00039
00041 void setTarget(IntMap& cols, StringMap units)
00042 {
00043 fidColno = cols[0];
00044 }
00045
00047 void doit(TableData<DataType>& data, int row1, int row2)
00048 {
00049 for (int rowNo = row1; rowNo < row2; ++rowNo)
00050 {
00051 if (mFilterID > 0)
00052 {
00053 data.assign(fidColno, rowNo, mFilterID);
00054 }
00055 }
00056 }
00057
00058
00059 void doit2(TableData<DataType>& rawData, TableData<DataType>& data, int row1, int row2) { }
00060
00061 private:
00062 int fidColno;
00063 int mFilterID;
00064 };
00065
00068 template<typename DataType>
00069 class FilterID : public DataMethod<DataType>
00070 {
00071 public:
00073 FilterID() { DataMethod<DataType>::methodName = "FilterID"; }
00074
00076 virtual ~FilterID() { }
00077
00079 void setSource(IntMap& tbls, IntMap& cols, StringMap units)
00080 {
00081 fnameColno = cols[0];
00082 }
00083
00085 void setTarget(IntMap& cols, StringMap units)
00086 {
00087 fidColno = cols[0];
00088 if (fidColno < 0)
00089 {
00090 throw DataMethodException("FilterID method. Couldn't source");
00091 }
00092 }
00093
00095 void doit(TableData<DataType>& data, int row1, int row2)
00096 {
00097 for (int rowNo = row1; rowNo < row2; ++rowNo)
00098 {
00099 string filterName;
00100 data.value(fnameColno, rowNo, filterName);
00101 int mFilterID = DataOps::getFilterId(filterName);
00102 if (mFilterID > 0)
00103 {
00104 data.assign(fidColno, rowNo, mFilterID);
00105 }
00106 }
00107 }
00108
00109
00110 void doit2(TableData<DataType>& rawData, TableData<DataType>& data, int row1, int row2) { }
00111
00112 private:
00113 int fidColno;
00114 int fnameColno;
00115 };
00116
00117 #endif
00118
00119
00120
00121
00122