Index: /branches/eam_branches/ipp-20121130/Ohana/src/opihi/dvo/gstar.c
===================================================================
--- /branches/eam_branches/ipp-20121130/Ohana/src/opihi/dvo/gstar.c	(revision 34819)
+++ /branches/eam_branches/ipp-20121130/Ohana/src/opihi/dvo/gstar.c	(revision 34820)
@@ -1,3 +1,20 @@
 # include "dvoshell.h"
+
+typedef enum {
+  GSTAR_AVE_MAG,
+  GSTAR_AVE_MAG_ERR,
+  GSTAR_AVE_MAG_CHISQ,
+  GSTAR_FILTER_NAMES,
+  GSTAR_SECF_FLAGS,
+  GSTAR_AVE_AP_MAG,
+  GSTAR_AVE_MAG_20,
+  GSTAR_AVE_MAG_80,
+  GSTAR_AVE_KRON_MAG,
+  GSTAR_AVE_KRON_MAG_ERR,
+  GSTAR_STACK_FLUX_PSF,
+  GSTAR_STACK_FLUX_PSF_ERR,
+  GSTAR_STACK_FLUX_KRON,
+  GSTAR_STACK_FLUX_KRON_ERR,
+} GSTAR_SECF_CODES;
 
 void initPhotcodeSequence (int Nsecfilt);
@@ -13,5 +30,5 @@
   off_t i, Nstars, *N1;
   off_t j, k, m, N, Nlo, Nhi;
-  int Nsecfilt, NPTS, QUIET, FULL_OUTPUT, INST;
+  int Nsecfilt, NPTS, QUIET, FULL_OUTPUT, STACK_OUTPUT, INST;
   int found, GetMeasures;
   int SaveVectors;
@@ -55,4 +72,10 @@
   if ((N = get_argument (argc, argv, "-full"))) {
     FULL_OUTPUT = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+
+  STACK_OUTPUT = FALSE;
+  if ((N = get_argument (argc, argv, "-stack"))) {
+    STACK_OUTPUT = TRUE;
     remove_argument (N, &argc, argv);
   }
@@ -216,34 +239,60 @@
       
 	/* filter names */
-	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 3);
+	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_FILTER_NAMES);
 	gprint (GP_LOG, "\n");
 
 	/* average mags */
-	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 0);
+	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG);
 	gprint (GP_LOG, "\n");
 
 	/* average mag errors */
-	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 1);
+	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_ERR);
 	gprint (GP_LOG, "\n");
 
 	/* average mag chisq */
-	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 2);
+	for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_CHISQ);
 	gprint (GP_LOG, "\n");
 
 	if (FULL_OUTPUT) {
 	  /* Map */
-	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 5);
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_AP_MAG);
+	  gprint (GP_LOG, "\n");
+
+	  /* Mkron */
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_KRON_MAG);
+	  gprint (GP_LOG, "\n");
+
+	  /* dMkron */
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_KRON_MAG_ERR);
 	  gprint (GP_LOG, "\n");
 
 	  /* M_20 */
-	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 6);
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_20);
 	  gprint (GP_LOG, "\n");
 
 	  /* M_80 */
-	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 7);
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_AVE_MAG_80);;
 	  gprint (GP_LOG, "\n");
 
 	  /* secfilt flags */
-	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, 4);
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_SECF_FLAGS);
+	  gprint (GP_LOG, "\n");
+
+	}
+	if (STACK_OUTPUT) {
+	  /* FluxPSF */
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_STACK_FLUX_PSF);
+	  gprint (GP_LOG, "\n");
+
+	  /* dFluxPSF */
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_STACK_FLUX_PSF_ERR);
+	  gprint (GP_LOG, "\n");
+
+	  /* FluxKron */
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_STACK_FLUX_KRON);
+	  gprint (GP_LOG, "\n");
+
+	  /* dFluxKron */
+	  for (j = 0; j < Nsecfilt; j++) printPhotcodeSequence (&catalog.average[k], &catalog.secfilt[Nsecfilt*k], j, GSTAR_STACK_FLUX_KRON_ERR);
 	  gprint (GP_LOG, "\n");
 
@@ -279,4 +328,6 @@
 		gprint (GP_LOG, "%6.3f ", catalog.measure[m].Mcal);
 		gprint (GP_LOG, "%6.3f ", catalog.measure[m].Map);
+		gprint (GP_LOG, "%6.3f ", catalog.measure[m].Mkron);
+		gprint (GP_LOG, "%6.3f ", catalog.measure[m].dMkron);
 		gprint (GP_LOG, "%5.1f ", pow(10.0, 0.4*catalog.measure[m].dt));
 		gprint (GP_LOG, "%5.3f ", catalog.measure[m].airmass);
