FilterID.hxx

Go to the documentation of this file.
00001 
00002 
00003 
00004 //-----------------------------------------------------------------------------
00005 // CVS: $Revision: 7080 $, $Date: 2010-06-10 16:34:33 +0100 (Thu, 10 Jun 2010) $, $Author: EckhardSutorius $
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   // No data from raw data included
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   // No data from raw data included
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 // Change log:
00120 //
00121 // 27-May-2004,  IAB: Original version.
00122 //  7-Apr-2008, ETWS: Upgraded to use new detection table layout.
Generated on Mon Oct 4 10:38:34 2010 for WfcamSrc by  doxygen 1.6.3