+class SignalFilter {
+ public:
+
+ SignalFilter (const FilterType filt_type, double bw, double xmin, double xmax, int n, double param, const DomainType domain, const int numInt);
+
+ ~SignalFilter (void);
+
+ double* getFilter (void) const
+ { return m_vecFilter; }
+
+ double convolve (const double f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
+
+ double convolve (const float f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
+
+ static double spatialResponseCalc (FilterType fType, double bw, double x, double param, int n);
+
+ static double spatialResponseAnalytic (FilterType fType, double bw, double x, double param);
+
+ static double frequencyResponse (FilterType fType, double bw, double u, double param);
+
+ private:
+ double *m_vecFilter;
+ double m_bw;
+ FilterType m_filterType;
+
+ double spatialResponseCalc (double x, double param, int n) const;
+
+ double spatialResponseAnalytic (double x, double param) const;
+
+ double frequencyResponse (double u, double param) const;
+
+ static double sinc (double x, double mult)
+ { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
+
+ static double integral_abscos (double u, double w);
+
+};
+