X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fprocsignal.h;h=8eb98c62c229c9417bf798d81bdf903a3862eda8;hp=c4d45e44527931dcfef22c30a99f08bba5aa16cd;hb=7ec2cd66921180a624813dff9f8bac76c6b268cc;hpb=ff9c2e8f6e126acbef08e0dfccc6ea112b44ca41 diff --git a/include/procsignal.h b/include/procsignal.h index c4d45e4..8eb98c6 100644 --- a/include/procsignal.h +++ b/include/procsignal.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: procsignal.h,v 1.6 2000/11/28 14:54:07 kevin Exp $ +** $Id: procsignal.h,v 1.10 2001/01/01 10:14:34 kevin Exp $ ** ** 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 @@ -37,9 +37,13 @@ #include #endif +#include class SignalFilter; class SGP; + +typedef std::complex CTSimComplex; + class ProcessSignal { public: @@ -56,6 +60,11 @@ class ProcessSignal { static const int FILTER_GENERATION_INVALID; static const int FILTER_GENERATION_DIRECT; static const int FILTER_GENERATION_INVERSE_FOURIER; + + enum { + FORWARD = -1, + 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 = 0, const int preinterpolationFactor = 1, const int iTraceLevel = Trace::TRACE_NONE, int iGeometry = Scanner::GEOMETRY_PARALLEL, double dFocalLength = 1., SGP* pSGP = NULL); @@ -64,7 +73,7 @@ class ProcessSignal { void filterSignal (const float input[], double output[]) const; bool fail(void) const {return m_fail;} - const string& failMessage(void) const {return m_failMessage;} + const std::string& failMessage(void) const {return m_failMessage;} void setTraceLevel (int traceLevel) {m_traceLevel = traceLevel; } @@ -93,18 +102,22 @@ class ProcessSignal { // transforms using direct trigometric calculation static void finiteFourierTransform (const double input[], double output[], const int n, const int direction); - static void finiteFourierTransform (const double input[], complex output[], const int n, const int direction); - static void finiteFourierTransform (const complex input[], complex output[], const int n, const int direction); - static void finiteFourierTransform (const complex input[], double output[], const int n, const int direction); + static void finiteFourierTransform (const double input[], std::complex output[], const int n, const int direction); + static void finiteFourierTransform (const std::complex input[], std::complex output[], const int n, const int direction); + static void finiteFourierTransform (const std::complex input[], double output[], const int n, const int direction); - static void shuffleNaturalToFourierOrder (double* pdVector, const int n); - - static void shuffleFourierToNaturalOrder (double* pdVector, const int n); + static void shuffleNaturalToFourierOrder (float* pdVector, const int n); + static void shuffleNaturalToFourierOrder (double* pdVector, const int n); + static void shuffleNaturalToFourierOrder (std::complex* pdVector, const int n); + static void shuffleFourierToNaturalOrder (float* pdVector, const int n); + static void shuffleFourierToNaturalOrder (double* pdVector, const int n); + static void shuffleFourierToNaturalOrder (std::complex* pdVector, const int n); + private: - string m_nameFilterMethod; - string m_nameFilterGeneration; + std::string m_nameFilterMethod; + std::string m_nameFilterGeneration; int m_idFilterMethod; int m_idFilterGeneration; int m_nSignalPoints; @@ -132,7 +145,7 @@ class ProcessSignal { double m_dFocalLength; bool m_fail; - string m_failMessage; + std::string m_failMessage; static const char* s_aszFilterMethodName[]; static const char* s_aszFilterMethodTitle[]; @@ -152,9 +165,9 @@ class ProcessSignal { // transforms that use precalculated trig tables, therefore don't // require number of data points (n) as an argument - void finiteFourierTransform (const double input[], complex output[], const int direction) const; - void finiteFourierTransform (const complex input[], complex output[], const int direction) const; - void finiteFourierTransform (const complex input[], double output[], const int direction) const; + void finiteFourierTransform (const double input[], std::complex output[], const int direction) const; + void finiteFourierTransform (const std::complex input[], std::complex output[], const int direction) const; + void finiteFourierTransform (const std::complex input[], double output[], const int direction) const; double convolve (const double func[], const double filter[], const double dx, const int n, const int np) const; double convolve (const double f[], const double dx, const int n, const int np) const;