/*****************************************************************************
** FILE IDENTIFICATION
**
-** Name: filter.h
+** Name: filter.h
** Purpose: Signal filter header file
-** Programmer: Kevin Rosenberg
-** Date Started: June 2000
+** Programmer: Kevin Rosenberg
+** Date Started: June 2000
**
** This is part of the CTSim program
-** Copyright (c) 1983-2001 Kevin Rosenberg
-**
-** $Id$
+** Copyright (c) 1983-2009 Kevin Rosenberg
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
BACKWARD = 1,
};
- ProcessSignal (const char* szFilterName, const char* szFilterMethodName,double bw, double signalIncrement,
- int n, double param, const char* szDomainName, const char* szFilterGenerationName,
- const int zeropad, const int preinterpolationFactor, const int iTraceLevel, int iGeometry,
+ ProcessSignal (const char* szFilterName, const char* szFilterMethodName,double bw, double signalIncrement,
+ int n, double param, const char* szDomainName, const char* szFilterGenerationName,
+ const int zeropad, const int preinterpolationFactor, const int iTraceLevel, int iGeometry,
double dFocalLength, double dSourceDetectorLength, SGP* pSGP = NULL);
~ProcessSignal();
void filterSignal (const float input[], double output[]) const;
- bool fail(void) const {return m_fail;}
+ bool fail(void) const {return m_fail;}
const std::string& failMessage(void) const {return m_failMessage;}
void setTraceLevel (int traceLevel) {m_traceLevel = traceLevel; }
static int convertFilterGenerationNameToID (const char* const fgName);
static const char* convertFilterGenerationIDToName (const int idFG);
static const char* convertFilterGenerationIDToTitle (const int idFG);
-
+
static const int getFilterMethodCount() {return s_iFilterMethodCount;}
static const char* const* getFilterMethodNameArray() {return s_aszFilterMethodName;}
static const char* const* getFilterMethodTitleArray() {return s_aszFilterMethodTitle;}
static int addZeropadFactor (int n, int iZeropad);
private:
- std::string m_nameFilterMethod;
- std::string m_nameFilterGeneration;
+ std::string m_nameFilterMethod;
+ std::string m_nameFilterGeneration;
int m_idFilterMethod;
int m_idFilterGeneration;
int m_nSignalPoints;
fftw_plan m_complexPlanForward, m_complexPlanBackward;
#endif
- void init (const int idFilter, int idFilterMethod, double dBandwidth, double dSignalIncrement,
- int nSignalPoints, double dFilterParam, const int idDomain, int idFilterGeneration, const int iZeropad,
- const int iPreinterpolationFactor, const int iTraceLevel, const int iGeometry, double dFocalLength,
+ void init (const int idFilter, int idFilterMethod, double dBandwidth, double dSignalIncrement,
+ int nSignalPoints, double dFilterParam, const int idDomain, int idFilterGeneration, const int iZeropad,
+ const int iPreinterpolationFactor, const int iTraceLevel, const int iGeometry, double dFocalLength,
double dSourceDetectorLength, SGP* pSGP);
- // transforms that use precalculated trig tables, therefore don't
+ // transforms that use precalculated trig tables, therefore don't
// require number of data points (n) as an argument
void finiteFourierTransform (const double input[], std::complex<double> output[], const int direction) const;
void finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], const int direction) const;