#ifndef TA_SERENDIPITY_PARAM_H
#define TA_SERENDIPITY_PARAM_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Serendipity Working Group target selection interface
 */

#include <dervish.h>
#include "taCalibObj.h"
#include "taSerendipity.h"
#include "arTargetType.h"
#include "arDetectionFlag.h"
#include "arObjectStatus.h"
#include "arObjectType.h"



/* Serendipity Working Group target selection parameters */
typedef struct taSerendipityParams
{
  float gMinSpec;			/* min g mag for spec */
  float rMinSpec;			/* min r mag for spec */
  float iMinSpec;			/* min i mag for spec */
  float uMinBLUEug;			/* min u mag */
  float uMaxBLUEug;			/* max u mag */
  float gMinBLUEug;			/* min g mag */
  float gMaxBLUEug;			/* max g mag */
  float uerrMaxBLUEug;		/* max u err */
  float gerrMaxBLUEug;		/* max g err */
  float ugMinBLUE;			/* min u-g mag */
  float ugMaxBLUE;			/* max u-g mag */
  float uSpecBLUEug;                    /* brt enuf for spec */
  float gSpecBLUEug;                    /* brt enuf for spec */
  float gMinBLUEgr;			/* min g mag */
  float gMaxBLUEgr;			/* max g mag */
  float rMinBLUEgr;			/* min r mag */
  float rMaxBLUEgr;			/* max r mag */
  float gerrMaxBLUEgr;		/* max g err */
  float rerrMaxBLUEgr;		/* max r err */
  float grMinBLUE;			/* min g-r mag */
  float grMaxBLUE;			/* max g-r mag */
  float rMinREDri;			/* min r mag */
  float rMaxREDri;			/* max r mag */
  float iMinREDri;			/* min i mag */
  float iMaxREDri;			/* max i mag */
  float rerrMaxREDri;		/* max r err */
  float ierrMaxREDri;		/* max i err */
  float riMinRED;                  /* min r-i mag */
  float riMaxRED;                  /* max r-i mag */
  float iMinREDiz;			/* min i mag */
  float iMaxREDiz;			/* max i mag */
  float zMinREDiz;			/* min z mag */
  float zMaxREDiz;			/* max z mag */
  float ierrMaxREDiz;		/* max i err */
  float zerrMaxREDiz;		/* min z err */
  float izMinRED;                  /* min i-z mag */
  float izMaxRED;                  /* max i-z mag */
  float iSpecREDiz;                    /* brt enuf for spec */
  float zSpecREDiz;                    /* brt enuf for spec */
  float gMinDISTgr;			/* min g mag */
  float gMaxDISTgr;			/* max g mag */
  float rMinDISTgr;			/* min r mag */
  float rMaxDISTgr;			/* max r mag */
  float gerrMaxDISTgr;		/* max g err */
  float rerrMaxDISTgr;		/* max r err */
  float grMinDIST;		/* min g-r mag for Distant */
  float grMaxDIST;		/* max g-r mag for Distant */
  float rMinDISTri;			/* min r mag */
  float rMaxDISTri;			/* max r mag */
  float iMinDISTri;			/* min r mag */
  float iMaxDISTri;			/* max r mag */
  float rerrMaxDISTri;		/* max r err */
  float ierrMaxDISTri;		/* max i err */
  float riMinDIST;              /* min r-i mag for Distant */
  float riMaxDIST;              /* max r-i mag for Distant */
  float gMinFIRST;			/* min g mag */
  float gMaxFIRST;			/* max g mag */
  float rMinFIRST;			/* min r mag */
  float rMaxFIRST;			/* max r mag */
  float iMinFIRST;			/* min r mag */
  float iMaxFIRST;			/* max r mag */
  float gerrMaxFIRST;		/* max g err */
  float rerrMaxFIRST;		/* max r err */
  float ierrMaxFIRST;		/* max i err */
  float fint_min;		/* minimum FIRST integrated flux */
  float fint_max;		/* maximum FIRST integrated flux */
  float fmaj_min;		/* minimum FIRST major axis (deconvolved) */
  float fmaj_max;		/* maximum FIRST major axis (deconvolved) */
  float firstDist;		/* distance to first object (arcsec) */
  float sigmaBLUEug;            /* min significance of blue u-g color */
  float sigmaBLUEgr;            /* min significance of blue g-r color */
  float sigmaREDri;            /* min significance of red r-i color */
  float sigmaREDiz;            /* min significance of red i-z color */
  float sigmaDISTgr;            /* min significance of red g-r color */
  float sigmaDISTri;            /* min significance of blue r-i color */
  int priorBLUEug;              /* priority for BLUE in u-g */
  int priorBLUEgr;              /* priority for BLUE in g-r */
  int priorDISTri;              /* priority for blue (DISTANT) in r-i */
  int priorDISTgr;              /* priority for red (DISTANT) in g-r */
  int priorREDri;               /* priority for RED in r-i */
  int priorREDiz;               /* priority for RED in i-z */
  int priorFIRST;               /* priority for FIRST source */
} TA_SERENDIPITY_PARAMS;  /* pragma SCHEMA */

/* Prototypes */
int taSerendipityTargetSelect(TA_CALIB_OBJ *obj,
			      const TA_SERENDIPITY_PARAMS *params);

#ifdef __cplusplus
}
#endif

#endif
