casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
casa::ProtoVR Class Reference

#include <ProtoVR.h>

Inheritance diagram for casa::ProtoVR:
casa::VisibilityResampler casa::VisibilityResamplerBase

Public Member Functions

 ProtoVR ()
 
virtual ~ProtoVR ()
 ProtoVR(const CFStore& cfs): VisibilityResampler(cfs) {}. More...
 
virtual VisibilityResamplerBaseclone ()
 
virtual void copyMaps (const ProtoVR &other)
 ProtoVR(const ProtoVR& other): VisibilityResampler(other),cfMap_p(), conjCFMap_p() {copy(other);}. More...
 
virtual void copy (const VisibilityResamplerBase &other)
 VisibilityResampler& operator=(const VisibilityResampler& other);. More...
 
virtual void copy (const ProtoVR &other)
 
ProtoVRoperator= (const ProtoVR &other)
 
virtual void setCFMaps (const casacore::Vector< casacore::Int > &cfMap, const casacore::Vector< casacore::Int > &conjCFMap)
 
virtual void DataToGrid (casacore::Array< casacore::DComplex > &griddedData, VBStore &vbs, casacore::Matrix< casacore::Double > &sumwt, const casacore::Bool &dopsf)
 virtual void setConvFunc(const CFStore& cfs) {convFuncStore_p = cfs;}; More...
 
virtual void DataToGrid (casacore::Array< casacore::Complex > &griddedData, VBStore &vbs, casacore::Matrix< casacore::Double > &sumwt, const casacore::Bool &dopsf)
 
virtual void GridToData (VBStore &vbs, const casacore::Array< casacore::Complex > &griddedData)
 
More...
 
- Public Member Functions inherited from casa::VisibilityResampler
 VisibilityResampler ()
 
 VisibilityResampler (const VisibilityResampler &other)
 VisibilityResampler(const CFStore& cfs): VisibilityResamplerBase(cfs) {};. More...
 
virtual ~VisibilityResampler ()
 {setConvFunc(cfs);}; More...
 
virtual void getParams (casacore::Vector< casacore::Double > &uvwScale, casacore::Vector< casacore::Double > &offset, casacore::Vector< casacore::Double > &dphase)
 
virtual void setParams (const casacore::Vector< casacore::Double > &uvwScale, const casacore::Vector< casacore::Double > &offset, const casacore::Vector< casacore::Double > &dphase)
 
virtual void setMaps (const casacore::Vector< casacore::Int > &chanMap, const casacore::Vector< casacore::Int > &polMap)
 
virtual void setFreqMaps (const casacore::Matrix< casacore::Double > &spwChanFreqs, const casacore::Matrix< casacore::Double > &spwChanConjFreqs)
 
virtual void setConvFunc (const CFStore &cfs)
 
virtual void setPATolerance (const double &dPA)
 
virtual void ComputeResiduals (VBStore &vbs)
 virtual void GridToData(VBStore& vbs, casacore::Array<casacore::Complex>& griddedData); More...
 
virtual void setMutex (async::Mutex *mu)
 
virtual void init (const casacore::Bool &doublePrecision)
 Genealogical baggage – required for the MultiThreadedVisibilityResampler – that everyone else has to carray around. More...
 
virtual void GatherGrids (casacore::Array< casacore::DComplex > &griddedData, casacore::Matrix< casacore::Double > &sumwt)
 
virtual void GatherGrids (casacore::Array< casacore::Complex > &griddedData, casacore::Matrix< casacore::Double > &sumwt)
 
virtual void initializePutBuffers (const casacore::Array< casacore::DComplex > &griddedData, const casacore::Matrix< casacore::Double > &sumwt)
 
virtual void initializePutBuffers (const casacore::Array< casacore::Complex > &griddedData, const casacore::Matrix< casacore::Double > &sumwt)
 
virtual void initializeDataBuffers (VBStore &vbs)
 
virtual void releaseBuffers ()
 
- Public Member Functions inherited from casa::VisibilityResamplerBase
 VisibilityResamplerBase ()
 
 VisibilityResamplerBase (const VisibilityResamplerBase &other)
 VisibilityResamplerBase(const CFStore& cfs): uvwScale_p(), offset_p(), chanMap_p(), polMap_p(), convFuncStore_p(), inc_p(), cfMap_p(), conjCFMap_p() {setConvFunc(cfs);};. More...
 
virtual ~VisibilityResamplerBase ()
 
VisibilityResamplerBaseoperator= (const VisibilityResamplerBase &other)
 
void finalizeToSky (casacore::Array< casacore::DComplex > &griddedData, casacore::Matrix< casacore::Double > &sumwt)
 Aliases for more readable code at the FTMachine layer. More...
 
void finalizeToSky (casacore::Array< casacore::Complex > &griddedData, casacore::Matrix< casacore::Double > &sumwt)
 
