Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 39530)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 39531)
@@ -920,6 +920,10 @@
 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt);
 
-int PhotSecfiltFlags (PhotCode *code, Average *average, SecFilt *secfilt);
-int PhotNcode (PhotCode *code, Average *average, SecFilt *secfilt);
+int   PhotSecfiltFlags (PhotCode *code, Average *average, SecFilt *secfilt);
+int   PhotNwarp (PhotCode *code, Average *average, SecFilt *secfilt);
+int   PhotNwarpGood (PhotCode *code, Average *average, SecFilt *secfilt);
+int   PhotNstack (PhotCode *code, Average *average, SecFilt *secfilt);
+int   PhotNstackDet (PhotCode *code, Average *average, SecFilt *secfilt);
+int   PhotNcode (PhotCode *code, Average *average, SecFilt *secfilt);
 int   PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
Index: trunk/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvodb.h	(revision 39530)
+++ trunk/Ohana/src/libdvo/include/dvodb.h	(revision 39531)
@@ -53,4 +53,8 @@
   MAG_OPTION_NCODE,
   MAG_OPTION_NPHOT, // Nused
+  MAG_OPTION_NWARP,
+  MAG_OPTION_NWARP_GOOD,
+  MAG_OPTION_NSTACK,
+  MAG_OPTION_NSTACK_DET,
   MAG_OPTION_UC_DIST, 
   MAG_OPTION_FLAGS, 
Index: trunk/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 39530)
+++ trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 39531)
@@ -372,4 +372,28 @@
 	case MAG_OPTION_NPHOT: {
 	  value.Int = PhotNphot (field->photcode, average, secfilt, field->magClass, field->magSource);
+	  break;
+	}
+	case MAG_OPTION_NWARP: {
+	  int Nsec = GetPhotcodeNsec (field->photcode->code);
+	  if (Nsec == -1) break;
+	  value.Int = secfilt[Nsec].Nwarp;
+	  break;
+	}
+	case MAG_OPTION_NWARP_GOOD: {
+	  int Nsec = GetPhotcodeNsec (field->photcode->code);
+	  if (Nsec == -1) break;
+	  value.Int = secfilt[Nsec].NwarpGood;
+	  break;
+	}
+	case MAG_OPTION_NSTACK: {
+	  int Nsec = GetPhotcodeNsec (field->photcode->code);
+	  if (Nsec == -1) break;
+	  value.Int = secfilt[Nsec].Nstack;
+	  break;
+	}
+	case MAG_OPTION_NSTACK_DET: {
+	  int Nsec = GetPhotcodeNsec (field->photcode->code);
+	  if (Nsec == -1) break;
+	  value.Int = secfilt[Nsec].NstackDet;
 	  break;
 	}
Index: trunk/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 39530)
+++ trunk/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 39531)
@@ -242,12 +242,16 @@
 
 	  // the following are all values which are come from the secfit table
