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