HOPS
HOPS class reference
MHO_SingleSidebandNormFX.hh
Go to the documentation of this file.
1 #ifndef MHO_SingleSidebandNormFX_HH__
2 #define MHO_SingleSidebandNormFX_HH__
3 
4 #include <cmath>
5 #include <complex>
6 
8 #include "MHO_TableContainer.hh"
9 
10 #include "MHO_ComplexConjugator.hh"
11 #include "MHO_CyclicRotator.hh"
12 #include "MHO_EndZeroPadder.hh"
15 #include "MHO_NaNMasker.hh"
16 #include "MHO_NormFX.hh"
17 #include "MHO_SBDTableGenerator.hh"
18 #include "MHO_UnaryOperator.hh"
19 
20 #ifdef HOPS_USE_FFTW3
22 #endif
23 
24 namespace hops
25 {
26 
41 class MHO_SingleSidebandNormFX: public MHO_NormFX //MHO_UnaryOperator< visibility_type >
42 {
43  public:
45  virtual ~MHO_SingleSidebandNormFX();
46 
47  protected:
49 
57  virtual bool InitializeInPlace(XArgType* in) override;
66  virtual bool InitializeOutOfPlace(const XArgType* in, XArgType* out) override;
67 
75  virtual bool ExecuteInPlace(XArgType* in) override;
84  virtual bool ExecuteOutOfPlace(const XArgType* in, XArgType* out) override;
85 
86  private:
87  std::size_t fInDims[VIS_NDIM];
88  std::size_t fOutDims[VIS_NDIM];
89 
92 
94 
95 #ifdef HOPS_USE_FFTW3
97 #else
99 #endif
100 
101  FFT_ENGINE_TYPE fFFTEngine;
104  MHO_SBDTableGenerator fSBDGen;
105  bool fInitialized;
106 
115  bool ApplyWeights(visibility_type* out, weight_type* w, bool invert);
116 };
117 
118 } // namespace hops
119 
120 #endif
#define VIS_NDIM
Definition: MHO_BaselineContainers.hh:43
Class MHO_ComplexConjugator.
Definition: MHO_ComplexConjugator.hh:24
Class MHO_CyclicRotator.
Definition: MHO_CyclicRotator.hh:29
Class MHO_EndZeroPadder.
Definition: MHO_EndZeroPadder.hh:29
Class MHO_FunctorBroadcaster.
Definition: MHO_FunctorBroadcaster.hh:25
Class MHO_MultidimensionalFastFourierTransformFFTW.
Definition: MHO_MultidimensionalFastFourierTransformFFTW.hh:37
Class MHO_NaNMasker.
Definition: MHO_NaNMasker.hh:25
Class MHO_NormFX.
Definition: MHO_NormFX.hh:27
Class MHO_SBDTableGenerator.
Definition: MHO_SBDTableGenerator.hh:29
Class MHO_SingleSidebandNormFX.
Definition: MHO_SingleSidebandNormFX.hh:42
MHO_SingleSidebandNormFX()
Definition: MHO_SingleSidebandNormFX.cc:10
virtual bool ExecuteOutOfPlace(const XArgType *in, XArgType *out) override
Applies a series of operations including zero-padding, NaN filtering, FFT and cyclic rotation to inpu...
Definition: MHO_SingleSidebandNormFX.cc:78
virtual bool InitializeOutOfPlace(const XArgType *in, XArgType *out) override
Initializes out-of-place processing for Single Sideband (all channels USB or LSB) NormFX using input ...
Definition: MHO_SingleSidebandNormFX.cc:14
virtual bool InitializeInPlace(XArgType *in) override
Initializes in-place by initializing out-of-place and copying back.
Definition: MHO_SingleSidebandNormFX.cc:228
virtual ~MHO_SingleSidebandNormFX()
Definition: MHO_SingleSidebandNormFX.cc:12
virtual bool ExecuteInPlace(XArgType *in) override
Executes in-place operation by temporarily using out-of-place execution and copying results back.
Definition: MHO_SingleSidebandNormFX.cc:238
Definition: MHO_ChannelLabeler.hh:17
MHO_TableContainer< visibility_element_type, baseline_axis_pack > visibility_type
Definition: MHO_BaselineContainers.hh:52