Index: /branches/eam_branches/relphot.20200519/test/relphot.tgroups.dvo
===================================================================
--- /branches/eam_branches/relphot.20200519/test/relphot.tgroups.dvo	(revision 41369)
+++ /branches/eam_branches/relphot.20200519/test/relphot.tgroups.dvo	(revision 41370)
@@ -1,5 +1,5 @@
 # -*-sh-*-
 
-$TAP_BREAK = 1
+$TAP_BREAK = 0
 $TAP_VERBOSE = 1
 input tap.dvo
@@ -14,5 +14,5 @@
 $DO_SYNTH = 1
 $DO_TYCHO = 1
-$NC_CLOUDS = 0.08
+$NC_CLOUDS = 0.20
 $UC_CLOUDS = 0.02
 
@@ -58,5 +58,16 @@
 
   # run relphot on the db and check that the images now match the expected values
-  tapEXEC relphot -images g,r -v -region 9.5 10.5 19.5 20.5 -D CATDIR $catdir -D STAR_TOOFEW 1 -D SIGMA_LIM 0.07 -statmode WT_MEAN -cloud-limit 0.5 -D IMAGE_OFFSET 0.5 -update
+  tapEXEC relphot -images g,r -v -region 9.5 10.5 19.5 20.5 -D CATDIR $catdir -D STAR_TOOFEW 1 -statmode WT_MEAN -cloud-limit 0.5 -update -nloop 12
+
+  # reset the per-filter ZPT_OFF:$filter values
+  for i 0 $filt_uc:n
+    $filter = $filt_uc:$i
+    $ZPT_OFF:$filter = NAN
+  end
+  for i 0 $filt_nc:n
+    $filter = $filt_nc:$i
+    $ZPT_OFF:$filter = NAN
+  end
+
   for i 0 mjd_uc[]
     ckexposure $catdir mjd_uc[$i] zpt_uc[$i] exptime_uc[$i] airmass_uc[$i] $filt_uc:$i relphot_uc
@@ -114,4 +125,5 @@
     klam_uc[$i] = $klam_nominal:$filt_uc:$i 
     zpt_uc[$i]  = $zpt_nominal:$filt_uc:$i + 2.5*log(exptime_uc[$i]) + klam_uc[$i]*(airmass_uc[$i] - 1.0) + $UC_CLOUDS*(rnd(klam_uc[$i]) - 0.5)
+    $ZPT_OFF:$filt_uc:$i = NAN
   end    
   set mjd_uc = 55000.00 + 0.01*(tmpseq % 3) + 10.0*int(tmpseq / 3)
@@ -135,4 +147,5 @@
     klam_nc[$i] = $klam_nominal:$filt_nc:$i 
     zpt_nc[$i]  = $zpt_nominal:$filt_nc:$i + 2.5*log(exptime_nc[$i]) + klam_nc[$i]*(airmass_nc[$i] - 1.0) + $NC_CLOUDS*(rnd(klam_nc[$i]) - 0.5)
+    $ZPT_OFF:$filt_uc:$i = NAN
   end    
   set mjd_nc = 55000.10 + 0.01*(tmpseq % 3) + 10.0*int(tmpseq / 3)
@@ -153,5 +166,15 @@
 
   # run relphot on the db and check that the images now match the expected values
-  tapEXEC relphot -images g,r -v -region 9.5 10.5 19.5 20.5 -D CATDIR $catdir -D STAR_TOOFEW 1 -D SIGMA_LIM 0.07 -statmode WT_MEAN -cloud-limit 0.5 -D IMAGE_OFFSET 0.5 -update -synthphot_zpts $fileroot.synthzpts.fits -nloop 24
+  tapEXEC relphot -images g,r -v -region 9.5 10.5 19.5 20.5 -D CATDIR $catdir -D STAR_TOOFEW 1 -statmode WT_MEAN -cloud-limit 0.5 -update -nloop 12
+
+  # reset the per-filter ZPT_OFF:$filter values
+  for i 0 $filt_uc:n
+    $filter = $filt_uc:$i
+    $ZPT_OFF:$filter = NAN
+  end
+  for i 0 $filt_nc:n
+    $filter = $filt_nc:$i
+    $ZPT_OFF:$filter = NAN
+  end
 
   for i 0 mjd_uc[]
@@ -200,5 +223,16 @@
 
   skyregion {$RA_CENTER - 0.2/dcos($DEC_CENTER)} {$RA_CENTER + 0.2/dcos($DEC_CENTER)} {$DEC_CENTER - 0.2} {$DEC_CENTER + 0.2} 
-  mextract ra dec mag xccd yccd dbflags photflags where (abs(time - $MJD_IMAGE) < 0.0001)
+
+  ## calculate the average zero point offset
+  if (isnan($ZPT_OFF:$FILTER)) 
+    avextract ra dec $FILTER
+    match2d -closest ra dec stars_ra stars_dec 0.001 -index1 index1 -index2 index2
+    reindex stars_tru_m = stars_mag using index1
+    set dm_tru = $FILTER - stars_tru_m
+    vstat -q dm_tru
+    $ZPT_OFF:$FILTER = $MEDIAN
+  end
+
+  mextract ra dec mag xccd yccd dbflags photflags time mag:sys mag:rel mag:inst mag:ave where (abs(time - $MJD_IMAGE) < 0.0001)
  
   match2d -closest ra dec stars_ra stars_dec 0.001 -index1 index1 -index2 index2