void initializeToSky (const casacore::Array< casacore::DComplex > &griddedData, const casacore::Matrix< casacore::Double > &sumwt)
 
void initializeToSky (const casacore::Array< casacore::Complex > &griddedData, const casacore::Matrix< casacore::Double > &sumwt)
 
const casacore::Vector
< casacore::Int
getCFMap ()
 
const casacore::Vector
< casacore::Int
getConjCFMap ()
 
VBRow2CFMapTypegetVBRow2CFMap ()
 
VBRow2CFBMapTypegetVBRow2CFBMap ()
 
virtual casacore::Int makeVBRow2CFMap (CFStore2 &cfs, ConvolutionFunction &cf, const VisBuffer &vb, const casacore::Quantity &dPA, const casacore::Vector< casacore::Int > &dataChan2ImChanMap, const casacore::Vector< casacore::Int > &dataPol2ImPolMap, const casacore::Vector< casacore::Double > &pointingOffset)
 

Protected Member Functions

virtual casacore::Complex getConvFuncVal (const casacore::Cube< casacore::Double > &convFunc, const casacore::Matrix< casacore::Double > &uvw, const casacore::Int &irow, const casacore::Vector< casacore::Int > &pixel)
 virtual void GridToData(VBStore& vbs, casacore::Array<casacore::Complex>& griddedData); More...
 
casacore::Complex getCFArea (casacore::Complex *__restrict__ &convFuncV, casacore::Double &wVal, casacore::Vector< casacore::Int > &scaledSupport, casacore::Vector< casacore::Float > &scaledSampling, casacore::Vector< casacore::Double > &off, casacore::Vector< casacore::Int > &convOrigin, casacore::Vector< casacore::Int > &cfShape, casacore::Double &sinDPA, casacore::Double &cosDPA)
 
template<class T >
void XInnerLoop (const casacore::Int *scaleSupport, const casacore::Float *scaledSampling, const casacore::Double *off, const casacore::Int *loc, casacore::Complex &cfArea, const casacore::Int *__restrict__ iGrdPosPtr, casacore::Complex *__restrict__ &convFuncV, const casacore::Int *convOrigin, casacore::Complex &nvalue, casacore::Double &wVal, casacore::Bool &, casacore::Bool &, T *__restrict__ gridStore, casacore::Int *iloc, casacore::Complex &norm, casacore::Int *igrdpos)
 template <class t>=""> casacore::Complex accumulateOnGrid(casacore::Array<T>& grid, casacore::Complex* restrict& convFuncV, casacore::Complex& nvalue, casacore::Double& wVal, casacore::Vector<casacore::Int>& scaledSupport, casacore::Vector<casacore::Float>& scaledSampling, casacore::Vector<casacore::Double>& off, casacore::Vector<casacore::Int>& convOrigin, casacore::Vector<casacore::Int>& cfShape, casacore::Vector<casacore::Int>& loc, casacore::Vector<casacore::Int>& igrdpos, casacore::Double& sinDPA, casacore::Double& cosDPA, casacore::Bool& finitePointingOffset, casacore::Bool dopsf); More...
 
template<class T >
casacore::Complex accumulateOnGrid (T *gridStore, const casacore::Int *gridInc_p, const casacore::Complex *cached_phaseGrad_p, const casacore::Int cachedPhaseGradNX, const casacore::Int cachedPhaseGradNY, const casacore::Complex *convFuncV, const casacore::Int *cfInc_p, casacore::Complex nvalue, casacore::Double wVal, casacore::Int *scaledSupport_ptr, casacore::Float *scaledSampling_ptr, casacore::Double *off_ptr, casacore::Int *convOrigin_ptr, casacore::Int *cfShape, casacore::Int *loc_ptr, casacore::Int *iGrdpos_ptr, casacore::Bool finitePointingOffset, casacore::Bool doPSFOnly)
 
template<class T >
void accumulateFromGrid (T &nvalue, const T *__restrict__ &grid, casacore::Vector< casacore::Int > &iGrdPos, casacore::Complex *__restrict__ &convFuncV, casacore::Double &wVal, casacore::Vector< casacore::Int > &scaledSupport, casacore::Vector< casacore::Float > &scaledSampling, casacore::Vector< casacore::Double > &off, casacore::Vector< casacore::Int > &convOrigin, casacore::Vector< casacore::Int > &cfShape, casacore::Vector< casacore::Int > &loc, casacore::Complex &phasor, casacore::Double &sinDPA, casacore::Double &cosDPA, casacore::Bool &finitePointingOffset, casacore::Matrix< casacore::Complex > &cached_phaseGrad_p)
 
virtual void DataToGrid (casacore::Array< casacore::DComplex > &griddedData, VBStore &vbs, casacore::Matrix< casacore::Double > &sumwt, const casacore::Bool &dopsf, casacore::Bool useConjFreqCF=false)
 
