From 8f44eb9b4b66e32f66e7a3bca57fcd88816fabe5 Mon Sep 17 00:00:00 2001
From: Martin Reinecke <martin@mpa-garching.mpg.de>
Date: Mon, 3 Jun 2019 13:38:42 +0200
Subject: [PATCH] bug fix

---
 nifty_gridder.cc | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/nifty_gridder.cc b/nifty_gridder.cc
index f97e64f..48c51b6 100644
--- a/nifty_gridder.cc
+++ b/nifty_gridder.cc
@@ -711,7 +711,7 @@ template<typename T> pyarr_c<uint32_t> getIndices(const Baselines<T> &baselines,
   vector<uint32_t> acc(nbu*nbv+1, 0);
   vector<uint32_t> tmp(nrow*(chend-chbegin));
   for (size_t irow=0, idx=0; irow<nrow; ++irow)
-    for (int ichan=chbegin; ichan<chend; ++ichan, ++idx)
+    for (int ichan=chbegin; ichan<chend; ++ichan)
       if (!flags[irow*nchan+ichan])
         {
         auto uvw = baselines.effectiveCoord(irow, ichan);
@@ -723,7 +723,7 @@ template<typename T> pyarr_c<uint32_t> getIndices(const Baselines<T> &baselines,
           iu0 = (iu0+nsafe)>>logsquare;
           iv0 = (iv0+nsafe)>>logsquare;
           ++acc[nbv*iu0 + iv0 + 1];
-          tmp[idx] = nbv*iu0 + iv0;
+          tmp[idx++] = nbv*iu0 + iv0;
           }
         }
 
@@ -732,9 +732,13 @@ template<typename T> pyarr_c<uint32_t> getIndices(const Baselines<T> &baselines,
   auto res = makearray<uint32_t>({acc.back()});
   auto iout = res.mutable_data();
   for (size_t irow=0, idx=0; irow<nrow; ++irow)
-    for (int ichan=chbegin; ichan<chend; ++ichan, ++idx)
+    for (int ichan=chbegin; ichan<chend; ++ichan)
       if (!flags[irow*nchan+ichan])
-        iout[acc[tmp[idx]]++] = irow*nchan+ichan;
+        {
+        auto uvw = baselines.effectiveCoord(irow, ichan);
+        if ((uvw.w>=wmin) && (uvw.w<wmax))
+          iout[acc[tmp[idx++]]++] = irow*nchan+ichan;
+        }
   return res;
   }
 
-- 
GitLab