@@ -226,45 +260,38 @@
   end
 
-  # uncorrected values behave like this:
-  #   mag_DVO  = m_inst + zpt_nominal + 2.5*log(exptime) + K*(airmass - 1.0)
-  #   mag_real = m_inst + zpt_real
-  #   dm = mag_DVO - mag_real = zpt_nominal - zpt_real
-  #   <dm> - zpt_nominal + zpt_real ~ 0.0
-  #   zpt_real (in this case) = 25.0  + 2.5*log(exptime) + K*(airmass - 1.0) 
-  #     (actually, it is the value in the vector 'zpt' for this entry
-  #   zpt_nominal = 24.58
-
-  # setphot-corrected values behave like this:
-  #   mag_DVO  = mag_real (because m_inst has cell_offset applied)
-  #   dm = mag_DVO - mag_real ~ 0.0
-
   $ZPT_REAL_NORM = $ZPT_REAL - 2.5*log($EXPTIME) - $KLAM_NOMINAL*($AIRMASS - 1.0)
 
   if ("$FUNC_MODE" == "raw") 
-    # vstat -q dm$ix\$iy
-    # echo cell_off[$ix][$iy] {$MEDIAN - $ZPT_NOMINAL + $ZPT_REAL + cell_off[$ix][$iy]} $MEDIAN $MEAN $SIGMA 
-  
     set dm_adjust = dm_good - $ZPT_NOMINAL + $ZPT_REAL_NORM
-    # echo set dm_adjust = dm_good - $ZPT_NOMINAL + $ZPT_REAL_NORM
 
     vstat -q dm_adjust
-    sprintf line "addstar raw ZP %8.2f $FILTER %6.3f %6.3f %6.3f: %7.4f %7.4f : %6.3f" $MJD_IMAGE $ZPT_REAL $ZPT_REAL_NORM $ZPT_NOMINAL $MEAN $SIGMA dm_adjust[]
-    tapOK {abs($MEAN) < 0.005} "$line"
+    sprintf line "addstar raw ZP %8.2f $FILTER %6.3f %6.3f %6.3f (%7.4f): %7.4f %7.4f : %6.3f" $MJD_IMAGE $ZPT_REAL $ZPT_REAL_NORM $ZPT_NOMINAL {$ZPT_REAL_NORM - $ZPT_NOMINAL} $MEAN $SIGMA dm_adjust[]
+    tapOK {abs($MEAN) < 0.005} "RAW  : $line"
     return
   end
 
   if (("$FUNC_MODE" == "relphot_uc") || ("$FUNC_MODE" == "relphot_nc"))
-    vstat -q dm_good
-    sprintf line "relphot     ZP %8.2f $FILTER %6.3f %6.3f %6.3f: %7.4f %7.4f : %3d" $MJD_IMAGE $ZPT_REAL $ZPT_REAL_NORM $ZPT_NOMINAL $MEAN $SIGMA dm_good[]
+
+    ## relphot does not set an absolute zero point, so we need to find that and subtract
+    set dm_adjust = dm_good - $ZPT_OFF:$FILTER
+
+    vstat -q dm_adjust
+    sprintf line "relphot     ZP %8.2f $FILTER %6.3f %6.3f %6.3f (%7.4f) : %7.4f %7.4f : %3d" $MJD_IMAGE $ZPT_REAL $ZPT_REAL_NORM $ZPT_NOMINAL {$ZPT_REAL_NORM - $ZPT_NOMINAL} $MEAN $SIGMA dm_adjust[]
 
     if ("$FUNC_MODE" == "relphot_uc")
-      tapOK {abs($MEAN) < 0.001} "$line"
-      tapOK {abs($SIGMA) < 0.001} "$line"
+      tapOK {abs($MEAN)  < 0.001} "MEAN : $line"
+      tapOK {abs($SIGMA) < 0.001} "SIGMA: $line"
     end
     if ("$FUNC_MODE" == "relphot_nc")
       # XXX NOTE relaxed condition : bad photometry points are partly clipped but still cause a bias
-      tapOK {abs($MEAN) < 0.020} "$line"
-      tapOK {abs($SIGMA) < 0.020} "$line"
+      tapOK {abs($MEAN)  < 0.020} "MEAN : $line"
+      tapOK {abs($SIGMA) < 0.020} "SIGMA: $line"
     end
+
+    if ($PLOT)
+      cursor 1
+      if ("$KEY" == "Escape") break
+    end
+    return
   end
 
@@ -396,5 +423,5 @@
   # PM_SOURCE_MODE_OFF_CHIP         = 0x80000000, ///< peak lands off edge of chip
 
-  write -f "%10.6f %10.6f %7.3f  %6.1f %6.1f %7.3f 0x%x" $1 stars_r stars_d stars_mr stars_x stars_y stars_mi stars_fl
+  write -f "%10.6f %10.6f %8.4f  %6.1f %6.1f %8.4f 0x%x" $1 stars_r stars_d stars_mr stars_x stars_y stars_mi stars_fl
 end
 
