|
| SDGrid (SkyJones &sj, casacore::Int cachesize, casacore::Int tilesize, casacore::String convType="BOX", casacore::Int userSupport=-1, casacore::Bool useImagingWeight=false) |
| Constructor: cachesize is the size of the cache in words (e.g. More...
|
|
| SDGrid (casacore::MPosition &ml, SkyJones &sj, casacore::Int cachesize, casacore::Int tilesize, casacore::String convType="BOX", casacore::Int userSupport=-1, casacore::Float minweight=0., casacore::Bool clipminmax=false, casacore::Bool useImagingWeight=false) |
|
| SDGrid (casacore::Int cachesize, casacore::Int tilesize, casacore::String convType="BOX", casacore::Int userSupport=-1, casacore::Bool useImagingWeight=false) |
|
| SDGrid (casacore::MPosition &ml, casacore::Int cachesize, casacore::Int tilesize, casacore::String convType="BOX", casacore::Int userSupport=-1, casacore::Float minweight=0., casacore::Bool clipminmax=false, casacore::Bool useImagingWeight=false) |
|
| SDGrid (casacore::MPosition &ml, casacore::Int cachesize, casacore::Int tilesize, casacore::String convType="TGAUSS", casacore::Float truncate=-1.0, casacore::Float gwidth=0.0, casacore::Float jwidth=0.0, casacore::Float minweight=0., casacore::Bool clipminmax=false, casacore::Bool useImagingWeight=false) |
|
| SDGrid (const SDGrid &other) |
| Copy constructor. More...
|
|
SDGrid & | operator= (const SDGrid &other) |
| Assignment operator. More...
|
|
| ~SDGrid () |
|
void | initializeToVis (casacore::ImageInterface< casacore::Complex > &image, const vi::VisBuffer2 &vb) |
| Initialize transform to Visibility plane using the image as a template. More...
|
|
void | finalizeToVis () |
| Finalize transform to Visibility plane: flushes the image cache and shows statistics if it is being used. More...
|
|
void | initializeToSky (casacore::ImageInterface< casacore::Complex > &image, casacore::Matrix< casacore::Float > &weight, const vi::VisBuffer2 &vb) |
| Initialize transform to Sky plane: initializes the image. More...
|
|
void | finalizeToSky () |
| Finalize transform to Sky plane: flushes the image cache and shows statistics if it is being used. More...
|
|
void | get (vi::VisBuffer2 &vb, casacore::Int row=-1) |
| Get actual coherence from grid by degridding. More...
|
|
void | put (const vi::VisBuffer2 &vb, casacore::Int row=-1, casacore::Bool dopsf=false, FTMachine::Type type=FTMachine::OBSERVED) |
| Put coherence to grid by gridding. More...
|
|
virtual void | makeImage (FTMachine::Type type, vi::VisibilityIterator2 &vi, casacore::ImageInterface< casacore::Complex > &image, casacore::Matrix< casacore::Float > &weight) |
| Make the entire image using a ROVisIter... More...
|
|
casacore::ImageInterface
< casacore::Complex > & | getImage (casacore::Matrix< casacore::Float > &, casacore::Bool normalize=true) |
| Get the final image: optionally normalize by the summed weights. More...
|
|
virtual void | normalizeImage (casacore::Lattice< casacore::Complex > &, const casacore::Matrix< casacore::Double > &, casacore::Lattice< casacore::Float > &, casacore::Bool) |
|
virtual casacore::Bool | useWeightImage () |
| SDGrind needs to fill weightimage. More...
|
|
void | getWeightImage (casacore::ImageInterface< casacore::Float > &, casacore::Matrix< casacore::Float > &) |
| Get the final weights image. More...
|
|
virtual casacore::Bool | changed (const vi::VisBuffer2 &vb) |
| Has this operator changed since the last application? More...
|
|
virtual void | setMiscInfo (const casacore::Int qualifier) |
| set the order of the Taylor term for MFS this is to tell A-casacore::Projection to qualify the accumulated avgPB for each Taylor term in the CFCache. More...
|
|
virtual void | ComputeResiduals (vi::VisBuffer2 &, casacore::Bool) |
| Make the VB and VBStore interefaces for the interim re-factoring work. More...
|
|
virtual casacore::String | name () const |
| Return the name of the machine. More...
|
|
| FTMachine () |
|
| FTMachine (casacore::CountedPtr< CFCache > &cfcache, casacore::CountedPtr< ConvolutionFunction > &cfctor) |
|
| FTMachine (const FTMachine &other) |
|
FTMachine & | operator= (const FTMachine &other) |
|
void | setBasePrivates (const FTMachine &other) |
|
virtual | ~FTMachine () |
|
virtual FTMachine * | cloneFTM () |
| clone copy should make it pure virtual forcing every ftm to have a cloner More...
|
|
virtual void | initializeToVisNew (const vi::VisBuffer2 &vb, casacore::CountedPtr< SIImageStore > imstore) |
|
virtual void | initializeToSkyNew (const casacore::Bool dopsf, const vi::VisBuffer2 &vb, casacore::CountedPtr< SIImageStore > imstore) |
|
virtual void | initBriggsWeightor (vi::VisibilityIterator2 &vi) |
|
This function has to be called after initMaps to initialize Briggs Cube weighting scheme More...
|
|
virtual void | finalizeToSky (casacore::ImageInterface< casacore::Complex > &iimage) |
|
virtual void | finalizeToSkyNew (casacore::Bool dopsf, const vi::VisBuffer2 &vb, casacore::CountedPtr< SIImageStore > imstore) |
|
virtual void | put (vi::VisBuffer2 &vb, casacore::Int row=-1, casacore::Bool dopsf=false, refim::FTMachine::Type type=refim::FTMachine::OBSERVED) |
| Non const vb version - so that weights can be modified in-place Currently, used only by MultiTermFT. More...
|
|
virtual void | correlationToStokes (casacore::ImageInterface< casacore::Complex > &compImage, casacore::ImageInterface< casacore::Float > &resImage, const casacore::Bool dopsf) |
|
More...
|
|
virtual void | stokesToCorrelation (casacore::ImageInterface< casacore::Float > &modelImage, casacore::ImageInterface< casacore::Complex > &compImage) |
|
virtual void | normalizeImage (casacore::ImageInterface< casacore::Float > &skyImage, casacore::Matrix< casacore::Float > &sumOfWts, casacore::ImageInterface< casacore::Float > &sensitivityImage, casacore::Bool dopsf, casacore::Float pblimit, casacore::Int normtype) |
|
virtual casacore::Bool | isSkyJonesSet () |
|
virtual casacore::Bool | isSkyJonesChanged (vi::VisBuffer2 &vb, casacore::Int row) |
|
virtual void | setSkyJones (casacore::Vector< casacore::CountedPtr< SkyJones > > &sj) |
| Set SkyJones if image domain corrections /applycation are needed To reset the the FTMachine for stopping image based correction/applycation set in a casacore::Vector of size 0. More...
|
|
casacore::Bool | changedSkyJonesLogic (const vi::VisBuffer2 &vb, casacore::Bool &firstRow, casacore::Bool &internalRow) |
|
template<typename T > |
void | getGrid (casacore::Array< T > &thegrid) |
|
More...
|
|
virtual const
casacore::CountedPtr
< refim::ConvolutionFunction > & | getAWConvFunc () |
|
virtual void | findConvFunction (const casacore::ImageInterface< casacore::Complex > &, const vi::VisBuffer2 &) |
|
virtual void | getFluxImage (casacore::ImageInterface< casacore::Float > &image) |
| Get a flux (divide by this to get a flux density correct image) image if there is one. More...
|
|
void | rotateUVW (casacore::Matrix< casacore::Double > &uvw, casacore::Vector< casacore::Double > &dphase, const vi::VisBuffer2 &vb) |
|
More...
|
|
void | girarUVW (casacore::Matrix< casacore::Double > &uvw, casacore::Vector< casacore::Double > &dphase, const vi::VisBuffer2 &vb) |
| rotate with facetting style rephasing..for multifield mosaic More...
|
|
void | refocus (casacore::Matrix< casacore::Double > &uvw, const casacore::Vector< casacore::Int > &ant1, const casacore::Vector< casacore::Int > &ant2, casacore::Vector< casacore::Double > &dphase, const vi::VisBuffer2 &vb) |
| Refocus on a finite distance. More...
|
|
virtual casacore::Bool | toRecord (casacore::String &error, casacore::RecordInterface &outRecord, casacore::Bool withImage=false, const casacore::String diskimagename="") |
| Save and restore the FTMachine to and from a record. More...
|
|
virtual casacore::Bool | fromRecord (casacore::String &error, const casacore::RecordInterface &inRecord) |
|
virtual casacore::Bool | isFourier () |
| Can this FTMachine be represented by Fourier convolutions? More...
|
|
casacore::Bool | setFrameValidity (casacore::Bool validFrame) |
| set otf spectral frame transform is on or off; More...
|
|
virtual casacore::Bool | doublePrecGrid () |
| return whether the ftmachine is using a double precision grid More...
|
|
virtual void | setNoPadding (casacore::Bool nopad) |
| To make sure no padding is used in certain gridders. More...
|
|
virtual void | setLocation (const casacore::MPosition &loc) |
| set and get the location used for frame More...
|
|
virtual casacore::MPosition & | getLocation () |
|
virtual void | setMovingSource (const casacore::String &sourcename, const casacore::String &ephemtable="") |
| set a moving source aka planets or comets => adjust phase center on the fly for gridding More...
|
|
virtual void | setMovingSource (const casacore::MDirection &mdir) |
|
virtual void | reset () |
| reset stuff in an FTMachine More...
|
|
virtual void | setFreqInterpolation (const casacore::String &method) |
| set frequency interpolation type More...
|
|
virtual void | setFreqInterpolation (const casacore::InterpolateArray1D< casacore::Double, casacore::Complex >::InterpolationMethod type) |
|
virtual void | setPointingDirColumn (const casacore::String &column="DIRECTION") |
| tell ftmachine which Pointing table column to use for Direction Mosaic or Single dish ft use this for example More...
|
|
virtual casacore::String | getPointingDirColumnInUse () |
|
virtual void | setSpwChanSelection (const casacore::Cube< casacore::Int > &spwchansels) |
|
virtual void | setSpwFreqSelection (const casacore::Matrix< casacore::Double > &spwfreqs) |
|
virtual void | setCanComputeResiduals (casacore::Bool &b) |
|
virtual casacore::Bool | canComputeResiduals () |
|
virtual casacore::Float | getPBLimit () |
|
void | setnumthreads (casacore::Int n) |
| virtual void ComputeResiduals(VBStore& vb)=0; get and set numthreads More...
|
|
casacore::Int | getnumthreads () |
|
virtual void | setCFCache (casacore::CountedPtr< CFCache > &cfc, const casacore::Bool resetCFC=true) |
|
casacore::CountedPtr< CFCache > | getCFCache () |
|
casacore::String | getCacheDir () |
|
virtual void | setDryRun (casacore::Bool val) |
|
virtual casacore::Bool | dryRun () |
|
virtual casacore::Bool | isUsingCFCache () |
|
virtual const
casacore::CountedPtr
< refim::FTMachine > & | getFTM2 (const casacore::Bool) |
|
void | setPseudoIStokes (casacore::Bool pseudoI) |
|
void | setPhaseCenterTime (const casacore::Double time) |
| set and get Time to calculate phasecenter -1.0 means using the time available at each iteration..this is used when the phasecenter in the field table is either a polynomial or has a ephemerides tables associated with it Using double in the units and epoch-frame of the ms(s)..caller is responsible for conversion More...
|
|
casacore::Double | getPhaseCenterTime () |
|
casacore::Vector< casacore::Int > | channelMap (const vi::VisBuffer2 &vb) |
|
casacore::Matrix
< casacore::Double > | getSumWeights () |
|
void | setBriggsCubeWeight (casacore::CountedPtr< refim::BriggsCubeWeightor > bwght) |
| Functions associated with Briggs weighting for cubes. More...
|
|
void | getImagingWeight (casacore::Matrix< casacore::Float > &imwght, const vi::VisBuffer2 &vb) |
|
virtual casacore::Long | estimateRAM (const casacore::CountedPtr< SIImageStore > &imstore) |
| utility function that returns a rough estimate of memory needed. More...
|
|
|
enum | Type {
OBSERVED,
MODEL,
CORRECTED,
RESIDUAL,
PSF,
COVERAGE,
N_types,
DEFAULT
} |
| Types of known Images that may be made using the makeImage method. More...
|
|
static void | locateuvw (const casacore::Double *&uvw, const casacore::Double *&dphase, const casacore::Double *&freq, const casacore::Int &nchan, const casacore::Double *&scale, const casacore::Double *&offset, const casacore::Int &sampling, casacore::Int *&loc, casacore::Int *&off, casacore::Complex *&phasor, const casacore::Int &row, const casacore::Bool &doW=false) |
| helper function for openmp to call...no private dependency More...
|
|
casacore::Bool | isDryRun |
|
casacore::LogIO & | logIO () |
|
virtual void | initMaps (const vi::VisBuffer2 &vb) |
|
virtual void | initPolInfo (const vi::VisBuffer2 &vb) |
|
virtual void | gridOk (casacore::Int gridsupport) |
| check if image is big enough for gridding More...
|
|
casacore::Bool | matchChannel (const casacore::Int &spw, const VisBuffer &vb) |
|
casacore::Bool | matchChannel (const vi::VisBuffer2 &vb) |
|
casacore::Bool | matchAllSpwChans (const VisBuffer &vb) |
| redo all spw chan match especially if ms has changed underneath More...
|
|
virtual casacore::Bool | interpolateFrequencyTogrid (const vi::VisBuffer2 &vb, const casacore::Matrix< casacore::Float > &wt, casacore::Cube< casacore::Complex > &data, casacore::Cube< casacore::Int > &flag, casacore::Matrix< casacore::Float > &weight, FTMachine::Type type=FTMachine::OBSERVED) |
| casacore::Bool matchAllSpwChans(const vi::VisBuffer2& vb); interpolate visibility data of vb to grid frequency definition flag will be set the one as described in interpolateArray1D return false if no interpolation is done...for e.g for nearest case More...
|
|
virtual casacore::Bool | interpolateFrequencyFromgrid (vi::VisBuffer2 &vb, casacore::Cube< casacore::Complex > &data, FTMachine::Type type=FTMachine::MODEL) |
| degridded data interpolated back onto visibilities More...
|
|
virtual void | getInterpolateArrays (const vi::VisBuffer2 &vb, casacore::Cube< casacore::Complex > &data, casacore::Cube< casacore::Int > &flag) |
| Interpolate visibilities to be degridded upon. More...
|
|
void | setSpectralFlag (const vi::VisBuffer2 &vb, casacore::Cube< casacore::Bool > &modflagcube) |
|
casacore::Bool | storeMovingSourceState (casacore::String &error, casacore::RecordInterface &outRecord) |
| Save/Recover some elements of state of ftmachine in/from record. More...
|
|
casacore::Bool | saveMeasure (casacore::RecordInterface &rec, const casacore::String &name, casacore::String &error, const casacore::Measure &ms) |
| helper to save Measures in a record More...
|
|
casacore::Bool | recoverMovingSourceState (casacore::String &error, const casacore::RecordInterface &inRecord) |
|
casacore::Matrix
< casacore::Double > | negateUV (const vi::VisBuffer2 &vb) |
|
virtual void | findGridSector (const casacore::Int &nxp, const casacore::Int &nyp, const casacore::Int &ixsub, const casacore::Int &iysub, const casacore::Int &minx, const casacore::Int &miny, const casacore::Int &icounter, casacore::Int &x0, casacore::Int &y0, casacore::Int &nxsub, casacore::Int &nysub, const casacore::Bool linear) |
|
virtual void | tweakGridSector (const casacore::Int &nx, const casacore::Int &ny, const casacore::Int &ixsub, const casacore::Int &iysub) |
|
void | initSourceFreqConv () |
|
void | shiftFreqToSource (casacore::Vector< casacore::Double > &freqs) |
|
casacore::LogIO | logIO_p |
|
casacore::ImageInterface
< casacore::Complex > * | image |
|
casacore::UVWMachine * | uvwMachine_p |
|
casacore::CountedPtr
< casacore::UVWMachine > | phaseShifter_p |
|
casacore::MeasFrame | mFrame_p |
|
casacore::Bool | tangentSpecified_p |
| Direction of desired tangent plane. More...
|
|
casacore::MDirection | mTangent_p |
|
casacore::MDirection | mImage_p |
|
casacore::MDirection | movingDir_p |
| moving source stuff More...
|
|
casacore::Bool | fixMovingSource_p |
|
casacore::String | ephemTableName_p |
|
casacore::MDirection | firstMovingDir_p |
|
casacore::MVDirection | movingDirShift_p |
| This will hold the angular difference between movingDir and firstMovingDir with the frame conversion done properly etc. More...
|
|
casacore::Double | distance_p |
|
casacore::uInt | nAntenna_p |
|
casacore::Int | lastFieldId_p |
|
casacore::Int | lastMSId_p |
|
casacore::CountedPtr
< casacore::ROMSColumns > | romscol_p |
|
casacore::Bool | useDoubleGrid_p |
| Use douple precision grid in gridding process. More...
|
|
casacore::Matrix
< casacore::Double > | sumWeight |
| Sum of weights per polarization and per chan. More...
|
|
casacore::Matrix
< casacore::Double > | sumCFWeight |
|
casacore::Int | nx |
| Sizes. More...
|
|
casacore::Int | ny |
|
casacore::Int | npol |
|
casacore::Int | nchan |
|
casacore::Int | nvischan |
|
casacore::Int | nvispol |
|
casacore::Vector< casacore::Int > | chanMap |
| Maps of channels and polarization. More...
|
|
casacore::Vector< casacore::Int > | polMap |
|
casacore::Bool | isPseudoI_p |
| Stokes pseudo I only? single parallel flagged will be allowed. More...
|
|
casacore::MPosition | mLocation_p |
| Default Position used for phase rotations. More...
|
|
casacore::Bool | doUVWRotation_p |
| Set if uvwrotation is necessary. More...
|
|
casacore::Vector< casacore::Int > | nVisChan_p |
| setup multiple spectral window for cubes
casacore::Block <casacore::Vector <casacore::Int> > multiChanMap_p; casacore::Vector<casacore::Int> selectedSpw_p; More...
|
|
casacore::SpectralCoordinate | spectralCoord_p |
| Private variables needed for spectral frame conversion. More...
|
|
casacore::Bool | freqFrameValid_p |
| casacore::Vector<casacore::Bool> doConversion_p; More...
|
|
casacore::Vector
< casacore::Double > | imageFreq_p |
|
casacore::Vector
< casacore::Double > | lsrFreq_p |
| casacore::Vector of float lsrfreq needed for regridding More...
|
|
casacore::Vector
< casacore::Double > | interpVisFreq_p |
|
casacore::InterpolateArray1D
< casacore::Double,
casacore::Complex >
::InterpolationMethod | freqInterpMethod_p |
|
casacore::String | pointingDirCol_p |
|
casacore::Cube< casacore::Int > | spwChanSelFlag_p |
|
casacore::Matrix
< casacore::Double > | spwFreqSel_p |
|
casacore::Matrix
< casacore::Double > | expandedSpwFreqSel_p |
|
casacore::Matrix
< casacore::Double > | expandedSpwConjFreqSel_p |
|
casacore::Vector< casacore::Int > | cfStokes_p |
|
casacore::Int | polInUse_p |
|
casacore::CountedPtr< CFCache > | cfCache_p |
|
CFStore | cfs_p |
|
CFStore | cfwts_p |
|
casacore::CountedPtr< CFStore2 > | cfs2_p |
|
casacore::CountedPtr< CFStore2 > | cfwts2_p |
|
casacore::CountedPtr
< ConvolutionFunction > | convFuncCtor_p |
|
casacore::CountedPtr
< PolOuterProduct > | pop_p |
|
casacore::Bool | canComputeResiduals_p |
|
casacore::Bool | toVis_p |
|
casacore::Int | numthreads_p |
|
casacore::Array
< casacore::Complex > | griddedData |
| casacore::Array for non-tiled gridding These are common to most FTmachines More...
|
|
casacore::Array
< casacore::DComplex > | griddedData2 |
|
casacore::Float | pbLimit_p |
|
casacore::Vector
< casacore::CountedPtr
< SkyJones > > | sj_p |
| casacore::Vector<SkyJones *> sj_p; More...
|
|
casacore::CountedPtr
< casacore::ImageInterface
< casacore::Complex > > | cmplxImage_p |
| A holder for the complex image if nobody else is keeping it. More...
|
|
casacore::CountedPtr
< VisBufferUtil > | vbutil_p |
|
casacore::Double | phaseCenterTime_p |
|
casacore::Int | doneThreadPartition_p |
| Some parameters and helpers for multithreaded gridders. More...
|
|
casacore::Vector< casacore::Int > | xsect_p |
|
casacore::Vector< casacore::Int > | ysect_p |
|
casacore::Vector< casacore::Int > | nxsect_p |
|
casacore::Vector< casacore::Int > | nysect_p |
|
casacore::CountedPtr
< refim::BriggsCubeWeightor > | briggsWeightor_p |
|
casacore::MRadialVelocity::Convert | obsvelconv_p |
| moving source spectral frame stuff More...
|
|
casacore::MeasTable::Types | mtype_p |
|
FFT2D | ft_p |
|
An FTMachine for Gridding Single Dish data.
Intended use:
Public interface
Prerequisite
Etymology
FTMachine is a Machine for Fourier Transforms. SDGrid does Single Dish gridding in a similar way
Synopsis
The SkyEquation needs to be able to perform Fourier transforms on visibility data and to grid single dish data. SDGrid allows efficient Single Dish processing using a VisBuffer which encapsulates a chunk of visibility (typically all baselines for one time) together with all the information needed for processing (e.g. direction coordinates).
Gridding and degridding in SDGrid are performed using a novel sort-less algorithm. In this approach, the gridded plane is divided into small patches, a cache of which is maintained in memory using a general-purpose LatticeCache class. As the (time-sorted) visibility data move around slowly in the image plane, patches are swapped in and out as necessary. Thus, optimally, one would keep at least one patch per scan line of data.
A grid cache is defined on construction. If the gridded image plane is smaller than this, it is kept entirely in memory and all gridding and degridding is done entirely in memory. Otherwise a cache of tiles is kept an paged in and out as necessary. Optimally the cache should be big enough to hold all polarizations and frequencies for one complete scan line. The paging rate will then be small. As the cache size is reduced below this critical value, paging increases. The algorithm will work for only one patch but it will be very slow!
The gridding and degridding steps are implemented in Fortran for speed. In gridding, the visibilities are added onto the grid points in the neighborhood using a weighting function. In degridding, the value is derived by a weight summ of the same points, using the same weighting function.
Example
See the example for SkyModel.
Motivation
Define an interface to allow efficient processing of chunks of visibility data
Definition at line 121 of file SDGrid.h.