4 #include <gsl/gsl_sf_bessel.h>
10 using namespace Diana;
14 fConfiguration(configuration),
15 fCoefficients(configuration.fM)
20 std::stringstream msg;
22 err.SetDescription(__FILE__,__LINE__,msg.str());
33 double t10=-1,t50=-1,t90=-1;
34 for(
size_t i = 0; i < outputTheta.Size(); i++) {
35 if(outputTheta[i]>0.9 && t90<0) {
36 if(i>0) t90=i+(0.9-outputTheta[i])/(outputTheta[i]-outputTheta[i-1]);
39 if(outputTheta[i]>0.5 && t50<0) {
40 if(i>0) t50=i+(0.5-outputTheta[i])/(outputTheta[i]-outputTheta[i-1]);
43 if(outputTheta[i]>0.1 && t10<0) {
44 if(i>0) t10=i+(0.1-outputTheta[i])/(outputTheta[i]-outputTheta[i-1]);
68 std::stringstream msg;
69 msg<<
"Input vector size ("<<input.Size()<<
")"
71 err.SetDescription(__FILE__,__LINE__,msg.str());
76 for(
size_t i = 0; i <
N; i++) {
78 for(
size_t j = 0; j < M; j++) {
93 double period = (2.*M_PI);
95 for(
int j=1; j<Np; j++)
106 double IAlpha = gsl_sf_bessel_I0 (Alpha);
108 for(
int j=0; j<=Np; j++){
109 double arg = Alpha*sqrt(1.-
pow(
double(j)/Np,2));
110 double window = gsl_sf_bessel_I0(arg)/IAlpha;
116 for(
int j = 0; j < Np; j++){
Diana::QComplex pow(const Diana::QComplex &z, double a)
Raise a complex number to a real power.
Diana::QVector sin(const Diana::QVector &v)
Data class for QFir (Ported from Calder)
error class with error type and description
QFir FIR low pass filter (Ported from Calder)
void KayserBesselAlgorithm()
QError Filter(const Diana::QVector &input, Diana::QVector &output) const
std::vector< double > fCoefficients
the Diana namespace is needed because sometimes we use Qt libraries, that use same class names of our...