newwave is hosted by Hepforge, IPPP Durham

New Wave - Noise Elimination With Wavelets At Vast Energies  0.1.0
code/include/NewWave/GSLEngine.hh
Go to the documentation of this file.
00001 #ifndef NEWWAVE_GSL_ENGINE_HH
00002 #define NEWWAVE_GSL_ENGINE_HH
00003 
00004 #include <vector>
00005 
00006 #include <gsl/gsl_wavelet.h>
00007 #include <gsl/gsl_wavelet2d.h>
00008 
00009 #include "NewWave/WaveletEngine.hh"
00010 #include "NewWave/PixelDefinition.hh"
00011 
00012 namespace NewWave{
00013   
00014   using std::size_t;
00015   using std::vector;
00016   
00018   class GSLEngine : public WaveletEngine{
00019 
00020   public:
00021     
00022     GSLEngine(const gsl_wavelet_type *type, size_t degree,
00023               const PixelDefinition &pixelDefn);
00024     
00025     ~GSLEngine();
00026     
00027     WaveletCoefficients transform(const PixelArray &pixels)const;
00028     
00029     PixelArray inverseTransform(const WaveletCoefficients &coefficients)const;
00030 
00031     
00032   private:
00033     
00034     void init(const PixelDefinition &pixelDefn);
00035 
00036     void initYLevels(const PixelDefinition &pixelDefn);
00037 
00038     void initPhiLevels();
00039 
00041     const gsl_wavelet_type *_waveletType;
00042     
00044     size_t _degree;
00045     
00047     gsl_wavelet *_wavelet;
00049     gsl_wavelet_workspace *_workspace;
00050     
00051     size_t _nSegments;
00052     size_t _nSegments2;
00053     size_t _nLevels;
00054     
00055     vector<size_t> _yLevels;
00056     vector<size_t> _phiLevels;
00057     vector<double> _yMinEdges;
00058     vector<double> _yMaxEdges;
00059     vector<double> _phiMinEdges;
00060     vector<double> _phiMaxEdges;
00061     
00062   };
00063 
00064 }
00065 
00066 
00067 #endif