SIImageStoreMultiTerm.h

Go to the documentation of this file.
00001 //# SIImageStore.h: Imager functionality sits here; 
00002 //# Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be addressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#
00025 //# $Id$
00026 
00027 #ifndef SYNTHESIS_SIIMAGESTOREMULTITERM_H
00028 #define SYNTHESIS_SIIMAGESTOREMULTITERM_H
00029 
00030 #include <casa/aips.h>
00031 #include <casa/OS/Timer.h>
00032 #include <casa/Containers/Record.h>
00033 #include <ms/MeasurementSets/MeasurementSet.h>
00034 #include <casa/Arrays/IPosition.h>
00035 #include <casa/Quanta/Quantum.h>
00036 #include <measures/Measures/MDirection.h>
00037 #include <coordinates/Coordinates/CoordinateSystem.h>
00038 #include <coordinates/Coordinates/SpectralCoordinate.h>
00039 #include <images/Images/PagedImage.h>
00040 #include <images/Images/TempImage.h>
00041 #include <images/Images/SubImage.h>
00042 #include <images/Regions/ImageRegion.h>
00043 #include <casa/BasicSL/Constants.h>
00044 
00045 #include <synthesis/ImagerObjects/SIImageStore.h>
00046 
00047 namespace casa { //# NAMESPACE CASA - BEGIN
00048 
00049 
00050   class SIImageStoreMultiTerm: public SIImageStore 
00051 {
00052  public:
00053   // Default constructor
00054 
00055   SIImageStoreMultiTerm();
00056   SIImageStoreMultiTerm(String imagename, uInt ntaylorterms=1, const Bool ignorefacets=False);
00057   SIImageStoreMultiTerm(String imagename, CoordinateSystem &imcoordsys, 
00058                         IPosition imshape, const int nfacets, 
00059                         const Bool overwrite=False, uInt ntaylorterms=1,Bool useweightimage=False);
00060 
00061   /*
00062   SIImageStoreMultiTerm(Block<SHARED_PTR<ImageInterface<Float> > >modelims, 
00063                         Block<SHARED_PTR<ImageInterface<Float> > >residims,
00064                         Block<SHARED_PTR<ImageInterface<Float> > >psfims, 
00065                         Block<SHARED_PTR<ImageInterface<Float> > >weightims, 
00066                         Block<SHARED_PTR<ImageInterface<Float> > >restoredims,
00067                         Block<SHARED_PTR<ImageInterface<Float> > >sumwtims, 
00068                         SHARED_PTR<ImageInterface<Float> > newmask,
00069                         SHARED_PTR<ImageInterface<Float> > newalpha,
00070                         SHARED_PTR<ImageInterface<Float> > newbeta);
00071   */
00072 
00073  SIImageStoreMultiTerm(Block<SHARED_PTR<ImageInterface<Float> > >modelims, 
00074                         Block<SHARED_PTR<ImageInterface<Float> > >residims,
00075                         Block<SHARED_PTR<ImageInterface<Float> > >psfims, 
00076                         Block<SHARED_PTR<ImageInterface<Float> > >weightims, 
00077                         Block<SHARED_PTR<ImageInterface<Float> > >restoredims,
00078                         Block<SHARED_PTR<ImageInterface<Float> > >sumwtims, 
00079                         Block<SHARED_PTR<ImageInterface<Float> > >pbims, 
00080                         Block<SHARED_PTR<ImageInterface<Float> > >restoredpbcorims, 
00081                         SHARED_PTR<ImageInterface<Float> > newmask,
00082                         SHARED_PTR<ImageInterface<Float> > newalpha,
00083                         SHARED_PTR<ImageInterface<Float> > newbeta,
00084                         SHARED_PTR<ImageInterface<Float> > newalphaerror,
00085                         SHARED_PTR<ImageInterface<Float> > newalphapbcor,
00086                         SHARED_PTR<ImageInterface<Float> > newbetapbcor,
00087                        CoordinateSystem& csys, 
00088                        IPosition imshape, 
00089                        String imagename, 
00090                        const Int facet=0, const Int nfacets=1,
00091                        const Int chan=0, const Int nchanchunks=1,
00092                        const Int pol=0, const Int npolchunks=1);
00093   
00094   virtual void init();
00095 
00096   virtual ~SIImageStoreMultiTerm();
00097 
00098   virtual String getType(){return "multiterm";}
00099 
00100   virtual SHARED_PTR<ImageInterface<Float> > psf(uInt term=0);
00101   virtual SHARED_PTR<ImageInterface<Float> > residual(uInt term=0);
00102   virtual SHARED_PTR<ImageInterface<Float> > weight(uInt term=0);
00103   virtual SHARED_PTR<ImageInterface<Float> > model(uInt term=0);
00104   virtual SHARED_PTR<ImageInterface<Float> > image(uInt term=0);
00105   virtual SHARED_PTR<ImageInterface<Float> > pb(uInt term=0);
00106   virtual SHARED_PTR<ImageInterface<Float> > imagepbcor(uInt term=0);
00107   virtual SHARED_PTR<ImageInterface<Float> > sumwt(uInt term=0);
00109   virtual SHARED_PTR<ImageInterface<Complex> > forwardGrid(uInt term=0);
00110   virtual SHARED_PTR<ImageInterface<Complex> > backwardGrid(uInt term=0);
00111 
00112   virtual SHARED_PTR<ImageInterface<Float> > alpha();
00113   virtual SHARED_PTR<ImageInterface<Float> > beta();
00114   virtual SHARED_PTR<ImageInterface<Float> > alphaerror();
00115   virtual SHARED_PTR<ImageInterface<Float> > alphapbcor();
00116   virtual SHARED_PTR<ImageInterface<Float> > betapbcor();
00117 
00118   //  virtual SHARED_PTR<ImageInterface<Float> > gridwt(uInt term=0);
00119 
00120   void setModelImage( Vector<String> modelnames );
00121   Vector<String> getModelImageName();
00122 
00123   Bool doesImageExist(String imagename);
00124 
00125   void resetImages( Bool resetpsf, Bool resetresidual, Bool resetweight );
00126   void addImages( SHARED_PTR<SIImageStore> imagestoadd, 
00127                   Bool addpsf, Bool addresidual, Bool addweight, Bool adddensity);
00128 
00129   void dividePSFByWeight(const Float pblimit=C::minfloat);
00130   void normalizePrimaryBeam(const Float pblimit=C::minfloat);
00131 
00132   void divideResidualByWeight(const Float pblimit=C::minfloat, const String normtype="flatnoise");
00133   //  void divideSensitivityPatternByWeight();
00134   void divideModelByWeight(const Float pblimit=C::minfloat, const String normtype="flatnoise");
00135   void multiplyModelByWeight(const Float pblimit=C::minfloat, const String normtype="flatnoise");
00136 
00137   /*
00138   Bool checkValidity(const Bool ipsf, const Bool iresidual, const Bool iweight, 
00139                      const Bool imodel, const Bool irestored, const Bool imask=False, 
00140                      const Bool isumwt=True, const Bool ialpha=False, const Bool ibeta=False);
00141   */
00142 
00143   Bool releaseLocks();
00144 
00145   virtual Double getReferenceFrequency();
00146 
00147   uInt getNTaylorTerms(Bool dopsf=False);  // {return dopsf ? (2*itsNTerms-1) : itsNTerms;};
00148 
00149   void restore(GaussianBeam& rbeam, String& usebeam,uInt term=0 );
00150   void calculateAlphaBeta(String imtype);
00151   //  GaussianBeam restorePlane();
00152   void pbcor();
00153 
00154   /*
00155   SHARED_PTR<SIImageStore> getFacetImageStore(const Int facet, const Int nfacets);
00156   SHARED_PTR<SIImageStore> getSubImageStoreOld(const Int chan, const Bool onechan, 
00157                                             const Int pol, const Bool onepol);
00158   */
00159 
00160   SHARED_PTR<SIImageStore> getSubImageStore(const Int facet=0, const Int nfacets=1, 
00161                                             const Int chan=0, const Int nchanchunks=1, 
00162                                             const Int pol=0, const Int npolchunks=1);
00163   
00164   
00165   virtual Bool hasSensitivity(){return itsWeights.nelements()>0 && itsWeights[0];}
00166   //  virtual Bool hasModel() {return itsModels.nelements()>0 && itsModels[0];}
00167   virtual Bool hasModel() {return doesImageExist(itsImageName+imageExts(MODEL)+String(".tt0"));}
00168   virtual Bool hasPsf(){return itsPsfs.nelements()>0 && itsPsfs[0];}
00169   virtual Bool hasResidual() {return itsResiduals.nelements()>0 && itsResiduals[0];}
00170   virtual Bool hasSumWt() {return itsSumWts.nelements()>0 && itsSumWts[0];}
00171   
00172 
00173   //  virtual Bool hasSensitivity() {return doesImageExist(itsImageName+imageExts(WEIGHT)+String(".tt0"));}
00174   //  virtual Bool hasModel() {return doesImageExist(itsImageName+imageExts(MODEL)+String(".tt0"));}
00175   //  virtual Bool hasMask() {return doesImageExist(itsImageName+imageExts(MASK)+String(".tt0"));}
00176   //  virtual Bool hasPsf() {return doesImageExist(itsImageName+imageExts(PSF)+String(".tt0"));}
00177   virtual Bool hasResidualImage() {return doesImageExist(itsImageName+imageExts(RESIDUAL)+String(".tt0"));}
00178   //  virtual Bool hasSumWt() {return doesImageExist(itsImageName+imageExts(SUMWT)+String(".tt0"));}
00179   virtual Bool hasRestored() {return doesImageExist(itsImageName+imageExts(IMAGE)+String(".tt0"));}
00180   virtual Bool hasPB() {return doesImageExist(itsImageName+imageExts(PB)+String(".tt0"));}
00181 
00182   //  virtual Bool getUseWeightImage();
00183   //  {return ( itsParentSumWts.nelements()==0 || itsParentSumWts[0].null() ) ? False : getUseWeightImage( *(itsParentSumWts[0]) ); };
00184 
00185   void calcSensitivity();
00186   virtual Bool isModelEmpty();
00187 
00188 protected:
00189 
00190   virtual void printImageStats();
00191 
00192 private:
00193 
00194   uInt itsNTerms;
00195 
00196   Block<SHARED_PTR<ImageInterface<Float> > > itsPsfs, itsModels, itsResiduals, itsWeights, itsImages, itsSumWts, itsImagePBcors, itsPBs;
00197   Block<SHARED_PTR<ImageInterface<Complex> > > itsForwardGrids, itsBackwardGrids;
00198   SHARED_PTR<ImageInterface<Float> > itsAlpha, itsBeta, itsAlphaError, itsAlphaPBcor, itsBetaPBcor;
00199 
00200   Block<SHARED_PTR<ImageInterface<Float> > > itsParentPsfs, itsParentModels, itsParentResiduals, itsParentWeights, itsParentImages, itsParentSumWts, itsParentPBs, itsParentImagePBcors;
00201 
00202 };
00203 
00204 
00205 } //# NAMESPACE CASA - END
00206 
00207 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1