Line data Source code
1 : //# CEMemImageSkyModel.h: Definition for CEMemImageSkyModel 2 : //# Copyright (C) 1996,1997,1998,1999,2000 3 : //# Associated Universities, Inc. Washington DC, USA. 4 : //# 5 : //# This library is free software; you can redistribute it and/or modify it 6 : //# under the terms of the GNU Library General Public License as published by 7 : //# the Free Software Foundation; either version 2 of the License, or (at your 8 : //# option) any later version. 9 : //# 10 : //# This library is distributed in the hope that it will be useful, but WITHOUT 11 : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 : //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 13 : //# License for more details. 14 : //# 15 : //# You should have received a copy of the GNU Library General Public License 16 : //# along with this library; if not, write to the Free Software Foundation, 17 : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 18 : //# 19 : //# Correspondence concerning AIPS++ should be adressed as follows: 20 : //# Internet email: aips2-request@nrao.edu. 21 : //# Postal address: AIPS++ Project Office 22 : //# National Radio Astronomy Observatory 23 : //# 520 Edgemont Road 24 : //# Charlottesville, VA 22903-2475 USA 25 : //# 26 : //# 27 : //# $Id$ 28 : 29 : #ifndef SYNTHESIS_CEMEMIMAGESKYMODEL_H 30 : #define SYNTHESIS_CEMEMIMAGESKYMODEL_H 31 : 32 : #include <synthesis/MeasurementComponents/CleanImageSkyModel.h> 33 : namespace casa { //# NAMESPACE CASA - BEGIN 34 : 35 : //forward 36 : class SkyEquation; 37 : class CEMemProgress; 38 : 39 : // <summary> Image Sky Model for the Cornwell-Evens maximum entropy algorithm </summary> 40 : 41 : // <use visibility=export> 42 : 43 : // <reviewed reviewer="" date="" tests="" demos=""> 44 : 45 : // <prerequisite> 46 : // <li> <linkto class=ImageSkyModel>ImageSkyModel</linkto> class 47 : // <li> <linkto class=CEMemLatModel>CEMemModel</linkto> class 48 : // </prerequisite> 49 : // 50 : // <etymology> 51 : // CEMemImageSkyModel implements the Cornwell-Evens MEM algorithm. 52 : // It is derived from <linkto class=CleanImageSkyModel>CleanImageSkyModel</linkto>. 53 : // </etymology> 54 : // 55 : // <synopsis> 56 : // We need to add more stuff here. 57 : // 58 : // 59 : // 60 : // Masking is optionally performed using a mask image: only points 61 : // where the mask is non-zero are cleaned. If no mask is specified 62 : // all points in the inner quarter of the image are cleaned. 63 : // </synopsis> 64 : // 65 : // <example> 66 : // See the example for <linkto class=CleanImageSkyModel>CleanImageSkyModel</linkto>. 67 : // </example> 68 : // 69 : // <motivation> 70 : // </motivation> 71 : // 72 : // <todo asof="99/11/01"> 73 : // <ul> Some of the "CleanImageSkyModel" functionality should be moved to "ImageSkyModel" 74 : // <ul> Create another virtual base class, "MemImageSkyModel", derived from "ImageSkyModel" 75 : // <ul> THEN: derive CEMemImageSkyModel from "MemImageSkyModel" 76 : // <ul> However, now we are just doing what works quickly: deriving from CleanImageSkyModel 77 : // </todo> 78 : 79 : class CEMemImageSkyModel : public CleanImageSkyModel { 80 : public: 81 : 82 : // constructor 83 : CEMemImageSkyModel(casacore::Float sigma, 84 : casacore::Float targetFlux, 85 : casacore::Bool constrainFlux, 86 : const casacore::Vector<casacore::String>& priors, 87 : const casacore::String& entropy); 88 : 89 : // destructor 90 : ~CEMemImageSkyModel(); 91 : 92 : // Solve for this SkyModel 93 : virtual casacore::Bool solve (SkyEquation& me); 94 : 95 : // Set control parameters which are different from Clean: 96 : //<group> 97 : void setSigma(const casacore::Float targetSigma) {itsSigma = targetSigma; } 98 : void setTargetFlux(const casacore::Float targetFlux) {itsTargetFlux = targetFlux; } 99 : void setConstrainTargetFlux(const casacore::Bool constrainFlux) { itsConstrainFlux = constrainFlux; } 100 : void setPrior(const casacore::Vector<casacore::String>& prior) { itsPrior = prior; } 101 : void setEntropy(const casacore::String& ent) { itsEntropy = ent; } 102 : //</group> 103 : 104 : // Get the various control parameters which are different from Clean: 105 : //<group> 106 0 : casacore::Float sigma() { return itsSigma; } 107 0 : casacore::Float targetFlux() { return itsTargetFlux; } 108 0 : casacore::Bool constrainFlux() { return itsConstrainFlux; } 109 : casacore::Vector<casacore::String> prior() { return itsPrior; } 110 0 : casacore::String entropy() { return itsEntropy; } 111 : //</group> 112 : 113 : protected: 114 : 115 0 : casacore::Bool initializeModel() { return itsInitializeModel; } 116 : 117 : casacore::Float itsSigma; 118 : casacore::Float itsTargetFlux; 119 : casacore::Bool itsConstrainFlux; 120 : casacore::Vector<casacore::String> itsPrior; 121 : casacore::String itsEntropy; 122 : casacore::Bool itsInitializeModel; 123 : 124 : CEMemProgress *itsProgress; 125 : 126 : }; 127 : 128 : 129 : } //# NAMESPACE CASA - END 130 : 131 : #endif 132 : 133 :