CARMA C++
DelayAntennaLocation.h
Go to the documentation of this file.
1 #ifndef SZA_UTIL_DELAYANTENNALOCATION_H
2 #define SZA_UTIL_DELAYANTENNALOCATION_H
3 
11 #include "carma/szautil/AntNum.h"
12 #include "carma/szautil/Frequency.h"
13 #include "carma/szautil/Rx.h"
15 
16 namespace sza {
17  namespace util {
18 
19  class MonitorPoint;
20  class MonitorPointManager;
21  class RegMapDataFrameManager;
22 
23  class DelayAntennaLocation : public DelayLocation {
24  public:
25 
29  DelayAntennaLocation(RegMapDataFrameManager* frame=0);
30 
34  virtual ~DelayAntennaLocation();
35 
39  void setAntId(AntNum::Id antId);
40 
44  void selectRx(Rx::Id rxId);
45 
49  void setAxisMisalignment(Length misalignment);
50  void useAxisMisalignment(bool use);
51 
55  inline Frequency LOFrequency() {
56  return LOFrequency_;
57  }
58 
62  inline Frequency skyFrequency() {
63  return skyFrequency_;
64  }
65 
69  inline Frequency lobeRotatorFrequency(bool useOffset) {
70 
71  if(useOffset)
72  return skyFrequency_ - offsetFrequency_;
73  else
74  return skyFrequency_;
75 
76  }
77 
81  inline double hasFrequency() {
82  return hasFrequency_;
83  }
84 
88  inline Length axisMisalignment() {
89  return axisMisalignment_;
90  }
91 
95  void setDefaultFixedDelay(Delay delay, Rx::Id rxId);
96 
100  void setDefaultAdjustableDelay(Delay delay, Rx::Id rxId);
101 
102  MonitorPoint* monAxisMisalignment_;
103  MonitorPoint* monUseAxisMisalignment_;
104 
105  // Update quantities needed for delay calculation
106 
107  void updateTransientDelayQuantities(double mjd, sza::util::Source* src);
108 
109  // Get the AZ/EL coordinates corresponding to this HA/DEC
110  // location
111 
112  void updateAzEl(HourAngle ha, DecAngle dec);
113 
114  // Get the AZ/EL coordinates corresponding to this HA/DEC
115  // location
116 
117  void updateAxisMisalignmentCorrection(HourAngle ha, DecAngle dec);
118 
119  double X(bool ec=true);
120  double Y(bool ec=true);
121  double Z(bool ec=true);
122 
123  private:
124 
125  // NIA correction to the geocentric (X, Y, Z) relative to the fiducial
126 
127  Vector<double> dGeocentricXyz_;
128 
129  // NIA correction to the topocentric (X, Y, Z) relative to the fiducial
130 
131  Vector<double> dTopocentricXyz_;
132 
133  // This array will store default fixed delays for each frequency
134 
135  Delay default30GHzFixedDelay_;
136  Delay default90GHzFixedDelay_;
137  Delay default230GHzFixedDelay_;
138 
139  // A pointer to the element of the above array that corresponds
140  // to the current frequency
141 
142  Delay* defaultFixedDelay_;
143 
144  // This array will store default adjustable delays for each
145  // frequency
146 
147  Delay default30GHzAdjustableDelay_;
148  Delay default90GHzAdjustableDelay_;
149  Delay default230GHzAdjustableDelay_;
150 
151  // A pointer to the element of the above array that corresponds
152  // to the current frequency
153 
154  Delay* defaultAdjustableDelay_;
155 
156  AntNum antNum_;
157  Frequency LOFrequency_;
158  Frequency skyFrequency_;
159  Frequency offsetFrequency_;
160 
161  bool hasFrequency_;
162  MonitorPoint* monHasFrequency_;
163  MonitorPoint* monLOFrequency_;
164  MonitorPoint* monSkyFrequency_;
165 
166  Length axisMisalignment_;
167  bool useAxisMisalignment_;
168 
169  friend class DelayManager;
170 
171  void registerAntParamCallback(DelayManager* manager);
172 
173  void updateHasFrequency(bool hasFrequency);
174  void updateLOFrequency(Frequency freq);
175  void updateSkyFrequency(Frequency freq);
176  void updateDefaultDelays(Rx::Id);
177 
178  void updateAxisMisalignment();
179  void updateUseAxisMisalignment();
180 
181  void updateMonitors();
182 
183  }; // End class DelayAntennaLocation
184 
185  } // End namespace util
186 } // End namespace sza
187 
188 
189 
190 #endif // End #ifndef SZA_UTIL_DELAYANTENNALOCATION_H
Tagged: Fri Nov 14 12:39:31 UTC 2003.
The following class is used to record details about the current source trajectory.
Definition: Source.h:31
Tagged: Thu Aug 5 06:51:59 PDT 2004.
Id
Enumerate known receivers.
Definition: AntNum.h:35