HOPS
HOPS class reference
MHO_StationDelayCorrection.hh
Go to the documentation of this file.
1 #ifndef MHO_StationDelayCorrection_HH__
2 #define MHO_StationDelayCorrection_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_StationDelayCorrection: public MHO_UnaryOperator< visibility_type >
32 {
33  public:
36 
42  void SetReferenceFrequency(double ref_freq) { fRefFreq = ref_freq; }
43 
52  void SetStationIdentifier(const std::string& id) { fStationIdentities = {id}; }
53 
54  void SetStationIdentifiers(const std::vector< std::string >& ids) { fStationIdentities = ids; }
55 
56  std::string GetStationIdentifier() const
57  {
58  return fStationIdentities.empty() ? std::string("") : fStationIdentities[0];
59  }
60 
66  void SetPCDelayOffset(double pc_delay_offset) { fDelayOffset = pc_delay_offset; }
67 
68  protected:
76  virtual bool ExecuteInPlace(visibility_type* in) override;
77 
78  private:
86  bool IsApplicable(std::size_t st_idx, const visibility_type* in);
87 
88  //constants
89  std::complex< double > fImagUnit;
90  double fNanoSecToSecond;
91  double fMHzToHz;
92  double fPi;
93 
94  //selection
95  std::vector< std::string > fStationIdentities;
96 
97  //ref freq and pc delay
98  double fRefFreq;
99  double fDelayOffset;
100 
101  //keys for tag retrieval
102  std::string fStationKey;
103  std::string fRemStationKey;
104  std::string fRefStationKey;
105  std::string fRemStationMk4IDKey;
106  std::string fRefStationMk4IDKey;
107 
108  std::string fSidebandLabelKey;
109  std::string fLowerSideband;
110  std::string fUpperSideband;
111 
112  //minor helper function to make sure all strings are compared as upper-case only
113  void make_upper(std::string& s)
114  {
115  for(char& c : s)
116  {
117  c = toupper(c);
118  };
119  }
120 };
121 
122 } // namespace hops
123 
124 #endif
Class MHO_StationDelayCorrection.
Definition: MHO_StationDelayCorrection.hh:32
void SetStationIdentifier(const std::string &id)
Setter for station identifier.
Definition: MHO_StationDelayCorrection.hh:52
std::string GetStationIdentifier() const
Definition: MHO_StationDelayCorrection.hh:56
MHO_StationDelayCorrection()
Definition: MHO_StationDelayCorrection.cc:7
void SetStationIdentifiers(const std::vector< std::string > &ids)
Definition: MHO_StationDelayCorrection.hh:54
void SetReferenceFrequency(double ref_freq)
Setter for reference frequency.
Definition: MHO_StationDelayCorrection.hh:42
void SetPCDelayOffset(double pc_delay_offset)
Setter for delay offset.
Definition: MHO_StationDelayCorrection.hh:66
virtual bool ExecuteInPlace(visibility_type *in) override
Applies phase correction to visibility data for reference or remote station.
Definition: MHO_StationDelayCorrection.cc:30
virtual ~MHO_StationDelayCorrection()
Definition: MHO_StationDelayCorrection.cc:28
Class MHO_UnaryOperator.
Definition: MHO_UnaryOperator.hh:24
Definition: MHO_AdhocFlagging.hh:18