casa
$Rev:20696$
|
00001 //# VisBuffer.h: buffer for iterating through MS in large blocks 00002 //# Copyright (C) 1996,1997,1998,1999,2000,2002,2003 00003 //# Associated Universities, Inc. Washington DC, USA. 00004 //# 00005 //# This library is free software; you can redistribute it and/or modify it 00006 //# under the terms of the GNU Library General Public License as published by 00007 //# the Free Software Foundation; either version 2 of the License, or (at your 00008 //# option) any later version. 00009 //# 00010 //# This library is distributed in the hope that it will be useful, but WITHOUT 00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00012 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00013 //# License for more details. 00014 //# 00015 //# You should have received a copy of the GNU Library General Public License 00016 //# along with this library; if not, write to the Free Software Foundation, 00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 00018 //# 00019 //# Correspondence concerning AIPS++ should be addressed as follows: 00020 //# Internet email: aips2-request@nrao.edu. 00021 //# Postal address: AIPS++ Project Office 00022 //# National Radio Astronomy Observatory 00023 //# 520 Edgemont Road 00024 //# Charlottesville, VA 22903-2475 USA 00025 //# 00026 //# $Id: VisBuffer.h,v 19.14 2006/02/28 04:48:58 mvoronko Exp $ 00027 00028 #ifndef VISBUFFER_ASYNC_WRAPPER_H 00029 #define VISBUFFER_ASYNC_WRAPPER_H 00030 00031 #include <casa/aips.h> 00032 #include <casa/Arrays/Cube.h> 00033 #include <casa/Arrays/Vector.h> 00034 #include <casa/Arrays/Matrix.h> 00035 #include <casa/BasicSL/Complex.h> 00036 #include <measures/Measures/MDirection.h> 00037 #include <measures/Measures/MEpoch.h> 00038 #include <synthesis/MSVis/StokesVector.h> 00039 #include <synthesis/MSVis/VisBuffer.h> 00040 #include <synthesis/MSVis/VisBufferAsync.h> 00041 #include <synthesis/MSVis/VisibilityIterator.h> 00042 #include <synthesis/MSVis/MSCalEnums.h> 00043 00044 namespace casa { //# NAMESPACE CASA - BEGIN 00045 00046 //#forward 00047 00048 //<summary>VisBuffers encapulsate one chunk of visibility data for processing.</summary> 00049 // 00050 // <use visibility=export> 00051 // 00052 // <reviewed reviewer="" date="" tests="" demos=""> 00053 00054 // <prerequisite> 00055 // <li> <linkto class="VisSet">VisSet</linkto> 00056 // <li> <linkto class="VisibilityIterator">VisibilityIterator</linkto> 00057 // </prerequisite> 00058 // 00059 // <etymology> 00060 // VisBuffer is a buffer for visibility data 00061 // </etymology> 00062 // 00063 //<synopsis> 00064 // This class contains 'one iteration' of the 00065 // <linkto class="VisibilityIterator">VisibilityIterator</linkto> 00066 // It is a modifiable 00067 // buffer of values to which calibration and averaging can be applied. 00068 // This allows processing of the data in larger blocks, avoiding some 00069 // overheads for processing per visibility point or spectrum. 00070 // 00071 // See <linkto module="MeasurementEquations">MeasurementEquations</linkto> 00072 // for more details on how the VisBuffer is to be used. 00073 //</synopsis> 00074 00075 //<todo> 00076 // <li> reconcile vis/visCube usage: visCube, flagCube and weightMatrix 00077 // are currently only correct when this VisBuffer got them from a 00078 // VisIter, operations like -=, freqAverage() are only done for 00079 // visibility() and flag(). 00080 //</todo> 00081 class VisBufferAsyncWrapper : public VisBufferAsync { 00082 00083 friend class ViReadImplAsync; 00084 00085 public: 00086 // Create empty VisBuffer you can assign to or attach. 00087 VisBufferAsyncWrapper(); 00088 // // Construct VisBuffer for a particular VisibilityIterator 00089 // // The buffer will remain synchronized with the iterator. 00090 VisBufferAsyncWrapper (ROVisibilityIterator & iter); 00091 // 00092 // // Copy construct, looses synchronization with iterator: only use buffer for 00093 // // current iteration (or reattach). 00094 VisBufferAsyncWrapper (const VisBufferAsync & vb); 00095 00096 // Destructor (detaches from VisIter) 00097 virtual ~VisBufferAsyncWrapper(); 00098 00099 // Assignment, loses synchronization with iterator: only use buffer for 00100 // current iteration (or reattach) 00101 00102 virtual VisBufferAsyncWrapper & operator=(const VisBufferAsyncWrapper & vb); 00103 00104 // Assignment, optionally without copying the data across; with copy=True 00105 // this is identical to normal assignment operator 00106 00107 virtual VisBufferAsyncWrapper & assign(const VisBuffer & vb, Bool copy = True); 00108 00109 // subtraction: return the difference of the visibilities, flags of 00110 // this and other are or-ed. An exception is thrown if the number of 00111 // rows or channels differs, but no further checks are done. 00112 VisBufferAsyncWrapper & operator-=(const VisBuffer & vb); 00113 00114 // Attach to a VisIter. Detaches itself first if already attached 00115 // to a VisIter. Will remain synchronized with iterator. 00116 virtual void attachToVisIter(ROVisibilityIterator & iter); 00117 void attachToVisIterAsync (ROVisibilityIterator & iter); 00118 virtual VisBuffer * clone (); 00119 virtual void detachFromVisIter (); 00120 00121 // Invalidate the cache 00122 virtual void invalidate(); 00123 00124 // <group> 00125 // Access functions 00126 // 00127 virtual Int & nCorr(); 00128 Int nCorr() const; 00129 00130 Int & nChannel(); 00131 Int nChannel() const; 00132 00133 Vector<Int>& channel(); 00134 const Vector<Int>& channel() const; 00135 00136 Bool newArrayId () const; 00137 Bool newFieldId () const; 00138 Bool newSpectralWindow () const; 00139 00140 Int & nRow(); 00141 Int nRow() const; 00142 00143 Vector<Int>& antenna1(); 00144 const Vector<Int>& antenna1() const; 00145 00146 Vector<Int>& antenna2(); 00147 const Vector<Int>& antenna2() const; 00148 00149 Vector<Int>& feed1(); 00150 const Vector<Int>& feed1() const; 00151 00152 Vector<Int>& feed2(); 00153 const Vector<Int>& feed2() const; 00154 00155 // feed1_pa() and feed2_pa() return an array of parallactic angles 00156 // (each corresponds to the first receptor of the feed) one for each 00157 // row in the current buffer. In contrast, feed_pa() calculates 00158 // the angles for each antenna. These methods are implemented for 00159 // VisBuffer only to benefit from caching of the feed and antenna IDs. 00160 Vector<Float>& feed1_pa(); 00161 const Vector<Float>& feed1_pa() const; 00162 00163 Vector<Float>& feed2_pa(); 00164 const Vector<Float>& feed2_pa() const; 00165 00166 Vector<SquareMatrix<Complex, 2> >& CJones(); 00167 const Vector<SquareMatrix<Complex, 2> >& CJones() const; 00168 00169 // Note that feed_pa is a function instead of a cached value 00170 virtual Vector<Float> feed_pa(Double time) const; 00171 00172 // direction1() and direction2() return arrays of directions where 00173 // the first and the second antenna/feed are pointed to. One value for 00174 // each row in the current buffer. 00175 Vector<MDirection>& direction1(); 00176 const Vector<MDirection>& direction1() const; 00177 00178 Vector<MDirection>& direction2(); 00179 const Vector<MDirection>& direction2() const; 00180 00181 00182 // NOMINAL parallactic angle (feed p.a. offset NOT included) 00183 virtual Float parang0(Double time) const; 00184 virtual Vector<Float> parang(Double time) const; 00185 00186 // Note that azel is a function instead of a cached value 00187 virtual MDirection azel0(Double time) const; 00188 Vector<Double>& azel0Vec(Double time, Vector<Double>& azelVec) const; 00189 virtual Vector<MDirection> azel(Double time) const; 00190 Matrix<Double>& azelMat(Double time, Matrix<Double>& azelMat) const; 00191 00192 // Hour angle for specified time 00193 virtual Double hourang(Double time) const; 00194 00195 Int fieldId() const; 00196 00197 Int arrayId() const; 00198 00199 Int polarizationId() const; 00200 00201 // Return flag for each channel & row 00202 Matrix<Bool>& flag(); 00203 const Matrix<Bool>& flag() const; 00204 00205 // Return flag for each polarization, channel and row 00206 Cube<Bool>& flagCube(); 00207 const Cube<Bool>& flagCube() const; 00208 00209 Vector<Bool>& flagRow(); 00210 const Vector<Bool>& flagRow() const; 00211 00212 // Return flags for each polarization, channel, category, and row. 00213 Array<Bool>& flagCategory(); 00214 const Array<Bool>& flagCategory() const; 00215 00216 Vector<Int>& scan(); 00217 const Vector<Int>& scan() const; 00218 00219 // scalar version for convenience, when scan known constant for 00220 // entire iteration/buffer. 00221 Int scan0(); 00222 00223 Vector<Int>& processorId(); 00224 const Vector<Int>& processorId() const; 00225 00226 Vector<Int>& observationId(); 00227 const Vector<Int>& observationId() const; 00228 00229 Vector<Int>& stateId(); 00230 const Vector<Int>& stateId() const; 00231 00232 // Gets SPECTRAL_WINDOW/CHAN_FREQ (in Hz, acc. to the MS def'n v.2). 00233 Vector<Double>& frequency(); 00234 const Vector<Double>& frequency() const; 00235 00236 // Vector<Double>& lsrFrequency(); 00237 // const Vector<Double>& lsrFrequency() const; 00238 00239 00240 //the following method is to convert the observed frequencies 00241 // This conversion may not be accurate for some frame 00242 // conversion like topo to lsr except if the spw is in the actual buffer 00243 00244 virtual void lsrFrequency(const Int & spw, Vector<Double>& freq, Bool & convert) const; 00245 00246 virtual Int numberCoh () const; 00247 00248 MDirection & phaseCenter(); 00249 MDirection phaseCenter() const; 00250 00251 Int polFrame() const; 00252 00253 Vector<Int>& corrType(); 00254 const Vector<Int>& corrType() const; 00255 00256 Vector<Float>& sigma(); 00257 const Vector<Float>& sigma() const; 00258 00259 Matrix<Float>& sigmaMat(); 00260 const Matrix<Float>& sigmaMat() const; 00261 00262 Int & spectralWindow(); 00263 Int spectralWindow() const; 00264 virtual Int dataDescriptionId() const; 00265 Vector<Double>& time(); 00266 const Vector<Double>& time() const; 00267 00268 Vector<Double>& timeCentroid(); 00269 const Vector<Double>& timeCentroid() const; 00270 00271 Vector<Double>& timeInterval(); 00272 const Vector<Double>& timeInterval() const; 00273 00274 Vector<Double>& exposure(); 00275 const Vector<Double>& exposure() const; 00276 00277 Vector<RigidVector<Double, 3> >& uvw(); 00278 const Vector<RigidVector<Double, 3> >& uvw() const; 00279 00280 Matrix<Double>& uvwMat(); 00281 const Matrix<Double>& uvwMat() const; 00282 00283 Matrix<CStokesVector>& visibility(); 00284 const Matrix<CStokesVector>& visibility() const; 00285 00286 Matrix<CStokesVector>& modelVisibility(); 00287 const Matrix<CStokesVector>& modelVisibility() const; 00288 00289 Matrix<CStokesVector>& correctedVisibility(); 00290 const Matrix<CStokesVector>& correctedVisibility() const; 00291 00292 Cube<Complex>& visCube(); 00293 const Cube<Complex>& visCube() const; 00294 00295 Cube<Complex>& modelVisCube(); 00296 00297 Cube<Complex>& modelVisCube(const Bool & matchVisCubeShape); 00298 00299 const Cube<Complex>& modelVisCube() const; 00300 00301 Cube<Complex>& correctedVisCube(); 00302 const Cube<Complex>& correctedVisCube() const; 00303 00304 // Return visCube(), modelVisCube(), or correctedVisCube(), 00305 // according to whichcol. They throw an exception if whichcol is 00306 // unsupported, but note the encouraged default. 00307 // TODO: Optionally return DATA if whichcol is unavailable. 00308 Cube<Complex>& dataCube(const MS::PredefinedColumns whichcol=MS::DATA); 00309 const Cube<Complex>& dataCube(const MS::PredefinedColumns 00310 whichcol=MS::DATA) const; 00311 00312 Cube<Float>& floatDataCube(); 00313 const Cube<Float>& floatDataCube() const; 00314 00315 // Returns the weights for each row averaged over the parallel hand correlations. 00316 Vector<Float>& weight(); 00317 const Vector<Float>& weight() const; 00318 00319 // Returns the nPol_p x curNumRow_p weight matrix. 00320 Matrix<Float>& weightMat(); 00321 const Matrix<Float>& weightMat() const; 00322 00323 // Is a valid WEIGHT_SPECTRUM available? 00324 Bool existsWeightSpectrum() const; 00325 00326 Cube<Float>& weightSpectrum(); 00327 const Cube<Float>& weightSpectrum() const; 00328 00329 const Matrix<Float>& imagingWeight() const; 00330 Matrix<Float> & imagingWeight (); 00331 00332 Cube<Float>& weightCube(); 00333 //</group> 00334 00335 //<group> 00336 // Utility functions to provide coordinate or column ranges of the 00337 // data in the VisBuffer. Flagging is applied before computing the ranges. 00338 // 00339 // Generic accessor to column ranges of integer type, as specified by 00340 // enumerations defined in class MSCalEnums. Throws an exception 00341 // if the enum is not for a recognized integer column. 00342 Vector<Int> vecIntRange(const MSCalEnums::colDef & calEnum) const; 00343 00344 // Antenna id. range (includes both ANTENNA1 and ANTENNA2 columns) 00345 Vector<Int> antIdRange() const; 00346 00347 // Time range 00348 Bool timeRange(MEpoch & rTime, MVEpoch & rTimeEP, MVEpoch & rInterval) const; 00349 00350 // Return the row Ids from the original ms. If the ms used is a subset of 00351 // another ms then rowIds() return the row ids of the original ms. 00352 virtual Vector<uInt>& rowIds(); 00353 00354 virtual const Vector<uInt>& rowIds() const;; 00355 00356 //</group> 00357 00358 // Frequency average the buffer (visibility() column only) 00359 void freqAverage(); 00360 00361 // Frequency average the buffer (visCube and [if present] modelVisCube) 00362 void freqAveCubes(); 00363 00364 // Average channel axis according to chanavebounds, for whichever of DATA, 00365 // MODEL_DATA, CORRECTED_DATA, FLOAT_DATA, FLAG, and WEIGHT_SPECTRUM are 00366 // present. It will only treat the first 5 as present if they have already 00367 // been loaded into the buffer! 00368 void channelAve(const Matrix<Int>& chanavebounds); 00369 00370 // Average channel axis by factor. 00371 template<class T> void chanAveVisCube(Cube<T>& data, Int nChanOut); 00372 00373 // Accumulate channel axis by factor, without applying WEIGHT_SPECTRUM even 00374 // if it is present. 00375 // It is primarily intended for averaging WEIGHT_SPECTRUM itself. 00376 template<class T> void chanAccCube(Cube<T>& data, Int nChanOut); 00377 00378 // This defaults to no conceptual side effects, but usually it is more 00379 // efficient to let it leave weightSpectrum() in a channel averaged state. 00380 // restoreWeightSpectrum has no effect if !existsWeightSpectrum(). 00381 void chanAveFlagCube(Cube<Bool>& flagcube, const Int nChanOut, 00382 const Bool restoreWeightSpectrum = True); 00383 00384 // Form Stokes parameters from correlations 00385 // (these are preliminary versions) 00386 void formStokes(); 00387 void formStokesWeightandFlag(); 00388 void formStokes(Cube<Complex>& vis); 00389 void formStokes(Cube<Float>& fcube); // Will throw up if asked to do all 4. 00390 00391 // Sort/unsort the correlations, if necessary 00392 // (Rudimentary handling of non-canonically sorted correlations--use with care!) 00393 void sortCorr(); 00394 void unSortCorr(); 00395 00396 // Normalize the visCube by the modelVisCube 00397 // (and optionally also divide visCube_p by its normalized amp) 00398 void normalize(const Bool & phaseOnly = False); 00399 00400 // Fill weightMat according to sigma column 00401 void resetWeightMat(); 00402 00403 // Rotate visibility phase for phase center offsets 00404 void phaseCenterShift(Double dx, Double dy); 00405 00406 // Update coordinate info - useful for copied VisBuffers that need 00407 // to retain some state for later reference. 00408 // Presently this fills antenna, array, field and spectralWindow ids, time, 00409 // frequency and number of rows. Add more as needed. 00410 virtual void updateCoordInfo(const VisBuffer * vb = NULL); 00411 00412 // Set the visibility to a constant, note that this only changes the buffer, 00413 // no values are written back to tables from here. 00414 virtual void setVisCube(Complex c); 00415 virtual void setModelVisCube(Complex c); 00416 virtual void setCorrectedVisCube(Complex c); 00417 00418 // Set the visibility, note that this only changes the buffer, 00419 // no values are written back to tables from here. 00420 void setVisCube(const Cube<Complex>& vis); 00421 void setModelVisCube(const Cube<Complex>& vis); 00422 void setCorrectedVisCube(const Cube<Complex>& vis); 00423 00424 // Like the above, but for FLOAT_DATA, keeping it as real floats. 00425 void setFloatDataCube(const Cube<Float>& fcube); 00426 00427 // Set model according to a Stokes vector 00428 void setModelVisCube(const Vector<Float>& stokes); 00429 00430 // Reference external model visibilities 00431 void refModelVis(const Matrix<CStokesVector>& mvis); 00432 00433 // Remove scratch cols data from vb 00434 void removeScratchCols(); 00435 00436 // Access the current ROMSColumns object via VisIter 00437 virtual const ROMSColumns & msColumns() const; 00438 00439 virtual Int numberAnt () const; 00440 00441 00442 00443 // Get all selected spectral windows not just the one in the actual buffer 00444 virtual void allSelectedSpectralWindows(Vector<Int>& spws, Vector<Int>& nvischan); 00445 00446 void allSelectedSpectralWindows(Vector<Int>& spws, Vector<Int>& nvischan) const; 00447 00448 // Return the actual msid, useful if using multiple ms to monitor which 00449 // ms in the list is being dealt with 00450 virtual Int msId() const; 00451 00452 //checked if the ms has changed since the last chunk processed 00453 virtual Bool newMS() const; 00454 00455 void wrap (VisBufferAsync * vba); 00456 00457 protected: 00458 00459 virtual Bool checkMSId(); 00460 virtual void checkVisIter (const char * func, const char * file, int line) const; 00461 void copyCache (const VisBuffer & other, Bool force); 00462 const VisImagingWeight & getImagingWeightGenerator () const; 00463 Int getOldMsId () const; 00464 ROVisibilityIterator * getVisibilityIterator () const; 00465 VisBufferAsync * releaseVba (); 00466 00467 // Create cache status accessors which relay the request to the wrapped 00468 // VBA. 00469 00470 #undef CacheStatus 00471 #define CacheStatus(item)\ 00472 Bool item ## OK () const\ 00473 {\ 00474 if (wrappedVba_p == NULL){\ 00475 throw AipsError ("VisBufferAsyncWrapper: No attached VBA", __FILE__, __LINE__);\ 00476 }\ 00477 return wrappedVba_p->item ## OK_p;\ 00478 } 00479 00480 CacheStatus (antenna1); 00481 CacheStatus (antenna2); 00482 CacheStatus (arrayId); 00483 CacheStatus (channel); 00484 CacheStatus (cjones); 00485 CacheStatus (correctedVisCube); 00486 CacheStatus (correctedVisibility); 00487 CacheStatus (corrType); 00488 CacheStatus (dataDescriptionId); 00489 CacheStatus (direction1); 00490 CacheStatus (direction2); 00491 CacheStatus (exposure); 00492 CacheStatus (feed1_pa); 00493 CacheStatus (feed1); 00494 CacheStatus (feed2_pa); 00495 CacheStatus (feed2); 00496 CacheStatus (fieldId); 00497 CacheStatus (flagCategory); 00498 CacheStatus (flagCube); 00499 CacheStatus (flag); 00500 CacheStatus (flagRow); 00501 CacheStatus (floatDataCube); 00502 CacheStatus (frequency); 00503 CacheStatus (imagingWeight); 00504 CacheStatus (modelVisCube); 00505 CacheStatus (modelVisibility); 00506 CacheStatus (ms); 00507 CacheStatus (nChannel); 00508 CacheStatus (nCorr); 00509 CacheStatus (nRow); 00510 CacheStatus (observationId); 00511 CacheStatus (phaseCenter); 00512 CacheStatus (polFrame); 00513 CacheStatus (processorId); 00514 CacheStatus (rowIds); 00515 CacheStatus (scan); 00516 CacheStatus (sigmaMat); 00517 CacheStatus (sigma); 00518 CacheStatus (spectralWindow); 00519 CacheStatus (stateId); 00520 CacheStatus (timeCentroid); 00521 CacheStatus (timeInterval); 00522 CacheStatus (time); 00523 CacheStatus (uvwMat); 00524 CacheStatus (uvw); 00525 CacheStatus (visCube); 00526 CacheStatus (visibility); 00527 CacheStatus (weightMat); 00528 CacheStatus (weight); 00529 CacheStatus (weightSpectrum); 00530 00531 private: 00532 00533 VisBufferAsync * wrappedVba_p; 00534 ROVisibilityIterator * wrappedVisIterAsync_p; 00535 00536 // validate the cache 00537 void validate(); 00538 void attachWrappedVb (ROVisibilityIterator * iter); 00539 00540 void setAllCacheStatuses (bool status); 00541 00542 00543 Bool nonCanonCorr(); // Are correlations in non-canonical order? 00544 00545 // Filter index arrays for unique elements 00546 Vector<Int> unique(const Vector<Int>& indices) const; 00547 00548 // +-------------------------------------------------+ 00549 // | Cache Declarations (fillers, statuses and data) | 00550 // +-------------------------------------------------+ 00551 // 00552 // Preferred naming convention: 00553 // 00554 // T thing () --- returns the value of thing (public method) 00555 // T fillThing () --- fills thing cache variable and sets thingOK_p to true (private) 00556 // Bool thingOK_p --- true if the value of thing is currently cached (private) 00557 // T thing_p --- holds cached value of thing (if thingOK_p is true) (private) 00558 // 00559 // Example: Vector<Int>& feed1(); Vector<Int>& fillFeed1(); 00560 // Bool feed1OK_P; Vector<Int> feed1_p; 00561 00562 // Cache filling routines in alphabetical order 00563 // 00564 // The first line in a fill routine should be the macro CheckVisIter. This 00565 // will cause an AipsError to be throw when there is no visibilty iterator 00566 // associated with the VisBuffer. This is especially important because the 00567 // fillers may be called on a VisBufferAsync in two contexts: filling 00568 // where there will be a VI attached and in normal use where there is no VI 00569 // attached. The filler must also set the cache status variable to True during 00570 // its execution. 00571 00572 Vector<Int>& fillAnt1(); 00573 Vector<Int>& fillAnt2(); 00574 Int & fillArrayId(); 00575 //Matrix<Int>& fillChanAveBounds(); 00576 Vector<Int>& fillChannel(); 00577 Vector<SquareMatrix<Complex, 2> >& fillCjones(); 00578 Vector<Int>& fillCorrType(); 00579 virtual Vector<MDirection>& fillDirection1(); 00580 virtual Vector<MDirection>& fillDirection2(); 00581 Vector<Double>& fillExposure(); 00582 Vector<Int>& fillFeed1(); 00583 Vector<Float>& fillFeed1_pa(); 00584 Vector<Int>& fillFeed2(); 00585 Vector<Float>& fillFeed2_pa(); 00586 Int & fillFieldId(); 00587 Matrix<Bool>& fillFlag(); 00588 Array<Bool>& fillFlagCategory(); 00589 Cube<Bool>& fillFlagCube(); 00590 Vector<Bool> & fillFlagRow(); 00591 Cube<Float>& fillFloatDataCube(); 00592 Vector<Double>& fillFreq(); // Puts SPECTRAL_WINDOW/CHAN_FREQ in frequency_p. 00593 //Matrix<Float>& fillImagingWeight(); 00594 //Vector<Double>& fillLSRFreq(); 00595 Int & fillnChannel(); 00596 Int & fillnCorr(); 00597 Int & fillnRow(); 00598 Vector<Int> & fillObservationId(); 00599 virtual MDirection & fillPhaseCenter(); 00600 Int & fillPolFrame(); 00601 Vector<Int> & fillProcessorId(); 00602 Vector<Int> & fillScan(); 00603 Vector<Float>& fillSigma(); 00604 Matrix<Float>& fillSigmaMat(); 00605 Int & fillSpW(); 00606 Vector<Int> & fillStateId(); 00607 Vector<Double>& fillTime(); 00608 Vector<Double>& fillTimeCentroid(); 00609 Vector<Double>& fillTimeInterval(); 00610 Vector<RigidVector<Double, 3> >& filluvw(); 00611 Matrix<Double>& filluvwMat(); 00612 Matrix<CStokesVector>& fillVis(VisibilityIterator::DataColumn whichOne); 00613 Cube<Complex>& fillVisCube(VisibilityIterator::DataColumn whichOne); 00614 Vector<Float>& fillWeight(); 00615 Matrix<Float>& fillWeightMat(); 00616 Cube<Float>& fillWeightSpectrum(); 00617 00618 }; 00619 00620 } //# NAMESPACE CASA - END 00621 00622 #endif