Line data Source code
1 : /* 2 : * SimpleSIImageStore is an implementation without much checking the caller must make sure pointers exist before using them 3 : * Copyright (C) 2019 Associated Universities, Inc. Washington DC, USA. 4 : * 5 : * This program is free software: you can redistribute it and/or modify 6 : * it under the terms of the GNU General Public License as published by 7 : * the Free Software Foundation, either version 3 of the License, or 8 : * (at your option) any later version. 9 : * 10 : * This program is distributed in the hope that it will be useful, 11 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 : * GNU General Public License for more details. 14 : * 15 : * You should have received a copy of the GNU General Public License 16 : * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 : * 18 : * 19 : * Queries concerning CASA should be submitted at 20 : * https://help.nrao.edu 21 : * 22 : * Postal address: CASA Project Manager 23 : * National Radio Astronomy Observatory 24 : * 520 Edgemont Road 25 : * Charlottesville, VA 22903-2475 USA 26 : */ 27 : 28 : #ifndef SYNTHESIS_SIMPLESIIMAGESTORE_H 29 : #define SYNTHESIS_SIMPLESIIMAGESTORE_H 30 : 31 : #include <synthesis/ImagerObjects/SIImageStore.h> 32 : /** 33 : * 34 : */ 35 : namespace casa{//# NAMESPACE CASA - BEGIN 36 : 37 : class SimpleSIImageStore : public SIImageStore 38 : { 39 : public: 40 : 41 : SimpleSIImageStore(casacore::String &imageName, 42 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &modelim, 43 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &residim, 44 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &psfim, 45 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &weightim, 46 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &restoredim, 47 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &maskim, 48 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &sumwtim, 49 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &gridwtim, 50 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &pbim, 51 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &restoredpbcorim, 52 : const std::shared_ptr<casacore::ImageInterface<casacore::Float> > &tempworkimage=nullptr, 53 : const casacore::Bool useweightimage=false); 54 : 55 810 : virtual casacore::String getType(){return "SimpleSIImageStore";}; 56 : 57 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > psf(casacore::uInt term=0); 58 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > residual(casacore::uInt term=0); 59 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > weight(casacore::uInt term=0); 60 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > model(casacore::uInt term=0); 61 : // virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > image(casacore::uInt term=0); 62 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > mask(casacore::uInt term=0); 63 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > pb(casacore::uInt term=0); 64 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > tempworkimage(casacore::uInt term=0); 65 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Complex> > forwardGrid(casacore::uInt term=0); 66 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Complex> > backwardGrid(casacore::uInt term=0); 67 : 68 : virtual std::shared_ptr<casacore::ImageInterface<casacore::Float> > sumwt(casacore::uInt term=0); 69 : 70 : 71 : 72 278 : virtual casacore::Bool hasSensitivity(){return (bool) itsWeight;} 73 581 : virtual casacore::Bool hasPB(){return (bool) itsPB;} 74 : 75 264 : virtual casacore::Bool hasMask(){return (bool) itsMask; } 76 1090 : virtual casacore::Bool hasModel() {return (bool) itsModel;} 77 254 : virtual casacore::Bool hasPsf() {return (bool) itsPsf;} 78 0 : virtual casacore::Bool hasResidual() {return (bool) itsResidual;} 79 : //hasResidualImage is not overloaded 80 0 : virtual casacore::Bool hasResidualImage() {return false;} 81 762 : virtual casacore::Bool hasSumWt() {return (bool) itsSumWt;} 82 : ///So far no need for overloading this 83 : //virtual casacore::Bool hasRestored() {return doesImageExist(itsImageName+imageExts(IMAGE));} 84 : virtual std::shared_ptr<SIImageStore> getSubImageStore(const casacore::Int facet=0, const casacore::Int nfacets=1, 85 : const casacore::Int chan=0, const casacore::Int nchanchunks=1, 86 : const casacore::Int pol=0, const casacore::Int npolchunks=1); 87 : virtual casacore::Bool releaseLocks(); 88 : 89 : private: 90 : std::shared_ptr<casacore::ImageInterface<casacore::Float> > itsPsf, itsModel, itsResidual, itsWeight, itsImage, itsSumWt, itsImagePBcor, itsPB, itsTempWorkIm; 91 : std::shared_ptr<casacore::ImageInterface<casacore::Complex> > itsForwardGrid, itsBackwardGrid; 92 : 93 : 94 : 95 : }; 96 : }//# NAMESPACE CASA - END 97 : #endif // SIMPLESIIMAGESTORE_H