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 00027 #ifndef MSVIS_VISBUFFERIMPL_H 00028 #define MSVIS_VISBUFFERIMPL_H 00029 00030 #include <casa/aips.h> 00031 00032 #warning "Remove next line later" 00033 # include <synthesis/MSVis/VisBuffer.h> 00034 00035 #include <casa/Arrays/Cube.h> 00036 #include <casa/Arrays/Vector.h> 00037 #include <casa/Arrays/Matrix.h> 00038 #include <casa/BasicSL/Complex.h> 00039 #include <synthesis/MSVis/VisBufferComponents.h> 00040 00041 namespace casa { //# NAMESPACE CASA - BEGIN 00042 00043 namespace asyncio { 00044 class VLAT; 00045 } // end namespace asyncio 00046 00047 class VbDirtyComponents; 00048 class ROVisibilityIterator2; 00049 class VisibilityIterator2; 00050 00051 namespace vi { 00052 00053 //#forward 00054 00055 00056 // <summary> 00057 // VbDirtyComponents allows marking portions of a VisBufferImpl as 00058 // modified (aka dirty). This feature is needed for the Visibility 00059 // Processing Framework (VPF) which allows a sequence of data processing 00060 // nodes to work as a bucket brigade operating sequentially on a 00061 // VisBufferImpl. A downstream output node needs to know what data, 00062 // if any, needs to be written out. 00063 // 00064 // <prerequisite> 00065 // #<li><linkto class="VisBufferImpl">VisBufferImpl</linkto> 00066 // </prerequisite> 00067 // 00068 // </summary> 00069 // 00070 // <synopsis> 00071 // 00072 // </synopsis> 00073 // <example> 00074 // 00075 // <code> 00076 // 00077 // </code> 00078 // </example> 00079 // 00080 00081 #if 0 // Can't avoid the definition in VisBuffer for now 00082 00083 class VbDirtyComponents { 00084 00085 public: 00086 00087 typedef std::set<VisBufferComponents::EnumType> Set; 00088 typedef Set::const_iterator const_iterator; 00089 00090 VbDirtyComponents operator+ (const VbDirtyComponents & other) const; 00091 00092 const_iterator begin () const; 00093 Bool contains (VisBufferComponents::EnumType component) const; 00094 const_iterator end () const; 00095 00096 static VbDirtyComponents all (); 00097 static VbDirtyComponents exceptThese (VisBufferComponents::EnumType component, ...); 00098 static VbDirtyComponents none (); 00099 static VbDirtyComponents singleton (VisBufferComponents::EnumType component); 00100 static VbDirtyComponents these (VisBufferComponents::EnumType component, ...); 00101 00102 protected: 00103 00104 private: 00105 00106 Set set_p; 00107 00108 static const VbDirtyComponents all_p; 00109 00110 static VbDirtyComponents initializeAll (); 00111 00112 }; 00113 00114 #endif // commenting out 00115 00116 00117 class VbCacheItemBase; 00118 class VisBufferCache; 00119 class VisBufferState; 00120 00121 using vi::VbCacheItemBase; 00122 using vi::VisBufferCache; 00123 using vi::VisBufferState; 00124 00125 //<summary>VisBufferImpls encapsulate one chunk of visibility data for processing.</summary> 00126 // 00127 // <use visibility=export> 00128 // 00129 // <reviewed reviewer="" date="" tests="" demos=""> 00130 00131 // <prerequisite> 00132 // <li> <linkto class="VisSet">VisSet</linkto> 00133 // <li> <linkto class="VisibilityIterator2">VisibilityIterator2</linkto> 00134 // <li> <linkto class="VisBufferImplAutoPtr">VisBufferImplAutoPtr</linkto> 00135 // <li> <linkto class="VbDirtyComponents">VbDirtyComponents</linkto> 00136 // </prerequisite> 00137 // 00138 // <etymology> 00139 // VisBufferImpl is a buffer for visibility data 00140 // </etymology> 00141 // 00142 //<synopsis> 00143 // This class contains 'one iteration' of the 00144 // <linkto class="VisibilityIterator2">VisibilityIterator2</linkto> 00145 // It is a modifiable 00146 // buffer of values to which calibration and averaging can be applied. 00147 // This allows processing of the data in larger blocks, avoiding some 00148 // overheads for processing per visibility point or spectrum. 00149 // 00150 // See <linkto module="MeasurementEquations">MeasurementEquations</linkto> 00151 // for more details on how the VisBufferImpl is to be used. 00152 // 00153 // When the user intends to allow asynchronous I/O they will need to use 00154 // the VisBufferImplAsync and VisBufferImplAsyncWrapper classes; these are 00155 // publicly derived from VisBufferImpl. Normally, the user should not 00156 // explicitly use these classes but should use the helper class 00157 // VisBufferImplAutoPtr which will ensure that the appropriate class is 00158 // used. 00159 //</synopsis> 00160 00161 //<todo> 00162 // <li> reconcile vis/visCube usage: visCube, flagCube and weightMatrix 00163 // are currently only correct when this VisBufferImpl got them from a 00164 // VisIter, operations like -=, freqAverage() are only done for 00165 // visibility() and flag(). 00166 //</todo> 00167 00168 class VisBufferImpl { 00169 00170 friend class casa::asyncio::VLAT; // for async i/o 00171 friend class VbCacheItemBase; 00172 friend class VisBufferCache; 00173 friend class VisBufferState; 00174 friend class VisBufferImplAsync; // for async i/o 00175 friend class VisBufferImplAsyncWrapper; // for async i/o 00176 friend class ViReadImpl; 00177 friend class ViReadImplAsync; // for async I/O 00178 00179 public: 00180 // Create empty VisBufferImpl you can assign to or attach. 00181 VisBufferImpl(); 00182 // Construct VisBufferImpl for a particular VisibilityIterator2 00183 // The buffer will remain synchronized with the iterator. 00184 VisBufferImpl(ROVisibilityIterator2 & iter); 00185 00186 // Copy construct, looses synchronization with iterator: only use buffer for 00187 // current iteration (or reattach). 00188 VisBufferImpl(const VisBufferImpl & vb); 00189 00190 // Destructor (detaches from VisIter) 00191 virtual ~VisBufferImpl(); 00192 00193 // Assignment, loses synchronization with iterator: only use buffer for 00194 // current iteration (or reattach) 00195 00196 virtual VisBufferImpl & operator=(const VisBufferImpl & vb); 00197 00198 // Assignment, optionally without copying the data across; with copy=True 00199 // this is identical to normal assignment operator 00200 00201 virtual void assign(const VisBufferImpl & vb, Bool copy = True); 00202 00203 virtual VisBufferImpl * clone () const; 00204 00205 virtual const ROVisibilityIterator2 * getVi () const; 00206 00207 virtual void invalidate(); 00208 00209 // subtraction: return the difference of the visibilities, flags of 00210 // this and other are or-ed. An exception is thrown if the number of 00211 // rows or channels differs, but no further checks are done. 00212 //-->Not called: VisBufferImpl & operator-=(const VisBufferImpl & vb); 00213 00214 // Invalidate the cache 00215 00216 // <group> 00217 // Access functions 00218 // 00219 // return nCatOK_p ? nCat_p : fillnCat(); 00220 // virtual void setNCat (const Int &))) { 00221 // } 00222 // virtual Int nCat() const { 00223 // return This->nCat(); 00224 // } 00225 00230 // Decide what is the right value (depending on where the vb is coming from) 00231 // for you for the size of the buffer. i.e (nCorr(), nChannel(), nRow()) or vb.visCube().shape() 00232 // The latter comes from the VisIter state ...the former be careful... 00234 //without updating fillnrow 00239 00241 00243 00244 virtual void dirtyComponentsAdd (const VbDirtyComponents & additionalDirtyComponents); 00245 virtual void dirtyComponentsAdd (VisBufferComponents::EnumType component); 00246 virtual void dirtyComponentsClear (); 00247 virtual VbDirtyComponents dirtyComponentsGet () const; 00248 virtual void dirtyComponentsSet (const VbDirtyComponents & dirtyComponents); 00249 virtual void dirtyComponentsSet (VisBufferComponents::EnumType component); 00250 00251 //--> This needs to be removed: virtual Bool fetch(const asyncio::PrefetchColumns *pfc); 00252 00253 // feed1_pa() and feed2_pa() return an array of parallactic angles 00254 // (each corresponds to the first receptor of the feed) one for each 00255 // row in the current buffer. In contrast, feed_pa() calculates 00256 // the angles for each antenna. These methods are implemented for 00257 // VisBufferImpl only to benefit from caching of the feed and antenna IDs. 00258 00259 // Note that feed_pa is a function instead of a cached value 00260 virtual Vector<Float> feed_pa(Double time) const; 00261 00262 // direction1() and direction2() return arrays of directions where 00263 // the first and the second antenna/feed are pointed to. One value for 00264 // each row in the current buffer. 00265 00266 00267 // NOMINAL parallactic angle (feed p.a. offset NOT included) 00268 virtual Float parang0(Double time) const; 00269 virtual Vector<Float> parang(Double time) const; 00270 00271 virtual MDirection azel0(Double time) const; // function rather than cached value 00272 virtual void azel0Vec(Double time, Vector<Double>& azelVec) const; 00273 virtual Vector<MDirection> azel(Double time) const; 00274 virtual void azelMat(Double time, Matrix<Double>& azelMat) const; 00275 00276 // Hour angle for specified time 00277 virtual Double hourang(Double time) const; 00278 00279 // virtual const Vector<Double>& lsrFrequency() const; 00280 // virtual void setLsrFrequency (const Vector<Double>&); 00281 00282 00283 //the following method is to convert the observed frequencies 00284 // This conversion may not be accurate for some frame 00285 // conversion like topo to lsr except if the spw is in the actual buffer 00286 00287 //if ignoreconv=True..frequency is served as is in the data frame 00288 //virtual void lsrFrequency(const Int & spw, Vector<Double>& freq, Bool & convert, const Bool ignoreconv = False) const; 00289 00290 // virtual const Matrix<Float>& imagingWeight() const; 00291 // virtual void setImagingWeight (const Matrix<Float>&); 00292 00293 //</group> 00294 00295 //<group> 00296 // Utility functions to provide coordinate or column ranges of the 00297 // data in the VisBufferImpl. Flagging is applied before computing the ranges. 00298 // 00299 // Generic accessor to column ranges of integer type, as specified by 00300 // enumerations defined in class MSCalEnums. Throws an exception 00301 // if the enum is not for a recognized integer column. 00302 //--> Low utility?: virtual Vector<Int> vecIntRange(const MSCalEnums::colDef & calEnum) const; 00303 00304 // Antenna id. range (includes both ANTENNA1 and ANTENNA2 columns) 00305 //--> Low utility?: virtual Vector<Int> antIdRange() const; 00306 00307 // Time range 00308 00309 //--> Low utility?: virtual Bool timeRange(MEpoch & rTime, MVEpoch & rTimeEP, MVEpoch & rInterval) const; 00310 00311 // Return the row Ids from the original ms. If the ms used is a subset of 00312 // another ms then rowIds() return the row ids of the original ms. 00313 00314 //--> Belongs in VI: virtual void setRowIds (const Vector<uInt>&); 00315 //--> Belongs in VI: virtual const Vector<uInt>& rowIds() const; 00316 00317 //</group> 00318 00319 // Frequency average the buffer (visibility() column only) 00320 //--> Not called: virtual void freqAverage(); 00321 00322 // Frequency average the buffer (visCube and [if present] modelVisCube) 00323 void freqAveCubes(); 00324 00325 // Average channel axis according to chanavebounds, for whichever of DATA, 00326 // MODEL_DATA, CORRECTED_DATA, FLOAT_DATA, FLAG, and WEIGHT_SPECTRUM are 00327 // present. It will only treat the first 5 as present if they have already 00328 // been loaded into the buffer! 00329 void averageChannels (const Matrix<Int>& chanavebounds); 00330 00331 00332 // Form Stokes parameters from correlations 00333 // (these are preliminary versions) 00334 //--> Not called: virtual void formStokes(); 00335 //--> Not called: virtual void formStokesWeightandFlag(); 00336 //--> Not called: virtual void formStokes(Cube<Complex>& vis); 00337 //--> Not called: virtual void formStokes(Cube<Float>& fcube); // Will throw up if asked to do all 4. 00338 00339 // Sort/unsort the correlations, if necessary 00340 // (Rudimentary handling of non-canonically sorted correlations--use with care!) 00341 virtual void sortCorr (); 00342 virtual void unSortCorr(); 00343 00344 // Normalize the visCube by the modelVisCube 00345 // (and optionally also divide visCube_p by its normalized amp) 00346 virtual void normalize(const Bool & phaseOnly = False); 00347 00348 // Fill weightMat according to sigma column 00349 virtual void resetWeightsUsingSigma ();//virtual void resetWeightMat(); 00350 00351 // Rotate visibility phase for given vector (dim = nrow of vb) of phases (metres) 00352 00353 //--> Called by routine in FixVis but that routine is not called: 00354 // virtual void phaseCenterShift(const Vector<Double>& phase); 00355 // Rotate visibility phase for phase center offsets (arcsecs) 00356 //--> Not called: virtual void phaseCenterShift(Double dx, Double dy); 00357 00358 // Update coordinate info - useful for copied VisBufferImpls that need 00359 // to retain some state for later reference. 00360 // Presently this fills antenna, array, field and spectralWindow ids, time, 00361 // frequency and number of rows. 00362 // if dirDependent is set to False the expensive direction dependent calculation of parallactic or direction of 00363 // antenna from pointing table is avoided 00364 //Add more as needed. 00365 virtual void updateCoordInfo(const VisBufferImpl * vb = NULL, const Bool dirDependent = True); 00366 void copyCoordInfo(const VisBufferImpl & other, Bool force = False); 00367 00368 //--> Not called: virtual void setCorrectedVisCube(const Cube<Complex>& vis); 00369 // Like the above, but for FLOAT_DATA, keeping it as real floats. 00370 00371 //--> Not called: virtual void setFloatDataCube(const Cube<Float>& fcube); 00372 // Reference external model visibilities 00373 //--> Not called: virtual void refModelVis(const Matrix<CStokesVector>& mvis); 00374 00375 // Remove scratch cols data from vb 00376 //--> Not called: virtual void removeScratchCols(); 00377 00378 // Access the current ROMSColumns object via VisIter 00379 //--> Access using VI: virtual const ROMSColumns & msColumns() const; 00380 00381 //--> Access via VI: virtual Int numberAnt () const; 00382 00383 00384 00385 // Get all selected spectral windows not just the one in the actual buffer 00386 //--> Get from VI: virtual void allSelectedSpectralWindows(Vector<Int>& spws, Vector<Int>& nvischan); 00387 00388 //--> Get from VI: virtual void getChannelSelection(Block< Vector<Int> >& blockNGroup, 00389 // Block< Vector<Int> >& blockStart, 00390 // Block< Vector<Int> >& blockWidth, 00391 // Block< Vector<Int> >& blockIncr, 00392 // Block< Vector<Int> >& blockSpw) const;; 00393 //--> Get from VI: void allSelectedSpectralWindows(Vector<Int>& spws, Vector<Int>& nvischan) const; 00394 00395 virtual Bool isNewArrayId () const; 00396 virtual Bool isNewFieldId () const; 00397 virtual Bool isNewMs() const; 00398 virtual Bool isNewSpectralWindow () const; 00399 virtual Bool isWritable () const; 00400 virtual Int msId() const; 00401 virtual String msName (Bool stripPath = False) const; 00402 00404 // 00405 // Data accessors and setters (where appropriate) 00406 // 00407 // There are the methods that allows access to the items cached in the 00408 // VisBuffer. The straight accessors provide read-only access to the 00409 // item. Where the item is allowed to be modified, one or more set 00410 // methods are provided. 00411 00412 virtual Vector<Int> antenna1 () const; 00413 virtual const Vector<Int> & antenna2 () const; 00414 virtual Int arrayId () const; 00415 virtual const Vector<Int> & channel () const; 00416 virtual const Vector<SquareMatrix<Complex, 2> > & cjones () const; 00417 virtual const Cube<Complex> & correctedVisCube () const; 00418 virtual void setCorrectedVisCube (const Cube<Complex> &); 00419 virtual const Matrix<CStokesVector> & correctedVisibility () const; 00420 virtual void setCorrectedVisibility (const Matrix<CStokesVector> &); 00421 virtual const Vector<Int> & corrType () const; 00422 virtual Int dataDescriptionId () const; 00423 virtual const Vector<MDirection> & direction1 () const; 00424 virtual const Vector<MDirection> & direction2 () const; 00425 virtual const Vector<Double> & exposure () const; 00426 virtual const Vector<Int> & feed1 () const; 00427 virtual const Vector<Float> & feed1_pa () const; 00428 virtual const Vector<Int> & feed2 () const; 00429 virtual const Vector<Float> & feed2_pa () const; 00430 virtual Int fieldId () const; 00431 virtual const Matrix<Bool> & flag () const; 00432 virtual void setFlag (const Matrix<Bool>&); 00433 virtual const Array<Bool> & flagCategory () const; 00434 virtual void setFlagCategory (const Array<Bool>&); 00435 virtual const Cube<Bool> & flagCube () const; 00436 virtual void setFlagCube (const Cube<Bool>&); 00437 virtual const Vector<Bool> & flagRow () const; 00438 virtual void setFlagRow (const Vector<Bool>&); 00439 virtual const Cube<Float> & floatDataCube () const; 00440 virtual void setFloatDataCube (const Cube<Float> &); 00441 virtual const Vector<Double> & frequency () const; 00442 virtual const Matrix<Float> & imagingWeight () const; 00443 virtual const Cube<Complex> & modelVisCube () const; 00444 virtual void setModelVisCube(const Complex & c); 00445 virtual void setModelVisCube(const Cube<Complex>& vis); 00446 virtual void setModelVisCube(const Vector<Float>& stokes); 00447 virtual const Matrix<CStokesVector> & modelVisibility () const; 00448 virtual void setModelVisibility (Matrix<CStokesVector> &); 00449 virtual Int nChannel () const; 00450 virtual Int nCorr () const; 00451 virtual Int nRow () const; 00452 virtual const Vector<Int> & observationId () const; 00453 virtual const MDirection& phaseCenter () const; 00454 virtual Int polFrame () const; 00455 virtual const Vector<Int> & processorId () const; 00456 virtual const Vector<uInt> & rowIds () const; 00457 virtual const Vector<Int> & scan () const; 00458 virtual const Vector<Float> & sigma () const; 00459 virtual const Matrix<Float> & sigmaMat () const; 00460 virtual Int spectralWindow () const; 00461 virtual const Vector<Int> & stateId () const; 00462 virtual const Vector<Double> & time () const; 00463 virtual const Vector<Double> & timeCentroid () const; 00464 virtual const Vector<Double> & timeInterval () const; 00465 virtual const Vector<RigidVector<Double, 3> > & uvw () const; 00466 virtual const Matrix<Double> & uvwMat () const; 00467 virtual const Cube<Complex> & visCube () const; 00468 virtual void setVisCube(const Complex & c); 00469 virtual void setVisCube (const Cube<Complex> &); 00470 virtual const Matrix<CStokesVector> & visibility () const; 00471 virtual void setVisibility (Matrix<CStokesVector> &); 00472 virtual const Vector<Float> & weight () const; 00473 virtual void setWeight (const Vector<Float>&); 00474 virtual const Matrix<Float> & weightMat () const; 00475 virtual void setWeightMat (const Matrix<Float>&); 00476 virtual const Cube<Float> & weightSpectrum () const; 00477 virtual void setWeightSpectrum (const Cube<Float>&); 00478 00479 protected: 00480 00481 00482 // Attach to a VisIter. Detaches itself first if already attached 00483 // to a VisIter. Will remain synchronized with iterator. 00484 00485 virtual void attachToVisibilityIterator2 (ROVisibilityIterator2 & iter); 00486 virtual void cacheCopy (const VisBufferImpl & other, Bool markAsCached); 00487 virtual void cacheClear (Bool markAsCached = False); 00488 00489 void adjustWeightFactorsAndFlags (Matrix <Float> & rowWeightFactors, 00490 Bool useWeightSpectrum, 00491 Int nRows, 00492 Int nCorrelations, 00493 Int nChannelsOut); 00494 void adjustWeightAndSigmaMatrices (Int nChannelsAveraged, Int nChannelsOut, Int nRows, 00495 Int nCorrelations, Int nChannelsSelected, 00496 const Matrix <Float> & rowWeightFactors); 00497 00498 Int averageChannelFrequencies (Int nChannelsOut, 00499 const Vector<Int> & channels, 00500 const Matrix<Int> & averagingBounds); 00501 00502 void averageFlagInfoChannels (const Matrix<Int> & averagingBounds, 00503 Int nChannelsOut, Bool useWeightSpectrum); 00504 00505 template<class T> 00506 void averageVisCubeChannels (T & dataCache, 00507 Int nChanOut, 00508 const Matrix<Int>& averagingbounds); 00509 00510 virtual void checkVisIter (const char * func, const char * file, int line, const char * extra = "") const; 00511 void computeRowWeightFactors (Matrix <Float> & rowWeightFactors, Bool useWeightSpectrum); 00512 virtual void sortCorrelationsAux (Bool makeSorted); 00513 virtual void detachFromVisibilityIterator2 (); 00514 virtual ROVisibilityIterator2 * getViP () const; // protected, non-const access to VI 00515 void registerCacheItem (VbCacheItemBase *); 00516 void setIterationInfo (Int msId, const String & msName, Bool isNewMs, 00517 Bool isNewArrayId, Bool isNewFieldId, Bool isNewSpectralWindow); 00518 virtual void stateCopy (const VisBufferImpl & other); // copy relevant noncached members 00519 00520 template <typename Coord> 00521 void updateCoord (Coord & item, const Coord & otherItem); 00522 00523 private: 00524 00525 virtual Bool areCorrelationsInCanonicalOrder () const; 00526 void checkVisIterBase (const char * func, const char * file, int line, const char * extra = "") const; 00527 void construct(); 00528 void constructCache(); 00529 virtual void validate(); 00530 00532 // 00533 // Fillers 00534 // 00535 // These methods fill the needed value into the cache. This 00536 // usually means getting it from the attached VisibilityIterator2 00537 // but the needed value can be generated as well. 00538 // 00539 // The name of the filler should match up with the accessor method 00540 // (see above) as well as the member name in the cache (see 00541 // VisBufferCache class in VisBuffer.cc). 00542 00543 00544 virtual void fillAntenna1 (Vector<Int>& value) const; 00545 virtual void fillAntenna2 (Vector<Int>& value) const; 00546 virtual void fillArrayId (Int& value) const; 00547 virtual void fillChannel (Vector<Int>& value) const; 00548 virtual void fillCorrType (Vector<Int>& value) const; 00549 virtual void fillCubeCorrected (Cube <Complex> & value) const; 00550 virtual void fillCubeModel (Cube <Complex> & value) const; 00551 virtual void fillCubeObserved (Cube <Complex> & value) const; 00552 virtual void fillDataDescriptionId (Int& value) const; 00553 virtual void fillDirection1 (Vector<MDirection>& value) const; 00554 virtual void fillDirection2 (Vector<MDirection>& value) const; 00555 virtual void fillDirectionAux (Vector<MDirection>& value, 00556 const Vector<Int> & antenna, 00557 const Vector<Int> &feed, 00558 const Vector<Float> & feedPa) const; 00559 virtual void fillExposure (Vector<Double>& value) const; 00560 virtual void fillFeed1 (Vector<Int>& value) const; 00561 virtual void fillFeed2 (Vector<Int>& value) const; 00562 virtual void fillFeedPa1 (Vector <Float> & feedPa) const; 00563 virtual void fillFeedPa2 (Vector <Float> & feedPa) const; 00564 virtual void fillFeedPaAux (Vector <Float> & feedPa, 00565 const Vector <Int> & antenna, 00566 const Vector <Int> & feed) const; 00567 virtual void fillFieldId (Int& value) const; 00568 virtual void fillFlag (Matrix<Bool>& value) const; 00569 virtual void fillFlagCategory (Array<Bool>& value) const; 00570 virtual void fillFlagCube (Cube<Bool>& value) const; 00571 virtual void fillFlagRow (Vector<Bool>& value) const; 00572 virtual void fillFloatData (Cube<Float>& value) const; 00573 virtual void fillFrequency (Vector<Double>& value) const; 00574 virtual void fillImagingWeight (Matrix<Float> & value) const; 00575 virtual void fillJonesC (Vector<SquareMatrix<Complex, 2> >& value) const; 00576 virtual void fillNChannel (Int& value) const; 00577 virtual void fillNCorr (Int& value) const; 00578 virtual void fillNRow (Int& value) const; 00579 virtual void fillObservationId (Vector<Int>& value) const; 00580 virtual void fillPhaseCenter (MDirection& value) const; 00581 virtual void fillPolFrame (Int& value) const; 00582 virtual void fillProcessorId (Vector<Int>& value) const; 00583 virtual void fillScan (Vector<Int>& value) const; 00584 virtual void fillSigma (Vector<Float>& value) const; 00585 virtual void fillSigmaMat (Matrix<Float>& value) const; 00586 virtual void fillSpectralWindow (Int& value) const; 00587 virtual void fillStateId (Vector<Int>& value) const; 00588 virtual void fillTime (Vector<Double>& value) const; 00589 virtual void fillTimeCentroid (Vector<Double>& value) const; 00590 virtual void fillTimeInterval (Vector<Double>& value) const; 00591 virtual void fillUvw (Vector<RigidVector<Double, 3> >& value) const; 00592 virtual void fillUvwMat (Matrix<Double>& value) const; 00593 virtual void fillVisibilityCorrected (Matrix<CStokesVector>& value) const; 00594 virtual void fillVisibilityModel (Matrix<CStokesVector>& value) const; 00595 virtual void fillVisibilityObserved (Matrix<CStokesVector>& value) const; 00596 virtual void fillWeight (Vector<Float>& value) const; 00597 virtual void fillWeightMat (Matrix<Float>& value) const; 00598 virtual void fillWeightSpectrum (Cube<Float>& value) const; 00599 00600 VisBufferCache * cache_p; 00601 VisBufferState * state_p; 00602 }; 00603 00604 } // end namespace vb 00605 00606 } // end namespace casa 00607 00608 00609 #endif 00610