TransformingVi2.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #if ! defined (MSVIS_TransformingVi2_H_121115_0950)
00029 #define MSVIS_TransformingVi2_H_121115_0950
00030
00031 #include <casa/aips.h>
00032 #include <msvis/MSVis/ViImplementation2.h>
00033
00034 #include <map>
00035 #include <vector>
00036
00037 #include <measures/Measures/Stokes.h>
00038
00039 namespace casa {
00040
00041 template <typename T> class Vector;
00042
00043 namespace vi {
00044
00045
00046
00047 class VisBuffer2;
00048
00049 class ChannelSelector;
00050 class ChannelSelectorCache;
00051 typedef Vector<Vector <Slice> > ChannelSlicer;
00052 class SpectralWindowChannelsCache;
00053 class SpectralWindowChannels;
00054 class SubtableColumns;
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 class TransformingVi2 : public ViImplementation2 {
00108
00109 public:
00110
00111
00112
00113 virtual ~TransformingVi2 ();
00114
00115
00116
00117 virtual String ViiType() const { return String("UnknownTrans( ")+getVii()->ViiType()+" )"; };
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128 virtual void origin ();
00129 virtual Bool more () const;
00130 virtual void next ();
00131 virtual Subchunk getSubchunkId () const;
00132
00133
00134
00135 virtual void originChunks (Bool forceRewind = False);
00136 virtual Bool moreChunks () const;
00137 virtual void nextChunk ();
00138
00139 virtual Bool isWritable () const;
00140
00141
00142
00143
00144
00145
00146 virtual Double getInterval() const;
00147 virtual void setInterval (Double timeInterval);
00148
00149
00150
00151
00152 virtual void setFrequencySelections (const FrequencySelections & selection);
00153
00154
00155
00156
00157
00158
00159
00160 virtual void setRowBlocking (Int nRows);
00161
00162 virtual Bool existsColumn (VisBufferComponent2 id) const;
00163
00164 virtual const SortColumns & getSortColumns() const;
00165
00166 virtual Bool isNewArrayId () const;
00167 virtual Bool isNewFieldId () const;
00168 virtual Bool isNewMs () const;
00169 virtual Bool isNewSpectralWindow () const;
00170
00171
00172
00173 virtual Int nRows () const;
00174
00175
00176
00177
00178
00179 virtual void getRowIds (Vector<uInt> & rowids) const;
00180
00181 virtual VisBuffer2 * getVisBuffer (const VisibilityIterator2 *);
00182 virtual VisBuffer2 * getVisBuffer ();
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193 virtual void antenna1 (Vector<Int> & ant1) const;
00194
00195
00196
00197 virtual void antenna2 (Vector<Int> & ant2) const;
00198
00199
00200
00201 virtual void corrType (Vector<Int> & corrTypes) const;
00202
00203
00204
00205 virtual Int dataDescriptionId () const;
00206
00207
00208
00209 virtual void exposure (Vector<Double> & expo) const;
00210
00211
00212
00213 virtual void feed1 (Vector<Int> & fd1) const;
00214
00215
00216
00217 virtual void feed2 (Vector<Int> & fd2) const;
00218
00219
00220
00221 virtual void fieldIds (Vector<Int>&) const;
00222
00223
00224
00225
00226 virtual void arrayIds (Vector<Int>&) const;
00227
00228
00229
00230 virtual String fieldName () const;
00231
00232
00233
00234 virtual void flag (Cube<Bool> & flags) const;
00235
00236
00237
00238 virtual void flag (Matrix<Bool> & flags) const;
00239
00240
00241
00242 virtual Bool flagCategoryExists () const;
00243
00244
00245
00246 virtual void flagCategory (Array<Bool> & flagCategories) const;
00247
00248
00249
00250 virtual void flagRow (Vector<Bool> & rowflags) const;
00251
00252
00253
00254 virtual void observationId (Vector<Int> & obsids) const;
00255
00256
00257
00258 virtual Int polarizationId () const;
00259
00260
00261
00262 virtual void processorId (Vector<Int> & procids) const;
00263
00264
00265
00266 virtual void scan (Vector<Int> & scans) const;
00267
00268
00269
00270 virtual String sourceName () const;
00271
00272
00273
00274 virtual void stateId (Vector<Int> & stateids) const;
00275
00276
00277
00278
00279 virtual void jonesC (Vector<SquareMatrix<Complex, 2> > & cjones) const;
00280
00281
00282
00283 virtual Int polFrame () const;
00284
00285
00286
00287 virtual void sigma (Matrix<Float> & sigmat) const;
00288
00289
00290
00291 virtual Int spectralWindow () const;
00292
00293 virtual void spectralWindows (Vector<Int> & spws) const;
00294
00295
00296
00297 virtual void time (Vector<Double> & t) const;
00298
00299
00300
00301 virtual void timeCentroid (Vector<Double> & t) const;
00302
00303
00304
00305 virtual void timeInterval (Vector<Double> & ti) const;
00306
00307
00308
00309 virtual void uvw (Matrix<Double> & uvwmat) const;
00310
00311
00312
00313 virtual void visibilityCorrected (Cube<Complex> & vis) const;
00314 virtual void visibilityModel (Cube<Complex> & vis) const;
00315 virtual void visibilityObserved (Cube<Complex> & vis) const;
00316
00317
00318
00319 virtual void floatData (Cube<Float> & fcube) const;
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331 virtual IPosition visibilityShape () const;
00332
00333
00334
00335 virtual void weight (Matrix<Float> & wtmat) const;
00336
00337
00338
00339 virtual Bool weightSpectrumExists () const;
00340 virtual Bool sigmaSpectrumExists () const;
00341
00342
00343
00344 virtual void weightSpectrum (Cube<Float> & wtsp) const;
00345 virtual void sigmaSpectrum (Cube<Float> & wtsp) const;
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357 virtual Bool allBeamOffsetsZero () const;
00358
00359
00360
00361 virtual MDirection azel0 (Double time) const;
00362 static void azel0Calculate (Double time, MSDerivedValues & msd,
00363 MDirection & azel0, const MEpoch & mEpoch0);
00364
00365 virtual const Vector<MDirection> & azel (Double time) const;
00366 static void azelCalculate (Double time, MSDerivedValues & msd, Vector<MDirection> & azel,
00367 Int nAnt, const MEpoch & mEpoch0);
00368
00369
00370
00371 virtual const Vector<Float> & feed_pa (Double time) const;
00372 static Vector<Float> feed_paCalculate (Double time, MSDerivedValues & msd,
00373 Int nAntennas, const MEpoch & mEpoch0,
00374 const Vector<Float> & receptor0Angle);
00375
00376
00377
00378
00379
00380
00381 virtual const Cube<RigidVector<Double, 2> > & getBeamOffsets () const;
00382
00383
00384
00385 virtual Double hourang (Double time) const;
00386 static Double hourangCalculate (Double time, MSDerivedValues & msd, const MEpoch & mEpoch0);
00387
00388
00389
00390
00391
00392 virtual const Float & parang0 (Double time) const;
00393 static Float parang0Calculate (Double time, MSDerivedValues & msd, const MEpoch & epoch0);
00394
00395
00396
00397 virtual const Vector<Float> & parang (Double time) const;
00398 static Vector<Float> parangCalculate (Double time, MSDerivedValues & msd,
00399 int nAntennas, const MEpoch mEpoch0);
00400
00401
00402
00403 virtual const MDirection & phaseCenter () const;
00404
00405
00406
00407
00408
00409
00410
00411
00412 virtual const Cube<Double> & receptorAngles () const;
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422 virtual const Vector<String> & antennaMounts () const;
00423
00424 virtual MEpoch getEpoch () const;
00425
00426
00427
00428
00429 virtual const VisImagingWeight & getImagingWeightGenerator () const;
00430
00431 virtual MFrequency::Types getObservatoryFrequencyType () const;
00432 virtual MPosition getObservatoryPosition () const;
00433 virtual Vector<Float> getReceptor0Angle ();
00434
00435 virtual Int getReportingFrameOfReference () const;
00436 virtual void setReportingFrameOfReference (Int frame);
00437
00438 virtual Vector<Int> getChannels (Double time, Int frameOfReference,
00439 Int spectralWindowId, Int msId) const;
00440 virtual Vector<Int> getCorrelations () const;
00441 virtual Vector<Stokes::StokesTypes> getCorrelationTypesDefined () const;
00442 virtual Vector<Stokes::StokesTypes> getCorrelationTypesSelected () const;
00443
00444 virtual Vector<Double> getFrequencies (Double time, Int frameOfReference,
00445 Int spectralWindowId, Int msId) const;
00446 virtual void dataDescriptionIds(Vector<Int> &) const;
00447
00448
00449
00450 virtual Int msId () const;
00451 virtual const MeasurementSet & ms () const;
00452 virtual Int getNMs () const;
00453
00454
00455 virtual String msName () const;
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467 virtual void slurp () const;
00468
00469
00470
00471 virtual const vi::SubtableColumns & subtableColumns () const;
00472
00473
00474
00475
00476 virtual const SpectralWindowChannels & getSpectralWindowChannels (Int msId, Int spectralWindowId) const;
00477
00478
00479
00480 virtual void useImagingWeight (const VisImagingWeight & imWgt);
00481
00482
00483
00484 virtual Int nAntennas () const;
00485 virtual Int nDataDescriptionIds () const;
00486 virtual Int nPolarizationIds () const;
00487 virtual Int nRowsInChunk () const;
00488 virtual Int nRowsViWillSweep () const;
00489 virtual Int nSpectralWindows () const;
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500 virtual void writeBackChanges (VisBuffer2 * vb);
00501
00502
00503
00504
00505
00506 virtual void writeFlag (const Matrix<Bool> & flag);
00507
00508
00509
00510
00511
00512 virtual void writeFlag (const Cube<Bool> & flag);
00513
00514
00515 virtual void writeFlagRow (const Vector<Bool> & rowflags);
00516
00517 virtual void writeFlagCategory(const Array<Bool>& fc);
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531 virtual void writeVisCorrected (const Cube<Complex> & vis);
00532 virtual void writeVisModel (const Cube<Complex> & vis);
00533 virtual void writeVisObserved (const Cube<Complex> & vis);
00534
00535
00536 virtual void writeWeight (const Matrix<Float> & wt);
00537
00538
00539
00540
00541
00542 virtual void writeWeightSpectrum (const Cube<Float> & wtsp);
00543 virtual void writeSigmaSpectrum (const Cube<Float> & wtsp);
00544
00545
00546 virtual void writeSigma (const Matrix<Float> & sig);
00547
00548
00549
00550
00551
00552
00553 virtual void writeModel(const RecordInterface& rec, Bool iscomponentlist=True,
00554 Bool incremental=False);
00555
00556 virtual void setWeightScaling (CountedPtr <WeightScaling> weightscaling);
00557 virtual Bool hasWeightScaling () const;
00558 virtual CountedPtr<WeightScaling> getWeightScaling () const;
00559
00560
00561 static void calculateFlagRowFromFlagCube (const Cube<Bool> &flagCube, Vector<Bool> &flagRow);
00562
00563 protected:
00564
00565 TransformingVi2 (ViImplementation2 * inputVi);
00566
00567 void configureNewSubchunk ();
00568 void configureNewSubchunk (Int msId, const String & msName, Bool isNewMs,
00569 Bool isNewArrayId, Bool isNewFieldId,
00570 Bool isNewSpectralWindow, const Subchunk & subchunk,
00571 Int nRows, Int nChannels, Int nCorrelations,
00572 const Vector<Int> & correlations,
00573 const Vector<Stokes::StokesTypes> & correlationsDefined,
00574 const Vector<Stokes::StokesTypes> & correlationsSelected,
00575 CountedPtr<WeightScaling> weightScaling);
00576
00577 VisibilityIterator2 * getVi () const;
00578 ViImplementation2 * getVii () const;
00579 void setVisBuffer (VisBuffer2 * vb);
00580 VisBuffer2 * getVisBufferConst () const {return vb_p;}
00581
00582
00583
00584
00585
00586 ViImplementation2 * inputVii_p;
00587
00588 private:
00589
00590 VisBuffer2 * vb_p;
00591 CountedPtr<WeightScaling> weightScaling_p;
00592 };
00593
00594 }
00595
00596 }
00597
00598 #endif // ! defined (MSVIS_TransformingVi2_H_121115_0950)
00599
00600