@@ -296,4 +347,10 @@
 		gprint (GP_LOG, "%.1f ", catalog.measure[m].extNsigma);
 		gprint (GP_LOG, "%.1f ", FromShortDegrees(catalog.measure[m].theta));
+	    }
+	    if (STACK_OUTPUT) {
+		gprint (GP_LOG, "%10.3e ", catalog.measure[m].FluxPSF);
+		gprint (GP_LOG, "%10.3e ", catalog.measure[m].dFluxPSF);
+		gprint (GP_LOG, "%10.3e ", catalog.measure[m].FluxKron);
+		gprint (GP_LOG, "%10.3e ", catalog.measure[m].dFluxKron);
 	    }
 	    gprint (GP_LOG, "\n");
@@ -351,4 +408,11 @@
 }
 
+void print_double_exp (double value) {
+  if (isnan(value)) 
+    gprint (GP_LOG, "  NaN    ");
+  else 
+    gprint (GP_LOG, "%10.3e ", value);
+}
+
 void print_short (double value, short int ival) {
   if (ival == NAN_S_SHORT) 
@@ -386,5 +450,4 @@
 }
 
-
 void printPhotcodeSequence (Average *average, SecFilt *secfilt, int entry, int type) {
 
@@ -395,5 +458,5 @@
 
   switch (type) {
-    case 0: /* average mags */
+    case GSTAR_AVE_MAG: /* average mags */
       if (seq == -1) {
 	print_double (NAN);
@@ -403,5 +466,5 @@
       break;
 
-    case 1: /* average mags errors */
+    case GSTAR_AVE_MAG_ERR: /* average mags errors */
       if (seq == -1) {
 	print_double (NAN);
@@ -411,5 +474,5 @@
       break;
 
-    case 2: /* average mag chisq */
+    case GSTAR_AVE_MAG_CHISQ: /* average mag chisq */
       if (seq == -1) {
 	print_short (NAN_S_SHORT, NAN_S_SHORT);
@@ -419,10 +482,10 @@
       break;
 
-    case 3: /* filter names */
+    case GSTAR_FILTER_NAMES: /* filter names */
       code = GetPhotcodebyNsec (seq);
       gprint (GP_LOG, "  %-6s ", code[0].name);
       break;
 
-    case 4: /* secfilt flags */
+    case GSTAR_SECF_FLAGS: /* secfilt flags */
       if (seq == -1) {
 	gprint (GP_LOG, "%08x ", 0);
@@ -432,5 +495,5 @@
       break;
 
-    case 5: /* average ap mags */
+    case GSTAR_AVE_AP_MAG: /* average ap mags */
       if (seq == -1) {
 	print_double (NAN);
@@ -440,5 +503,5 @@
       break;
 
-    case 6: /* average ap mags */
+    case GSTAR_AVE_MAG_20: /* average ap mags */
       if (seq == -1) {
 	print_double (NAN);
@@ -448,5 +511,5 @@
       break;
 
-    case 7: /* average ap mags */
+    case GSTAR_AVE_MAG_80: /* average ap mags */
       if (seq == -1) {
 	print_double (NAN);
@@ -456,4 +519,52 @@
       break;
 
-  }
-}
+    case GSTAR_AVE_KRON_MAG: /* average ap mags */
+      if (seq == -1) {
+	print_double (NAN);
+      } else {
+	print_double (secfilt[seq].Mkron);
+      }
+      break;
+
+    case GSTAR_AVE_KRON_MAG_ERR: /* average ap mags */
+      if (seq == -1) {
+	print_double (NAN);
+      } else {
+	print_double (secfilt[seq].dMkron);
+      }
+      break;
+
+    case GSTAR_STACK_FLUX_PSF: /* average ap mags */
+      if (seq == -1) {
+	print_double (NAN);
+      } else {
+	print_double_exp (secfilt[seq].FluxPSF);
+      }
+      break;
+
+    case GSTAR_STACK_FLUX_PSF_ERR: /* average ap mags */
+      if (seq == -1) {
+	print_double (NAN);
+      } else {
+	print_double_exp (secfilt[seq].dFluxPSF);
+      }
+      break;
+
+    case GSTAR_STACK_FLUX_KRON: /* average ap mags */
+      if (seq == -1) {
+	print_double (NAN);
+      } else {
+	print_double_exp (secfilt[seq].FluxKron);
+      }
+      break;
+
+    case GSTAR_STACK_FLUX_KRON_ERR: /* average ap mags */
+      if (seq == -1) {
+	print_double (NAN);
+      } else {
+	print_double_exp (secfilt[seq].dFluxKron);
+      }
+      break;
+
+  }
+}
