SDDoubleCircleGainCalImpl.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SYNTHESIS_MEASUREMENTCOMPONENTS_SDDOUBLECIRCLEGAINCALIMPL_H_
00009 #define SYNTHESIS_MEASUREMENTCOMPONENTS_SDDOUBLECIRCLEGAINCALIMPL_H_
00010
00011 #include <casacore/casa/aipstype.h>
00012 #include <casacore/casa/Arrays/Cube.h>
00013 #include <casacore/casa/Arrays/Matrix.h>
00014 #include <casacore/casa/Arrays/Vector.h>
00015 #include <casacore/casa/Logging/LogIO.h>
00016
00017 namespace casa {
00018
00019 class SDDoubleCircleGainCalImpl {
00020 public:
00021 SDDoubleCircleGainCalImpl();
00022 virtual ~SDDoubleCircleGainCalImpl();
00023
00024
00025
00026 casacore::Double getCentralRegion() const {
00027 return central_region_;
00028 }
00029 casacore::Bool isSmoothingActive() const {
00030 return do_smooth_;
00031 }
00032
00033 casacore::Int getSmoothingSize() const {
00034 return smooth_size_;
00035 }
00036
00037 casacore::Double getObservingFrequency() const {
00038 return observing_frequency_;
00039 }
00040
00041 casacore::Double getAntennaDiameter() const {
00042 return antenna_diameter_;
00043 }
00044
00045
00046 casacore::Double getPrimaryBeamSize() const;
00047
00048
00049 casacore::Int getDefaultSmoothingSize() const;
00050
00051
00052 casacore::Double getRadius();
00053
00054
00055 casacore::Int getEffectiveSmoothingSize();
00056
00057
00058
00059
00060 void setCentralRegion(casacore::Double value) {
00061 central_region_ = value;
00062 }
00063
00064
00065 void setSmoothing(casacore::Int size) {
00066 do_smooth_ = True;
00067 smooth_size_ = size;
00068 }
00069
00070
00071 void unsetSmoothing() {
00072 do_smooth_ = False;
00073 smooth_size_ = -1;
00074 }
00075
00076
00077 void setObservingFrequency(casacore::Double value) {
00078 observing_frequency_ = value;
00079 }
00080
00081
00082 void setAntennaDiameter(casacore::Double value) {
00083 antenna_diameter_ = value;
00084 }
00085
00086
00087
00088 void calibrate(casacore::Cube<casacore::Float> const &data,
00089 casacore::Vector<casacore::Double> const &time,
00090 casacore::Matrix<casacore::Double> const &direction,
00091 casacore::Vector<casacore::Double> &gain_time,
00092 casacore::Cube<casacore::Float> &gain);
00093
00094 void calibrate(casacore::Cube<casacore::Float> const &data,
00095 casacore::Cube<casacore::Bool> const &flag,
00096 casacore::Vector<casacore::Double> const &time,
00097 casacore::Matrix<casacore::Double> const &direction,
00098 casacore::Vector<casacore::Double> &gain_time,
00099 casacore::Cube<casacore::Float> &gain,
00100 casacore::Cube<casacore::Bool> &gain_flag);
00101
00102
00103
00104
00105
00106
00107 private:
00108
00109 casacore::Double central_region_;
00110
00111
00112 casacore::Bool do_smooth_;
00113
00114
00115 casacore::Int smooth_size_;
00116
00117
00118
00119 casacore::Double observing_frequency_;
00120
00121
00122 casacore::Double antenna_diameter_;
00123
00124
00125 casacore::LogIO logger_;
00126
00127
00128 void findDataWithinRadius(casacore::Double const radius,
00129 casacore::Vector<casacore::Double> const &time,
00130 casacore::Cube<casacore::Float> const &data,
00131 casacore::Matrix<casacore::Double> const &direction,
00132 casacore::Vector<casacore::Double> &gain_time,
00133 casacore::Cube<casacore::Float> &gain);
00134 void findDataWithinRadius(casacore::Double const radius,
00135 casacore::Vector<casacore::Double> const &time,
00136 casacore::Cube<casacore::Float> const &data,
00137 casacore::Cube<casacore::Bool> const &flag,
00138 casacore::Matrix<casacore::Double> const &direction,
00139 casacore::Vector<casacore::Double> &gain_time,
00140 casacore::Cube<casacore::Float> &gain,
00141 casacore::Cube<casacore::Bool> &gain_flag);
00142 };
00143
00144 }
00145
00146 #endif