// // C++ Interface: MSWriter // // Description: // // This class is specific writer for MS format // // Takeshi Nakazato , (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ASAPMSWRITER_H #define ASAPMSWRITER_H // STL #include // AIPS++ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Scantable.h" #include "STHeader.h" namespace asap { class MSWriterUtils { protected: template void putField( const String &name, TableRecord &r, T &val ) { RecordFieldPtr rf( r, name ) ; *rf = val ; } template void defineField( const String &name, TableRecord &r, T &val ) { RecordFieldPtr rf( r, name ) ; rf.define( val ) ; } }; class MSWriter { public: explicit MSWriter(casacore::CountedPtr stable) ; virtual ~MSWriter() ; virtual bool write(const std::string& filename, const casacore::Record& rec) ; protected: private: // initialize writer from input Scantable void init() ; // set up MS void setupMS() ; // fill subtables void fillObservation() ; void fillAntenna() ; void fillProcessor() ; void fillSource() ; void fillWeather() ; void fillSysCal() ; // utility void getValidTimeRange( casacore::Double &me, casacore::Double &interval, casacore::Table &tab ) ; void getValidTimeRange( casacore::Double &me, casacore::Double &interval, casacore::Vector &atime, casacore::Vector &ainterval ) ; void antennaProperty( casacore::String &name, casacore::String &mount, casacore::String &type, casacore::Double &diameter ) ; casacore::CountedPtr table_ ; STHeader header_ ; casacore::MeasurementSet *mstable_ ; casacore::Bool isWeather_ ; casacore::Bool useFloatData_ ; casacore::Bool useData_ ; casacore::Bool tcalSpec_ ; casacore::Bool tsysSpec_ ; casacore::String ptTabName_ ; casacore::String polType_ ; casacore::String filename_ ; casacore::LogIO os_ ; casacore::Record srcRec_ ; MSWriter(); MSWriter(const MSWriter&); MSWriter& operator=(const MSWriter&); }; }; #endif