casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CFBuffer.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 //# CFBuffer.h: Definition of the CFBuffer class
3 //# Copyright (C) 1997,1998,1999,2000,2001,2002,2003
4 //# Associated Universities, Inc. Washington DC, USA.
5 //#
6 //# This library is free software; you can redistribute it and/or modify it
7 //# under the terms of the GNU Library General Public License as published by
8 //# the Free Software Foundation; either version 2 of the License, or (at your
9 //# option) any later version.
10 //#
11 //# This library is distributed in the hope that it will be useful, but WITHOUT
12 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14 //# License for more details.
15 //#
16 //# You should have received a copy of the GNU Library General Public License
17 //# along with this library; if not, write to the Free Software Foundation,
18 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
19 //#
20 //# Correspondence concerning AIPS++ should be addressed as follows:
21 //# Internet email: aips2-request@nrao.edu.
22 //# Postal address: AIPS++ Project Office
23 //# National Radio Astronomy Observatory
24 //# 520 Edgemont Road
25 //# Charlottesville, VA 22903-2475 USA
26 //#
27 //# $Id$
28 #ifndef SYNTHESIS_TRANSFORM2_CFBUFFER_H
29 #define SYNTHESIS_TRANSFORM2_CFBUFFER_H
37 #include <casa/Utilities/Sort.h>
38 #include <casa/Logging/LogOrigin.h>
39 #include <msvis/MSVis/VisBuffer2.h>
40 #include <casa/Logging/LogSink.h>
41 #include <casa/Logging/LogIO.h>
42 
43 //
44 // <summary> defines interface for the storage for convolution functions </summary>
45 // <use visibility=export>
46 //
47 // <prerequisite>
48 // </prerequisite>
49 //
50 // <etymology>
51 //
52 // CFBuffer is the basic in-memory storage for convolution functions
53 // as a function of polarization, W-value and frequency at a
54 // particular value of Parallactic Angle and baseline type.
55 //
56 //</etymology>
57 //
58 // <synopsis>
59 //
60 // The CFBuffer class encapsulates the storage and associated
61 // auxillary information required for the convolution functions. The
62 // <linto class=CFStore>CFStore</linkto> class is a collection of
63 // CFBuffer objects. A collection of CFStore objects is held and
64 // managed by the <linto class=FTMachine>FTMachine</linkto> and the
65 // appropriate one, depending on the casacore::Time/PA value, polarization and
66 // frequency of the data in the <linkto
67 // class=VisBuffer2>VisBuffer2</linkto>, is supplied to the <linkto
68 // class=VisibilityResampler>VisibilityResampler</linkto> object for
69 // re-sampling the data onto a grid (or vice versa).
70 //
71 // Conceptually, this object holds the convolution functions
72 // parameterized by the properties of the electromagnetic radiation
73 // (polarization state, frequency and the w-value which is the Fresnel
74 // term and implicitly a function of the frequency). The <linkto
75 // class=CFStore>CFStore</linkto> object holds a list of this object
76 // index by the telescope related parameters (antenna1,
77 // antenna2, Parallactic Angle or casacore::Time, etc.).
78 //
79 //</synopsis>
80 //
81 // <example>
82 // </example>
83 //
84 // <motivation>
85 //
86 // To factor out the details of effecient in-memory storage of the
87 // convolution functions into a separate class. This class can then
88 // be optmized by specializations for various types of convolution
89 // functions and imaging algorithms without the need to change the
90 // imaging framework.
91 //
92 // </motivation>
93 //
94 
95 using namespace std;
96 namespace casacore{
97 
98  // extern template class Array<casacore::CountedPtr<CFBuffer> >;
99 }
100 
101 namespace casa {
102 
103 using namespace casa::vi;
104  // template <class T>
105  typedef casacore::Complex TT;
106  namespace refim{
107  using namespace CFDefs;
108 
109  struct CFBStruct {
111  int shape[3];
112  casacore::Double *freqValues, *wValues, *pointingOffset;
114  casacore::Int **muellerElementsIndex, **muellerElements,
115  **conjMuellerElementsIndex, **conjMuellerElements,
116  **conjFreqNdxMap, **freqNdxMap;
118 
119 
120  CFCStruct* getCFB(int i, int j, int k)
121  { return &(CFBStorage[i + (shape[1]-1)*j + (shape[1]-1)*(shape[2]-1)*k]);}
122  // { return &(CFBStorage[i + (shape[1]-1)*j + (shape[2]-1)*k]);}
123  } ;
124 
125  class CFBuffer
126  {
127  public:
128  //
129  //========================= Administrative Parts ==========================
130  //------------------------------------------------------------------
131  //
132  CFBuffer(): wValues_p(), maxXSupport_p(-1), maxYSupport_p(-1), pointingOffset_p(), cfHitsStats(),
133  freqNdxMapsReady_p(false), freqNdxMap_p(), conjFreqNdxMap_p(), cfCacheDirName_p(), maxCFSize_p(-1)
134  {};
135 
137  wValues_p(), maxXSupport_p(maxXSup), maxYSupport_p(maxYSup), pointingOffset_p(), cfHitsStats(),
138  freqNdxMapsReady_p(false), freqNdxMap_p(), conjFreqNdxMap_p(), cfCacheDirName_p()
139  {
140  // storage_p.resize(1,1,1);
141  // storage_p(0,0,0) = new casacore::Array<TT>(dataPtr);
142  // coordSys_p.resize(1,1,1);
143  // coordSys_p(0,0,0) = cs;
144  };
145 
147  {
148  //cerr << "############### " << "~CFBuffer() called" << endl;
149  // casacore::LogIO log_l(casacore::LogOrigin("CFBuffer","~CFBuffer[R&D]"));
150  // log_l << "CF Hits stats gathered: " << cfHitsStats << endl;
151  };
152 
154  void allocCells(const casacore::Cube<casacore::CountedPtr<CFCell> >& cells);
155  void setParams(const CFBuffer& other);
156  //
157  //============================= casacore::Functional Parts ============================
158  //------------------------------------------------------------------
159  //
160  // CFBuffer& operator=(const CFBuffer& other);
161  //
162  // Get the single convolution function as an casacore::Array<T> for the
163  // supplied value of the frequency and the muellerElement.
164  // Mueller element is essentially the polarization product, but
165  // can be any of the of 16 elements of the outer product.
166  //
167  //-------------------------------------------------------------------------
168  //
169  inline casacore::Int nChan() {return nChan_p;}
170  inline casacore::Int nW() {return nW_p;}
171  inline casacore::Int nMuellerElements() {return nPol_p;}
172  inline casacore::IPosition shape() {casacore::IPosition shp(3,nChan_p, nW_p, nPol_p); return shp;}
173 
174  inline casacore::Vector<casacore::Double> getFreqList() {return freqValues_p;};
175  inline casacore::Vector<casacore::Double> getWList() {return wValues_p;};
176 
177  CFCell& getCFCell(const casacore::Double& freqVal, const casacore::Double& wValue,
178  const casacore::Int & muellerElement);
179  // muellerElement: (i,j) of the Mueller Matrix
180  casacore::CountedPtr<CFCell>& getCFCellPtr(const casacore::Double& freqVal, const casacore::Double& wValue,
181  const casacore::Int & muellerElement);
182  CFCell& operator()(const casacore::Int& i, const casacore::Int& j, const casacore::Int& k) {return *cfCells_p(i,j,k);}
183  CFCell& getCFCell(const casacore::Int& i, const casacore::Int& j, const casacore::Int& k);
184 
185  casacore::CountedPtr<CFCell >& getCFCellPtr(const casacore::Int& i, const casacore::Int& j, const casacore::Int& k);
186 
187  //=========================================================================
189  const casacore::Int & muellerElement)
190  {return *(getCFCell(freqVal, wValue, muellerElement).storage_p);}
191  // muellerElement: (i,j) of the Mueller Matrix
192 
194  const casacore::Int & muellerElement)
195  {return getCFCellPtr(freqVal, wValue, muellerElement)->storage_p;}
196 
198  {return *(getCFCell(i,j,k).storage_p);}
199 
201  {return getCFCellPtr(i,j,k)->storage_p;}
202 
203 
204  //
205  // Get the parameters of a the CFs indexed by values. The version
206  // which returns also the casacore::Coordinate System associated with the
207  // CFs are slow (casacore::CoordinateSystem::operator=() is surprisingly
208  // expensive!). So do not use this in tight loops. If it is
209  // required, use the version without the co-ordinate system below.
210  //
211  void getParams(casacore::CoordinateSystem& cs, casacore::Float& sampling,
212  casacore::Int& xSupport, casacore::Int& ySupport, casacore::String& bandName,
213  const casacore::Double& freqVal, const casacore::Double& wValue,
214  const casacore::Int& muellerElement);
215  //-------------------------------------------------------------------------
216  // Get CF by directly indexing in the list of CFs (data vector)
218  casacore::Int& xSupport, casacore::Int& ySupport, casacore::String& bandName,
219  const casacore::Int& i, const casacore::Int& j, const casacore::Int& k)
220  {
221  cs = cfCells_p(i,j,k)->coordSys_p;
222  sampling = cfCells_p(i,j,k)->sampling_p;
223  xSupport = cfCells_p(i,j,k)->xSupport_p;
224  ySupport = cfCells_p(i,j,k)->ySupport_p;
225  bandName = cfCells_p(i,j,k)->bandName_p;
226  }
227  void getParams(casacore::Double& freqVal, casacore::Float& sampling,
228  casacore::Int& xSupport, casacore::Int& ySupport,
229  const casacore::Int& iFreq, const casacore::Int& iW, const casacore::Int& iPol)
230  {
231  sampling = cfCells_p(iFreq,iW,iPol)->sampling_p;
232  xSupport = cfCells_p(iFreq,iW,iPol)->xSupport_p;
233  ySupport = cfCells_p(iFreq,iW,iPol)->ySupport_p;
234  freqVal = freqValues_p(iFreq);
235  }
236 
238  PolMapType& muellerElementsIndex, PolMapType& muellerElements,
239  PolMapType& conjMuellerElementsIndex, PolMapType& conjMuellerElements,
240  casacore::Double& fIncr, casacore::Double& wIncr)
241  {
242  freqValues.assign(freqValues_p);wValues.assign(wValues_p);
243  muellerElements.assign(muellerElements_p); muellerElementsIndex.assign(muellerElementsIndex_p);
244  conjMuellerElements.assign(conjMuellerElements_p); conjMuellerElementsIndex.assign(conjMuellerElementsIndex_p);
245  fIncr = freqValIncr_p; wIncr = wValIncr_p;
246  }
247 
248  casacore::Int nearestNdx(const casacore::Double& val, const casacore::Vector<casacore::Double>& valList, const casacore::Double& incr);
249 
250  casacore::Int nearestFreqNdx(const casacore::Double& freqVal) ;
251 
253  {
254  // return SynthesisUtils::nint(sqrt(wValIncr_p*abs(wVal)));
255  return max(0,min((int)(sqrt(wValIncr_p*abs(wVal))),(int)wValues_p.nelements())-1);
256  // Int ndx=(int)(sqrt(wValIncr_p*abs(wVal)));
257  // if ((uInt)ndx >= wValues_p.nelements())
258  // cerr << endl << endl << ndx << " " << wVal << " " << wValIncr_p << endl << endl;
259  // return min(ndx,wValues_p.nelements()-1);
260  }
261 
262  casacore::Double nearest(casacore::Bool& found, const casacore::Double& val, const casacore::Vector<casacore::Double>& valList, const casacore::Double& incr);
263 
265  {return nearest(found, freqVal, freqValues_p, freqValIncr_p);}
266 
268  {return nearest(found, wVal, wValues_p, wValIncr_p);}
269 
270  //-------------------------------------------------------------------------
271  //
272  // Generate a map for the given frequency and Mueller element list
273  // to the index in the internal list of CFs. This can be used in
274  // tight loops to get get direct access to the required CF.
275  //
276  void makeCFBufferMap(const casacore::Vector<casacore::Double>& freqVals,
277  const casacore::Vector<casacore::Double>& wValues,
278  const MuellerMatrixType& muellerElements);
279  //-------------------------------------------------------------------------
280  //
281  // Add a Convolution casacore::Function with associated parameters.
282  //
283  void addCF(casacore::Array<TT>*, //dataPtr,
285  casacore::Float& ,//sampling,
286  casacore::Int& ,//xSupport,
287  casacore::Int& ,//ySupport,
288  casacore::Double& ,//freqValue,
289  casacore::Double& ,//wValue,
290  casacore::Int& //muellerElement
291  )
292  {throw(casacore::AipsError("CFBuffer::addCF called"));}
293  //-------------------------------------------------------------------------
294  //
295  void resize(const casacore::IPosition& size) {cfCells_p.resize(size);};
296  void resize(const casacore::Double& wIncr, const casacore::Double& freqIncr,
297  const casacore::Vector<casacore::Double>& wValues,
298  const casacore::Vector<casacore::Double>& freqValues,
299  const PolMapType& muellerElements,
300  const PolMapType& muellerElementsIndex,
301  const PolMapType& conjMuellerElements,
302  const PolMapType& conjMuellerElementsIndex);
303  casacore::Int noOfMuellerElements(const PolMapType& muellerElements);
304  //-------------------------------------------------------------------------
305  // Set only the CF parameters. Return to index of the CF that was set.
306  //
307  casacore::RigidVector<casacore::Int, 3> setParams(const casacore::Int& inu, const casacore::Int& iw, const casacore::Int& ipx, const casacore::Int& ipy,
308  const casacore::Double& freqValue,
309  const casacore::Double& wValue,
310  const casacore::Int& muellerElement,
312  const casacore::TableRecord& miscInfo);
313 
314 
315  casacore::RigidVector<casacore::Int, 3> setParams(const casacore::Int& i, const casacore::Int& j, const casacore::Int& ipx, const casacore::Int& ipy,
316  const casacore::Double& freqValue, const casacore::String& bandName,
317  const casacore::Double& wValue,
318  const casacore::Int& muellerElement,
320  casacore::Float& sampling,
321  casacore::Int& xSupport, casacore::Int& ySupport,
322  const casacore::String& fileName=casacore::String(),
323  const casacore::Double& conjFreq=0.0,
324  const casacore::Int& conjPol=-1,
325  const casacore::String& telescopeName=casacore::String(),
326  const casacore::Float& diameter=25.0);
327  // casacore::RigidVector<casacore::Int, 3> setParams(const casacore::Int& inu, const casacore::Int& iw, const casacore::Int& muellerElement,
328  // const casacore::TableRecord& miscInfo);
330  {pointingOffset_p.assign(offset);};
332  //
333  // Also set the size of the CF in x and y.
334  //
335  void setParams(casacore::Int& nx, casacore::Int& ny, casacore::CoordinateSystem& cs, casacore::Float& sampling,
336  casacore::Int& xSupport, casacore::Int& ySupport,
337  const casacore::Double& freqVal, const casacore::Double& wValue,
338  const casacore::Int& muellerElement,
339  const casacore::String& fileName);
340  void setPA(casacore::Float& pa);
341  void setDir(const casacore::String& Dir) {cfCacheDirName_p=Dir;}
342  void clear();
343  const casacore::String& getCFCacheDir() {return cfCacheDirName_p;};
344 
345  casacore::RigidVector<casacore::Int,3> getIndex(const casacore::Double& freqVal, const casacore::Double& wValue,
346  const casacore::Int& muellerElement);
347  //-------------------------------------------------------------------------
348  //
349  // Copy just the parameters from other to this.
350  //
351  void copyParams(const CFBuffer& other)
352  {
353  cfCells_p = other.cfCells_p;
354  // coordSys_p = other.coordSys_p; sampling_p.assign(other.sampling_p);
355  // xSupport_p.assign(other.xSupport_p); ySupport_p.assign(other.ySupport_p);
356  maxXSupport_p=other.maxXSupport_p; maxYSupport_p=other.maxYSupport_p;
357  }
358  //-------------------------------------------------------------------------
359  //
360  // Write the description of the storage on the supplied ostream.
361  // Used mostly for debugging, but might be useful for user
362  // feedback/logging.
363  //
364  void show(const char *Mesg=NULL,ostream &os=cerr);
365  //
366  // Returns true if the internal storage is not yet initialized.
367  //
368  casacore::Bool null() {return (cfCells_p.nelements() == 0);};
369 
371  void makePersistent(const char *dir, const char *cfName="");
372 
373  void primeTheCache();
374  void initMaps(const VisBuffer2& vb,const casacore::Matrix<casacore::Double>& freqSelection,const casacore::Double& imRefFreq);
375  void initPolMaps(PolMapType& polMap, PolMapType& conjPolMap);
376  //
377  // For CUDA kernel
378  //
380  inline casacore::Int nearestFreqNdx(const casacore::Int& spw, const casacore::Int& chan, const casacore::Bool conj=false)
381  {
382  // Single pixel along the freq. axis but chan, spw > 0 indicates
383  // use of W-only projection on a wide-band data.
384  if (nChan_p == 1) return 0;
385  if (conj) return conjFreqNdxMap_p[spw][chan];
386  else return freqNdxMap_p[spw][chan];
387  }
388 
389  void getAsStruct(CFBStruct& st);
390 
391  static void initCFBStruct(CFBStruct& cfbSt)
392  {
393  cfbSt.CFBStorage=NULL;
394  cfbSt.freqValues=NULL;
395  cfbSt.wValues=NULL;
396  cfbSt.muellerElementsIndex=NULL;
397  cfbSt.muellerElements=NULL;
398  cfbSt.conjMuellerElementsIndex=NULL;
399  cfbSt.conjMuellerElements=NULL;
400  cfbSt.shape[0]=cfbSt.shape[1]=cfbSt.shape[2]=0;
401  cfbSt.fIncr=cfbSt.wIncr=0.0;
402  }
403  void fill(const casacore::Int& nx, const casacore::Int& ny,
404  const casacore::Vector<casacore::Double>& freqValues,
405  const casacore::Vector<casacore::Double>& wValues,
406  const PolMapType& muellerElements);
407 
408  casacore::IPosition getShape() {return cfCells_p.shape();}
409 
410  int getMaxCFSize();
411  bool finitePointingOffsets();
412  //
413  //============================= Protected Parts ============================
414  //------------------------------------------------------------------
415  //
416  protected:
417  //
418  // The storage buffer for the pixel values in CFCell is casacore::Array<T>
419  // rather than casacore::Matrix<T> to accomodate rotationally symmetric CFs
420  // (like the Prolate Spheroidal) which can be held as a casacore::Vector of
421  // values.
422  //
423  casacore::Cube<casacore::CountedPtr<CFCell> > cfCells_p;// freqValues x wValues x muellerElements
425  PolMapType muellerElements_p, muellerElementsIndex_p,conjMuellerElements_p,conjMuellerElementsIndex_p;
426  casacore::Double wValIncr_p, freqValIncr_p;
428 
429  casacore::Int nPol_p, nChan_p, nW_p, maxXSupport_p, maxYSupport_p;
434  void ASSIGNVVofI(casacore::Int** &target,casacore::Vector<casacore::Vector<casacore::Int> >& source, casacore::Bool& doAlloc);
436 
438  };
439 
440  // declare a commonly used template extern
441 
442 } // end namesapce refim
443 } // end namespace casa
444 
445 #endif
A Vector of integers, for indexing into Array&lt;T&gt; objects.
Definition: IPosition.h:119
casacore::Vector< casacore::Vector< casacore::Double > > getPointingOffset()
Definition: CFBuffer.h:331
casacore::Double * freqValues
Definition: CFBuffer.h:112
void addCF(casacore::Array< TT > *, casacore::CoordinateSystem &, casacore::Float &, casacore::Int &, casacore::Int &, casacore::Double &, casacore::Double &, casacore::Int &)
Definition: CFBuffer.h:283
int Int
Definition: aipstype.h:50
casacore::Int nearestFreqNdx(const casacore::Int &spw, const casacore::Int &chan, const casacore::Bool conj=false)
Definition: CFBuffer.h:380
void getCoordList(casacore::Vector< casacore::Double > &freqValues, casacore::Vector< casacore::Double > &wValues, PolMapType &muellerElementsIndex, PolMapType &muellerElements, PolMapType &conjMuellerElementsIndex, PolMapType &conjMuellerElements, casacore::Double &fIncr, casacore::Double &wIncr)
Definition: CFBuffer.h:237
casacore::Int maxYSupport_p
Definition: CFBuffer.h:429
casacore::Int nW_p
Definition: CFBuffer.h:429
#define max(a, b)
Definition: hio.h:44
#define min(a, b)
Definition: hio.h:45
casacore::Double nearestFreq(casacore::Bool &found, const casacore::Double &freqVal)
Definition: CFBuffer.h:264
casacore::String cfCacheDirName_p
Definition: CFBuffer.h:435
casacore::Int nW()
Definition: CFBuffer.h:170
A 3-D Specialization of the Array class.
casacore::Double conjFreq(const casacore::Double &freq, const casacore::Double &refFreq)
Definition: Utils.h:110
void copyParams(const CFBuffer &other)
Definition: CFBuffer.h:351
static void initCFBStruct(CFBStruct &cfbSt)
Definition: CFBuffer.h:391
casacore::Int ** muellerElements
Definition: CFBuffer.h:114
casacore::Array< TT > & getCF(const casacore::Int &i, const casacore::Int &j, const casacore::Int &k)
Definition: CFBuffer.h:197
float conj(float x)
Definition: Complex.h:353
casacore::Vector< casacore::Vector< casacore::Double > > pointingOffset_p
Definition: CFBuffer.h:430
size_t size() const
void show(const variant &v)
void setPointingOffset(const casacore::Vector< casacore::Vector< casacore::Double > > &offset)
casacore::RigidVector&lt;casacore::Int, 3&gt; setParams(const casacore::Int&amp; inu, const casacore::Int&amp; iw...
Definition: CFBuffer.h:329
casacore::Vector< casacore::Vector< casacore::Int > > freqNdxMap_p
Definition: CFBuffer.h:433
Fast Vector classes with fixed (templated) length.
CFBuffer(casacore::Int maxXSup, casacore::Int maxYSup)
Definition: CFBuffer.h:136
void setDir(const casacore::String &Dir)
Definition: CFBuffer.h:341
casacore::Int nChan()
============================= casacore::Functional Parts ============================ ...
Definition: CFBuffer.h:169
casacore::Array< TT > & getCF(const casacore::Double &freqVal, const casacore::Double &wValue, const casacore::Int &muellerElement)
=========================================================================
Definition: CFBuffer.h:188
casacore::IPosition getShape()
Definition: CFBuffer.h:408
casacore::Vector< casacore::Double > wValues_p
Definition: CFBuffer.h:424
LatticeExprNode pa(const LatticeExprNode &left, const LatticeExprNode &right)
This function finds 180/pi*atan2(left,right)/2.
Referenced counted pointer for constant data.
Definition: VisModelData.h:42
void getParams(casacore::CoordinateSystem &cs, casacore::Float &sampling, casacore::Int &xSupport, casacore::Int &ySupport, casacore::String &bandName, const casacore::Int &i, const casacore::Int &j, const casacore::Int &k)
Get CF by directly indexing in the list of CFs (data vector)
Definition: CFBuffer.h:217
casacore::CountedPtr< casacore::Array< TT > > & getCFPtr(const casacore::Double &freqVal, const casacore::Double &wValue, const casacore::Int &muellerElement)
muellerElement: (i,j) of the Mueller Matrix
Definition: CFBuffer.h:193
CFCell & operator()(const casacore::Int &i, const casacore::Int &j, const casacore::Int &k)
Definition: CFBuffer.h:182
virtual void assign(const Array< T > &other)
Assign the other array (which must be of dimension one) to this vector.
casacore::Bool freqNdxMapsReady_p
Definition: CFBuffer.h:432
CFBuffer()
========================= Administrative Parts ==========================
Definition: CFBuffer.h:132
double Double
Definition: aipstype.h:55
const casacore::String & getCFCacheDir()
Definition: CFBuffer.h:343
LatticeExprNode abs(const LatticeExprNode &expr)
Numerical 1-argument functions which result in a real number regardless of input expression type...
casacore::Int maxXSupport_p
Definition: CFBuffer.h:429
casacore::Int ** muellerElementsIndex
Definition: CFBuffer.h:114
casacore::Cube< casacore::CountedPtr< CFCell > > & getStorage()
Definition: CFBuffer.h:370
casacore::Double wValIncr_p
Definition: CFBuffer.h:426
LatticeExprNode sqrt(const LatticeExprNode &expr)
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
casacore::Double * wValues
Definition: CFBuffer.h:112
casacore::Bool clone(const casacore::String &imageName, const casacore::String &newImageName)
float Float
Definition: aipstype.h:54
casacore::Int ** conjMuellerElements
Definition: CFBuffer.h:114
casacore::Int nMuellerElements()
Definition: CFBuffer.h:171
TableExprNode shape(const TableExprNode &array)
Function operating on any scalar or array resulting in a Double array containing the shape...
Definition: ExprNode.h:1944
A hierarchical collection of named fields of various types.
Definition: TableRecord.h:182
casacore::Complex TT
template &lt;class t&gt;=&quot;&quot;&gt;
Definition: CFCell.h:75
casacore::Bool null()
Returns true if the internal storage is not yet initialized.
Definition: CFBuffer.h:368
CFCStruct * CFBStorage
Definition: CFBuffer.h:110
VisBuffer2s encapsulate one chunk of visibility data for processing.
Definition: VisBuffer2.h:141
Base class for all Casacore library errors.
Definition: Error.h:134
void getParams(casacore::Double &freqVal, casacore::Float &sampling, casacore::Int &xSupport, casacore::Int &ySupport, const casacore::Int &iFreq, const casacore::Int &iW, const casacore::Int &iPol)
Definition: CFBuffer.h:227
casacore::IPosition shape()
Definition: CFBuffer.h:172
casacore::Vector< casacore::Double > getWList()
Definition: CFBuffer.h:175
casacore::Vector< casacore::Double > getFreqList()
Definition: CFBuffer.h:174
template &lt;class t&gt;=&quot;&quot;&gt;
Definition: CFCell.h:92
String: the storage and methods of handling collections of characters.
Definition: String.h:223
MuellerMatrixType muellerMask_p
Definition: CFBuffer.h:427
PolMapType muellerElementsIndex_p
Definition: CFBuffer.h:425
casacore::Int nearestWNdx(const casacore::Double &wVal)
Definition: CFBuffer.h:252
void resize(const casacore::IPosition &size)
Definition: CFBuffer.h:295
casacore::Double nearestWVal(casacore::Bool &found, const casacore::Double &wVal)
Definition: CFBuffer.h:267
casacore::CountedPtr< casacore::Array< TT > > & getCFPtr(const casacore::Int &i, const casacore::Int &j, const casacore::Int &k)
Definition: CFBuffer.h:200
CFCStruct * getCFB(int i, int j, int k)
Definition: CFBuffer.h:120
casacore::Int ** conjMuellerElementsIndex
Definition: CFBuffer.h:114
casacore::Double wIncr
Definition: CFBuffer.h:113
casacore::Int nMueller
Definition: CFBuffer.h:117
Interconvert pixel and world coordinates.
casacore::Double fIncr
Definition: CFBuffer.h:113
casacore::Cube< casacore::CountedPtr< CFCell > > cfCells_p
============================= Protected Parts ============================
Definition: CFBuffer.h:423
casacore::Cube< casacore::Int > cfHitsStats
Definition: CFBuffer.h:431
#define casacore
&lt;X11/Intrinsic.h&gt; #defines true, false, casacore::Bool, and String.
Definition: X11Intrinsic.h:42