HOPS
HOPS class reference
MHO_ManualPolDelayCorrection.hh
Go to the documentation of this file.
1 #ifndef MHO_ManualPolDelayCorrection_HH__
2 #define MHO_ManualPolDelayCorrection_HH__
3 
4 #include <cctype>
5 #include <cmath>
6 #include <complex>
7 #include <map>
8 #include <vector>
9 
10 #include "MHO_Constants.hh"
11 #include "MHO_Message.hh"
12 
14 #include "MHO_TableContainer.hh"
15 #include "MHO_UnaryOperator.hh"
16 
17 namespace hops
18 {
19 
31 class MHO_ManualPolDelayCorrection: public MHO_UnaryOperator< visibility_type >
32 {
33  public:
36 
42  void SetReferenceFrequency(double ref_freq) { fRefFreq = ref_freq; }
43 
52  void SetStationIdentifier(std::string station_id) { fStationIdentity = station_id; }
53 
59  void SetPolarization(const std::string& pol)
60  {
61  fPol = pol;
62  make_upper(fPol);
63  };
64 
70  void SetPCDelayOffset(const double& pc_delay_offset) { fDelayOffset = pc_delay_offset; }
71 
72  protected:
80  virtual bool InitializeInPlace(visibility_type* in) override;
89  virtual bool InitializeOutOfPlace(const visibility_type* in, visibility_type* out) override;
90 
98  virtual bool ExecuteInPlace(visibility_type* in) override;
107  virtual bool ExecuteOutOfPlace(const visibility_type* in, visibility_type* out) override;
108 
109  private:
117  bool IsApplicable(std::size_t st_idx, const visibility_type* in);
125  bool PolMatch(std::size_t station_idx, std::string& polprod);
126 
127  //constants
128  std::complex< double > fImagUnit;
129  double fNanoSecToSecond;
130  double fMHzToHz;
131  double fPi;
132 
133  //selection
134  std::string fStationIdentity;
135  std::string fPol;
136 
137  //ref freq and pc delay
138  double fRefFreq;
139  double fDelayOffset;
140 
141  //keys for tag retrieval
142  std::string fStationKey;
143  std::string fRemStationKey;
144  std::string fRefStationKey;
145  std::string fRemStationMk4IDKey;
146  std::string fRefStationMk4IDKey;
147 
148  std::string fSidebandLabelKey;
149  std::string fLowerSideband;
150  std::string fUpperSideband;
151 
152  //minor helper function to make sure all strings are compared as upper-case only
153  void make_upper(std::string& s)
154  {
155  for(char& c : s)
156  {
157  c = toupper(c);
158  };
159  }
160 };
161 
162 } // namespace hops
163 
164 #endif
Class MHO_ManualPolDelayCorrection.
Definition: MHO_ManualPolDelayCorrection.hh:32
virtual bool InitializeInPlace(visibility_type *in) override
Initializes in-place visibility_type pointer.
Definition: MHO_ManualPolDelayCorrection.cc:162
virtual ~MHO_ManualPolDelayCorrection()
Definition: MHO_ManualPolDelayCorrection.cc:28
virtual bool ExecuteOutOfPlace(const visibility_type *in, visibility_type *out) override
Copies input visibility data and executes in-place processing.
Definition: MHO_ManualPolDelayCorrection.cc:105
virtual bool ExecuteInPlace(visibility_type *in) override
Applies manual delay offset and calculates phase correction factors for each channel.
Definition: MHO_ManualPolDelayCorrection.cc:30
void SetPolarization(const std::string &pol)
Setter for polarization.
Definition: MHO_ManualPolDelayCorrection.hh:59
void SetStationIdentifier(std::string station_id)
Setter for station identifier.
Definition: MHO_ManualPolDelayCorrection.hh:52
void SetPCDelayOffset(const double &pc_delay_offset)
Setter for pcdelay offset.
Definition: MHO_ManualPolDelayCorrection.hh:70
virtual bool InitializeOutOfPlace(const visibility_type *in, visibility_type *out) override
Initializes out-of-place visibility data from input pointer.
Definition: MHO_ManualPolDelayCorrection.cc:167
void SetReferenceFrequency(double ref_freq)
Setter for reference frequency.
Definition: MHO_ManualPolDelayCorrection.hh:42
MHO_ManualPolDelayCorrection()
Definition: MHO_ManualPolDelayCorrection.cc:6
Class MHO_UnaryOperator.
Definition: MHO_UnaryOperator.hh:24
Definition: MHO_ChannelLabeler.hh:17