RectangleFilter.h
Go to the documentation of this file.
1 #ifndef _utl_RectangleFilter_h_
2 #define _utl_RectangleFilter_h_
3 
12 #include <complex>
13 #include <utl/AnalyticFilter.h>
14 #include <utl/AugerException.h>
15 #include <utl/AugerUnits.h>
16 #include <utl/MathConstants.h>
17 
18 namespace utl {
19 
29  public:
30  RectangleFilter(double lowerCutoff, double upperCutoff, double delay);
31  virtual ~RectangleFilter();
32  virtual std::complex<double> TransmissivityAtFrequency(double parFrequency) const;
33  virtual double EffectiveBandwidth() const { return (fUpperCutoff-fLowerCutoff); }
34  };
35 
36  inline
37  std::complex<double> RectangleFilter::TransmissivityAtFrequency(double parFrequency) const
38  {
39  if ((parFrequency >= fLowerCutoff) && (parFrequency <= fUpperCutoff))
40  {
41  return std::complex<double>(1.0, 0.0) * std::exp(-2 * utl::kPi * std::complex<double>(0.0,1.0) * parFrequency/hertz * fDelay/second);
42  }
43  else
44  {
45  return std::complex<double>(0.0, 0.0);
46  }
47  }
48 
49 
50 } // utl
51 
52 #endif
constexpr double second
Definition: AugerUnits.h:145
RectangleFilter(double lowerCutoff, double upperCutoff, double delay)
static int delay
Definition: XbAlgo.cc:20
constexpr double kPi
Definition: MathConstants.h:24
An idealised rectangle filter.
constexpr double hertz
Definition: AugerUnits.h:153
Abstract base class for analytic filters.
virtual std::complex< double > TransmissivityAtFrequency(double parFrequency) const
virtual double EffectiveBandwidth() const

, generated on Tue Sep 26 2023.