
/** @file  psPhotometry.h
*
*  @brief Contains basic photometric structures.
*
*  This file defines the basic photometric structures.
*
*  @ingroup Photometry
*
*  @author George Gusciora, MHPCC
*
*  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
*  @date $Date: 2005-02-03 00:45:06 $
*
*  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
{
    const psPhotSystem src;            ///< Source photometric system
    const psPhotSystem dst;            ///< Destination photometric system
    const psPhotSystem pP;             ///< Primary color reference
    const psPhotSystem pM;             ///< Primary color reference
    const psPhotSystem sP;             ///< Secondary color reference
    const 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
