X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fprocsignal.h;h=3448baed12f5ceea360d03b3cd1590a6354c372d;hp=94548a8bd2e3fb7ba467da35365af47541e24c9f;hb=9776c9a12ba53419d34563a5ec57c90e3d6798f4;hpb=bfcc769cf8019eabc8c65c07257c8dbee4b4c977 diff --git a/include/procsignal.h b/include/procsignal.h index 94548a8..3448bae 100644 --- a/include/procsignal.h +++ b/include/procsignal.h @@ -7,9 +7,9 @@ ** Date Started: June 2000 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: procsignal.h,v 1.5 2000/09/02 05:10:39 kevin Exp $ +** $Id: procsignal.h,v 1.14 2001/02/22 18:22:40 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,10 +39,12 @@ #include - class SignalFilter; class SGP; +typedef std::complex CTSimComplex; + + class ProcessSignal { public: static const int FILTER_METHOD_INVALID; @@ -59,6 +61,11 @@ class ProcessSignal { 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); ~ProcessSignal(); @@ -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; } @@ -80,33 +87,29 @@ class ProcessSignal { const int idFilterGeneration() const { return m_idFilterGeneration;} static const int getFilterGenerationCount() {return s_iFilterGenerationCount;} - static const char** getFilterGenerationNameArray() {return s_aszFilterGenerationName;} - static const char** getFilterGenerationTitleArray() {return s_aszFilterGenerationTitle;} + static const char* const* getFilterGenerationNameArray() {return s_aszFilterGenerationName;} + static const char* const* getFilterGenerationTitleArray() {return s_aszFilterGenerationTitle;} 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** getFilterMethodNameArray() {return s_aszFilterMethodName;} - static const char** getFilterMethodTitleArray() {return s_aszFilterMethodTitle;} + static const char* const* getFilterMethodNameArray() {return s_aszFilterMethodName;} + static const char* const* getFilterMethodTitleArray() {return s_aszFilterMethodTitle;} static int convertFilterMethodNameToID (const char* const filterMethodName); static const char* convertFilterMethodIDToName (const int idFilterMethod); static const char* convertFilterMethodIDToTitle (const int idFilterMethod); // 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 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 shuffleFourierToNaturalOrder (double* 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; @@ -134,13 +137,13 @@ 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[]; + static const char* const s_aszFilterMethodName[]; + static const char* const s_aszFilterMethodTitle[]; static const int s_iFilterMethodCount; - static const char* s_aszFilterGenerationName[]; - static const char* s_aszFilterGenerationTitle[]; + static const char* const s_aszFilterGenerationName[]; + static const char* const s_aszFilterGenerationTitle[]; static const int s_iFilterGenerationCount; #ifdef HAVE_FFTW @@ -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;