Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 36833)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 37035)
@@ -28,4 +28,5 @@
   DVO_FORMAT_PS1_V3,
   DVO_FORMAT_PS1_V4,
+  DVO_FORMAT_PS1_V5,
 } DVOTableFormat;
 
@@ -78,15 +79,17 @@
 
 /* catalog values to be loaded */
-# define LOAD_NONE 	0x00
-# define LOAD_AVES 	0x01
-# define LOAD_MEAS 	0x02
-# define LOAD_MISS 	0x04
-# define LOAD_SECF 	0x08 
-# define SKIP_AVES 	0x10
-# define SKIP_MEAS 	0x20
-# define SKIP_MISS 	0x40
-# define SKIP_SECF 	0x80
-
-// # define LOAD_MEAS_META 0x100 -- is this used??
+# define LOAD_NONE 	0x000
+# define LOAD_AVES 	0x001
+# define LOAD_MEAS 	0x002
+# define LOAD_MISS 	0x004
+# define LOAD_SECF 	0x008 
+# define SKIP_AVES 	0x010
+# define SKIP_MEAS 	0x020
+# define SKIP_MISS 	0x040
+# define SKIP_SECF 	0x080
+# define LOAD_LENSING 	0x100
+# define LOAD_LENSOBJ 	0x200
+# define SKIP_LENSING 	0x400
+# define SKIP_LENSOBJ 	0x800
 
 /* photometry code types */
@@ -334,4 +337,7 @@
 // another special case : does not match byte-boundaries
 # include "cmf-ps1-dv3.h"
+# include "cmf-ps1-sv3.h"
+# include "cmf-ps1-v5.h"
+# include "cmf-ps1-v5-lensing.h"
 
 typedef struct {
@@ -434,6 +440,6 @@
 // a reduced-subset structure for relphot & relastro
 typedef struct {
-  float          dR;
-  float          dD;
+  double         R;
+  double         D;
   float          M;
   float          Mcal;
@@ -548,5 +554,8 @@
 
 Measure_PS1_V4alt *gfits_table_get_Measure_PS1_V4alt (FTable *table, off_t *Ndata, char *swapped);
-Measure *Measure_PS1_V4alt_ToInternal (Measure_PS1_V4alt *in, off_t Nvalues);
+Measure *Measure_PS1_V4alt_ToInternal (Average *ave, Measure_PS1_V4alt *in, off_t Nvalues);
+
+/* for some reason I have merged the set of tables and the file description,
+   so I need to have an internal structure to point to the separate files */
 
 /* a catalog contains this data */
@@ -562,8 +571,12 @@
   SecFilt *secfilt;
 
+  // lensing data (optional?)
+  Lensing *lensing;
+  Lensobj *lensobj;
+
   int Nsecfilt;  /* number of secfilt entries for each average entry */
-  off_t Naverage,   Nmeasure,   Nmissing,   Nsecf_mem;  /* current number of each component in memory */
-  off_t Naves_disk, Nmeas_disk, Nmiss_disk, Nsecf_disk; /* current number of each component on disk */
-  off_t Naves_off,  Nmeas_off,  Nmiss_off,  Nsecf_off;  /* index of first loaded data value */
+  off_t Naverage,   Nmeasure,   Nmissing,   Nlensing,      Nlensobj,      Nsecf_mem;  /* current number of each component in memory */
+  off_t Naves_disk, Nmeas_disk, Nmiss_disk, Nlensing_disk, Nlensobj_disk, Nsecf_disk; /* current number of each component on disk */
+  off_t Naves_off,  Nmeas_off,  Nmiss_off,  Nlensing_off,  Nlensobj_off,  Nsecf_off;  /* index of first loaded data value */
 
   // note that we use these for the full-sky relphot analysis
@@ -584,4 +597,6 @@
   struct Catalog *missing_catalog;		/* missing catalog data (split) */
   struct Catalog *secfilt_catalog;		/* secfilt catalog data (split) */
+  struct Catalog *lensing_catalog;		/* lensing catalog data (split) */
+  struct Catalog *lensobj_catalog;		/* lensobj catalog data (split) */
 
   unsigned int objID;
@@ -592,14 +607,16 @@
   char catmode;				/* storage mode (raw, mef, split, mysql) */
   char catformat;			/* storage format (elixir, panstarrs, etc) */
-  char catflags;				/* choices to be loaded */
-  char sorted;				/* is measure table average-sorted? */
+  int sorted;				/* is measure table average-sorted? (NOTE this is an int only because gfits_scan %t requires it) */
   
+  short catflags; /* choices to be loaded */
+
   /* pointers for data manipulation */
-  off_t *found;
-  off_t *image;
-  off_t *mosaic;
-  float *X;
-  float *Y;
-  int   *nOwn; // relastro uses this to count owned detections per object
+  off_t *found_t;
+  off_t *foundWarp_t;
+//  off_t *image_t;
+//  off_t *mosaic_t;
+//  float *X_t;
+//  float *Y_t;
+  int   *nOwn_t; // relastro uses this to count owned detections per object
 
 } Catalog;
@@ -661,41 +678,43 @@
 char     *GetPhotcodeNamebyCode (int code);
 
-float PhotInst (Measure *measure);
-float PhotCat (Measure *measure);
-float PhotSys (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotRel (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure);
-float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt);
-
-float PhotAperInst (Measure *measure);
-float PhotAperCat (Measure *measure);
-float PhotAperSys (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotAperRel (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotAperCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-float PhotAperAve (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotAperRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure);
-
-float PhotKronInst (Measure *measure);
-float PhotKronCat (Measure *measure);
-float PhotKronSys (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotKronRel (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotKronCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotKronRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure);
-float PhotKronAveErr (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotInst (Measure *measure, dvoMagClassType class);
+float PhotCat (Measure *measure, dvoMagClassType class);
+float PhotSys (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code, dvoMagClassType class);
+float PhotErr (Measure *measure, dvoMagClassType class);
+float PhotCalErr (Measure *measure, dvoMagClassType class);
+
+float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
+float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure, dvoMagClassType class, dvoMagSourceType source);
+float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
+
+float PhotInstTiny (MeasureTiny *measure, dvoMagClassType class);
+float PhotCatTiny (MeasureTiny *measure, dvoMagClassType class);
+float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code, dvoMagClassType class);
+
+float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
+float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, dvoMagClassType class, dvoMagSourceType source);
+
+float PhotFluxInst (Measure *measure, dvoMagClassType class);
+float PhotFluxCat (Measure *measure, dvoMagClassType class);
+float PhotFluxSys (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotFluxRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotFluxCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code, dvoMagClassType class);
+
+float PhotFluxAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
+float PhotFluxRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure, dvoMagClassType class, dvoMagSourceType source);
+
+float PhotFluxInstErr (Measure *measure, dvoMagClassType class);
+float PhotFluxCatErr (Measure *measure, dvoMagClassType class);
 
 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt);
