7 double* FFTtools::FFTWindowType::make(
size_t N)
const 9 double * ret =
new double[N];
14 void FFTtools::FFTWindowType::fill(
size_t N,
double * x)
const 19 for (i = 0, j = -(N-1)/2; i < N; i++, j++)
25 void FFTtools::FFTWindowType::apply(
size_t N,
double * x)
const 30 for (i = 0, j = -(N-1)/2 ; i < N; i++, j++)
36 double FFTtools::TriangularWindow::value(
double i,
size_t N)
const 39 return 1 - fabs(i / L);
42 double FFTtools::HannWindow::value(
double i,
size_t N)
const 45 return 0.5 * (1. - cos(2.*M_PI * j / (N-1))) ;
49 static const double hamming_alpha = 25./46;
50 static const double hamming_beta = 21./46;
52 double FFTtools::HammingWindow::value(
double i,
size_t N)
const 55 return hamming_alpha -hamming_beta* cos(2.*M_PI * j / (N-1)) ;
58 static const double blackman_a0 = 7938./18308;
59 static const double blackman_a1 = 9240./18308;
60 static const double blackman_a2 = 1430./18308;
62 double FFTtools::BlackmanWindow::value(
double i,
size_t N)
const 65 return blackman_a0 - blackman_a1 * cos(2*M_PI*j/(N-1)) + blackman_a2 * cos(4*M_PI*j/(N-1));
68 static const double blackmanharris_a0 = 0.35785;
69 static const double blackmanharris_a1 = 0.48829;
70 static const double blackmanharris_a2 = 0.14128;
71 static const double blackmanharris_a3 = 0.01168;
73 double FFTtools::BlackmanHarrisWindow::value(
double i,
size_t N)
const 76 return blackmanharris_a0 - blackmanharris_a1 * cos(2*M_PI*j/(N-1)) + blackmanharris_a2 * cos(4*M_PI*j/(N-1)) - blackmanharris_a3 * cos(6*M_PI*j/(N-1)); ;
80 double FFTtools::KaiserWindow::value(
double i,
size_t N)
const 83 return TMath::BesselI0(M_PI * alpha * TMath::Sqrt( 1 - TMath::Power(2.*j/(N-1)-1.,2))) / TMath::BesselI0(M_PI*alpha);
87 double FFTtools::GaussianWindow::value(
double i,
size_t N)
const 90 return TMath::Exp(-2*TMath::Power(alpha*n/(N-1),2));
95 double FFTtools::TukeyWindow::value(
double i,
size_t N)
const 97 double T = alpha *(N-1)/2.;
99 if ( n < T)
return 0.5 * ( 1+ cos(TMath::Pi() * (n / T- 1))) ;
100 if ( n >= N)
return 0;
101 if (n >= N - T)
return 0.5 * ( 1 + cos(TMath::Pi() * ( n/T - 2 /alpha + 1)));