More...
 
virtual void DataToGrid (casacore::Array< casacore::Complex > &griddedData, VBStore &vbs, casacore::Matrix< casacore::Double > &sumwt, const casacore::Bool &dopsf, casacore::Bool useConjFreqCF=false)
 
- Protected Member Functions inherited from casa::VisibilityResampler
template<class T >
void DataToGridImpl_p (casacore::Array< T > &griddedData, VBStore &vb, const casacore::Bool &dopsf, casacore::Matrix< casacore::Double > &sumwt, casacore::Bool useConjFreqCF=false)
 casacore::Vector<casacore::Double> uvwScale_p, offset_p, dphase_p; casacore::Vector<casacore::Int> chanMap_p, polMap_p; CFStore convFuncStore_p; casacore::Int inc0_p, inc1_p, inc2_p, inc3_p; More...
 
void cacheAxisIncrements (casacore::Int &n0, casacore::Int &n1, casacore::Int &n2, casacore::Int &n3)
 void sgrid(casacore::Vector<casacore::Double>& pos, casacore::Vector<casacore::Int>& loc, casacore::Vector<casacore::Int>& off, casacore::Complex& phasor, const casacore::Int& irow, const casacore::Matrix<casacore::Double>& uvw, const casacore::Double& dphase, const casacore::Double& freq, const casacore::Vector<casacore::Double>& scale, const casacore::Vector<casacore::Double>& offset, const casacore::Vector<casacore::Float>& sampling); More...
 
casacore::Complex getFrom4DArray (const casacore::Complex *__restrict__ store, const casacore::Int *__restrict__ iPos) __restrict__
 The following two methods are called in the innermost loop. More...
 
template<class T >
void addTo4DArray (T *__restrict__ store, const casacore::Int *__restrict__ iPos, casacore::Complex &nvalue, casacore::Double &wt) __restrict__
 
- Protected Member Functions inherited from casa::VisibilityResamplerBase
void sgrid (casacore::Int &ndim, casacore::Double *__restrict__ pos, casacore::Int *__restrict__ loc, casacore::Int *__restrict__ off, casacore::Complex &phasor, const casacore::Int &irow, const casacore::Double *__restrict__ uvw, const casacore::Double &dphase, const casacore::Double &freq, const casacore::Double *__restrict__ scale, const casacore::Double *__restrict__ offset, const casacore::Float *__restrict__ sampling)
 
casacore::Bool onGrid (const casacore::Int &nx, const casacore::Int &ny, const casacore::Vector< casacore::Int > &__restrict__ loc, const casacore::Vector< casacore::Int > &__restrict__ support) __restrict__
 
casacore::Bool onGrid (const casacore::Int &nx, const casacore::Int &ny, const casacore::Int &loc0, const casacore::Int &loc1, const casacore::Int &support) __restrict__
 
void cacheAxisIncrements (const casacore::Int &n0, const casacore::Int &n1, const casacore::Int &n2, const casacore::Int &n3)
 casacore::Array assignment operator in CASACore requires lhs.nelements() == 0 or lhs.nelements()=rhs.nelements() template <class t>=""> inline void SETVEC(casacore::Vector<T>& lhs, const casacore::Vector<T>& rhs) {lhs.resize(rhs.shape()); lhs = rhs;}; More...
 
void cacheAxisIncrements (const casacore::Vector< casacore::Int > &n)
 
void cacheAxisIncrements (const casacore::Vector< casacore::Int > &n, casacore::Vector< casacore::Int > &inc)
 
void cacheAxisIncrements (const casacore::Int n[4], casacore::Int inc[4])
 
void addTo4DArray (casacore::DComplex *__restrict__ &store, casacore::Int *__restrict__ &iPos, casacore::Complex &nvalue, casacore::Double &wt) __restrict__
 Version that use internally cached inc_p template <class t>=""> More...
 
void addTo4DArray (casacore::Complex *__restrict__ &store, casacore::Int *__restrict__ &iPos, casacore::Complex &nvalue, casacore::Double &wt) __restrict__
 
void addTo4DArray (casacore::DComplex *__restrict__ &store, casacore::Int *__restrict__ &iPos, casacore::Int *__restrict__ inc, casacore::Complex &nvalue, casacore::Double &wt) __restrict__
 Version where inc_p is supplied from outside. More...
 
void addTo4DArray (casacore::Complex *__restrict__ &store, casacore::Int *__restrict__ &iPos, casacore::Int *__restrict__ inc, casacore::Complex &nvalue, casacore::Double &wt) __restrict__
 
casacore::Complex getFrom4DArray (const casacore::Complex *__restrict__ &store, const casacore::Int *__restrict__ &iPos, const casacore::Vector< casacore::Int > &inc)
 restrict More...
 
