Index: /branches/eam_branch_20080413/psphot/src/pmFootprintArrayGrow.c
===================================================================
--- /branches/eam_branch_20080413/psphot/src/pmFootprintArrayGrow.c	(revision 17459)
+++ /branches/eam_branch_20080413/psphot/src/pmFootprintArrayGrow.c	(revision 17460)
@@ -8,4 +8,6 @@
     assert (footprints->n == 0 || pmFootprintTest(footprints->data[0]));
 
+    psTimerStart ("grow");
+
     if (footprints->n == 0) {		// we don't know the size of the footprint's region
 	return psArrayAlloc(0);
@@ -16,4 +18,6 @@
      */
     psImage *idImage = pmSetFootprintArrayIDs(footprints, true);
+    psLogMsg ("psphot", PS_LOG_DETAIL, "set footprint array IDs: %f sec\n", psTimerMark ("grow"));
+
     if (r <= 0) {
 	r = 1;				// r == 1 => no grow
@@ -32,8 +36,20 @@
     }
 
+# if (1)    
+    psImage *f32ImageIn = psImageCopy (NULL, idImage, PS_TYPE_F32);
+    psImage *f32ImageOut = psImageConvolveFFT(NULL, f32ImageIn, NULL, 0, circle);
+    psImage *grownIdImage = psImageCopy (NULL, f32ImageOut, PS_TYPE_S32);
+    psFree (f32ImageIn);
+    psFree (f32ImageOut);
+# else
     psImage *grownIdImage = psImageConvolveDirect(NULL, idImage, circle); // Here's the actual grow step
+# endif
+
+    psLogMsg ("psphot", PS_LOG_DETAIL, "convolved with grow disc: %f sec\n", psTimerMark ("grow"));
     psFree(circle);	
 
     psArray *grown = pmFootprintsFind(grownIdImage, 0.5, 1); // and here we rebuild the grown footprints
+    psLogMsg ("psphot", PS_LOG_DETAIL, "found grown footprints: %f sec\n", psTimerMark ("grow"));
+
     assert (grown != NULL);
     psFree(idImage); psFree(grownIdImage);
@@ -46,4 +62,6 @@
     psFree((psArray *)peaks);
 
+    psLogMsg ("psphot", PS_LOG_DETAIL, "finished grow: %f sec\n", psTimerMark ("grow"));
+
     return grown;
     