-
 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt);
-float PhotAveFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotAvedFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotAveFluxKron (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotAvedFluxKron (PhotCode *code, Average *average, SecFilt *secfilt);
 
 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt);
-float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt);
+float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt);
 float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt);
 unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt);
@@ -704,12 +723,4 @@
 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color);
 
-float PhotInstTiny (MeasureTiny *measure);
-float PhotCatTiny (MeasureTiny *measure);
-float PhotAperTiny (MeasureTiny *measure);
-float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt);
-float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt);
-float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code);
-float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);
-float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure);
 float PhotXmTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);
 float PhotdMTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);
@@ -782,8 +793,8 @@
 /*** conversion functions / I/O conversions ***/
 Average *ReadRawAverage (FILE *f, off_t Naverage, char format, SecFilt **primary);
-Measure *ReadRawMeasure (FILE *f, off_t Nmeasure, char format);
+Measure *ReadRawMeasure (FILE *f, Average *average, off_t Nmeasure, char format);
 SecFilt *ReadRawSecFilt (FILE *f, off_t Nsecfilt, char format);
 int WriteRawAverage (FILE *f, Average *average, off_t Naverage, char format, SecFilt *primary);
-int WriteRawMeasure (FILE *f, Measure *measure, off_t Nmeasure, char format);
+int WriteRawMeasure (FILE *f, Average *average, Measure *measure, off_t Nmeasure, char format);
 int WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format);
 
@@ -791,11 +802,15 @@
 
 Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary);
-Measure *FtableToMeasure (FTable *ftable, off_t *Nmeasure, char *format);
+Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, char *format);
 SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, char *format);
+Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, char *format);
+Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, char *format);
 int      FtableToImage   (FTable *ftable, Header *theader, char *format);
 
 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, char format, SecFilt *primary);
-int MeasureToFtable (FTable *ftable, Measure *measure, off_t Nmeasure, char format);
+int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, char format);
 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format);
+int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, char format);
+int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, char format);
 int ImageToFtable (FTable *ftable, Header *theader, char format);
 int ImageToVtable (VTable *vtable, Header *theader, char format);
@@ -812,4 +827,5 @@
 # include "ps1_v3_defs.h"
 # include "ps1_v4_defs.h"
+# include "ps1_v5_defs.h"
 # include "ps1_ref_defs.h"
 
@@ -906,4 +922,9 @@
 void TessellationTableInit (TessellationTable *tess, int Ntess);
 
+float dvoOffsetR (Measure *measure, Average *average);
+float dvoOffsetD (Measure *measure, Average *average);
+double dvoMeanR (float dR, Average *average);
+double dvoMeanD (float dD, Average *average);
+
 void dvo_average_init (Average *average);
 void dvo_averageT_init (AverageTiny *average);
@@ -911,4 +932,7 @@
 void dvo_measure_init (Measure *measure);
 void dvo_measureT_init (MeasureTiny *measure);
+
+void dvo_lensing_init (Lensing *lensing);
+void dvo_lensobj_init (Lensobj *lensobj);
 
 void InitRegionHosts (RegionHostInfo *hosts, int Nhosts, int NHOSTS);
