
/** @file  psPhotometry.h
*
*  @brief Contains basic photometric structures.
*
*  This file defines the basic photometric structures.
*
*  @ingroup Photometry
*
*  @author George Gusciora, MHPCC
*
*  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
*  @date $Date: 2004-10-27 00:57:30 $
*
*  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
*/

#ifndef PS_PHOTOMETRIC_H
#define PS_PHOTOMETRIC_H

#include "psType.h"
#include "psImage.h"
#include "psArray.h"
#include "psList.h"
#include "psFunctions.h"

/// @addtogroup Photometry
/// @{

/** The photometric system description
 *
 *  The photometric system is defined by the psPhotSystem structure. A 
 *  photometric system is identified by a human-readable name (ie, SDSS.g, 
 *  Landolt92.B, GPC1.OTA32.r). Each photometric system is given a unique 
 *  identifier ID. Observations taken with a specific camera, detector, and 
 *  filter represent their own photometric system, and it may be necessary to 
 *  perform transformations between these systems. Photometric systems 
 *  associated with observations from a specific camera/ detector/filter 
 *  combination can be associated with those components.
 *
 */

typedef struct
{
    const psS32 ID;               ///< ID number for this photometric system
    const char *name;           ///< Name of photometric system
    const char *camera;         ///< Camera for photometric system
    const char *filter;         ///< Filter used for photometric system
    const char *detector;       ///< Detector used for photometric system
}
psPhotSystem;

/** Photometric system transformation
 *
 *  This structure defines the transformation between two photometric systems.
 *
 */

typedef struct
{
    psPhotSystem src;           ///< Source photometric system
    psPhotSystem dst;           ///< Destination photometric system
    psPhotSystem pP;            ///< Primary color reference
    psPhotSystem pM;            ///< Primary color reference
    psPhotSystem sP;            ///< Secondary color reference
    psPhotSystem sM;            ///< Secondary color reference
    float pA;                   ///< Color offset for references
    float sA;                   ///< Color offset for references
    psPolynomial3D transform;   ///< Transformation from source to destination
}
psPhotTransform;

/// @}

#endif
