FilterID.hxx

Go to the documentation of this file.
00001 
00002 
00003 
00004 //-----------------------------------------------------------------------------
00005 // CVS: $Revision: 4695 $, $Date: 2008-04-09 16:18:42 +0100 (Wed, 09 Apr 2008) $, $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     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   // No data from raw data included
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   // No data from raw data included
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 // Change log:
00116 //
00117 // 27-May-2004,  IAB: Original version.
00118 //  7-Apr-2008, ETWS: Upgraded to use new detection table layout.

Generated on Thu Apr 2 21:52:16 2009 for WfcamSrc by  doxygen 1.5.2