Index: trunk/ppBackground/src/ppBackgroundStackMath.c
===================================================================
--- trunk/ppBackground/src/ppBackgroundStackMath.c	(revision 36615)
+++ trunk/ppBackground/src/ppBackgroundStackMath.c	(revision 36635)
@@ -94,11 +94,15 @@
       psImage *dec   = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg dec");
       
-      psVector *obs  = psVectorAlloc(image->numRows * image->numCols, PS_TYPE_F32);
-      psVector *model= psVectorAlloc(image->numRows * image->numCols, PS_TYPE_F32);
+      psVector *obs  = psVectorAllocEmpty(image->numRows, PS_TYPE_F32);
+      psVector *model= psVectorAllocEmpty(image->numRows, PS_TYPE_F32);
       
       for (v = 0; v < image->numRows; v++) {
 	for (u = 0; u < image->numCols; u++) {
-	  obs->data.F32[v * image->numCols + u] = image->data.F32[v][u];
-	  model->data.F32[v * image->numCols + u] = psImageMapEval(data->modelMap,ra->data.F32[v][u],dec->data.F32[v][u]);
+	  if ((ra->data.F32[v][u] < data->x_min)||(ra->data.F32[v][u] > data->x_max)||
+	      (dec->data.F32[v][u] < data->y_min)||(dec->data.F32[v][u] > data->y_max)) { continue; }
+	  psVectorAppend(obs,image->data.F32[v][u]);
+	  psVectorAppend(model, psImageMapEval(data->modelMap,ra->data.F32[v][u],dec->data.F32[v][u]));
+	  //	  obs->data.F32[v * image->numCols + u] = image->data.F32[v][u];
+	  //	  model->data.F32[v * image->numCols + u] = psImageMapEval(data->modelMap,ra->data.F32[v][u],dec->data.F32[v][u]);
 	}
       }
@@ -140,4 +144,6 @@
       psImage *model = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg calibrated data");
       psImage *camera= psMetadataLookupPtr(NULL, data->OTA_solutions, chipName);
+      psImage *ra    = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg ra");
+      psImage *dec   = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg dec");
       
       psF32 offset = psMetadataLookupF32(NULL,chipItem->data.md,"bkg offset");
@@ -146,4 +152,7 @@
       for (v = 0; v < image->numRows; v++) {
 	for (u = 0; u < image->numCols; u++) {
+	  if ((ra->data.F32[v][u] < data->x_min)||(ra->data.F32[v][u] > data->x_max)||
+	      (dec->data.F32[v][u] < data->y_min)||(dec->data.F32[v][u] > data->y_max)) { continue; }
+
 	  model->data.F32[v][u] = scale * image->data.F32[v][u] - offset - camera->data.F32[v][u];
 	}
@@ -164,10 +173,11 @@
   int u,v;
 
+  long used;
   psS16 N = psMetadataLookupS16(NULL, data->models, "N");
-  psVector *X = psVectorAlloc(N * 60 * 13 * 13,PS_TYPE_F32);
-  psVector *Y = psVectorAlloc(N * 60 * 13 * 13,PS_TYPE_F32);
-  psVector *Z = psVectorAlloc(N * 60 * 13 * 13,PS_TYPE_F32);
-  psVector *E = psVectorAlloc(N * 60 * 13 * 13,PS_TYPE_F32);
-  psVector *mask = psVectorAlloc(N * 60 * 13 * 13,PS_TYPE_VECTOR_MASK);
+  psVector *X = psVectorAllocEmpty(N * 13 * 13,PS_TYPE_F32);
+  psVector *Y = psVectorAllocEmpty(N * 13 * 13,PS_TYPE_F32);
+  psVector *Z = psVectorAllocEmpty(N * 13 * 13,PS_TYPE_F32);
+  psVector *E = psVectorAllocEmpty(N * 13 * 13,PS_TYPE_F32);
+  psVector *mask = psVectorAllocEmpty(N * 13 * 13,PS_TYPE_VECTOR_MASK);
   j = 0;
   
@@ -187,12 +197,31 @@
       psImage *ra    = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg ra");
       psImage *dec   = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg dec");
+      //      psImage *model = psMetadataLookupPtr(NULL, chipItem->data.md, "bkg image");
       for (v = 0; v < calib->numRows; v++) {
 	for (u = 0; u < calib->numCols; u++) {
-	  X->data.F32[j] = ra->data.F32[v][u];
-	  Y->data.F32[j] = dec->data.F32[v][u];
-	  Z->data.F32[j] = calib->data.F32[v][u];
-	  E->data.F32[j] = 1.0;
-	  mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 0;
+	  if ((ra->data.F32[v][u] < data->x_min)||(ra->data.F32[v][u] > data->x_max)||
+	      (dec->data.F32[v][u] < data->y_min)||(dec->data.F32[v][u] > data->y_max)) {
+	    j++;	    
+	    continue; }
+	  psVectorAppend(X,ra->data.F32[v][u]);
+	  psVectorAppend(Y,dec->data.F32[v][u]);
+	  psVectorAppend(Z,calib->data.F32[v][u]);
+	  psVectorAppend(E,1.0);
+	  psVectorAppend(mask,0);
+/* 	  X->data.F32[j] = ra->data.F32[v][u]; */
+/* 	  Y->data.F32[j] = dec->data.F32[v][u]; */
+/* 	  Z->data.F32[j] = calib->data.F32[v][u]; */
+/* 	  E->data.F32[j] = 1.0; */
+/* 	  mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 0; */
+	  used++;
 	  j++;
+	  
+/* 	  printf("DATA %ld %ld %f %f %f %f\n", */
+/* 		 j,used, */
+/* 		 ra->data.F32[v][u], */
+/* 		 dec->data.F32[v][u], */
+/* 		 calib->data.F32[v][u], */
+/* 		 model->data.F32[v][u]); */
+		 
 	}
       }
@@ -200,7 +229,7 @@
     psFree(chipIter);
   } // End smfs
-
+  printf("%ld %ld\n", j,used);
   bool fitStatus;
-  bool status = psImageMapClipFit(&fitStatus,data->modelMap,stats, mask, 0, X, Y, Z, E);
+  bool status = psImageMapClipFit(&fitStatus,data->modelMap,stats, mask, 1, X, Y, Z, E);
 
   psFree(expIter);
