source: trunk/src/STGrid.h@ 2637

Last change on this file since 2637 was 2631, checked in by Takeshi Nakazato, 12 years ago

New Development: No

JIRA Issue: No

Ready for Test: Yes

Interface Changes: No

What Interface Changed: added new attribute decCorr_

Test Programs: test_sdgrid

Put in Release Notes: No

Module(s): Module Names change impacts.

Description: Describe your changes here...

Forgot to commit. It should be committed with STGrid.cpp (in previous commit).


File size: 7.5 KB
RevLine 
[2356]1//
2// C++ Interface: STGrid
3//
4// Description:
5//
6//
7// Author: Takeshi Nakazato <takeshi.nakazato@nao.ac.jp>, (C) 2011
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12#ifndef ASAPSTGRID_H
13#define ASAPSTGRID_H
14
15#include <iostream>
16#include <fstream>
17#include <string>
[2360]18#include <vector>
[2356]19
20#include <casa/BasicSL/String.h>
[2381]21#include <casa/Arrays/Array.h>
[2356]22#include <casa/Arrays/Vector.h>
[2381]23#include <casa/Containers/RecordField.h>
[2356]24
25#include <tables/Tables/Table.h>
[2379]26#include <tables/Tables/ScalarColumn.h>
27#include <tables/Tables/ArrayColumn.h>
[2393]28
[2593]29#include "ScantableWrapper.h"
30#include "Scantable.h"
[2393]31#include "concurrent.h"
[2356]32
33using namespace std ;
34using namespace casa ;
35
36namespace asap {
37class STGrid
38{
39public:
40 STGrid() ;
41 STGrid( const string infile ) ;
[2390]42 STGrid( const vector<string> infile ) ;
[2356]43 virtual ~STGrid() {} ;
44
45 void setFileIn( const string infile ) ;
[2390]46 void setFileList( const vector<string> infile ) ;
[2356]47
[2362]48 void setIF( unsigned int ifno ) { ifno_ = ifno ; } ;
49
[2360]50 void setPolList( vector<unsigned int> pols ) ;
51
[2364]52 void setScanList( vector<unsigned int> scans ) ;
53
[2356]54 void defineImage( int nx=-1,
55 int ny=-1,
56 string scellx="",
57 string scelly="",
58 string scenter="" ) ;
[2364]59 void setFunc( string convtype="box",
60 int convsupport=-1 ) ;
[2361]61
62 void setWeight( const string wType="uniform" ) ;
63
[2396]64 void enableClip() { doclip_ = True ; } ;
65 void disableClip() { doclip_ = False ; } ;
66
[2356]67 void grid() ;
68
69 string saveData( string outfile="" ) ;
70
[2593]71//private:
72protected:
[2356]73 void init() ;
74
[2382]75 // actual gridding
76 void gridPerRow() ;
[2396]77 void gridPerRowWithClipping() ;
[2382]78
[2396]79 // clipping
80 void clipMinMax( Array<Complex> &data,
81 Array<Float> &weight,
82 Array<Int> &npoints,
83 Array<Complex> &clipmin,
84 Array<Float> &clipwmin,
85 Array<Float> &clipcmin,
86 Array<Complex> &clipmax,
87 Array<Float> &clipwmax,
88 Array<Float> &clipcmax ) ;
89
90
[2388]91 void setupGrid() ;
[2356]92 void setupGrid( Int &nx,
93 Int &ny,
94 String &cellx,
95 String &celly,
96 Double &xmin,
97 Double &xmax,
98 Double &ymin,
99 Double &ymax,
100 String &center ) ;
[2388]101 void mapExtent( Double &xmin, Double &xmax,
102 Double &ymin, Double &ymax ) ;
[2368]103
[2378]104 void setData( Array<Complex> &gdata,
[2368]105 Array<Float> &gwgt ) ;
[2356]106
[2393]107 Int getDataChunk( IPosition const &wshape,
108 IPosition const &vshape,
109 IPosition const &dshape,
110 Array<Complex> &spectra,
111 Array<Double> &direction,
112 Array<Int> &flagtra,
113 Array<Int> &rflag,
114 Array<Float> &weight ) ;
[2379]115 Int getDataChunk( Array<Complex> &spectra,
116 Array<Double> &direction,
117 Array<Int> &flagtra,
118 Array<Int> &rflag,
119 Array<Float> &weight ) ;
120 Int getDataChunk( Array<Float> &spectra,
121 Array<Double> &direction,
122 Array<uChar> &flagtra,
123 Array<uInt> &rflag,
124 Array<Float> &weight ) ;
[2356]125
[2375]126 void getWeight( Array<Float> &w,
127 Array<Float> &tsys,
128 Array<Double> &tint ) ;
[2382]129
[2375]130 void toInt( Array<uChar> &u, Array<Int> &v ) ;
131 void toInt( Array<uInt> &u, Array<Int> &v ) ;
[2356]132
[2375]133 void toPixel( Array<Double> &world, Array<Double> &pixel ) ;
[2356]134
135 void boxFunc( Vector<Float> &convFunc, Int &convSize ) ;
136 void spheroidalFunc( Vector<Float> &convFunc ) ;
137 void gaussFunc( Vector<Float> &convFunc ) ;
138 void pbFunc( Vector<Float> &convFunc ) ;
139 void setConvFunc( Vector<Float> &convFunc ) ;
140
[2371]141 void prepareTable( Table &tab, String &name ) ;
142
[2379]143 void selectData() ;
144 void setupArray() ;
[2378]145
[2398]146 void updateChunkShape() ;
[2382]147 void attach( Table &tab ) ;
[2379]148
[2384]149 void call_ggridsd( Array<Double> &xy,
150 Array<Complex> &values,
151 Int &nvispol,
152 Int &nvischan,
153 Array<Int> &flag,
154 Array<Int> &rflag,
155 Array<Float> &weight,
156 Int &nrow,
157 Int &irow,
158 Array<Complex> &grid,
159 Array<Float> &wgrid,
160 Int &nx,
161 Int &ny,
162 Int &npol,
163 Int &nchan,
164 Int &support,
165 Int &sampling,
166 Vector<Float> &convFunc,
[2381]167 Int *chanMap,
168 Int *polMap ) ;
[2396]169 void call_ggridsd2( Array<Double> &xy,
170 Array<Complex> &values,
171 Int &nvispol,
172 Int &nvischan,
173 Array<Int> &flag,
174 Array<Int> &rflag,
175 Array<Float> &weight,
176 Int &nrow,
177 Int &irow,
178 Array<Complex> &grid,
179 Array<Float> &wgrid,
180 Array<Int> &npoints,
181 Array<Complex> &clipmin,
182 Array<Float> &clipwmin,
183 Array<Float> &clipcmin,
184 Array<Complex> &clipmax,
185 Array<Float> &clipwmax,
186 Array<Float> &clipcmax,
187 Int &nx,
188 Int &ny,
189 Int &npol,
190 Int &nchan,
191 Int &support,
192 Int &sampling,
193 Vector<Float> &convFunc,
194 Int *chanMap,
195 Int *polMap ) ;
[2379]196
[2382]197 void initPol( Int ipol ) ;
[2390]198 void initTable( uInt idx ) ;
[2386]199 Bool isMultiIF( Table &tab ) ;
[2413]200 void fillMainColumns( Table &tab ) ;
[2593]201 void fillTable( Table &tab ) ;
202 virtual void table( Table &tab, uInt i ) ;
[2393]203 static bool produceChunk(void *ctx) throw(concurrent::PCException);
204 static void consumeChunk(void *ctx) throw(concurrent::PCException);
[2396]205 static void consumeChunkWithClipping(void *ctx) throw(concurrent::PCException);
[2381]206
[2382]207
[2388]208 // user input
209 Int nxUI_ ;
210 Int nyUI_ ;
211 String cellxUI_ ;
212 String cellyUI_ ;
213 String centerUI_ ;
214
[2389]215 Block<String> infileList_ ;
[2390]216 uInt nfile_ ;
[2362]217 Int ifno_ ;
[2396]218 Bool doclip_ ;
[2393]219
[2356]220 Int nx_ ;
221 Int ny_ ;
[2361]222 Int npol_ ;
[2386]223 Int npolOrg_ ;
[2361]224 Int nchan_ ;
[2356]225 Double cellx_ ;
226 Double celly_ ;
227 Vector<Double> center_ ;
[2631]228 Double decCorr_ ;
[2356]229 String convType_ ;
230 Int convSupport_ ;
231 Int userSupport_ ;
232 Int convSampling_ ;
[2360]233 Vector<uInt> pollist_ ;
[2364]234 Vector<uInt> scanlist_ ;
[2361]235 String wtype_ ;
[2393]236 Block<Table> tableList_ ;
237 Vector<uInt> rows_ ;
238 Int nchunk_ ;
[2356]239
[2393]240 /////////////// gridPerRow variable
241 IPosition vshape_;
242 IPosition wshape_;
243 IPosition dshape_;
244 // loop variable
245 Int nrow_ ;
246 Array<Float> data_ ;
247
[2356]248 Table tab_ ;
[2393]249 // per pol
[2382]250 Table ptab_ ;
[2379]251 ROArrayColumn<Float> spectraCol_ ;
252 ROArrayColumn<uChar> flagtraCol_ ;
253 ROArrayColumn<Double> directionCol_ ;
254 ROScalarColumn<uInt> flagRowCol_ ;
255 ROArrayColumn<Float> tsysCol_ ;
256 ROScalarColumn<Double> intervalCol_ ;
[2393]257
[2379]258 Int nprocessed_ ;
[2381]259
260
[2393]261 double eGetData_;
262 double eToPixel_;
263 double eGGridSD_;
[2356]264};
[2593]265
266class STGrid2 : public STGrid
267{
268public:
269 STGrid2() ;
270 STGrid2( const ScantableWrapper &s ) ;
271 STGrid2( const vector<ScantableWrapper> &v ) ;
272 void setScantable( const ScantableWrapper &s ) ;
273 void setScantableList( const vector<ScantableWrapper> &v ) ;
274 void selectData() ;
275 virtual void table( Table &tab, uInt i ) ;
[2594]276 ScantableWrapper getResultAsScantable( int tp ) ;
[2593]277
278private:
279 Block<ScantableWrapper> dataList_ ;
280};
[2356]281}
282#endif
Note: See TracBrowser for help on using the repository browser.