- for (iView = 0; iView < m_nView; iView++) {
- unsigned int iDet;
- for (iDet = 0; iDet < m_nDet; iDet++) {
- pcIn[iDet].re = getDetectorArray(iView).detValues()[iDet];
+ double dZeropadRatio = static_cast<double>(iNumInterpDetWithZeros) / static_cast<double>(iInterpDet);
+
+ fftw_plan plan = fftw_create_plan (iNumInterpDetWithZeros, FFTW_FORWARD, FFTW_IN_PLACE | FFTW_ESTIMATE | FFTW_USE_WISDOM);
+
+ fftw_complex* pcIn = new fftw_complex [iNumInterpDetWithZeros];
+ std::complex<double>** ppcDetValue = new std::complex<double>* [m_nView];
+ double dInterpScale = (m_nDet-1) / static_cast<double>(iInterpDet-1) / SQRT2;
+
+ for (unsigned int iView = 0; iView < m_nView; iView++) {
+ DetectorValue* detval = getDetectorArray(iView).detValues();
+ LinearInterpolator<DetectorValue> projInterp (detval, m_nDet);
+ for (unsigned int iDet = 0; iDet < iInterpDet; iDet++) {
+// double dInterpPos = iInterpDet * dInterpScale;
+ double dInterpPos = (m_nDet / 2.) + (iDet - iInterpDet/2.) * dInterpScale;
+ pcIn[iDet].re = projInterp.interpolate (dInterpPos);