source: branches/newfiller/src/FillerBase.cpp@ 1793

Last change on this file since 1793 was 1793, checked in by Malte Marquarding, 14 years ago

Added setHeader implementation and getReferenceRegex

File size: 4.6 KB
Line 
1//
2// C++ Interface: FillerBase
3//
4// Description:
5//
6//
7// Author: Malte Marquarding <asap@atnf.csiro.au>, (C) 2010
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12
13#include <casa/Containers/RecordField.h>
14
15#include "FillerBase.h"
16
17using namespace casa;
18
19namespace asap {
20
21FillerBase::FillerBase(casa::CountedPtr<Scantable> stable) :
22 table_(stable)
23{
24}
25
26void FillerBase::setHeader(const STHeader& header)
27{
28 table_->setHeader(header);
29}
30
31void FillerBase::setSpectrum(const Vector<Float>& spectrum,
32 const Vector<uChar>& flags,
33 const Vector<Float>& tsys)
34{
35 RecordFieldPtr< Array<Float> > specCol(row_.record(), "SPECTRA");
36 RecordFieldPtr< Array<uChar> > flagCol(row_.record(), "FLAGTRA");
37 RecordFieldPtr< Array<Float> > tsysCol(row_.record(), "TSYS");
38
39 *specCol = spectrum;
40 *flagCol = flags;
41 *tsysCol = tsys;
42}
43
44
45void FillerBase::setOpacity(Float opacity)
46{
47 RecordFieldPtr<Float> tauCol(row_.record(), "OPACITY") ;
48 *tauCol = opacity ;
49}
50
51void FillerBase::setIndex(uInt scanno, uInt cycleno, uInt ifno, uInt polno,
52 uInt beamno)
53{
54 RecordFieldPtr<uInt> beamCol(row_.record(), "BEAMNO");
55 RecordFieldPtr<uInt> ifCol(row_.record(), "IFNO");
56 RecordFieldPtr<uInt> polCol(row_.record(), "POLNO");
57 RecordFieldPtr<uInt> cycleCol(row_.record(), "CYCLENO");
58 RecordFieldPtr<uInt> scanCol(row_.record(), "SCANNO");
59 *beamCol = beamno;
60 *cycleCol = cycleno;
61 *ifCol = ifno;
62 *polCol = polno;
63 *scanCol = scanno;
64}
65
66void FillerBase::setFrequency(Double refpix, Double refval,
67 Double incr)
68{
69 /// @todo this has to change when nchan isn't global anymore
70 uInt id= table_->frequencies().addEntry(refpix, refval, incr);
71 RecordFieldPtr<uInt> mfreqidCol(row_.record(), "FREQ_ID");
72 *mfreqidCol = id;
73
74}
75
76
77void FillerBase::setMolecule(const Vector<Double>& restfreq)
78{
79 Vector<String> tmp;
80 uInt id = table_->molecules().addEntry(restfreq, tmp, tmp);
81 RecordFieldPtr<uInt> molidCol(row_.record(), "MOLECULE_ID");
82 *molidCol = id;
83}
84
85void FillerBase::setDirection(const Vector<Double>& dir,
86 Float az, Float el)
87{
88 RecordFieldPtr<Array<Double> > dirCol(row_.record(), "DIRECTION");
89 *dirCol = dir;
90 RecordFieldPtr<Float> azCol(row_.record(), "AZIMUTH");
91 *azCol = az;
92 RecordFieldPtr<Float> elCol(row_.record(), "ELEVATION");
93 *elCol = el;
94}
95
96void FillerBase::setFocus(Float pa, Float faxis,
97 Float ftan, Float frot)
98{
99 RecordFieldPtr<uInt> mfocusidCol(row_.record(), "FOCUS_ID");
100 uInt id = table_->focus().addEntry(pa, faxis, ftan, frot);
101 *mfocusidCol = id;
102}
103
104void FillerBase::setTime(Double interval, Double mjd)
105{
106 RecordFieldPtr<Double> mjdCol(row_.record(), "TIME");
107 *mjdCol = mjd;
108 RecordFieldPtr<Double> intCol(row_.record(), "INTERVAL");
109 *intCol = interval;
110
111}
112
113void FillerBase::setWeather(Float temperature, Float pressure,
114 Float humidity,
115 Float windspeed, Float windaz)
116{
117 uInt id = table_->weather().addEntry(temperature, pressure,
118 humidity, windspeed, windaz);
119 RecordFieldPtr<uInt> mweatheridCol(row_.record(), "WEATHER_ID");
120 *mweatheridCol = id;
121}
122
123void FillerBase::setTcal(const String& tcaltime,
124 const Vector<Float>& tcal)
125{
126 uInt id = table_->tcal().addEntry(tcaltime, tcal);
127 RecordFieldPtr<uInt> mcalidCol(row_.record(), "TCAL_ID");
128 *mcalidCol = id;
129}
130
131void FillerBase::setScanRate(const Vector<Double>& srate)
132{
133 RecordFieldPtr<Array<Double> > srateCol(row_.record(), "SCANRATE");
134 *srateCol = srate;
135}
136
137void FillerBase::setReferenceBeam(Int beamno)
138{
139 RecordFieldPtr<Int> rbCol(row_.record(), "REFBEAMNO");
140 *rbCol = beamno;
141}
142
143void FillerBase::setSource(const std::string& name, Int type,
144 const std::string& fieldname,
145 const Vector<Double>& dir,
146 const Vector<Double>& propermot,
147 Double velocity)
148{
149 RecordFieldPtr<String> srcnCol(row_.record(), "SRCNAME");
150 *srcnCol = name;
151 RecordFieldPtr<Int> srctCol(row_.record(), "SRCTYPE");
152 *srctCol = type;
153 RecordFieldPtr<String> fieldnCol(row_.record(), "FIELDNAME");
154 *fieldnCol = fieldname;
155 RecordFieldPtr<Array<Double> > spmCol(row_.record(), "SRCPROPERMOTION");
156 *spmCol = propermot;
157 RecordFieldPtr<Array<Double> > sdirCol(row_.record(), "SRCDIRECTION");
158 *sdirCol = dir;
159 RecordFieldPtr<Double> svelCol(row_.record(), "SRCVELOCITY");
160 *svelCol = velocity;
161}
162
163void FillerBase::commitRow()
164{
165 table_->table().addRow();
166 row_.put(table_->table().nrow()-1);
167}
168
169};
Note: See TracBrowser for help on using the repository browser.