casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
ImagerMultiMS.h
Go to the documentation of this file.
00001 //# ImagerMultiMS.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 
00028 #ifndef SYNTHESIS_IMAGERMULTIMS_H
00029 #define SYNTHESIS_IMAGERMULTIMS_H
00030 
00031 #include <synthesis/MeasurementEquations/Imager.h>
00032 
00033 namespace casa {
00034 
00035   class ImagerMultiMS : public Imager
00036     {
00037 
00038     public: 
00039       // Default constructor with no ms                                        
00040 
00041       ImagerMultiMS();
00042       //Copy the sub ms to memory useful when imaging only 
00043       //a few channels 
00044       virtual Bool setDataToMemory(const String& msname, const String& mode, 
00045                                    const Vector<Int>& nchan, 
00046                                    const Vector<Int>& start,
00047                                    const Vector<Int>& step,
00048                                    const Vector<Int>& spectralwindowids,
00049                                    const Vector<Int>& fieldids,
00050                                    const String& msSelect,
00051                                    const String& timerng,
00052                                    const String& fieldnames,
00053                                    const Vector<Int>& antIndex,
00054                                    const String& antnames,
00055                                    const String& spwstring,
00056                                    const String& uvdist,
00057                                    const String& scan,
00058                                    const String& obs="");  // select by obs ID
00059       // Set the data selection on for each ms seperately
00060       virtual  Bool setDataPerMS(const String& msname, const String& mode, 
00061                                  const Vector<Int>& nchan, 
00062                                  const Vector<Int>& start,
00063                                  const Vector<Int>& step,
00064                                  const Vector<Int>& spectralwindowids,
00065                                  const Vector<Int>& fieldids,
00066                                  const String& msSelect="",
00067                                  const String& timerng="",
00068                                  const String& fieldnames="",
00069                                  const Vector<Int>& antIndex=Vector<Int>(),
00070                                  const String& antnames="",
00071                                  const String& spwstring="",
00072                                  const String& uvdist="",
00073                                  const String& scan="",
00074                                  const String& obs="",
00075                                  const Bool useModel=False,
00076                                  const Bool msreadonly=False);
00077 
00078 
00079        // Set image construction parameters
00080       virtual Bool setimage(const Int nx, const Int ny,
00081                 const Quantity& cellx, const Quantity& celly,
00082                 const String& stokes,
00083                 Bool doShift,
00084                 const MDirection& phaseCenter, 
00085                 const Quantity& shiftx, const Quantity& shifty,
00086                 const String& mode, const Int nchan,
00087                 const Int start, const Int step,
00088                 const MRadialVelocity& mStart, const MRadialVelocity& mStep,
00089                 const Vector<Int>& spectralwindowids, const Int fieldid,
00090                 const Int facets, const Quantity& distance);
00091   
00092 
00093       Bool selectDataChannel();
00094       
00095       // Lock the ms and its subtables
00096       virtual Bool lock();
00097       
00098       // Unlock the ms and its subtables
00099       virtual Bool unlock();
00100 
00101       //open sub tables
00102       virtual Bool openSubTables();
00103       
00104     protected:
00105       
00106       Block<Vector<Int> > blockNChan_p;
00107       Block<Vector<Int> > blockStart_p;
00108       Block<Vector<Int> > blockStep_p;
00109       Block<Vector<Int> > blockSpw_p;
00110       Block<MeasurementSet> blockMSSel_p;
00111       Bool setDataOnThisMS(MeasurementSet& ms, const String& mode="none", 
00112                            const Vector<Int>& nchan=Vector<Int>(0), 
00113                            const Vector<Int>& start=Vector<Int>(1,0),
00114                            const Vector<Int>& step=Vector<Int>(1,1),
00115                            const Vector<Int>& spectralwindowids=Vector<Int>(0),
00116                            const Vector<Int>& fieldids=Vector<Int>(0),
00117                            const String& msSelect="",
00118                            const String& timerng="",
00119                            const String& fieldnames="",
00120                            const Vector<Int>& antIndex=Vector<Int>(),
00121                            const String& antnames="",
00122                            const String& spwstring="",
00123                            const String& uvdist="",
00124                            const String& scan="",
00125                            const String& obs="");
00126       Bool dataSet_p;
00127 
00128       
00129     };
00130   
00131 } //# NAMESPACE CASA - END
00132 
00133 
00134 #endif
00135 
00136