-	case MAG_OPTION_STDEV:   { value.Flt = PhotMstdev (equiv, average, secfilt, field->magClass, field->magSource); break; }
-	case MAG_OPTION_CHISQ:   { value.Flt = PhotXm (equiv, average, secfilt); break; }
-	case MAG_OPTION_MIN:     { value.Flt = PhotMmin (equiv, average, secfilt); break;}
-	case MAG_OPTION_MAX:     { value.Flt = PhotMmax (equiv, average, secfilt); break;}
-	case MAG_OPTION_NCODE:   { value.Int = PhotNcode (equiv, average, secfilt); break; }
-	case MAG_OPTION_NPHOT:   { value.Int = PhotNphot (equiv, average, secfilt, field->magClass, field->magSource); break; }
-	case MAG_OPTION_UC_DIST: { value.Flt = PhotUCdist (equiv, average, secfilt); break; }
-	case MAG_OPTION_FLAGS:   { value.Int = PhotSecfiltFlags (equiv, average, secfilt); break; }
+	case MAG_OPTION_STDEV:      { value.Flt = PhotMstdev (equiv, average, secfilt, field->magClass, field->magSource); break; }
+	case MAG_OPTION_CHISQ:      { value.Flt = PhotXm (equiv, average, secfilt); break; }
+	case MAG_OPTION_MIN:        { value.Flt = PhotMmin (equiv, average, secfilt); break;}
+	case MAG_OPTION_MAX:        { value.Flt = PhotMmax (equiv, average, secfilt); break;}
+	case MAG_OPTION_NCODE:      { value.Int = PhotNcode (equiv, average, secfilt); break; }
+	case MAG_OPTION_NPHOT:      { value.Int = PhotNphot (equiv, average, secfilt, field->magClass, field->magSource); break; }
+	case MAG_OPTION_NWARP:      { value.Int = PhotNwarp (equiv, average, secfilt); break; }
+	case MAG_OPTION_NWARP_GOOD: { value.Int = PhotNwarpGood (equiv, average, secfilt); break; }
+	case MAG_OPTION_NSTACK:     { value.Int = PhotNstack (equiv, average, secfilt); break; }
+	case MAG_OPTION_NSTACK_DET: { value.Int = PhotNstackDet (equiv, average, secfilt); break; }
+	case MAG_OPTION_UC_DIST:    { value.Flt = PhotUCdist (equiv, average, secfilt); break; }
+	case MAG_OPTION_FLAGS:      { value.Int = PhotSecfiltFlags (equiv, average, secfilt); break; }
 	  
 	  // the following values come from the mean lensobj table
Index: trunk/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbFields.c	(revision 39530)
+++ trunk/Ohana/src/libdvo/src/dbFields.c	(revision 39531)
@@ -242,4 +242,8 @@
   if (!strcasecmp (string, "ncode"))         return MAG_OPTION_NCODE;
   if (!strcasecmp (string, "nphot"))         return MAG_OPTION_NPHOT;
+  if (!strcasecmp (string, "nwarp"))         return MAG_OPTION_NWARP;
+  if (!strcasecmp (string, "nwarp_good"))    return MAG_OPTION_NWARP_GOOD;
+  if (!strcasecmp (string, "nstack"))        return MAG_OPTION_NSTACK;
+  if (!strcasecmp (string, "nstack_det"))    return MAG_OPTION_NSTACK_DET;
   if (!strcasecmp (string, "uc_dist"))       return MAG_OPTION_UC_DIST;
   if (!strcasecmp (string, "flags"))         return MAG_OPTION_FLAGS;
@@ -433,4 +437,8 @@
 
   switch (field->magOption) {
+    case MAG_OPTION_NWARP:
+    case MAG_OPTION_NWARP_GOOD:
+    case MAG_OPTION_NSTACK:
+    case MAG_OPTION_NSTACK_DET:
     case MAG_OPTION_NCODE:
     case MAG_OPTION_NPHOT:
Index: trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39530)
+++ trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39531)
@@ -759,4 +759,52 @@
   }
   return (Mstdev);
+}
+
+// return the number of detections in this filter (gpc1)
+int PhotNwarp (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
+
+  if (code == NULL) return 0;
+
+  int Ns = photcodes[0].hashNsec[code[0].code];
+  if (Ns == -1) return 0;
+
+  return secfilt[Ns].Nwarp;
+}
+
+// return the number of detections in this filter (gpc1)
+int PhotNwarpGood (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
+
+  if (code == NULL) return 0;
+
+  int Ns = photcodes[0].hashNsec[code[0].code];
+  if (Ns == -1) return 0;
+
+  return secfilt[Ns].NwarpGood;
+}
+
+// return the number of detections in this filter (gpc1)
+int PhotNstack (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
+
+  if (code == NULL) return 0;
+
+  int Ns = photcodes[0].hashNsec[code[0].code];
+  if (Ns == -1) return 0;
+
+  return secfilt[Ns].Nstack;
+}
+
+// return the number of detections in this filter (gpc1)
+int PhotNstackDet (PhotCode *code, Average *average, SecFilt *secfilt) {
+  OHANA_UNUSED_PARAM(average);
+
+  if (code == NULL) return 0;
+
+  int Ns = photcodes[0].hashNsec[code[0].code];
+  if (Ns == -1) return 0;
+
+  return secfilt[Ns].NstackDet;
 }
 
