source: trunk/src/MSWriter.h@ 2019

Last change on this file since 2019 was 2019, checked in by Takeshi Nakazato, 14 years ago

New Development: No

JIRA Issue: Yes CAS-2718

Ready for Test: Yes

Interface Changes: No

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No

Module(s): Module Names change impacts.

Description: Describe your changes here...

Bug fix

1) supporting variable shaped array input to some column (SPECTRAL DATA, TSYS, and TCAL)

2) put [1.0] instead of empty array as default TCAL in NROFiller

3) Check if some subtables have any effective rows in MSWriter


File size: 2.9 KB
Line 
1//
2// C++ Interface: MSWriter
3//
4// Description:
5//
6// This class is specific writer for MS format
7//
8// Takeshi Nakazato <takeshi.nakazato@nao.ac.jp>, (C) 2010
9//
10// Copyright: See COPYING file that comes with this distribution
11//
12//
13#ifndef ASAPMSWRITER_H
14#define ASAPMSWRITER_H
15
16// STL
17#include <string>
18// AIPS++
19#include <casa/aips.h>
20#include <casa/Utilities/CountedPtr.h>
21#include <casa/Arrays/Vector.h>
22#include <casa/Arrays/Matrix.h>
23#include <casa/Logging/LogIO.h>
24#include <casa/Containers/Record.h>
25
26#include <tables/Tables/Table.h>
27#include <tables/Tables/RefRows.h>
28
29#include <ms/MeasurementSets/MeasurementSet.h>
30#include <ms/MeasurementSets/MSColumns.h>
31
32#include <measures/Measures/MEpoch.h>
33
34#include <atnf/PKSIO/SrcType.h>
35
36#include "Scantable.h"
37#include "STHeader.h"
38
39namespace asap
40{
41
42class MSWriter
43{
44public:
45 explicit MSWriter(casa::CountedPtr<Scantable> stable) ;
46 virtual ~MSWriter() ;
47
48 virtual bool write(const std::string& filename, const casa::Record& rec) ;
49
50protected:
51
52
53private:
54
55 // initialize writer from input Scantable
56 void init() ;
57
58 // set up MS
59 void setupMS() ;
60
61 // fill subtables
62 void fillObservation() ;
63 void fillAntenna() ;
64 void fillProcessor() ;
65 void fillSource() ;
66 void fillWeather() ;
67 void fillSysCal() ;
68
69 // add rows to subtables
70 void addFeed( casa::Int id ) ;
71 void addSpectralWindow( casa::Int spwid, casa::Int freqid ) ;
72 void addField( casa::Int fid, casa::String fieldname, casa::String srcname, casa::Double t, casa::Vector<casa::Double> scanrate ) ;
73 void addPointing( casa::String &name, casa::Double &me, casa::Double &interval, casa::Matrix<casa::Double> &dir ) ;
74 casa::Int addPolarization( casa::Vector<casa::Int> polnos ) ;
75 casa::Int addDataDescription( casa::Int polid, casa::Int spwid ) ;
76 casa::Int addState( casa::Int type, casa::Int &subscan ) ;
77
78 // utility
79 casa::Vector<casa::Int> toCorrType( casa::Vector<casa::Int> polnos ) ;
80 void getValidTimeRange( casa::Double &me, casa::Double &interval, casa::Table &tab ) ;
81 void getValidTimeRange( casa::Double &me, casa::Double &interval, casa::Vector<casa::Double> &atime, casa::Vector<casa::Double> &ainterval ) ;
82 //void queryType( casa::Int type, casa::String &stype, casa::Bool &b ) ;
83 void queryType( casa::Int type, casa::String &stype, casa::Bool &b, casa::Double &t, Double &l ) ;
84
85 // tool for HPC
86 double gettimeofday_sec() ;
87
88 casa::CountedPtr<Scantable> table_ ;
89 STHeader header_ ;
90 //casa::CountedPtr<casa::MeasurementSet> mstable_ ;
91 casa::MeasurementSet *mstable_ ;
92
93 casa::Bool isTcal_ ;
94 casa::Bool isWeather_ ;
95
96 casa::Bool useFloatData_ ;
97 casa::Bool useData_ ;
98 casa::Bool tcalSpec_ ;
99 casa::Bool tsysSpec_ ;
100
101 casa::String ptTabName_ ;
102
103 casa::String polType_ ;
104
105 casa::String filename_ ;
106
107 casa::LogIO os_ ;
108
109 casa::Record tcalIdRec_ ;
110 casa::Record tcalRowRec_ ;
111
112 MSWriter();
113 MSWriter(const MSWriter&);
114 MSWriter& operator=(const MSWriter&);
115
116};
117
118
119};
120#endif
Note: See TracBrowser for help on using the repository browser.