SDAlgorithmBase.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef SYNTHESIS_SDALGORITHMBASE_H
00030 #define SYNTHESIS_SDALGORITHMBASE_H
00031
00032 #include <ms/MeasurementSets/MeasurementSet.h>
00033
00034 #include <casa/Arrays/Matrix.h>
00035 #include <images/Images/ImageInterface.h>
00036 #include <images/Images/PagedImage.h>
00037 #include <images/Images/TempImage.h>
00038 #include <casa/Logging/LogMessage.h>
00039 #include <casa/Logging/LogSink.h>
00040 #include <casa/System/PGPlotter.h>
00041
00042 #include <casa/aips.h>
00043 #include <images/Images/ImageInterface.h>
00044 #include <components/ComponentModels/ComponentList.h>
00045 #include <casa/BasicSL/String.h>
00046 #include <synthesis/TransformMachines/StokesImageUtil.h>
00047
00048 #include<synthesis/ImagerObjects/SDMaskHandler.h>
00049 #include<synthesis/ImagerObjects/SIImageStore.h>
00050 #include<synthesis/ImagerObjects/SIImageStoreMultiTerm.h>
00051
00052 namespace casa {
00053
00054
00055 class SIMinorCycleController;
00056
00057
00058 class SDAlgorithmBase {
00059 public:
00060
00061
00062 SDAlgorithmBase();
00063 virtual ~SDAlgorithmBase();
00064
00065
00066 void deconvolve( SIMinorCycleController& loopController,
00067 SHARED_PTR<SIImageStore> &imagestore,
00068 Int deconvolverid);
00069
00070 void setRestoringBeam( GaussianBeam restbeam, String usebeam );
00071
00072
00073
00074 virtual void restore( SHARED_PTR<SIImageStore> imagestore );
00075 virtual void pbcor( SHARED_PTR<SIImageStore> imagestore );
00076
00077 virtual String getAlgorithmName(){return itsAlgorithmName;};
00078
00079 virtual uInt getNTaylorTerms(){return 1;};
00080
00081 protected:
00082
00083
00084 virtual void takeOneStep( Float loopgain, Int cycleNiter, Float cycleThreshold,
00085 Float &peakresidual, Float &modelflux, Int& iterdone )=0;
00086
00087 virtual void initializeDeconvolver()=0;
00088 virtual void finalizeDeconvolver()=0;
00089
00090
00091 virtual void queryDesiredShape(Int &nchanchunks, Int& npolchunks, IPosition imshape);
00092
00093
00094
00095 Int checkStop( SIMinorCycleController &loopcontrols, Float currentresidual );
00096 Bool findMaxAbs(const Array<Float>& lattice,Float& maxAbs,IPosition& posMaxAbs);
00097 Bool findMaxAbsMask(const Array<Float>& lattice,const Array<Float>& mask,
00098 Float& maxAbs,IPosition& posMaxAbs);
00099
00100
00101 String itsAlgorithmName;
00102
00103 SHARED_PTR<SIImageStore> itsImages;
00104
00105
00106
00107
00108 IPosition itsMaxPos;
00109 Float itsPeakResidual;
00110 Float itsModelFlux;
00111
00112
00113
00114
00115 GaussianBeam itsRestoringBeam;
00116 String itsUseBeam;
00117
00118
00119
00120 };
00121
00122 }
00123
00124 #endif