Ulf@477: #ifndef AGC_H_ Ulf@477: #define AGC_H_ Ulf@477: Ulf@484: #include "CARFAC_common.h" Ulf@479: Ulf@477: class AGC_parameters { Ulf@477: public: Ulf@484: AGC_parameters(): Ulf@484: n_stages_(4), Ulf@484: time_constants_({0.002*1, 0.002*4, 0.002*16, 0.002*64}), Ulf@484: agc_stage_gain_(2), Ulf@484: decimation_({8, 2, 2, 2}), Ulf@484: agc1_scales_({1.0, 1.4, 2.0, 2.8}), Ulf@484: agc2_scales_({1.6, 2.25, 3.2, 4.5}), Ulf@484: detect_scale_(0.25), Ulf@484: agc_mix_coeff_(0.5){ Ulf@484: // do nothing more Ulf@483: } Ulf@479: Ulf@484: virtual ~AGC_parameters(){ Ulf@484: // do nothing Ulf@484: } Ulf@480: Ulf@483: int n_stages_; Ulf@483: FloatArray time_constants_; Ulf@483: float agc_stage_gain_; Ulf@483: FloatArray decimation_; Ulf@483: FloatArray agc1_scales_; Ulf@483: FloatArray agc2_scales_; Ulf@483: float detect_scale_; Ulf@483: float agc_mix_coeff_; Ulf@477: }; Ulf@477: Ulf@477: class AGC_coefficients { Ulf@477: public: Ulf@483: AGC_coefficients(AGC_parameters*, float, int); Ulf@483: virtual ~AGC_coefficients(); Ulf@484: pfh1976@493: int n_ch_; pfh1976@493: int n_agc_stages_; pfh1976@493: float agc_stage_gain_; pfh1976@493: FloatArray agc_epsilon_; pfh1976@493: FloatArray decimation_; pfh1976@493: FloatArray agc_polez1_; pfh1976@493: FloatArray agc_polez2_; pfh1976@493: FloatArray agc_spatial_iterations_; Ulf@494: FloatMatrix agc_spatial_fir_; pfh1976@493: FloatArray agc_spatial_n_taps_; pfh1976@493: FloatArray agc_mix_coeffs_; pfh1976@493: float agc_gain_; Ulf@484: float detect_scale_; pfh1976@493: Ulf@481: private: Ulf@484: AGC_coefficients(); Ulf@496: // FloatArray FIR_coeffs(int, float, float, int, bool*); Ulf@496: FloatArray Build_FIR_coeffs(float, float, int*, int*); Ulf@477: }; Ulf@477: Ulf@477: #endif /* AGC_H_ */