casacore::Complex getFrom4DArray (const casacore::Complex *__restrict__ &store, const casacore::Vector< casacore::Int > iPos, const casacore::Vector< casacore::Int > &inc)
 restrict More...
 
casacore::DComplex getFrom4DArray (const casacore::DComplex *__restrict__ &store, const casacore::Int *__restrict__ &iPos, const casacore::Vector< casacore::Int > &inc)
 restrict More...
 
casacore::DComplex getFrom4DArray (const casacore::DComplex *__restrict__ &store, const casacore::Vector< casacore::Int > iPos, const casacore::Vector< casacore::Int > &inc)
 restrict More...
 
casacore::Complex getFrom4DArray (const casacore::Complex *__restrict__ &store, const casacore::Int *__restrict__ &iPos)
 The following two methods are called in the innermost loop. More...
 
casacore::DComplex getFrom4DArray (const casacore::DComplex *__restrict__ &store, const casacore::Int *__restrict__ &iPos)
 restrict More...
 

Private Member Functions

template<class T >
void DataToGridImpl_p (T *gridStore, casacore::Int *gridShape, VBStore &vbs, casacore::Matrix< casacore::Double > &sumwt, const casacore::Bool &dopsf)
 Re-sample the griddedData on the VisBuffer (a.k.a de-gridding). More...
 
