+const int Backprojector::BPROJ_INVALID = -1;
+const int Backprojector::BPROJ_TRIG = 0;
+const int Backprojector::BPROJ_TABLE = 1;
+const int Backprojector::BPROJ_DIFF = 2;
+const int Backprojector::BPROJ_IDIFF = 3;
+
+const char* const Backprojector::s_aszBackprojectName[] =
+{
+ "trig",
+ "table",
+ "diff",
+ "idiff",
+};
+
+const char* const Backprojector::s_aszBackprojectTitle[] =
+{
+ "Direct Trigometric",
+ "Trigometric Table",
+ "Difference Iteration",
+ "Integer Difference Iteration",
+};
+
+const int Backprojector::s_iBackprojectCount = sizeof(s_aszBackprojectName) / sizeof(const char*);
+
+const int Backprojector::INTERP_INVALID = -1;
+const int Backprojector::INTERP_NEAREST = 0;
+const int Backprojector::INTERP_LINEAR = 1;
+const int Backprojector::INTERP_CUBIC = 2;
+const int Backprojector::INTERP_FREQ_PREINTERPOLATION = 3;
+#if HAVE_BSPLINE_INTERP
+const int Backprojector::INTERP_BSPLINE = 4;
+const int Backprojector::INTERP_1BSPLINE = 5;
+const int Backprojector::INTERP_2BSPLINE = 6;
+const int Backprojector::INTERP_3BSPLINE = 7;
+#endif
+
+const char* const Backprojector::s_aszInterpName[] =
+{
+ "nearest",
+ "linear",
+ "cubic",
+#if HAVE_FREQ_PREINTERP
+ "freq_preinterpolationj",
+#endif
+#if HAVE_BSPLINE_INTERP
+ "bspline",
+ "1bspline",
+ "2bspline",
+ "3bspline",
+#endif
+};
+
+const char* const Backprojector::s_aszInterpTitle[] =
+{
+ "Nearest",
+ "Linear",
+ "Cubic",
+#if HAVE_FREQ_PREINTERP
+ "Frequency Preinterpolation",
+#endif
+#if HAVE_BSPLINE_INTERP
+ "B-Spline",
+ "B-Spline 1st Order",
+ "B-Spline 2nd Order",
+ "B-Spline 3rd Order",
+#endif
+};
+
+const int Backprojector::s_iInterpCount = sizeof(s_aszInterpName) / sizeof(const char*);
+
+
+
+Backprojector::Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName,
+ const char* const interpName, const int interpFactor, const ReconstructionROI* pROI)