00001
00002
00008 #ifndef __CGRIDDER_H__
00009 #define __CGRIDDER_H__
00010
00011 #include "Matrix.h"
00012 #include "Cvals.h"
00013
00014
00029 class CGridder
00030 {
00031 public:
00032 CGridder(Cvals * xval, Cvals * yval, Cvals * binval,
00033 double xmin, double xmax, double ymin, double ymax,
00034 int istart, int iend);
00035 virtual ~CGridder(){};
00037 virtual int doGridding()=0;
00039 Matrix<float> * getDataPtr(){ return _data; };
00040
00041 protected:
00042 void allocateMemory(int nx, int ny);
00043
00044 int getStartIndex () const { return _istart; };
00045 int getEndIndex () const { return _iend; };
00047 void setNx(const int & nx) { _nx = nx; };
00048 void setNy(const int & ny) { _ny = ny; };
00049
00050 Matrix<float> * _data;
00052 int _nx;
00053 int _ny;
00055 Cvals * _xval;
00056 Cvals * _yval;
00057 Cvals * _binval;
00059 double _xmin;
00060 double _xmax;
00061 double _ymin;
00062 double _ymax;
00063
00064 int _ngridded;
00066 private:
00067
00068 int _istart;
00069 int _iend;
00071 };
00072
00073
00074
00084 class CProj3DKernel : public CGridder
00085 {
00086 public:
00087 CProj3DKernel(int nx, int ny, Cvals * xval, Cvals * yval, Cvals * binval,
00088 double xmin, double xmax, double ymin, double ymax,
00089 int istart, int iend);
00090
00091 int doGridding();
00092
00093 private:
00094 static void setupIntegratedKernel();
00095 static float wFromKernTab(const float & R2);
00096
00097 static bool _setup_int_kernel;
00098 static int _int_kernel_size;
00099 static vector<float> _intkerntab;
00101 static double _radkernel;
00102 static double _radkernel2;
00103 static double _dR2table;
00104 static double _ddR2table;
00105
00106 };
00107
00108
00119 class CProj3DGridder : public CGridder
00120 {
00121 public:
00122 CProj3DGridder(int nx, int ny, Cvals * xval, Cvals * yval, Cvals * binval,
00123 double xmin, double xmax, double ymin, double ymax,
00124 int istart, int iend);
00125 ~CProj3DGridder();
00126
00127 int doGridding();
00128
00129 Matrix<int> * getNumberPtr(){ return _number; };
00130
00131 private:
00132 Matrix<int> * _number;
00133 };
00134
00135
00144 class CParticleIDFinder : public CGridder
00145 {
00146 public:
00147 CParticleIDFinder(Cvals * xval, Cvals * yval, Cvals * binval,
00148 double xmin, double xmax, double ymin, double ymax,
00149 int istart, int iend);
00150
00151 int doGridding();
00152 };
00153
00154
00155 #endif // __CGRIDDER_H__