X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fprocsignal.h;h=2be3b7c20a65d535e53141bb3c607ac141029257;hp=65bef2af34ab5c899961b59021b1fa9b870fce7f;hb=9b2bb510160bdb56f04847f5b55ab61dd8a47976;hpb=3882de63100d2cc28fe13cf3144f51a880aa4de2 diff --git a/include/procsignal.h b/include/procsignal.h index 65bef2a..2be3b7c 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.7 2000/12/02 01:29:11 kevin Exp $ +** $Id: procsignal.h,v 1.11 2001/01/02 05:34:57 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 @@ -39,9 +39,11 @@ #include - class SignalFilter; class SGP; + +typedef std::complex CTSimComplex; + class ProcessSignal { public: @@ -58,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); @@ -66,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; } @@ -95,18 +102,14 @@ 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 shuffleNaturalToFourierOrder (double* pdVector, const int n); - - static void shuffleFourierToNaturalOrder (double* pdVector, const int n); + 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); + private: - string m_nameFilterMethod; - string m_nameFilterGeneration; + std::string m_nameFilterMethod; + std::string m_nameFilterGeneration; int m_idFilterMethod; int m_idFilterGeneration; int m_nSignalPoints; @@ -134,7 +137,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[]; @@ -154,9 +157,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;