source: trunk/src/STSideBandSep.h@ 2786

Last change on this file since 2786 was 2726, checked in by Kana Sugimoto, 12 years ago

New Development: No

JIRA Issue: Yes (CAS-4141)

Ready for Test: Yes

Interface Changes: Yes

What Interface Changed: moved various set methods in python to c++

Test Programs:

Put in Release Notes: No

Module(s): sbseparator

Description:

Moved set methods in sbseparator module to c++ (STSideBandSep class).
Defined boost python interface methods, set_freq, set_dirtol, set_shift,
set_limit, solve_both, subtract_other to access them from python codes.


File size: 3.8 KB
Line 
1// C++ Interface: STSideBandSep
2//
3// Description:
4// A class to invoke sideband separation of Scantable
5//
6// Author: Kanako Sugimoto <kana.sugi@nao.ac.jp>, (C) 2012
7//
8// Copyright: See COPYING file that comes with this distribution
9//
10//
11#ifndef ASAPSIDEBANDSEP_H
12#define ASAPSIDEBANDSEP_H
13
14// STL
15#include <iostream>
16#include <string>
17#include <vector>
18// casacore
19#include <casa/aips.h>
20#include <casa/Utilities/CountedPtr.h>
21#include <measures/Measures/MDirection.h>
22#include <coordinates/Coordinates/DirectionCoordinate.h>
23#include <coordinates/Coordinates/SpectralCoordinate.h>
24// asap
25#include "ScantableWrapper.h"
26#include "Scantable.h"
27
28using namespace std;
29using namespace casa;
30
31namespace asap {
32
33class STSideBandSep {
34public:
35 /**
36 * constructors and a destructor
37 **/
38 STSideBandSep() { throw( AipsError("No data set to process") ); };
39 explicit STSideBandSep(const vector<string> &names);
40 explicit STSideBandSep(const vector<ScantableWrapper> &tables);
41 virtual ~STSideBandSep();
42
43 /**
44 * Set IFNO and frequency tolerance to select data to process
45 **/
46 void setFrequency(const unsigned int ifno, const string freqtol,
47 const string frame="");
48
49 /**
50 * Set direction tolerance to group spectra.
51 * The spectra within this range will be averaged before procesing.
52 **/
53 void setDirTolerance(const vector<string> dirtol);
54
55 /**
56 * Set the number of channels shifted in image side band
57 * of each of scantable.
58 **/
59 void setShift(const vector<double> &shift);
60
61 /**
62 * Set rejection limit of solution.
63 **/
64 void setThreshold(const double limit);
65
66 /**
67 * Resolve both image and signal sideband when true is set.
68 **/
69 void solveBoth(const bool flag) { doboth_ = flag; };
70
71 /**
72 * Obtain spectra by subtracting the solution of the other sideband.
73 **/
74 void solvefromOther(const bool flag) { otherside_ = flag; };
75
76 /**
77 * Set scantable to fill frequencies of image sideband (temporal)
78 **/
79 void setImageTable(const ScantableWrapper &s);
80 void setScanTb0(const ScantableWrapper &s);
81
82 /**
83 * Set additional information to fill frequencies of image sideband
84 **/
85 void setLO1(const double lo1, const string frame="TOPO",
86 const double reftime=-1, string refdir="");
87 void setLO1Root(const string name);
88
89 /**
90 * Actual calculation of frequencies of image sideband
91 **/
92 void solveImageFreqency();
93
94private:
95 /** Initialize member variables **/
96 void init();
97 void initshift();
98
99 /** Return if the path exists (optionally, check file type) **/
100 Bool checkFile(const string name, string type="");
101
102 /**
103 * Get LO1 frequency to solve the frequencies of image side band
104 **/
105 bool getLo1FromAsdm(const string asdmname,
106 const double refval, const double refpix,
107 const double increment, const int nChan);
108 bool getLo1FromAsisTab(const string msname,
109 const double refval, const double refpix,
110 const double increment, const int nChan);
111 bool getLo1FromScanTab(casa::CountedPtr< Scantable > &scantab,
112 const double refval, const double refpix,
113 const double increment, const int nChan);
114
115 /** Member variables **/
116 // input tables
117 vector<string> infileList_;
118 vector< CountedPtr<Scantable> > intabList_;
119 unsigned int ntable_;
120 // frequency and direction setup to select data.
121 unsigned int sigIfno_;
122 Quantum<Double> ftol_;
123 MFrequency::Types solFrame_;
124 vector<double> sigShift_, imgShift_;
125 unsigned int nshift_, nchan_;
126 vector< CountedPtr<Scantable> > tableList_;
127 Double xtol_, ytol_;
128 // solution parameters
129 bool otherside_, doboth_;
130 double rejlimit_;
131 // LO1
132 double lo1Freq_;
133 MFrequency::Types loFrame_;
134 double loTime_;
135 string loDir_;
136 string asdmName_, asisName_;
137
138 CountedPtr<Scantable> imgTab_p, sigTab_p;
139 // TEMPORAL member
140 CountedPtr<Scantable> st0_;
141
142}; // class
143
144} // namespace
145
146#endif
Note: See TracBrowser for help on using the repository browser.