00001 //# CalibratingVi2FactoryI.h: MSVis Interface definition of the CalibratingVi2Factory class. 00002 //# 00003 //# CASA - Common Astronomy Software Applications (http://casa.nrao.edu/) 00004 //# Copyright (C) Associated Universities, Inc. Washington DC, USA 2011, All rights reserved. 00005 //# Copyright (C) European Southern Observatory, 2011, All rights reserved. 00006 //# 00007 //# This library is free software; you can redistribute it and/or 00008 //# modify it under the terms of the GNU Lesser General Public 00009 //# License as published by the Free software Foundation; either 00010 //# version 2.1 of the License, or (at your option) any later version. 00011 //# 00012 //# This library is distributed in the hope that it will be useful, 00013 //# but WITHOUT ANY WARRANTY, without even the implied warranty of 00014 //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 //# Lesser General Public License for more details. 00016 //# 00017 //# You should have received a copy of the GNU Lesser General Public 00018 //# License along with this library; if not, write to the Free Software 00019 //# Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00020 //# MA 02111-1307 USA 00021 //# $Id: $ 00022 00023 #ifndef CalibratingVi2FactoryI_H_ 00024 #define CalibratingVi2FactoryI_H_ 00025 00026 // Where ViFactory interface is defined 00027 #include <msvis/MSVis/VisibilityIterator2.h> 00028 #include <msvis/MSVis/IteratingParameters.h> 00029 00030 00031 namespace casa { //# NAMESPACE CASA - BEGIN 00032 namespace vi { //# NAMESPACE VI - BEGIN 00033 00034 class CalibratingVi2FactoryI : public vi::ViFactory 00035 { 00036 00037 friend class LayeredVi2Factory; 00038 00039 public: 00040 00041 typedef CalibratingVi2FactoryI* (*CalViFacGenerator)(); 00042 00043 typedef CalibratingVi2FactoryI* (*CalViFac_byRec_Generator)(MeasurementSet*, 00044 const Record&, 00045 const IteratingParameters&); 00046 static Bool setGenerator(CalViFacGenerator); 00047 static Bool set_byRec_Generator(CalViFac_byRec_Generator); 00048 00049 CalibratingVi2FactoryI() {} 00050 virtual ~CalibratingVi2FactoryI() {} 00051 00052 // Public function to generate myself via static generator_p implemented in synthesis 00053 static CalibratingVi2FactoryI* generate(); 00054 00055 // Public function to generate myself via static byRec_generator_p 00056 static CalibratingVi2FactoryI* generate(MeasurementSet* ms, 00057 const Record& calrec, 00058 const IteratingParameters& iterpar); 00059 00060 // Public functions to initialize a generic CVi2F (pure virtual) 00061 virtual void initialize(MeasurementSet* ms, 00062 const Record& calrec, 00063 const IteratingParameters& iterpar=IteratingParameters())=0; 00064 virtual void initialize(MeasurementSet* ms, 00065 const String& callib, 00066 const IteratingParameters& iterpar=IteratingParameters())=0; 00067 00068 protected: 00069 00070 // Create CalibratingVi2 implementation 00071 // this version makes plain one inside 00072 virtual vi::ViImplementation2 * createVi () const = 0; 00073 // If vii not NULL, then use it as the underlying one 00074 virtual vi::ViImplementation2 * createVi (vi::ViImplementation2 * vii) const = 0; 00075 00076 private: 00077 00078 static CalViFacGenerator generator_p; 00079 static CalViFac_byRec_Generator byRec_generator_p; 00080 }; 00081 00082 00083 } //# NAMESPACE VI - END 00084 } //# NAMESPACE CASA - END 00085 00086 00087 #endif /* CalibratingVi2FactoryI_H_ */ 00088