source: trunk/src/STApplyCal.h @ 2727

Last change on this file since 2727 was 2727, checked in by Takeshi Nakazato, 11 years ago

New Development: No

JIRA Issue: Yes CAS-4770, CAS-4774

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...

Updated STApplyCal to be able to specify interpolation method.
The method can be specified in time and frequency axes independently.
Possible options are nearest, linear (default), (natural) cubic spline,
and polynomial with arbitrary order.

File size: 2.9 KB
Line 
1//
2// C++ Interface: STApplyCal
3//
4// Description:
5//
6// Apply any apply tables to target data.
7//
8// Author: Takeshi Nakazato <takeshi.nakazato@nao.ac.jp> (C) 2012
9//
10// Copyright: See COPYING file that comes with this distribution
11//
12//
13#ifndef ASAP_APPLY_CAL_H
14#define ASAP_APPLY_CAL_H
15
16#include <map>
17#include <vector>
18
19#include <casa/Containers/Block.h>
20#include <casa/Arrays/Vector.h>
21#include <casa/Logging/LogIO.h>
22#include <tables/Tables/Table.h>
23#include <tables/Tables/ScalarColumn.h>
24#include <measures/TableMeasures/ScalarMeasColumn.h>
25
26#include "Scantable.h"
27#include "STSelector.h"
28#include "STApplyTable.h"
29#include "STCalEnum.h"
30#include "Calibrator.h"
31#include "Interpolator1D.h"
32#include "STCalSkyTable.h"
33#include "STCalTsysTable.h"
34
35namespace asap {
36
37/**
38Apply any apply tables to target data
39
40@author Takeshi Nakazato
41@date $Date:$
42@version $Revision:$
43*/
44class STApplyCal  {
45public:
46  STApplyCal();
47  STApplyCal(casa::CountedPtr<Scantable> target);
48
49  ~STApplyCal();
50
51  // set data
52  void setTarget(casa::CountedPtr<Scantable> target);
53  void setTarget(const casa::String &name);
54
55  // push new caltable
56  void push(STCalSkyTable *table);
57  void push(STCalTsysTable *table);
58
59  // set interpolation method
60  void setInterpolation(STCalEnum::InterpolationAxis axis, STCalEnum::InterpolationType itype, casa::Int order=-1);
61
62  // set IF (spw) mapping for Tsys transfer
63  void setTsysTransfer(casa::uInt from, casa::Vector<casa::uInt> to);
64
65  // apply tables
66  void apply(casa::Bool insitu=true);
67
68  // split target data and store it to disk
69  void save(const casa::String &name);
70
71private:
72  // initialization
73  void init();
74
75  // setup interpolator
76  void initInterpolator();
77
78  // single loop element in apply()
79  void doapply(casa::uInt beamno, casa::uInt ifno, casa::uInt polno,
80               casa::Vector<casa::uInt> &rows,
81               casa::Vector<casa::uInt> &skylist);
82
83  // get frequency information from FREQUENCIES subtable
84  casa::Vector<casa::Double> getBaseFrequency(casa::uInt whichrow);
85
86  // time sort
87  casa::Vector<casa::uInt> timeSort(casa::Vector<casa::Double> &t);
88
89  // search spwmap_ to get IFNO for Tsys
90  casa::uInt getIFForTsys(casa::uInt to);
91
92  // target data
93  casa::CountedPtr<Scantable> target_;
94
95  // working data
96  casa::CountedPtr<Scantable> work_;
97
98  // calibrator
99  casa::CountedPtr<Calibrator> calibrator_;
100
101  // interpolation method
102  std::vector<STCalEnum::InterpolationType> interp_;
103  casa::Bool is2d_;
104  casa::Int order_;
105  casa::CountedPtr<Interpolator1D> interpolatorT_;
106  casa::CountedPtr<Interpolator1D> interpolatorF_;
107  casa::CountedPtr<Interpolator1D> interpolatorS_;
108
109  // IF (spw) mapping for Tsys transfer
110  map<casa::uInt, casa::Vector<casa::uInt> > spwmap_;
111
112  // list of apply tables
113  std::vector<STCalSkyTable*> skytable_;
114  std::vector<STCalTsysTable*> tsystable_;
115
116  // calibration type
117  STCalEnum::CalType caltype_;
118  casa::Bool doTsys_;
119
120  // selector
121  STSelector sel_;
122
123  // logger
124  casa::LogIO os_;
125};
126
127}
128
129#endif
Note: See TracBrowser for help on using the repository browser.