*void sgrid (casacore::Double pos[2], casacore::Int loc[3], casacore::Double off[3], casacore::Complex &phasor, const casacore::Int &irow, const casacore::Matrix< casacore::Double > &uvw, const casacore::Double &dphase, const casacore::Double &freq, const casacore::Double *scale, const casacore::Double *offset, const casacore::Float sampling[2])
 void DataToGridImpl_p(casacore::Array<T>& griddedData, VBStore& vb, casacore::Matrix<casacore::Double>& sumwt,const casacore::Bool& dopsf, casacore::Bool /*useConjFreqCF More...
 
casacore::Bool onGrid (const casacore::Int &nx, const casacore::Int &ny, const casacore::Int &nw, const casacore::Int loc[3], const casacore::Int support[2])
 
template<class T >
void SETVEC (casacore::Vector< T > &lhs, const casacore::Vector< T > &rhs)
 casacore::Array assignment operator in CASACore requires lhs.nelements() == 0 or lhs.nelements()=rhs.nelements() More...
 
casacore::Complex getFrom4DArray (const casacore::Complex *store, const casacore::Int *iPos, const casacore::Int inc[4])
 Internal methods to address a 4D array. More...
 
casacore::Complex getFrom4DArray (const casacore::Complex *__restrict__ &store, const casacore::Vector< casacore::Int > &iPos, const casacore::Vector< casacore::Int > &inc)
 The following two methods are called in the innermost loop. More...
 
casacore::DComplex getFrom4DArray (const casacore::DComplex *__restrict__ &store, const casacore::Vector< casacore::Int > &iPos, const casacore::Vector< casacore::Int > &inc)
 
template<class T >
void addTo4DArray (T *store, const casacore::Int *iPos, const casacore::Int *inc, casacore::Complex &nvalue, casacore::Complex &wt)
 
casacore::Bool reindex (const casacore::Vector< casacore::Int > &in, casacore::Vector< casacore::Int > &out, const casacore::Double &sinDPA, const casacore::Double &cosDPA, const casacore::Vector< casacore::Int > &Origin, const casacore::Vector< casacore::Int > &size)
 This rotates the convolution function by rotating the co-ordinate system. More...
 
casacore::Complex * getConvFunc_p (casacore::Int cfShape[4], VBStore &vbs, casacore::Double &wVal, casacore::Int &fndx, casacore::Int &wndx, casacore::Int **mNdx, casacore::Int **conjMNdx, casacore::Int &ipol, casacore::uInt &mRow)
 
void cachePhaseGrad_g (casacore::Complex *cached_phaseGrad_p, casacore::Int phaseGradNX, casacore::Int phaseGradNY, casacore::Double *cached_PointingOffset_p, casacore::Double *pointingOffset, casacore::Int cfShape[4], casacore::Int convOrigin[4])
 casacore::Complex* getConvFunc_p(casacore::Vector<casacore::Int>& cfShape, VBStorer& vbs, casacore::Double& wVal, casacore::Int& fndx, casacore::Int& wndx, PolMapType& mNdx, PolMapType& conjMNdx, casacore::Int& ipol, casacore::uInt& mRow); More...
 

Private Attributes

casacore::Int gridInc_p [4]
 

----------------------——Private parts-------------------------------——

More...
 
casacore::Int cfInc_p [4]
 
casacore::Matrix
< casacore::Complex > 
cached_phaseGrad_p
 
casacore::Vector
< casacore::Double
cached_PointingOffset_p
 

Additional Inherited Members

- Public Attributes inherited from casa::VisibilityResamplerBase
casacore::Double runTimeG_p
 
casacore::Double runTimeDG_p
 
casacore::Double runTimeG1_p
 
casacore::Double runTimeG2_p
 
casacore::Double runTimeG3_p
 
casacore::Double runTimeG4_p
 
casacore::Double runTimeG5_p
 
casacore::Double runTimeG6_p
 
casacore::Double runTimeG7_p
 
casacore::Timer timer_p
 
- Protected Attributes inherited from casa::VisibilityResampler
async::MutexmyMutex_p
 

-------------------------—Private parts----------------------------------—

More...
 
- Protected Attributes inherited from casa::VisibilityResamplerBase
casacore::Vector
< casacore::Double
uvwScale_p
 

-------------------------—Private parts----------------------------------—

More...
 
casacore::Vector
< casacore::Double
offset_p
 
casacore::Vector
< casacore::Double
dphase_p
 
casacore::Vector< casacore::IntchanMap_p
 
casacore::Vector< casacore::IntpolMap_p
 
casacore::Matrix
< casacore::Double
spwChanFreq_p
 
casacore::Matrix
< casacore::Double
spwChanConjFreq_p
 
CFStore convFuncStore_p
 
casacore::Vector< casacore::Intinc_p
 casacore::Int inc0_p, inc1_p, inc2_p, inc3_p; More...
 
casacore::Int *__restrict__ incPtr_p
 
casacore::Vector< casacore::IntcfMap_p
 
casacore::Vector< casacore::IntconjCFMap_p
 
VBRow2CFMapType vbRow2CFMap_p
 
VBRow2CFBMapType vbRow2CFBMap_p
 
double paTolerance_p
 

Detailed Description

Definition at line 44 of file ProtoVR.h.

Constructor & Destructor Documentation

casa::ProtoVR::ProtoVR ( )
inline
virtual casa::ProtoVR::~ProtoVR ( )
inlinevirtual

ProtoVR(const CFStore& cfs): VisibilityResampler(cfs) {}.

Definition at line 52 of file ProtoVR.h.

Member Function Documentation

template<class T >
void casa::ProtoVR::accumulateFromGrid ( T &  nvalue,
const T *__restrict__ &  grid,
casacore::Vector< casacore::Int > &  iGrdPos,
casacore::Complex *__restrict__ &  convFuncV,
casacore::Double wVal,
casacore::Vector< casacore::Int > &  scaledSupport,
casacore::Vector< casacore::Float > &  scaledSampling,
casacore::Vector< casacore::Double > &  off,
casacore::Vector< casacore::Int > &  convOrigin,
casacore::Vector< casacore::Int > &  cfShape,
casacore::Vector< casacore::Int > &  loc,
casacore::Complex &  phasor,
casacore::Double sinDPA,
casacore::Double cosDPA,
casacore::Bool finitePointingOffset,
casacore::Matrix< casacore::Complex > &  cached_phaseGrad_p 
)
protected
template<class T >
casacore::Complex casa::ProtoVR::accumulateOnGrid ( T *  gridStore,
const casacore::Int gridInc_p,
const casacore::Complex *  cached_phaseGrad_p,
const casacore::Int  cachedPhaseGradNX,
const casacore::Int  cachedPhaseGradNY,
const casacore::Complex *  convFuncV,
const casacore::Int cfInc_p,
casacore::Complex  nvalue,
casacore::Double  wVal,
casacore::Int scaledSupport_ptr,
casacore::Float scaledSampling_ptr,
casacore::Double off_ptr,
casacore::Int convOrigin_ptr,
casacore::Int cfShape,
casacore::Int loc_ptr,
casacore::Int iGrdpos_ptr,
casacore::Bool  finitePointingOffset,
casacore::Bool  doPSFOnly 
)
protected
template<class T >
void casa::ProtoVR::addTo4DArray ( T *  store,
const casacore::Int iPos,
const casacore::Int inc,
casacore::Complex &  nvalue,
casacore::Complex &  wt 
)
inlineprivate

T *tmp=store+(iPos[0] + iPos[1]*inc[1] + iPos[2]*inc[2] +iPos[3]*inc[3]); tmp += nvalue*wt;

Definition at line 321 of file ProtoVR.h.

void casa::ProtoVR::cachePhaseGrad_g ( casacore::Complex *  cached_phaseGrad_p,
casacore::Int  phaseGradNX,
casacore::Int  phaseGradNY,
casacore::Double cached_PointingOffset_p,
casacore::Double pointingOffset,
casacore::Int  cfShape[4],
casacore::Int  convOrigin[4] 
)
private

casacore::Complex* getConvFunc_p(casacore::Vector<casacore::Int>& cfShape, VBStorer& vbs, casacore::Double& wVal, casacore::Int& fndx, casacore::Int& wndx, PolMapType& mNdx, PolMapType& conjMNdx, casacore::Int& ipol, casacore::uInt& mRow);

virtual VisibilityResamplerBase* casa::ProtoVR::clone ( )
inlinevirtual

Reimplemented from casa::VisibilityResampler.

Definition at line 54 of file ProtoVR.h.

References ProtoVR().

virtual void casa::ProtoVR::copy ( const VisibilityResamplerBase other)
inlinevirtual

VisibilityResampler& operator=(const VisibilityResampler& other);.

const casacore::Vector<casacore::Int> cfmap=other.getCFMap(); const casacore::Vector<casacore::Int> conjcfmap = other.getConjCFMap();

setCFMaps(cfmap,conjcfmap);

Reimplemented from casa::VisibilityResampler.

Definition at line 62 of file ProtoVR.h.

References casa::VisibilityResampler::copy().

Referenced by operator=().

virtual void casa::ProtoVR::copy ( const ProtoVR other)
inlinevirtual
virtual void casa::ProtoVR::copyMaps ( const ProtoVR other)
inlinevirtual

ProtoVR(const ProtoVR& other): VisibilityResampler(other),cfMap_p(), conjCFMap_p() {copy(other);}.

Definition at line 60 of file ProtoVR.h.

References casa::VisibilityResamplerBase::cfMap_p, casa::VisibilityResamplerBase::conjCFMap_p, and setCFMaps().

virtual void casa::ProtoVR::DataToGrid ( casacore::Array< casacore::DComplex > &  griddedData,
VBStore vbs,
casacore::Matrix< casacore::Double > &  sumwt,
const casacore::Bool dopsf 
)
inlinevirtual

virtual void setConvFunc(const CFStore& cfs) {convFuncStore_p = cfs;};


Re-sample the griddedData on the VisBuffer (a.k.a gridding).

In this class, these just call the private templated version. The first variant grids onto a double precision grid while the second one does it on a single precision grid.

Note that the following calls allow using any CFStore object for gridding while de-gridding uses the internal convFuncStore_p object. virtual void DataToGrid(casacore::Array<casacore::DComplex>& griddedData, VBStore& vbs, casacore::Matrix<casacore::Double>& sumwt, const casacore::Bool& dopsf, CFStore& cfs) {DataToGridImpl_p(griddedData, vbs, sumwt,dopsf,cfs);}

virtual void DataToGrid(casacore::Array<casacore::Complex>& griddedData, VBStore& vbs, casacore::Matrix<casacore::Double>& sumwt, const casacore::Bool& dopsf, CFStore& cfs) {DataToGridImpl_p(griddedData, vbs, sumwt,dopsf,cfs);}

Simulating defaulting CFStore arguemnt in the above calls to convFuncStore_p

TEMP REMOVAL OF casacore::DComplex gridder*****

, rowBegin, rowEnd, startChan, endChan, nDataPol, nDataChan, vbSpw,useConjFreqCF

Parameters
dopsfcasacore::Int& rowBegin, casacore::Int& rowEnd, casacore::Int& startChan, casacore::Int& endChan, casacore::Int& nDataPol, casacore::Int& nDataChan, casacore::Int& vbSpw, casacore::Bool useConjFreqCF=false

Definition at line 115 of file ProtoVR.h.

References casacore::IPosition::asVector(), DataToGridImpl_p(), casacore::Array< T >::getStorage(), and casacore::ArrayBase::shape().

virtual void casa::ProtoVR::DataToGrid ( casacore::Array< casacore::Complex > &  griddedData,
VBStore vbs,
casacore::Matrix< casacore::Double > &  sumwt,
const casacore::Bool dopsf 
)
inlinevirtual

, rowBegin, rowEnd, startChan, endChan, nDataPol, nDataChan, vbSpw,useConjFreqCF

Parameters
dopsf,casacore::Int&rowBegin, casacore::Int& rowEnd, casacore::Int& startChan, casacore::Int& endChan, casacore::Int& nDataPol, casacore::Int& nDataChan, casacore::Int& vbSpw, casacore::Bool useConjFreqCF=false

Definition at line 132 of file ProtoVR.h.

References casacore::IPosition::asVector(), DataToGridImpl_p(), casacore::Array< T >::getStorage(), and casacore::ArrayBase::shape().

virtual void casa::ProtoVR::DataToGrid ( casacore::Array< casacore::DComplex > &  griddedData,
VBStore vbs,
casacore::Matrix< casacore::Double > &  sumwt,
const casacore::Bool dopsf,
casacore::Bool  = false 
)
protectedvirtual


Re-sample the griddedData on the VisBuffer (a.k.a gridding).

In this class, these just call the private templated version. The first variant grids onto a double precision grid while the second one does it on a single precision grid.

Reimplemented from casa::VisibilityResampler.

virtual void casa::ProtoVR::DataToGrid ( casacore::Array< casacore::Complex > &  griddedData,
VBStore vbs,
casacore::Matrix< casacore::Double > &  sumwt,
const casacore::Bool dopsf,
casacore::Bool  useConjFreqCF = false 
)
protectedvirtual

Reimplemented from casa::VisibilityResampler.

template<class T >
void casa::ProtoVR::DataToGridImpl_p ( T *  gridStore,
casacore::Int gridShape,
VBStore vbs,
casacore::Matrix< casacore::Double > &  sumwt,
const casacore::Bool dopsf 
)
private

Re-sample the griddedData on the VisBuffer (a.k.a de-gridding).

Parameters
dopsfcasacore::Int& rowBegin, casacore::Int& rowEnd, casacore::Int& startChan, casacore::Int& endChan, casacore::Int& nDataPol, casacore::Int& nDataChan, casacore::Int& vbSpw, const casacore::Bool accumCFs

Referenced by DataToGrid().

casacore::Complex casa::ProtoVR::getCFArea ( casacore::Complex *__restrict__ &  convFuncV,
casacore::Double wVal,
casacore::Vector< casacore::Int > &  scaledSupport,
casacore::Vector< casacore::Float > &  scaledSampling,
casacore::Vector< casacore::Double > &  off,
casacore::Vector< casacore::Int > &  convOrigin,
casacore::Vector< casacore::Int > &  cfShape,
casacore::Double sinDPA,
casacore::Double cosDPA 
)
protected
casacore::Complex* casa::ProtoVR::getConvFunc_p ( casacore::Int  cfShape[4],
VBStore vbs,
casacore::Double wVal,
casacore::Int fndx,
casacore::Int wndx,
casacore::Int **  mNdx,
casacore::Int **  conjMNdx,
casacore::Int ipol,
casacore::uInt mRow 
)
private
virtual casacore::Complex casa::ProtoVR::getConvFuncVal ( const casacore::Cube< casacore::Double > &  convFunc,
const casacore::Matrix< casacore::Double > &  uvw,
const casacore::Int irow,
const casacore::Vector< casacore::Int > &  pixel 
)
inlineprotectedvirtual

virtual void GridToData(VBStore& vbs, casacore::Array<casacore::Complex>& griddedData);

Definition at line 157 of file ProtoVR.h.

casacore::Complex casa::ProtoVR::getFrom4DArray ( const casacore::Complex *  store,
const casacore::Int iPos,
const casacore::Int  inc[4] 
)
inlineprivate

Internal methods to address a 4D array.

These should ulimately moved to a Array4D class in CASACore

This is called less frequently. Currently once per VisBuffer inline void cacheAxisIncrements(const casacore::Vector<casacore::Int>& n, casacore::Vector<casacore::Int>& inc) {inc.resize(4);inc[0]=1, inc[1]=inc[0]*n[0], inc[2]=inc[1]*n[1], inc[3]=inc[2]*n[2];(void)n[3];}

The following method is also called from the inner loop, but does not use CASA casacore::Vector (which are not thread safe, I (SB) am told). inline casacore::Complex getFrom4DArray(const casacore::Complex *__restrict__& store, const casacore::Int* iPos, const casacore::Int* inc) { return *(store+(iPos[0] + iPos[1]*inc[1] + iPos[2]*inc[2] +iPos[3]*inc[3])); return store[iPos[0] + iPos[1]*inc[1] + iPos[2]*inc[2] +iPos[3]*inc[3]]; };

return store[iPos[0] + iPos[1]*inc[1] + iPos[2]*inc[2] +iPos[3]*inc[3]];

Definition at line 299 of file ProtoVR.h.

casacore::Complex casa::ProtoVR::getFrom4DArray ( const casacore::Complex *__restrict__ &  store,
const casacore::Vector< casacore::Int > &  iPos,
const casacore::Vector< casacore::Int > &  inc 
)
inlineprivate

The following two methods are called in the innermost loop.

return store[iPos[0] + iPos[1]*inc[1] + iPos[2]*inc[2] +iPos[3]*inc[3]];

Definition at line 307 of file ProtoVR.h.

casacore::DComplex casa::ProtoVR::getFrom4DArray ( const casacore::DComplex *__restrict__ &  store,
const casacore::Vector< casacore::Int > &  iPos,
const casacore::Vector< casacore::Int > &  inc 
)
inlineprivate

return store[iPos[0] + iPos[1]*inc[1] + iPos[2]*inc[2] +iPos[3]*inc[3]];

Definition at line 313 of file ProtoVR.h.

virtual void casa::ProtoVR::GridToData ( VBStore vbs,
const casacore::Array< casacore::Complex > &  griddedData 
)
virtual


Re-sample VisBuffer to a regular grid (griddedData) (a.k.a. de-gridding)

Reimplemented from casa::VisibilityResampler.

casacore::Bool casa::ProtoVR::onGrid ( const casacore::Int nx,
const casacore::Int ny,
const casacore::Int nw,
const casacore::Int  loc[3],
const casacore::Int  support[2] 
)
inlineprivate

Definition at line 263 of file ProtoVR.h.

ProtoVR& casa::ProtoVR::operator= ( const ProtoVR other)
inline
casacore::Bool casa::ProtoVR::reindex ( const casacore::Vector< casacore::Int > &  in,
casacore::Vector< casacore::Int > &  out,
const casacore::Double sinDPA,
const casacore::Double cosDPA,
const casacore::Vector< casacore::Int > &  Origin,
const casacore::Vector< casacore::Int > &  size 
)
private

This rotates the convolution function by rotating the co-ordinate system.

For the accuracies already required for EVLA and ALMA, this is not useful. Leaving it hear for now....

virtual void casa::ProtoVR::setCFMaps ( const casacore::Vector< casacore::Int > &  cfMap,
const casacore::Vector< casacore::Int > &  conjCFMap 
)
inlinevirtual
template<class T >
void casa::ProtoVR::SETVEC ( casacore::Vector< T > &  lhs,
const casacore::Vector< T > &  rhs 
)
inlineprivate

casacore::Array assignment operator in CASACore requires lhs.nelements() == 0 or lhs.nelements()=rhs.nelements()

Definition at line 275 of file ProtoVR.h.

References casacore::Vector< T >::resize(), and casacore::Vector< T >::shape().

Referenced by setCFMaps().

* void casa::ProtoVR::sgrid ( casacore::Double  pos[2],
casacore::Int  loc[3],
casacore::Double  off[3],
casacore::Complex &  phasor,
const casacore::Int irow,
const casacore::Matrix< casacore::Double > &  uvw,
const casacore::Double dphase,
const casacore::Double freq,
const casacore::Double scale,
const casacore::Double offset,
const casacore::Float  sampling[2] 
)
private

void DataToGridImpl_p(casacore::Array<T>& griddedData, VBStore& vb, casacore::Matrix<casacore::Double>& sumwt,const casacore::Bool& dopsf, casacore::Bool /*useConjFreqCF

template<class T >
void casa::ProtoVR::XInnerLoop ( const casacore::Int scaleSupport,
const casacore::Float scaledSampling,
const casacore::Double off,
const casacore::Int loc,
casacore::Complex &  cfArea,
const casacore::Int *__restrict__  iGrdPosPtr,
casacore::Complex *__restrict__ &  convFuncV,
const casacore::Int convOrigin,
casacore::Complex &  nvalue,
casacore::Double wVal,
casacore::Bool ,
casacore::Bool ,
T *__restrict__  gridStore,
casacore::Int iloc,
casacore::Complex &  norm,
casacore::Int igrdpos 
)
protected

template <class t>=""> casacore::Complex accumulateOnGrid(casacore::Array<T>& grid, casacore::Complex* restrict& convFuncV, casacore::Complex& nvalue, casacore::Double& wVal, casacore::Vector<casacore::Int>& scaledSupport, casacore::Vector<casacore::Float>& scaledSampling, casacore::Vector<casacore::Double>& off, casacore::Vector<casacore::Int>& convOrigin, casacore::Vector<casacore::Int>& cfShape, casacore::Vector<casacore::Int>& loc, casacore::Vector<casacore::Int>& igrdpos, casacore::Double& sinDPA, casacore::Double& cosDPA, casacore::Bool& finitePointingOffset, casacore::Bool dopsf);

Member Data Documentation

casacore::Matrix<casacore::Complex> casa::ProtoVR::cached_phaseGrad_p
private

Definition at line 236 of file ProtoVR.h.

Referenced by copy(), and operator=().

casacore::Vector<casacore::Double> casa::ProtoVR::cached_PointingOffset_p
private

Definition at line 237 of file ProtoVR.h.

Referenced by copy(), operator=(), and ProtoVR().

casacore::Int casa::ProtoVR::cfInc_p[4]
private

Definition at line 235 of file ProtoVR.h.

casacore::Int casa::ProtoVR::gridInc_p[4]
private


----------------------——Private parts-------------------------------——

casacore::Vector<casacore::Double> uvwScale_p, offset_p, dphase_p;

casacore::Vector<casacore::Int> chanMap_p, polMap_p; CFStore convFuncStore_p; casacore::Int inc0_p, inc1_p, inc2_p, inc3_p; casacore::Vector<casacore::Int> inc_p; casacore::Vector<casacore::Int> cfMap_p, conjCFMap_p;

Definition at line 235 of file ProtoVR.h.


The documentation for this class was generated from the following file: