00001 /* 00002 * SDDoubleCircleGainCal.h 00003 * 00004 * Created on: Jun 3, 2016 00005 * Author: nakazato 00006 */ 00007 00008 #ifndef SYNTHESIS_MEASUREMENTCOMPONENTS_SDDOUBLECIRCLEGAINCAL_H_ 00009 #define SYNTHESIS_MEASUREMENTCOMPONENTS_SDDOUBLECIRCLEGAINCAL_H_ 00010 00011 #include <synthesis/MeasurementComponents/StandardVisCal.h> 00012 #include <casacore/casa/BasicSL/String.h> 00013 00014 namespace casa { 00015 00016 class VisSet; 00017 class VisEquation; 00018 00019 class SDDoubleCircleGainCal: public GJones { 00020 public: 00021 SDDoubleCircleGainCal(VisSet& vs); 00022 SDDoubleCircleGainCal(const MSMetaInfoForCal& msmc); 00023 virtual ~SDDoubleCircleGainCal(); 00024 00025 // Return type name as string (ditto) 00026 // virtual casacore::String typeName() { 00027 // return "SDGAIN_OTFD"; 00028 // } 00029 // virtual casacore::String longTypeName() { 00030 // return "SDGAIN_OTFD (Single Dish gain calibration for double circle fast scan"; 00031 // } 00032 00033 // Return the parameter type 00034 // so far single dish calibration is real 00035 virtual VisCalEnum::VCParType parType() { return VisCalEnum::REAL; } 00036 00037 // Do not use generic data gathering mechanism for solve 00038 virtual Bool useGenericGatherForSolve() { 00039 return False; 00040 } 00041 00042 // Set the solving parameters 00043 virtual void setSolve(); 00044 virtual void setSolve(const Record& solve); 00045 00046 // Report solve info/params, e.g., for logging 00047 virtual String solveinfo(); 00048 00049 // Self- gather and/or solve prototypes 00050 // (triggered by useGenericGatherForSolve=F or useGenericSolveOne=F) 00051 virtual void selfGatherAndSolve(VisSet& vs, VisEquation& ve); 00052 00053 private: 00054 template<class Accessor> 00055 void executeDoubleCircleGainCal(casacore::MeasurementSet const &ms); 00056 00057 casacore::Double central_disk_size_; 00058 casacore::Bool smooth_; 00059 }; 00060 00061 } // namespace casa END 00062 00063 #endif /* SYNTHESIS_MEASUREMENTCOMPONENTS_SDDOUBLECIRCLEGAINCAL_H_ */