| [2696] | 1 | // | 
|---|
|  | 2 | // C++ Interface: STApplyTable | 
|---|
|  | 3 | // | 
|---|
|  | 4 | // Description: | 
|---|
|  | 5 | // | 
|---|
|  | 6 | // Base class for application tables. | 
|---|
|  | 7 | // | 
|---|
| [2703] | 8 | // Author: Takeshi Nakazato <takeshi.nakazato@nao.ac.jp> (C) 2012 | 
|---|
| [2696] | 9 | // | 
|---|
|  | 10 | // Copyright: See COPYING file that comes with this distribution | 
|---|
|  | 11 | // | 
|---|
|  | 12 | // | 
|---|
| [2703] | 13 | #ifndef ASAP_APPLY_TABLE_H | 
|---|
|  | 14 | #define ASAP_APPLY_TABLE_H | 
|---|
| [2696] | 15 |  | 
|---|
|  | 16 | #include <casa/Arrays/Vector.h> | 
|---|
|  | 17 | #include <casa/Logging/LogIO.h> | 
|---|
|  | 18 | #include <tables/Tables/Table.h> | 
|---|
|  | 19 | #include <tables/Tables/ScalarColumn.h> | 
|---|
|  | 20 | #include <measures/TableMeasures/ScalarMeasColumn.h> | 
|---|
|  | 21 |  | 
|---|
|  | 22 | #include "Scantable.h" | 
|---|
|  | 23 | #include "STSelector.h" | 
|---|
| [2720] | 24 | #include "STCalEnum.h" | 
|---|
| [2696] | 25 |  | 
|---|
|  | 26 | namespace asap { | 
|---|
|  | 27 |  | 
|---|
|  | 28 | /** | 
|---|
|  | 29 | Abstract base class for all application tables. | 
|---|
|  | 30 |  | 
|---|
|  | 31 | @author Takeshi Nakazato | 
|---|
|  | 32 | @date $Date:$ | 
|---|
|  | 33 | @version $Revision:$ | 
|---|
|  | 34 | */ | 
|---|
|  | 35 | class STApplyTable  { | 
|---|
|  | 36 | public: | 
|---|
|  | 37 | STApplyTable() {;} | 
|---|
|  | 38 | STApplyTable(const Scantable& parent, const casa::String& name); | 
|---|
| [2720] | 39 | STApplyTable(const casa::String &name); | 
|---|
| [2696] | 40 |  | 
|---|
|  | 41 | virtual ~STApplyTable(); | 
|---|
|  | 42 |  | 
|---|
|  | 43 | /** | 
|---|
|  | 44 | * Add extra columns. To be implemented in derived class | 
|---|
|  | 45 | */ | 
|---|
|  | 46 | virtual void setup() = 0; | 
|---|
|  | 47 |  | 
|---|
|  | 48 | /*** | 
|---|
|  | 49 | * Name of the table | 
|---|
|  | 50 | ***/ | 
|---|
|  | 51 | virtual const casa::String& name() const = 0; | 
|---|
|  | 52 |  | 
|---|
|  | 53 | const casa::Table& table() const { return table_; } | 
|---|
|  | 54 | casa::Table table() { return table_; } | 
|---|
|  | 55 | void attach(); | 
|---|
|  | 56 | void attachBaseColumns(); | 
|---|
|  | 57 | virtual void attachOptionalColumns() = 0; | 
|---|
|  | 58 |  | 
|---|
| [2720] | 59 | casa::uInt nrow() {return table_.nrow();} | 
|---|
| [2696] | 60 |  | 
|---|
| [2964] | 61 | casa::Vector<casa::uInt> getScan() const {return scanCol_.getColumn();} | 
|---|
|  | 62 | casa::Vector<casa::uInt> getCycle() const {return cycleCol_.getColumn();} | 
|---|
|  | 63 | casa::Vector<casa::uInt> getBeam() const {return beamCol_.getColumn();} | 
|---|
|  | 64 | casa::Vector<casa::uInt> getIF() const {return ifCol_.getColumn();} | 
|---|
|  | 65 | casa::Vector<casa::uInt> getPol() const {return polCol_.getColumn();} | 
|---|
|  | 66 | casa::Vector<casa::Double> getTime() const {return timeCol_.getColumn();} | 
|---|
| [2696] | 67 |  | 
|---|
| [2720] | 68 | void setSelection(STSelector &sel, bool sortByTime=false); | 
|---|
| [2696] | 69 | void unsetSelection(); | 
|---|
| [2720] | 70 | casa::String caltype(); | 
|---|
| [2696] | 71 |  | 
|---|
| [2703] | 72 | void save(const casa::String &name); | 
|---|
|  | 73 |  | 
|---|
| [2720] | 74 | virtual casa::uInt nchan(casa::uInt ifno) = 0; | 
|---|
|  | 75 |  | 
|---|
|  | 76 | // static methods | 
|---|
|  | 77 | static STCalEnum::CalType getCalType(const casa::String &name); | 
|---|
|  | 78 | static STCalEnum::CalType getCalType(casa::CountedPtr<STApplyTable> tab); | 
|---|
|  | 79 | static STCalEnum::CalType getCalType(STApplyTable *tab); | 
|---|
|  | 80 |  | 
|---|
| [2696] | 81 | protected: | 
|---|
|  | 82 | void setbasedata(casa::uInt irow, casa::uInt scanno, casa::uInt cycleno, | 
|---|
|  | 83 | casa::uInt beamno, casa::uInt ifno, casa::uInt polno, | 
|---|
| [2720] | 84 | casa::uInt freqid, casa::Double time); | 
|---|
|  | 85 | casa::Block<casa::Double> getFrequenciesRow(casa::uInt id); | 
|---|
| [2696] | 86 |  | 
|---|
|  | 87 | casa::Table table_, originaltable_; | 
|---|
| [2720] | 88 | casa::ScalarColumn<casa::uInt> scanCol_, cycleCol_, beamCol_, ifCol_, polCol_, freqidCol_; | 
|---|
| [2696] | 89 | casa::ScalarColumn<casa::Double> timeCol_; | 
|---|
|  | 90 | casa::MEpoch::ScalarColumn timeMeasCol_; | 
|---|
|  | 91 | STSelector sel_; | 
|---|
|  | 92 | casa::LogIO os_; | 
|---|
|  | 93 |  | 
|---|
|  | 94 | private: | 
|---|
| [2720] | 95 | static STCalEnum::CalType stringToType(const casa::String &caltype); | 
|---|
| [2696] | 96 | }; | 
|---|
|  | 97 |  | 
|---|
|  | 98 | } | 
|---|
|  | 99 |  | 
|---|
|  | 100 | #endif | 
|---|