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

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

Initial untested Filler rewrite

File size: 4.2 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 "FillberBase.h"
14
15using namespace casa;
16
17namespace asap
18{
19FillerBase::FillerBase() :
20 table_(0),
21{
22}
23
24void FillerBase::setSpectrum(const Vector<Float>& spectrum,
25 const Vector<uChar>& flags)
26{
27 RecordFieldPtr< Array<Float> > specCol(row_.record(), "SPECTRA");
28 RecordFieldPtr< Array<uChar> > flagCol(row_.record(), "FLAGTRA");
29 *specCol = spectrum;
30 *flagCol = flags;
31}
32
33void FillerBase::setIndex(uInt scanno, uInt cycleno, uInt ifno, uInt polno,
34 uInt beamno)
35{
36 RecordFieldPtr<uInt> beamCol(row_.record(), "BEAMNO");
37 RecordFieldPtr<uInt> ifCol(row_.record(), "IFNO");
38 RecordFieldPtr<uInt> polCol(row_.record(), "POLNO");
39 RecordFieldPtr<uInt> cycleCol(row_.record(), "CYCLENO");
40 RecordFieldPtr<uInt> scanColCol(row_.record(), "SCANNO");
41 *beamCol = beamno;
42 *cycleCol = cycleno;
43 *ifCol = ifno;
44 *polCol = polno;
45 *scanCol = scanno;
46}
47
48void FillerBase::setFrequency(Double refpix, Double refval,
49 Double incr);
50{
51 /// @todo this has to change when nchan isn't global anymore
52 uInt id= table_->frequencies().addEntry(refpix, refval, incr);
53 RecordFieldPtr<uInt> mfreqidCol(row_.record(), "FREQ_ID");
54 *mfreqidCol = id;
55
56}
57
58
59void FillerBase::setMolecule(Double restfreq)
60{
61 uInt id = table_->molecules().addEntry(restfreq);
62 RecordFieldPtr<uInt> molidCol(row_.record(), "MOLECULE_ID");
63 *molidCol = id;
64}
65
66void FillerBase::setDirection(const Vector<Double>& dir.
67 Float az, Float el)
68{
69 RecordFieldPtr<Array<Double> > dirCol(row_.record(), "DIRECTION");
70 *dirCol = dir;
71 RecordFieldPtr<Float> azCol(row_.record(), "AZIMUTH");
72 *azCol = az;
73 RecordFieldPtr<Float> elCol(row_.record(), "ELEVATION");
74 *elCol = el;
75}
76
77void FillerBase::setFocus(Float pa, Float faxis,
78 Float ftan, Float frot)
79{
80 RecordFieldPtr<uInt> mfocusidCol(row_.record(), "FOCUS_ID");
81 uInt id = table_->focus().addEntry(pa, faxis, ftan, frot);
82 *mfocusidCol = id;
83}
84
85void FillerBase::setTime(Double interval, Double mjd)
86{
87 RecordFieldPtr<Double> mjdCol(row_.record(), "TIME");
88 *mjdCol = mjd;
89 RecordFieldPtr<Double> intCol(row_.record(), "INTERVAL");
90 *intCol = interval;
91
92}
93
94void FillerBase::setWeather(Float temperature, Float pressure,
95 Float humidity,
96 Float windspeed, Float windaz)
97{
98 uInt id = table_->weather().addEntry(temperature, pressure,
99 humidity, windspeed, windaz);
100 RecordFieldPtr<uInt> mweatheridCol(row_.record(), "WEATHER_ID");
101 *mweatheridCol = id;
102}
103
104void FillerBase::setTcal(const String& tcaltime,
105 const Vector<Float>& tcal)
106{
107 uInt id = table_->tcal().addEntry(tcaltime, tcal);
108 RecordFieldPtr<uInt> mcalidCol(row_.record(), "TCAL_ID");
109 *mcalidCol = id;
110}
111
112void FillerBase::setScanRate(const Vector<Double>& srate)
113{
114
115 RecordFieldPtr<Array<Double> > srateCol(row_.record(), "SCANRATE");
116 *srateCol = srate;
117
118}
119
120void FillerBase::setReferenceBeam(Int beamno)
121{
122 RecordFieldPtr<Int> rbCol(row_.record(), "REFBEAMNO");
123 *rbCol = beamno;
124}
125
126void FillerBase::setSource(const std::string& name, Int type,
127 const std::string& fieldname,
128 const Vector<Double>& dir,
129 const Vector<Double>& propermot,
130 Double velocity)
131{
132 RecordFieldPtr<String> srcnCol(row_.record(), "SRCNAME");
133 *srnCol = name;
134 RecordFieldPtr<Int> srctCol(row_.record(), "SRCTYPE");
135 *srctCol = type;
136 RecordFieldPtr<String> fieldnCol(row_.record(), "FIELDNAME");
137 *fieldnCol = fieldname;
138 RecordFieldPtr<Array<Double> > spmCol(row_.record(), "SRCPROPERMOTION");
139 *spmCol = pksrec.srcPM;
140 RecordFieldPtr<Array<Double> > sdirCol(row_.record(), "SRCDIRECTION");
141 *sdirCol = pksrec.srcDir;
142 RecordFieldPtr<Double> svelCol(row_.record(), "SRCVELOCITY");
143 *svelCol = pksrec.srcVel;
144}
145
146void FillerBase::commitRow()
147{
148 table_->table().addRow();
149 row_.put(table_->table().nrow()-1);
150}
151
152};
Note: See TracBrowser for help on using the repository browser.