SDDoubleCircleGainCalImpl.h

Go to the documentation of this file.
00001 /*
00002  * SDDoubleCircleGainCal.h
00003  *
00004  *  Created on: May 31, 2016
00005  *      Author: nakazato
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 { // namespace casa START
00018 
00019 class SDDoubleCircleGainCalImpl {
00020 public:
00021   SDDoubleCircleGainCalImpl();
00022   virtual ~SDDoubleCircleGainCalImpl();
00023 
00024   // getter
00025   // get size of the central region in radian
00026   casacore::Double getCentralRegion() const {
00027     return central_region_;
00028   }
00029   casacore::Bool isSmoothingActive() const {
00030     return do_smooth_;
00031   }
00032   // get smoothing size
00033   casacore::Int getSmoothingSize() const {
00034     return smooth_size_;
00035   }
00036   // get observing frequency in Hz
00037   casacore::Double getObservingFrequency() const {
00038     return observing_frequency_;
00039   }
00040   // get antenna diameter in meter
00041   casacore::Double getAntennaDiameter() const {
00042     return antenna_diameter_;
00043   }
00044 
00045   // primvary beam size in radian
00046   casacore::Double getPrimaryBeamSize() const;
00047 
00048   // default smoothing size
00049   casacore::Int getDefaultSmoothingSize() const;
00050 
00051   // get radius of the central region in radian
00052   casacore::Double getRadius();
00053 
00054   // get effective smoothing size
00055   casacore::Int getEffectiveSmoothingSize();
00056 
00057 
00058   // setter
00059   // set radius of the central region in radian
00060   void setCentralRegion(casacore::Double value) {
00061     central_region_ = value;
00062   }
00063 
00064   // activate smoothing and set smoothing size
00065   void setSmoothing(casacore::Int size) {
00066     do_smooth_ = True;
00067     smooth_size_ = size;
00068   }
00069 
00070   // deactivate smoothing
00071   void unsetSmoothing() {
00072     do_smooth_ = False;
00073     smooth_size_ = -1;
00074   }
00075 
00076   // set observing frequency in Hz
00077   void setObservingFrequency(casacore::Double value) {
00078     observing_frequency_ = value;
00079   }
00080 
00081   // set antenna diameter in meter
00082   void setAntennaDiameter(casacore::Double value) {
00083     antenna_diameter_ = value;
00084   }
00085 
00086   // gain calibration
00087   // based on Stephen White's IDL script
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   // subspecies that take into account flag (False: valid, True: invalid)
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   // apply gain factor
00102 //  void apply(casacore::Vector<casacore::Double> const &gain_time,
00103 //      casacore::Cube<casacore::Float> const &gain,
00104 //      casacore::Vector<casacore::Double> const &time,
00105 //      casacore::Cube<casacore::Float> &data);
00106 
00107 private:
00108   // radius of the central region [rad]
00109   casacore::Double central_region_;
00110 
00111   // flag for smoothing
00112   casacore::Bool do_smooth_;
00113 
00114   // smoothing size
00115   casacore::Int smooth_size_;
00116 
00117   // parameter for primary beam size determination
00118   // observing frequency [Hz]
00119   casacore::Double observing_frequency_;
00120 
00121   // antenna diameter [m]
00122   casacore::Double antenna_diameter_;
00123 
00124   // logger
00125   casacore::LogIO logger_;
00126 
00127   // find data within radius
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 } // namespace casa END
00145 
00146 #endif /* SYNTHESIS_MEASUREMENTCOMPONENTS_SDDOUBLECIRCLEGAINCALIMPL_H_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1