Line data Source code
1 : //# SIMapper.h: Imager functionality sits here; 2 : //# Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003 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 addressed 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 : //# 25 : //# $Id$ 26 : 27 : #ifndef SYNTHESIS_SIMAPPERMOSAIC_H 28 : #define SYNTHESIS_SIMAPPERMOSAIC_H 29 : 30 : #include <casacore/casa/aips.h> 31 : #include <casacore/casa/OS/Timer.h> 32 : #include <casacore/casa/Containers/Record.h> 33 : #include <casacore/ms/MeasurementSets/MeasurementSet.h> 34 : #include <casacore/casa/Arrays/IPosition.h> 35 : #include <casacore/casa/Quanta/Quantum.h> 36 : #include <casacore/measures/Measures/MDirection.h> 37 : #include <synthesis/TransformMachines/FTMachine.h> 38 : #include <synthesis/ImagerObjects/SIMapper.h> 39 : 40 : namespace casacore{ 41 : 42 : template<class T> class ImageInterface; 43 : } 44 : 45 : namespace casa { //# NAMESPACE CASA - BEGIN 46 : 47 : // Forward declarations 48 : class ComponentFTMachine; 49 : namespace refim{class ComponentFTMachine;} 50 : class SkyJones; 51 : 52 : // <summary> Class that contains functions needed for imager </summary> 53 : 54 : class SIMapperImageMosaic : public SIMapper 55 : { 56 : public: 57 : // Default constructor 58 : 59 : SIMapperImageMosaic( casacore::CountedPtr<SIImageStore>& imagestore, 60 : casacore::CountedPtr<FTMachine>& ftm, 61 : casacore::CountedPtr<FTMachine>& iftm); 62 : // casacore::CountedPtr<VPSkyJones>& vp); 63 : SIMapperImageMosaic( casacore::CountedPtr<SIImageStore>& imagestore, 64 : casacore::CountedPtr<refim::FTMachine>& ftm, 65 : casacore::CountedPtr<refim::FTMachine>& iftm); 66 : SIMapperImageMosaic(const ComponentList& cl, 67 : casacore::String& whichMachine); 68 : // casacore::CountedPtr<VPSkyJones>& vp); 69 : virtual ~SIMapperImageMosaic(); 70 : 71 : ///// Major Cycle Functions 72 : void initializeGrid(vi::VisBuffer2& vb, casacore::Bool dopsf, casacore::Bool firstaccess=false); 73 : void grid(vi::VisBuffer2& vb, casacore::Bool dopsf, refim::FTMachine::Type col); 74 : void finalizeGrid(vi::VisBuffer2& vb, casacore::Bool dopsf); 75 : void initializeDegrid(vi::VisBuffer2& vb, casacore::Int row=-1); 76 : void degrid(vi::VisBuffer2& vb); 77 : /////////////////////// OLD VI/VB versions 78 : void initializeGrid(VisBuffer& vb, casacore::Bool dopsf, casacore::Bool firstaccess=false); 79 : void grid(VisBuffer& vb, casacore::Bool dopsf, FTMachine::Type col); 80 : void finalizeGrid(VisBuffer& vb, casacore::Bool dopsf); 81 : void initializeDegrid(VisBuffer& vb, casacore::Int row=-1); 82 : void degrid(VisBuffer& vb); 83 : 84 : //////////////the return value is false if no valid record is being returned 85 : // casacore::Bool getCLRecord(casacore::Record& rec); 86 : // casacore::Bool getFTMRecord(casacore::Record& rec); 87 : 88 0 : virtual casacore::String getImageName(){return itsImages->getName();}; 89 0 : virtual casacore::CountedPtr<SIImageStore> imageStore(){return itsImages;}; 90 0 : virtual casacore::Bool releaseImageLocks(){return itsImages->releaseLocks();}; 91 : 92 : protected: 93 : // casacore::Bool changedSkyJonesLogic(const vi::VisBuffer2& vb, casacore::Bool& firstRow, casacore::Bool& internalRow, const casacore::Bool grid=true); 94 : //////////////OLD vb version 95 : // casacore::Bool changedSkyJonesLogic(const VisBuffer& vb, casacore::Bool& firstRow, casacore::Bool& internalRow, const casacore::Bool grid=true); 96 : //////////////////////////////////////////// 97 : 98 : ComponentList clCorrupted_p; 99 : // casacore::CountedPtr<VPSkyJones> ejgrid_p, ejdegrid_p; 100 : VisBuffer ovb_p; 101 : vi::VisBuffer2* vb_p; 102 : 103 : casacore::Bool firstaccess_p; 104 : 105 : }; 106 : 107 : 108 : } //# NAMESPACE CASA - END 109 : 110 : #endif