00001
00002
00004 #ifndef __Spectrum__
00005 #define __Spectrum__
00006
00007 #include "CUtils.h"
00008 #include "FFT.h"
00009 #include "TMath.h"
00010 #include "TGraph.h"
00011 #include "TH1.h"
00012 #include <gsl/gsl_errno.h>
00013 #include <gsl/gsl_spline.h>
00014
00015 using namespace std;
00016
00034 class Spectrum{
00035
00036 public:
00037
00050 Spectrum(const int aSamplingFrequency,
00051 const int aNpoints,
00052 const int aPaddingDuration,
00053 const int aVerbosity=0);
00054
00058 virtual ~Spectrum(void);
00073 bool LoadData(const int aDataSize, double *aData);
00074
00085 double GetPower(const double aFrequency);
00086
00091 TGraph* GetPSD(void);
00092
00097 TGraph* GetASD(void);
00098
00102 inline bool GetStatus(void){ return status_OK; };
00103
00104 private:
00105
00106 bool status_OK;
00107 int fVerbosity;
00108
00109 int fSamplingFrequency;
00110 int PaddingDuration;
00111 int PaddingSize;
00112
00113 int DataSize;
00114 double *Data;
00115 double *Datain;
00116 double *HannWindow;
00117 int fPsdSize;
00118 double *PSD;
00119 double *f_PSD;
00120 fft *fft_psd;
00121
00122 gsl_interp_accel *acc;
00123 gsl_spline *interp_psd;
00124
00125 double* GetHannWindow(const int aSize);
00126 bool ComputePSD(void);
00127
00128 ClassDef(Spectrum,0)
00129 };
00130
00131 #endif
00132
00133