//# ImagerMultiMS.h: Imager functionality sits here; //# Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003 //# Associated Universities, Inc. Washington DC, USA. //# //# This library is free software; you can redistribute it and/or modify it //# under the terms of the GNU Library General Public License as published by //# the Free Software Foundation; either version 2 of the License, or (at your //# option) any later version. //# //# This library is distributed in the hope that it will be useful, but WITHOUT //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public //# License for more details. //# //# You should have received a copy of the GNU Library General Public License //# along with this library; if not, write to the Free Software Foundation, //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. //# //# Correspondence concerning AIPS++ should be addressed as follows: //# Internet email: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# //# $Id$ #ifndef SYNTHESIS_IMAGERMULTIMS_H #define SYNTHESIS_IMAGERMULTIMS_H #include namespace casa { class ImagerMultiMS : public Imager { public: // Default constructor with no ms ImagerMultiMS(); //Copy the sub ms to memory useful when imaging only //a few channels virtual casacore::Bool setDataToMemory(const casacore::String& msname, const casacore::String& mode, const casacore::Vector& nchan, const casacore::Vector& start, const casacore::Vector& step, const casacore::Vector& spectralwindowids, const casacore::Vector& fieldids, const casacore::String& msSelect, const casacore::String& timerng, const casacore::String& fieldnames, const casacore::Vector& antIndex, const casacore::String& antnames, const casacore::String& spwstring, const casacore::String& uvdist, const casacore::String& scan, const casacore::String& intent="", const casacore::String& obs=""); // select by obs ID // Set the data selection on for each ms seperately virtual casacore::Bool setDataPerMS(const casacore::String& msname, const casacore::String& mode, const casacore::Vector& nchan, const casacore::Vector& start, const casacore::Vector& step, const casacore::Vector& spectralwindowids, const casacore::Vector& fieldids, const casacore::String& msSelect="", const casacore::String& timerng="", const casacore::String& fieldnames="", const casacore::Vector& antIndex=casacore::Vector(), const casacore::String& antnames="", const casacore::String& spwstring="", const casacore::String& uvdist="", const casacore::String& scan="", const casacore::String& intent="", const casacore::String& obs="", const casacore::Bool useModel=false, const casacore::Bool msreadonly=false); // Set image construction parameters virtual casacore::Bool setimage(const casacore::Int nx, const casacore::Int ny, const casacore::Quantity& cellx, const casacore::Quantity& celly, const casacore::String& stokes, casacore::Bool doShift, const casacore::MDirection& phaseCenter, const casacore::Quantity& shiftx, const casacore::Quantity& shifty, const casacore::String& mode, const casacore::Int nchan, const casacore::Int start, const casacore::Int step, const casacore::MRadialVelocity& mStart, const casacore::MRadialVelocity& mStep, const casacore::Vector& spectralwindowids, const casacore::Int fieldid, const casacore::Int facets, const casacore::Quantity& distance); casacore::Bool selectDataChannel(); // Lock the ms and its subtables virtual casacore::Bool lock(); // Unlock the ms and its subtables virtual casacore::Bool unlock(); //open sub tables virtual casacore::Bool openSubTables(); // @copydoc Imager::mapExtent() virtual casacore::Bool mapExtent(const casacore::String &referenceFrame, const casacore::String &movingSource, const casacore::String &pointingColumn, casacore::Vector ¢er, casacore::Vector &blc, casacore::Vector &trc, casacore::Vector &extent); protected: casacore::Block > blockNChan_p; casacore::Block > blockStart_p; casacore::Block > blockStep_p; casacore::Block > blockSpw_p; casacore::Block blockMSSel_p; casacore::Bool setDataOnThisMS(casacore::MeasurementSet& ms, const casacore::String& mode="none", const casacore::Vector& nchan=casacore::Vector(0), const casacore::Vector& start=casacore::Vector(1,0), const casacore::Vector& step=casacore::Vector(1,1), const casacore::Vector& spectralwindowids=casacore::Vector(0), const casacore::Vector& fieldids=casacore::Vector(0), const casacore::String& msSelect="", const casacore::String& timerng="", const casacore::String& fieldnames="", const casacore::Vector& antIndex=casacore::Vector(), const casacore::String& antnames="", const casacore::String& spwstring="", const casacore::String& uvdist="", const casacore::String& scan="", const casacore::String& intent="", const casacore::String& obs=""); casacore::Bool dataSet_p; }; } //# NAMESPACE CASA - END #endif