source: branches/newfiller/src/FillerBase.h @ 1780

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

make filler code compile

File size: 3.2 KB
Line 
1//
2// C++ Interface: FillerBase
3//
4// Description:
5//
6// This class is the Base class for all data fillers.
7// The derived filler needs to implement
8// open()
9// close()
10// fill()
11//
12// The fill() method usually iterates over the source data and calls
13// the setXYZ() methods for. After all the data for a row has been set via
14// these methods, the fill() method needs to call commitRow() to write the
15// data to the scantable.
16// All arguments which are defaulted in the setXYZ() methods are optional. All
17// others should be set explicitly.
18//
19// Author: Malte Marquarding <asap@atnf.csiro.au>, (C) 2010
20//
21// Copyright: See COPYING file that comes with this distribution
22//
23//
24#ifndef ASAPFILLERBASE_H
25#define ASAPFILLERBASE_H
26
27// STL
28#include <string>
29// AIPS++
30#include <casa/aips.h>
31#include <casa/Utilities/CountedPtr.h>
32#include <casa/Arrays/Vector.h>
33#include <tables/Tables/TableRow.h>
34#include "Scantable.h"
35
36namespace asap
37{
38
39class FillerBase
40{
41  public:
42    FillerBase();
43    FillerBase(casa::CountedPtr<Scantable> stable);
44    virtual ~FillerBase();
45
46    virtual bool open(const std::string& filename)=0;
47    virtual void fill() = 0;
48    virtual void close() = 0;
49
50  protected:
51
52    casa::CountedPtr<Scantable> getTable();
53    void commitRow();
54    virtual void setHeader(const STHeader& header);
55    virtual void setSpectrum(const casa::Vector<casa::Float>& spectrum,
56                             const casa::Vector<casa::uChar>& flags) ;
57    virtual void setIndex(casa::uInt scanno, casa::uInt cycleno,
58                          casa::uInt ifno, casa::uInt polno,
59                          casa::uInt beamno=0);
60    virtual void setFrequency(casa::Double refpix, casa::Double refval,
61                              casa::Double incr);
62    virtual void setMolecule(const casa::Vector<casa::Double>& restfreq);
63    virtual void setDirection(const casa::Vector<casa::Double>& dir,
64                              casa::Float az=0.0f, casa::Float el=0.0f);
65
66    virtual void setFocus(casa::Float pa=0.0f, casa::Float faxis=0.0f,
67                          casa::Float ftan=0.0f, casa::Float frot=0.0f);
68    virtual void setTime(casa::Double mjd, casa::Double integration);
69    virtual void setWeather(casa::Float temperature=0.0f,
70                            casa::Float pressure=0.0f,
71                            casa::Float humidity=0.0f,
72                            casa::Float windspeed=0.0f,
73                            casa::Float windaz=0.0f);
74    virtual void setTcal(const casa::String& caltime="",
75                         const casa::Vector<casa::Float>& tcal=casa::Vector<casa::Float>());
76    virtual void setScanRate(const casa::Vector<casa::Double>& srate=casa::Vector<casa::Double>());
77    virtual void setReferenceBeam(casa::Int beamno=-1);
78    virtual void setSource(const std::string& name, casa::Int type,
79                           const std::string& fieldname="",
80                           const casa::Vector<casa::Double>& dir=casa::Vector<casa::Double>(),
81                           const casa::Vector<casa::Double>& propermot=casa::Vector<casa::Double>(),
82                           casa::Double velocity=0.0);
83
84  private:
85
86    casa::CountedPtr< Scantable > table_;
87    casa::String referenceRx_;
88
89    casa::TableRow row_;
90};
91
92
93};
94#endif
Note: See TracBrowser for help on using the repository browser.