HOPS
HOPS class reference
MHO_MBDelaySearch.hh
Go to the documentation of this file.
1 #ifndef MHO_MBDelaySearch_HH__
2 #define MHO_MBDelaySearch_HH__
3 
4 #include <cmath>
5 #include <complex>
6 
7 #include "MHO_AxisPack.hh"
9 #include "MHO_CyclicRotator.hh"
10 #include "MHO_DelayRate.hh"
11 #include "MHO_ExtremaSearch.hh"
13 #include "MHO_TableContainer.hh"
15 
16 #ifdef HOPS_USE_FFTW3
18 #else
20 #endif
21 
22 namespace hops
23 {
24 
36 
40 class MHO_MBDelaySearch: public MHO_InspectingOperator< visibility_type >
41 {
42  public:
44  virtual ~MHO_MBDelaySearch();
45 
51  void SetWeights(weight_type* wt_data) { fWeights = wt_data; }
52 
58  void SetReferenceFrequency(double ref_freq) { fRefFreq = ref_freq; }
59 
60  //configure the search windows (using floating point limits)
61  //default is the full range
68  void SetSBDWindow(double low, double high);
75  void SetMBDWindow(double low, double high);
82  void SetDRWindow(double low, double high);
83 
84  //retrieve the window limits (that were actually used)
91  void GetSBDWindow(double& low, double& high) const;
98  void GetMBDWindow(double& low, double& high) const;
105  void GetDRWindow(double& low, double& high) const;
106 
112  int GetMBDMaxBin() const { return fMBDMaxBin; }
113 
119  int GetSBDMaxBin() const { return fSBDMaxBin; }
120 
126  int GetDRMaxBin() const { return fDRMaxBin; }
127 
133  double GetCoarseMBD() const { return fCoarseMBD; }
134 
140  double GetCoarseSBD() const { return fCoarseSBD; }
141 
147  double GetCoarseDR() const { return fCoarseDR; }
148 
154  double GetSBDBinSeparation() const { return fSBDBinSep; }
155 
161  int GetNMBDBins() const { return fNGridPoints; };
162 
168  int GetNSBDBins() const { return fNSBD; };
169 
175  int GetNDRBins() const { return fNDR; };
176 
178 
179  double GetNPointsSearched() const;
180 
181  double GetSearchMaximumAmplitude() const { return fMax; }
182 
183  double GetFrequencySpacing() const { return fGridSpace; }
184 
185  double GetAverageFrequency() const { return fAverageFreq; }
186 
188 
190 
191  protected:
193 
194  virtual bool InitializeImpl(const XArgType* in) override;
195  virtual bool ExecuteImpl(const XArgType* in) override;
196 
197  // std::vector< double > DetermineFrequencyPoints(const XArgType* in);
198 
199  protected:
200  void SetWindow(double* win, double low, double high);
201  void GetWindow(const MHO_Axis< double >& axis, bool win_set, const double* win, double bin_width, double& low,
202  double& high) const;
203 
204  //workspace
206  std::vector< double > fChannelFreqs;
207 
212 
215 
216  //dims and parameters
217  double fGridStart;
218  double fGridSpace;
219  double fAverageFreq;
220  std::size_t fNGridPoints;
221  std::size_t fNSBD;
222  std::size_t fNDR;
223  std::size_t fNDRSP;
224  std::map< std::size_t, std::size_t > fMBDBinMap;
225  double fRefFreq;
227  int fSBDStop;
228 
229  //the bin width in each dimension
230  double fSBDBinSep;
231  double fDRBinSep;
232  double fMBDBinSep;
233 
234  //the window limits
235  double fSBDWin[2];
236  double fMBDWin[2];
237  double fDRWin[2];
238 
239  //indicates if window limits have been set
242  bool fDRWinSet;
243 
244  //location and value of the maximum
245  double fMax;
249 
250  double fCoarseMBD;
251  double fCoarseSBD;
252  double fCoarseDR;
253 
254  //the number of points searched
256 
260 
262  MHO_DelayRate fDelayRateCalc; //delay rate calculator
263 
264  //associated info for channel index re-mapping (needed for combining double sideband channel pairs)
265  std::map< std::size_t, std::size_t > fChannelIndexToFreqPointIndex;
266 
267 #ifdef HOPS_USE_FFTW3
269 #else
271 #endif
272 
274 
276 
278 };
279 
280 } // namespace hops
281 
282 #endif
int axis(char *y_axis, char *x_axis)
Definition: axis.c:22
Class MHO_AxisPack.
Definition: MHO_AxisPack.hh:22
Class MHO_CyclicRotator.
Definition: MHO_CyclicRotator.hh:29
Class MHO_DelayRate.
Definition: MHO_DelayRate.hh:35
int GetDelayRateSearchSpaceSize() const
Getter for delay rate search space size.
Definition: MHO_DelayRate.hh:52
Class MHO_ExtremaSearch.
Definition: MHO_ExtremaSearch.hh:29
Class MHO_InspectingOperator.
Definition: MHO_InspectingOperator.hh:22
Class MHO_MBDelaySearch.
Definition: MHO_MBDelaySearch.hh:41
MHO_MBDelaySearch()
Definition: MHO_MBDelaySearch.cc:6
void GetWindow(const MHO_Axis< double > &axis, bool win_set, const double *win, double bin_width, double &low, double &high) const
Definition: MHO_MBDelaySearch.cc:279
weight_type fWeightsWorkspace
Definition: MHO_MBDelaySearch.hh:210
void SetMBDWindow(double low, double high)
Setter for mbd window.
Definition: MHO_MBDelaySearch.cc:305
mbd_type fMBDWorkspace
Definition: MHO_MBDelaySearch.hh:213
int fSBDStop
Definition: MHO_MBDelaySearch.hh:227
int fDRMaxBin
Definition: MHO_MBDelaySearch.hh:248
MHO_DelayRate fDelayRateCalc
Definition: MHO_MBDelaySearch.hh:262
MHO_Axis< double > fSBDAxis
Definition: MHO_MBDelaySearch.hh:257
double fDRBinSep
Definition: MHO_MBDelaySearch.hh:231
double fCoarseDR
Definition: MHO_MBDelaySearch.hh:252
visibility_type sbd_dr_data
Definition: MHO_MBDelaySearch.hh:209
void GetMBDWindow(double &low, double &high) const
Getter for mbd window.
Definition: MHO_MBDelaySearch.cc:325
double fGridSpace
Definition: MHO_MBDelaySearch.hh:218
double GetAverageFrequency() const
Definition: MHO_MBDelaySearch.hh:185
double GetCoarseDR() const
Getter for coarse dr.
Definition: MHO_MBDelaySearch.hh:147
double fSBDWin[2]
Definition: MHO_MBDelaySearch.hh:235
double fCoarseSBD
Definition: MHO_MBDelaySearch.hh:251
double GetSBDBinSeparation() const
Getter for sbd bin separation.
Definition: MHO_MBDelaySearch.hh:154
time_axis_type * GetMBDAxis()
Definition: MHO_MBDelaySearch.hh:187
virtual ~MHO_MBDelaySearch()
Definition: MHO_MBDelaySearch.cc:37
bool fSBDWinSet
Definition: MHO_MBDelaySearch.hh:240
void SetWindow(double *win, double low, double high)
Definition: MHO_MBDelaySearch.cc:265
double GetFrequencySpacing() const
Definition: MHO_MBDelaySearch.hh:183
double fNPointsSearched
Definition: MHO_MBDelaySearch.hh:255
double fCoarseMBD
Definition: MHO_MBDelaySearch.hh:250
virtual bool ExecuteImpl(const XArgType *in) override
Inspects a single const array.
Definition: MHO_MBDelaySearch.cc:119
double GetCoarseSBD() const
Getter for coarse sbd.
Definition: MHO_MBDelaySearch.hh:140
std::size_t fNGridPoints
Definition: MHO_MBDelaySearch.hh:220
double fAverageFreq
Definition: MHO_MBDelaySearch.hh:219
bool fDRWinSet
Definition: MHO_MBDelaySearch.hh:242
double fSBDBinSep
Definition: MHO_MBDelaySearch.hh:230
std::size_t fNDR
Definition: MHO_MBDelaySearch.hh:222
visibility_type fSBDDrWorkspace
Definition: MHO_MBDelaySearch.hh:208
void SetReferenceFrequency(double ref_freq)
Setter for reference frequency.
Definition: MHO_MBDelaySearch.hh:58
std::vector< double > fChannelFreqs
Definition: MHO_MBDelaySearch.hh:206
std::size_t fNSBD
Definition: MHO_MBDelaySearch.hh:221
int GetDRMaxBin() const
Getter for drmax bin.
Definition: MHO_MBDelaySearch.hh:126
double fMBDWin[2]
Definition: MHO_MBDelaySearch.hh:236
weight_type * fWeights
Definition: MHO_MBDelaySearch.hh:211
std::size_t fNDRSP
Definition: MHO_MBDelaySearch.hh:223
mbd_amp_type fMBDAmpWorkspace
Definition: MHO_MBDelaySearch.hh:214
double fMBDBinSep
Definition: MHO_MBDelaySearch.hh:232
double fMax
Definition: MHO_MBDelaySearch.hh:245
int GetMBDMaxBin() const
Getter for mbdmax bin.
Definition: MHO_MBDelaySearch.hh:112
std::map< std::size_t, std::size_t > fMBDBinMap
Definition: MHO_MBDelaySearch.hh:224
int fSBDMaxBin
Definition: MHO_MBDelaySearch.hh:247
double fRefFreq
Definition: MHO_MBDelaySearch.hh:225
bool fMBDWinSet
Definition: MHO_MBDelaySearch.hh:241
int GetNDRSPBins() const
Definition: MHO_MBDelaySearch.hh:177
MHO_UniformGridPointsCalculator fGridCalc
Definition: MHO_MBDelaySearch.hh:261
bool fInitialized
Definition: MHO_MBDelaySearch.hh:205
int fSBDStart
Definition: MHO_MBDelaySearch.hh:226
int GetNMBDBins() const
Getter for N mbd bins.
Definition: MHO_MBDelaySearch.hh:161
double GetCoarseMBD() const
Getter for coarse mbd.
Definition: MHO_MBDelaySearch.hh:133
double fGridStart
Definition: MHO_MBDelaySearch.hh:217
void GetDRWindow(double &low, double &high) const
Getter for dr window.
Definition: MHO_MBDelaySearch.cc:330
MHO_Axis< double > fMBDAxis
Definition: MHO_MBDelaySearch.hh:258
int GetNDRBins() const
Getter for ndrbins.
Definition: MHO_MBDelaySearch.hh:175
int GetNSBDBins() const
Getter for n sbd bins.
Definition: MHO_MBDelaySearch.hh:168
void SetSBDWindow(double low, double high)
Setter for sbd window.
Definition: MHO_MBDelaySearch.cc:298
void SetWeights(weight_type *wt_data)
Setter for weights.
Definition: MHO_MBDelaySearch.hh:51
virtual bool InitializeImpl(const XArgType *in) override
initializes inspection for a single const array of type XArgType.
Definition: MHO_MBDelaySearch.cc:39
double GetSearchMaximumAmplitude() const
Definition: MHO_MBDelaySearch.hh:181
double GetNPointsSearched() const
Definition: MHO_MBDelaySearch.cc:258
void GetSBDWindow(double &low, double &high) const
Getter for sbd window.
Definition: MHO_MBDelaySearch.cc:320
double fDRWin[2]
Definition: MHO_MBDelaySearch.hh:237
delay_rate_axis_type * GetDRAxis()
Definition: MHO_MBDelaySearch.hh:189
void SetDRWindow(double low, double high)
Setter for dr window.
Definition: MHO_MBDelaySearch.cc:312
MHO_CyclicRotator< mbd_type > fCyclicRotator
Definition: MHO_MBDelaySearch.hh:275
int GetSBDMaxBin() const
Getter for sbdmax bin.
Definition: MHO_MBDelaySearch.hh:119
MHO_ExtremaSearch< mbd_amp_type > fMaxSearch
Definition: MHO_MBDelaySearch.hh:277
FFT_ENGINE_TYPE fFFTEngine
Definition: MHO_MBDelaySearch.hh:273
int fMBDMaxBin
Definition: MHO_MBDelaySearch.hh:246
std::map< std::size_t, std::size_t > fChannelIndexToFreqPointIndex
Definition: MHO_MBDelaySearch.hh:265
MHO_Axis< double > fDRAxis
Definition: MHO_MBDelaySearch.hh:259
Class MHO_MultidimensionalFastFourierTransformFFTW.
Definition: MHO_MultidimensionalFastFourierTransformFFTW.hh:37
Class MHO_UniformGridPointsCalculator.
Definition: MHO_UniformGridPointsCalculator.hh:26
Definition: MHO_ChannelLabeler.hh:17
MHO_TableContainer< visibility_element_type, baseline_axis_pack > visibility_type
Definition: MHO_BaselineContainers.hh:52