/*
|
/*
|
xml.c
|
xml.c
|
|
|
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
*
|
*
|
* Part of: SExtractor
|
* Part of: SExtractor
|
*
|
*
|
* Author: E.BERTIN (IAP)
|
* Author: E.BERTIN (IAP)
|
*
|
*
|
* Contents: XML logging.
|
* Contents: XML logging.
|
*
|
*
|
* Last modify: 19/12/2007
|
* Last modify: 14/12/2009
|
*
|
*
|
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
*/
|
*/
|
|
|
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
#include "config.h"
|
#include "config.h"
|
#endif
|
#endif
|
|
|
#include <math.h>
|
#include <math.h>
|
#include <stdio.h>
|
#include <stdio.h>
|
#include <stdlib.h>
|
#include <stdlib.h>
|
#include <string.h>
|
#include <string.h>
|
#include <time.h>
|
#include <time.h>
|
|
|
#include "define.h"
|
#include "define.h"
|
#include "globals.h"
|
#include "globals.h"
|
#include "fits/fitscat.h"
|
#include "fits/fitscat.h"
|
#include "field.h"
|
#include "field.h"
|
#include "key.h"
|
#include "key.h"
|
#include "prefs.h"
|
#include "prefs.h"
|
#include "xml.h"
|
#include "xml.h"
|
|
|
extern time_t thetimet,thetimet2; /* from makeit.c */
|
extern time_t thetimet,thetimet2; /* from makeit.c */
|
extern pkeystruct key[]; /* from preflist.h */
|
extern pkeystruct key[]; /* from preflist.h */
|
extern char keylist[][32]; /* from preflist.h */
|
extern char keylist[][32]; /* from preflist.h */
|
xmlstruct *xmlstack = NULL;
|
xmlstruct *xmlstack = NULL;
|
int nxml=0, nxmlmax=0;
|
int nxml=0, nxmlmax=0;
|
|
|
/****** init_xml ************************************************************
|
/****** init_xml ************************************************************
|
PROTO int init_xml(void)
|
PROTO int init_xml(void)
|
PURPOSE Initialize a set of meta-data kept in memory before being written to the
|
PURPOSE Initialize a set of meta-data kept in memory before being written to the
|
XML file
|
XML file
|
INPUT Number of image extensions.
|
INPUT Number of image extensions.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 03/07/2006
|
VERSION 03/07/2006
|
***/
|
***/
|
int init_xml(int next)
|
int init_xml(int next)
|
{
|
{
|
QMALLOC(xmlstack, xmlstruct, next);
|
QMALLOC(xmlstack, xmlstruct, next);
|
nxml = 0;
|
nxml = 0;
|
nxmlmax = next;
|
nxmlmax = next;
|
|
|
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
}
|
}
|
|
|
|
|
/****** end_xml ************************************************************
|
/****** end_xml ************************************************************
|
PROTO int end_xml(void)
|
PROTO int end_xml(void)
|
PURPOSE Free the set of meta-data kept in memory.
|
PURPOSE Free the set of meta-data kept in memory.
|
INPUT -.
|
INPUT -.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 12/07/2006
|
VERSION 12/07/2006
|
***/
|
***/
|
int end_xml(void)
|
int end_xml(void)
|
{
|
{
|
free(xmlstack);
|
free(xmlstack);
|
|
|
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
}
|
}
|
|
|
/****** update_xml ***********************************************************
|
/****** update_xml ***********************************************************
|
PROTO int update_xml(void)
|
PROTO int update_xml(void)
|
PURPOSE Update a set of meta-data kept in memory before being written to the
|
PURPOSE Update a set of meta-data kept in memory before being written to the
|
XML file
|
XML file
|
INPUT -.
|
INPUT -.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 19/12/2007
|
VERSION 19/12/2007
|
***/
|
***/
|
int update_xml(sexcatstruct *sexcat, picstruct *dfield, picstruct *field,
|
int update_xml(sexcatstruct *sexcat, picstruct *dfield, picstruct *field,
|
picstruct *dwfield, picstruct *wfield)
|
picstruct *dwfield, picstruct *wfield)
|
{
|
{
|
xmlstruct *x;
|
xmlstruct *x;
|
|
|
if (nxml >= nxmlmax)
|
if (nxml >= nxmlmax)
|
error(EXIT_FAILURE, "*Internal Error*: too many extensions in XML stack",
|
error(EXIT_FAILURE, "*Internal Error*: too many extensions in XML stack",
|
"");
|
"");
|
x = &xmlstack[nxml++];
|
x = &xmlstack[nxml++];
|
x->currext = sexcat->currext;
|
x->currext = sexcat->currext;
|
x->ndetect = sexcat->ndetect;
|
x->ndetect = sexcat->ndetect;
|
x->ntotal = sexcat->ntotal;
|
x->ntotal = sexcat->ntotal;
|
strcpy(x->ext_date, sexcat->ext_date);
|
strcpy(x->ext_date, sexcat->ext_date);
|
strcpy(x->ext_time, sexcat->ext_time);
|
strcpy(x->ext_time, sexcat->ext_time);
|
x->ext_elapsed = sexcat->ext_elapsed;
|
x->ext_elapsed = sexcat->ext_elapsed;
|
strcpy(x->ident[0], dfield->ident);
|
strcpy(x->ident[0], dfield->ident);
|
strcpy(x->ident[1], field->ident);
|
strcpy(x->ident[1], field->ident);
|
x->backmean[0] = dfield->backmean;
|
x->backmean[0] = dfield->backmean;
|
x->backmean[1] = field->backmean;
|
x->backmean[1] = field->backmean;
|
x->backsig[0] = dfield->backsig;
|
x->backsig[0] = dfield->backsig;
|
x->backsig[1] = field->backsig;
|
x->backsig[1] = field->backsig;
|
x->sigfac[0] = dfield->sigfac;
|
x->sigfac[0] = dfield->sigfac;
|
x->sigfac[1] = field->sigfac;
|
x->sigfac[1] = field->sigfac;
|
x->thresh[0] = dfield->dthresh;
|
x->thresh[0] = dfield->dthresh;
|
x->thresh[1] = field->thresh;
|
x->thresh[1] = field->thresh;
|
x->pixscale[0] = dfield->pixscale;
|
x->pixscale[0] = dfield->pixscale;
|
x->pixscale[1] = field->pixscale;
|
x->pixscale[1] = field->pixscale;
|
x->epoch[0] = dfield->epoch;
|
x->epoch[0] = dfield->epoch;
|
x->epoch[1] = field->epoch;
|
x->epoch[1] = field->epoch;
|
x->gain[0] = dfield->gain;
|
x->gain[0] = dfield->gain;
|
x->gain[1] = field->gain;
|
x->gain[1] = field->gain;
|
x->satur_level[0] = dfield->satur_level;
|
x->satur_level[0] = dfield->satur_level;
|
x->satur_level[1] = field->satur_level;
|
x->satur_level[1] = field->satur_level;
|
|
|
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
}
|
}
|
|
|
|
|
/****** write_xml ************************************************************
|
/****** write_xml ************************************************************
|
PROTO int write_xml(char *filename)
|
PROTO int write_xml(char *filename)
|
PURPOSE Save meta-data to an XML file/stream.
|
PURPOSE Save meta-data to an XML file/stream.
|
INPUT XML file name.
|
INPUT XML file name.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 14/07/2006
|
VERSION 14/07/2006
|
***/
|
***/
|
int write_xml(char *filename)
|
int write_xml(char *filename)
|
{
|
{
|
FILE *file;
|
FILE *file;
|
|
|
if (!(file = fopen(prefs.xml_name, "w")))
|
if (!(file = fopen(prefs.xml_name, "w")))
|
return RETURN_ERROR;
|
return RETURN_ERROR;
|
|
|
write_xml_header(file);
|
write_xml_header(file);
|
write_vo_fields(file);
|
write_vo_fields(file);
|
|
|
fprintf(file, " <DATA>\n");
|
fprintf(file, " <DATA>\n");
|
if (prefs.cat_type == FITS_LDAC || prefs.cat_type == FITS_TPX
|
if (prefs.cat_type == FITS_LDAC || prefs.cat_type == FITS_TPX
|
|| prefs.cat_type == FITS_10)
|
|| prefs.cat_type == FITS_10)
|
fprintf(file,
|
fprintf(file,
|
" <FITS extnum=\"%d\"><STREAM href=\"%s%s\" /> </FITS>",
|
" <FITS extnum=\"%d\"><STREAM href=\"%s%s\" /> </FITS>",
|
prefs.cat_type == FITS_10? 1:2,
|
prefs.cat_type == FITS_10? 1:2,
|
prefs.cat_name[0] == '/'? "file://" : "file:",
|
prefs.cat_name[0] == '/'? "file://" : "file:",
|
prefs.cat_name);
|
prefs.cat_name);
|
fprintf(file, " </DATA>\n");
|
fprintf(file, " </DATA>\n");
|
fprintf(file, " </TABLE>\n");
|
fprintf(file, " </TABLE>\n");
|
|
|
write_xml_meta(file, (char *)NULL);
|
write_xml_meta(file, (char *)NULL);
|
|
|
fprintf(file, "</RESOURCE>\n");
|
fprintf(file, "</RESOURCE>\n");
|
fprintf(file, "</VOTABLE>\n");
|
fprintf(file, "</VOTABLE>\n");
|
|
|
fclose(file);
|
fclose(file);
|
|
|
return RETURN_OK;
|
return RETURN_OK;
|
}
|
}
|
|
|
|
|
/****** write_xml_header ******************************************************
|
/****** write_xml_header ******************************************************
|
PROTO int write_xml_header(FILE *file)
|
PROTO int write_xml_header(FILE *file)
|
PURPOSE Save an XML-VOtable header to an XML file/stream
|
PURPOSE Save an XML-VOtable header to an XML file/stream
|
INPUT file or stream pointer.
|
INPUT file or stream pointer.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 14/07/2006
|
VERSION 14/07/2006
|
***/
|
***/
|
int write_xml_header(FILE *file)
|
int write_xml_header(FILE *file)
|
{
|
{
|
char *filename, *rfilename;
|
char *filename, *rfilename;
|
|
|
/* A short, "relative" version of the filename */
|
/* A short, "relative" version of the filename */
|
filename = prefs.image_name[prefs.nimage_name>1? 1:0];
|
filename = prefs.image_name[prefs.nimage_name>1? 1:0];
|
if (!(rfilename = strrchr(filename, '/')))
|
if (!(rfilename = strrchr(filename, '/')))
|
rfilename = filename;
|
rfilename = filename;
|
else
|
else
|
rfilename++;
|
rfilename++;
|
|
|
fprintf(file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
fprintf(file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
fprintf(file, "<?xml-stylesheet type=\"text/xsl\" href=\"%s\"?>\n",
|
fprintf(file, "<?xml-stylesheet type=\"text/xsl\" href=\"%s\"?>\n",
|
prefs.xsl_name);
|
prefs.xsl_name);
|
fprintf(file, "<VOTABLE "
|
fprintf(file, "<VOTABLE "
|
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
|
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
|
"xsi:noNamespaceSchemaLocation="
|
"xsi:noNamespaceSchemaLocation="
|
"\"http://www.ivoa.net/xml/VOTable/v1.1\">\n");
|
"\"http://www.ivoa.net/xml/VOTable/v1.1\">\n");
|
fprintf(file, "<DESCRIPTION>produced by %s</DESCRIPTION>\n", BANNER);
|
fprintf(file, "<DESCRIPTION>produced by %s</DESCRIPTION>\n", BANNER);
|
fprintf(file, "<!-- VOTable description at "
|
fprintf(file, "<!-- VOTable description at "
|
"http://www.ivoa.net/Documents/latest/VOT.html -->\n");
|
"http://www.ivoa.net/Documents/latest/VOT.html -->\n");
|
fprintf(file, "<RESOURCE ID=\"%s\" name=\"%s\">\n", BANNER, rfilename);
|
fprintf(file, "<RESOURCE ID=\"%s\" name=\"%s\">\n", BANNER, rfilename);
|
fprintf(file, " <DESCRIPTION>Catalog of sources extracted with %s"
|
fprintf(file, " <DESCRIPTION>Catalog of sources extracted with %s"
|
"</DESCRIPTION>\n", BANNER);
|
"</DESCRIPTION>\n", BANNER);
|
fprintf(file, " <INFO name=\"QUERY_STATUS\" value=\"OK\" />\n");
|
fprintf(file, " <INFO name=\"QUERY_STATUS\" value=\"OK\" />\n");
|
fprintf(file, " <COOSYS ID=\"J2000\" equinox=\"J2000\""
|
fprintf(file, " <COOSYS ID=\"J2000\" equinox=\"J2000\""
|
" epoch=\"J%.10g\" system=\"%s\"/>\n", prefs.epoch, prefs.coosys);
|
" epoch=\"J%.10g\" system=\"%s\"/>\n", prefs.epoch, prefs.coosys);
|
fprintf(file, " <TABLE ID=\"Source_List\" name=\"%s/out\">\n", rfilename);
|
fprintf(file, " <TABLE ID=\"Source_List\" name=\"%s/out\">\n", rfilename);
|
fprintf(file,
|
fprintf(file,
|
" <DESCRIPTION>Table of sources detected in image</DESCRIPTION>\n");
|
" <DESCRIPTION>Table of sources detected in image</DESCRIPTION>\n");
|
fprintf(file,
|
fprintf(file,
|
" <!-- Now comes the definition of each %s parameter -->\n", BANNER);
|
" <!-- Now comes the definition of each %s parameter -->\n", BANNER);
|
|
|
return RETURN_OK;
|
return RETURN_OK;
|
}
|
}
|
|
|
|
|
/****** write_xml_meta ********************************************************
|
/****** write_xml_meta ********************************************************
|
PROTO int write_xml_meta(FILE *file, char *error)
|
PROTO int write_xml_meta(FILE *file, char *error)
|
PURPOSE Save meta-data to an XML-VOTable file or stream
|
PURPOSE Save meta-data to an XML-VOTable file or stream
|
INPUT Pointer to the output file (or stream),
|
INPUT Pointer to the output file (or stream),
|
Pointer to an error msg (or NULL).
|
Pointer to an error msg (or NULL).
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 19/12/2007
|
VERSION 14/12/2009
|
***/
|
***/
|
int write_xml_meta(FILE *file, char *error)
|
int write_xml_meta(FILE *file, char *error)
|
{
|
{
|
char *pspath,*psuser, *pshost, *str;
|
char *pspath,*psuser, *pshost, *str;
|
struct tm *tm;
|
struct tm *tm;
|
int n;
|
int n;
|
|
|
/* Processing date and time if msg error present */
|
/* Processing date and time if msg error present */
|
if (error)
|
if (error)
|
{
|
{
|
thetimet2 = time(NULL);
|
thetimet2 = time(NULL);
|
tm = localtime(&thetimet2);
|
tm = localtime(&thetimet2);
|
sprintf(prefs.sdate_end,"%04d-%02d-%02d",
|
sprintf(prefs.sdate_end,"%04d-%02d-%02d",
|
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday);
|
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday);
|
sprintf(prefs.stime_end,"%02d:%02d:%02d",
|
sprintf(prefs.stime_end,"%02d:%02d:%02d",
|
tm->tm_hour, tm->tm_min, tm->tm_sec);
|
tm->tm_hour, tm->tm_min, tm->tm_sec);
|
prefs.time_diff = difftime(thetimet2, thetimet);
|
prefs.time_diff = difftime(thetimet2, thetimet);
|
}
|
}
|
|
|
/* Username */
|
/* Username */
|
psuser = pspath = pshost = NULL;
|
psuser = pspath = pshost = NULL;
|
#ifdef HAVE_GETENV
|
#ifdef HAVE_GETENV
|
if (!(psuser=getenv("USERNAME"))) /* Cygwin,... */
|
if (!(psuser=getenv("USERNAME"))) /* Cygwin,... */
|
psuser = getenv("LOGNAME"); /* Linux,... */
|
psuser = getenv("LOGNAME"); /* Linux,... */
|
pspath = getenv("PWD");
|
pspath = getenv("PWD");
|
pshost = getenv("HOSTNAME");
|
pshost = getenv("HOSTNAME");
|
#endif
|
#endif
|
|
|
fprintf(file, " <RESOURCE ID=\"MetaData\" name=\"MetaData\">\n");
|
fprintf(file, " <RESOURCE ID=\"MetaData\" name=\"MetaData\">\n");
|
fprintf(file, " <DESCRIPTION>%s meta-data</DESCRIPTION>\n", BANNER);
|
fprintf(file, " <DESCRIPTION>%s meta-data</DESCRIPTION>\n", BANNER);
|
fprintf(file, " <INFO name=\"QUERY_STATUS\" value=\"OK\" />\n");
|
fprintf(file, " <INFO name=\"QUERY_STATUS\" value=\"OK\" />\n");
|
fprintf(file, " <PARAM name=\"Software\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Software\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.title;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"meta.title;meta.software\" value=\"%s\"/>\n",
|
BANNER);
|
BANNER);
|
fprintf(file, " <PARAM name=\"Version\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Version\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.version;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"meta.version;meta.software\" value=\"%s\"/>\n",
|
MYVERSION);
|
MYVERSION);
|
fprintf(file, " <PARAM name=\"Soft_URL\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Soft_URL\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.ref.url;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"meta.ref.url;meta.software\" value=\"%s\"/>\n",
|
WEBSITE);
|
WEBSITE);
|
fprintf(file, " <PARAM name=\"Soft_Auth\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Soft_Auth\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.bib.author;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"meta.bib.author;meta.software\" value=\"%s\"/>\n",
|
"Emmanuel Bertin");
|
"Emmanuel Bertin");
|
fprintf(file, " <PARAM name=\"Soft_Ref\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Soft_Ref\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.bib.bibcode;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"meta.bib.bibcode;meta.software\" value=\"%s\"/>\n",
|
"1996A&AS..117..393B");
|
"1996A&AS..117..393B");
|
fprintf(file, " <PARAM name=\"NThreads\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"NThreads\" datatype=\"int\""
|
" ucd=\"meta.number;meta.software\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;meta.software\" value=\"%d\"/>\n",
|
prefs.nthreads);
|
prefs.nthreads);
|
fprintf(file, " <PARAM name=\"Date\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Date\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"time.event.end;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"time.event.end;meta.software\" value=\"%s\"/>\n",
|
prefs.sdate_end);
|
prefs.sdate_end);
|
fprintf(file, " <PARAM name=\"Time\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Time\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"time.event.end;meta.software\" value=\"%s\"/>\n",
|
" ucd=\"time.event.end;meta.software\" value=\"%s\"/>\n",
|
prefs.stime_end);
|
prefs.stime_end);
|
fprintf(file, " <PARAM name=\"Duration\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Duration\" datatype=\"float\""
|
" ucd=\"time.event;meta.software\" value=\"%.0f\" unit=\"s\"/>\n",
|
" ucd=\"time.event;meta.software\" value=\"%.0f\" unit=\"s\"/>\n",
|
prefs.time_diff);
|
prefs.time_diff);
|
|
|
fprintf(file, " <PARAM name=\"User\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"User\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.curation\" value=\"%s\"/>\n",
|
" ucd=\"meta.curation\" value=\"%s\"/>\n",
|
psuser);
|
psuser);
|
fprintf(file, " <PARAM name=\"Host\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Host\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.curation\" value=\"%s\"/>\n",
|
" ucd=\"meta.curation\" value=\"%s\"/>\n",
|
pshost);
|
pshost);
|
fprintf(file, " <PARAM name=\"Path\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <PARAM name=\"Path\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset\" value=\"%s\"/>\n",
|
pspath);
|
pspath);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Image_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Image_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"obs.image;meta.fits\" value=\"%s", prefs.image_name[0]);
|
" ucd=\"obs.image;meta.fits\" value=\"%s", prefs.image_name[0]);
|
if (prefs.nimage_name>1)
|
if (prefs.nimage_name>1)
|
fprintf(file, ",%s", prefs.image_name[1]);
|
fprintf(file, ",%s", prefs.image_name[1]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
if (error)
|
if (error)
|
{
|
{
|
fprintf(file, "\n <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
fprintf(file, "\n <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
"!!!!!!!!!!!!!!!!!!!! -->\n");
|
"!!!!!!!!!!!!!!!!!!!! -->\n");
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!! an Error occured"
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!! an Error occured"
|
" !!!!!!!!!!!!!!!!!!!!! -->\n");
|
" !!!!!!!!!!!!!!!!!!!!! -->\n");
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
"!!!!!!!!!!!!!!!!!!!! -->\n");
|
"!!!!!!!!!!!!!!!!!!!! -->\n");
|
fprintf(file," <PARAM name=\"Error_Msg\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file," <PARAM name=\"Error_Msg\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta\" value=\"%s\"/>\n", error);
|
" ucd=\"meta\" value=\"%s\"/>\n", error);
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
"!!!!!!!!!!!!!!!!!!!! -->\n");
|
"!!!!!!!!!!!!!!!!!!!! -->\n");
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
fprintf(file, " <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
"!!!!!!!!!!!!!!!!!!!! -->\n\n");
|
"!!!!!!!!!!!!!!!!!!!! -->\n\n");
|
}
|
}
|
|
|
/* Meta-data for each extension */
|
/* Meta-data for each extension */
|
fprintf(file, " <TABLE ID=\"Extension_Data\" name=\"Extension_Data\">\n");
|
fprintf(file, " <TABLE ID=\"Extension_Data\" name=\"Extension_Data\">\n");
|
fprintf(file, " <DESCRIPTION>Data gathered by %s for every FITS"
|
fprintf(file, " <DESCRIPTION>Data gathered by %s for every FITS"
|
" extension</DESCRIPTION>\n", BANNER);
|
" extension</DESCRIPTION>\n", BANNER);
|
fprintf(file, " <!-- NExtensions may be 0"
|
fprintf(file, " <!-- NExtensions may be 0"
|
" if an error occurred early in the processing -->\n");
|
" if an error occurred early in the processing -->\n");
|
fprintf(file, " <PARAM name=\"NExtensions\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"NExtensions\" datatype=\"int\""
|
" ucd=\"meta.number;meta.dataset\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;meta.dataset\" value=\"%d\"/>\n",
|
nxmlmax);
|
nxmlmax);
|
fprintf(file, " <!-- CurrExtension may differ fromq n_extensions"
|
fprintf(file, " <!-- CurrExtension may differ fromq n_extensions"
|
" if an error occurred -->\n");
|
" if an error occurred -->\n");
|
fprintf(file, " <PARAM name=\"CurrExtension\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"CurrExtension\" datatype=\"int\""
|
" ucd=\"meta.number;meta.dataset\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;meta.dataset\" value=\"%d\"/>\n",
|
nxml);
|
nxml);
|
fprintf(file, " <FIELD name=\"Extension\" datatype=\"int\""
|
fprintf(file, " <FIELD name=\"Extension\" datatype=\"int\""
|
" ucd=\"meta.record\"/>\n");
|
" ucd=\"meta.record\"/>\n");
|
fprintf(file, " <FIELD name=\"Date\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <FIELD name=\"Date\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.record;time.event.end\"/>\n");
|
" ucd=\"meta.record;time.event.end\"/>\n");
|
fprintf(file, " <FIELD name=\"Time\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <FIELD name=\"Time\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.record;time.event.end\"/>\n");
|
" ucd=\"meta.record;time.event.end\"/>\n");
|
fprintf(file, " <FIELD name=\"Duration\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Duration\" datatype=\"float\""
|
" ucd=\"meta.record;time.event.end\"/>\n");
|
" ucd=\"meta.record;time.event.end\"/>\n");
|
fprintf(file, " <FIELD name=\"NDetect\" datatype=\"int\""
|
fprintf(file, " <FIELD name=\"NDetect\" datatype=\"int\""
|
" ucd=\"meta.number;src.sample\"/>\n");
|
" ucd=\"meta.number;src.sample\"/>\n");
|
fprintf(file, " <FIELD name=\"NSextracted\" datatype=\"int\""
|
fprintf(file, " <FIELD name=\"NSextracted\" datatype=\"int\""
|
" ucd=\"meta.number;src.sample\"/>\n");
|
" ucd=\"meta.number;src.sample\"/>\n");
|
fprintf(file, " <FIELD name=\"Image_Ident\" datatype=\"char\""
|
fprintf(file, " <FIELD name=\"Image_Ident\" datatype=\"char\""
|
" arraysize=\"*\" ucd=\"meta.id;obs\"/>\n");
|
" arraysize=\"*\" ucd=\"meta.id;obs\"/>\n");
|
fprintf(file, " <FIELD name=\"Background_Mean\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Background_Mean\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.skyLevel;obs.image;stat.median\""
|
" arraysize=\"%d\" ucd=\"instr.skyLevel;obs.image;stat.median\""
|
" unit=\"ct\"/>\n", prefs.nimage_name);
|
" unit=\"ct\"/>\n", prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Background_StDev\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Background_StDev\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"stat.stdev;obs.image;stat.median\""
|
" arraysize=\"%d\" ucd=\"stat.stdev;obs.image;stat.median\""
|
" unit=\"ct\"/>\n", prefs.nimage_name);
|
" unit=\"ct\"/>\n", prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Threshold\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Threshold\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.image;stat.median\""
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.image;stat.median\""
|
" unit=\"ct\"/>\n", prefs.nimage_name);
|
" unit=\"ct\"/>\n", prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Weight_Scaling\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Weight_Scaling\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"arith.factor;obs.image;stat.median\"/>\n",
|
" arraysize=\"%d\" ucd=\"arith.factor;obs.image;stat.median\"/>\n",
|
prefs.nimage_name);
|
prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Pixel_Scale\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Pixel_Scale\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.scale;obs.image;stat.mean\""
|
" arraysize=\"%d\" ucd=\"instr.scale;obs.image;stat.mean\""
|
" unit=\"arcsec\"/>\n", prefs.nimage_name);
|
" unit=\"arcsec\"/>\n", prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Epoch\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Epoch\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"time.epoch;obs\" unit=\"yr\"/>\n",
|
" arraysize=\"%d\" ucd=\"time.epoch;obs\" unit=\"yr\"/>\n",
|
prefs.nimage_name);
|
prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Gain\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Gain\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.param;obs.param\"/>\n",
|
" arraysize=\"%d\" ucd=\"instr.param;obs.param\"/>\n",
|
prefs.nimage_name);
|
prefs.nimage_name);
|
fprintf(file, " <FIELD name=\"Satur_Level\" datatype=\"float\""
|
fprintf(file, " <FIELD name=\"Satur_Level\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.saturation;phot.count\" unit=\"ct\"/>\n",
|
" arraysize=\"%d\" ucd=\"instr.saturation;phot.count\" unit=\"ct\"/>\n",
|
prefs.nimage_name);
|
prefs.nimage_name);
|
fprintf(file, " <DATA><TABLEDATA>\n");
|
fprintf(file, " <DATA><TABLEDATA>\n");
|
for (n=0; n<nxml; n++)
|
for (n=0; n<nxml; n++)
|
if (prefs.nimage_name>1)
|
if (prefs.nimage_name>1)
|
fprintf(file, " <TR>\n"
|
fprintf(file, " <TR>\n"
|
" <TD>%d</TD><TD>%s</TD><TD>%s</TD><TD>%.0f</TD>"
|
" <TD>%d</TD><TD>%s</TD><TD>%s</TD><TD>%.0f</TD>"
|
"<TD>%d</TD><TD>%d</TD>\n"
|
"<TD>%d</TD><TD>%d</TD>\n"
|
" <TD>%s,%s</TD><TD>%g %g</TD>\n"
|
" <TD>%s,%s</TD><TD>%g %g</TD>\n"
|
" <TD>%g %g</TD><TD>%g %g</TD><TD>%g %g</TD>"
|
" <TD>%g %g</TD><TD>%g %g</TD><TD>%g %g</TD>"
|
"<TD>%g %g</TD><TD>%f %f</TD>\n"
|
"<TD>%g %g</TD><TD>%f %f</TD>\n"
|
" <TD>%g %g</TD><TD>%g %g</TD>\n"
|
" <TD>%g %g</TD><TD>%g %g</TD>\n"
|
" </TR>\n",
|
" </TR>\n",
|
xmlstack[n].currext,
|
xmlstack[n].currext,
|
xmlstack[n].ext_date,
|
xmlstack[n].ext_date,
|
xmlstack[n].ext_time,
|
xmlstack[n].ext_time,
|
xmlstack[n].ext_elapsed,
|
xmlstack[n].ext_elapsed,
|
xmlstack[n].ndetect,
|
xmlstack[n].ndetect,
|
xmlstack[n].ntotal,
|
xmlstack[n].ntotal,
|
xmlstack[n].ident[0], xmlstack[n].ident[1],
|
xmlstack[n].ident[0], xmlstack[n].ident[1],
|
xmlstack[n].backmean[0], xmlstack[n].backmean[1],
|
xmlstack[n].backmean[0], xmlstack[n].backmean[1],
|
xmlstack[n].backsig[0], xmlstack[n].backsig[1],
|
xmlstack[n].backsig[0], xmlstack[n].backsig[1],
|
xmlstack[n].sigfac[0], xmlstack[n].sigfac[1],
|
xmlstack[n].sigfac[0], xmlstack[n].sigfac[1],
|
xmlstack[n].thresh[0], xmlstack[n].thresh[1],
|
xmlstack[n].thresh[0], xmlstack[n].thresh[1],
|
xmlstack[n].pixscale[0], xmlstack[n].pixscale[1],
|
xmlstack[n].pixscale[0], xmlstack[n].pixscale[1],
|
xmlstack[n].epoch[0], xmlstack[n].epoch[1],
|
xmlstack[n].epoch[0], xmlstack[n].epoch[1],
|
xmlstack[n].gain[0], xmlstack[n].gain[1],
|
xmlstack[n].gain[0], xmlstack[n].gain[1],
|
xmlstack[n].satur_level[0], xmlstack[n].satur_level[1]);
|
xmlstack[n].satur_level[0], xmlstack[n].satur_level[1]);
|
else
|
else
|
fprintf(file, " <TR>\n"
|
fprintf(file, " <TR>\n"
|
" <TD>%d</TD><TD>%s</TD><TD>%s</TD><TD>%.0f</TD>"
|
" <TD>%d</TD><TD>%s</TD><TD>%s</TD><TD>%.0f</TD>"
|
"<TD>%d</TD><TD>%d</TD>\n"
|
"<TD>%d</TD><TD>%d</TD>\n"
|
" <TD>%s</TD><TD>%g</TD>\n"
|
" <TD>%s</TD><TD>%g</TD>\n"
|
" <TD>%g</TD><TD>%g</TD><TD>%g</TD><TD>%g</TD><TD>%f</TD>\n"
|
" <TD>%g</TD><TD>%g</TD><TD>%g</TD><TD>%g</TD><TD>%f</TD>\n"
|
" <TD>%g</TD><TD>%g</TD>\n"
|
" <TD>%g</TD><TD>%g</TD>\n"
|
" </TR>\n",
|
" </TR>\n",
|
xmlstack[n].currext,
|
xmlstack[n].currext,
|
xmlstack[n].ext_date,
|
xmlstack[n].ext_date,
|
xmlstack[n].ext_time,
|
xmlstack[n].ext_time,
|
xmlstack[n].ext_elapsed,
|
xmlstack[n].ext_elapsed,
|
xmlstack[n].ndetect,
|
xmlstack[n].ndetect,
|
xmlstack[n].ntotal,
|
xmlstack[n].ntotal,
|
xmlstack[n].ident[0],
|
xmlstack[n].ident[0],
|
xmlstack[n].backmean[0],
|
xmlstack[n].backmean[0],
|
xmlstack[n].backsig[0],
|
xmlstack[n].backsig[0],
|
xmlstack[n].sigfac[0],
|
xmlstack[n].sigfac[0],
|
xmlstack[n].thresh[0],
|
xmlstack[n].thresh[0],
|
xmlstack[n].pixscale[0],
|
xmlstack[n].pixscale[0],
|
xmlstack[n].epoch[0],
|
xmlstack[n].epoch[0],
|
xmlstack[n].gain[0],
|
xmlstack[n].gain[0],
|
xmlstack[n].satur_level[0]);
|
xmlstack[n].satur_level[0]);
|
fprintf(file, " </TABLEDATA></DATA>\n");
|
fprintf(file, " </TABLEDATA></DATA>\n");
|
fprintf(file, " </TABLE>\n");
|
fprintf(file, " </TABLE>\n");
|
|
|
/* Warnings */
|
/* Warnings */
|
fprintf(file, " <TABLE ID=\"Warnings\" name=\"Warnings\">\n");
|
fprintf(file, " <TABLE ID=\"Warnings\" name=\"Warnings\">\n");
|
fprintf(file,
|
fprintf(file,
|
" <DESCRIPTION>%s warnings (limited to the last %d)</DESCRIPTION>\n",
|
" <DESCRIPTION>%s warnings (limited to the last %d)</DESCRIPTION>\n",
|
BANNER, WARNING_NMAX);
|
BANNER, WARNING_NMAX);
|
fprintf(file, " <FIELD name=\"Date\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <FIELD name=\"Date\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta;time.event.end\"/>\n");
|
" ucd=\"meta;time.event.end\"/>\n");
|
fprintf(file, " <FIELD name=\"Time\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <FIELD name=\"Time\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta;time.event.end\"/>\n");
|
" ucd=\"meta;time.event.end\"/>\n");
|
fprintf(file, " <FIELD name=\"Msg\" datatype=\"char\" arraysize=\"*\""
|
fprintf(file, " <FIELD name=\"Msg\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta\"/>\n");
|
" ucd=\"meta\"/>\n");
|
fprintf(file, " <DATA><TABLEDATA>\n");
|
fprintf(file, " <DATA><TABLEDATA>\n");
|
for (str = warning_history(); *str; str = warning_history())
|
for (str = warning_history(); *str; str = warning_history())
|
fprintf(file, " <TR><TD>%10.10s</TD><TD>%8.8s</TD><TD>%s</TD></TR>\n",
|
fprintf(file, " <TR><TD>%10.10s</TD><TD>%8.8s</TD><TD>%s</TD></TR>\n",
|
str, str+11, str+22);
|
str, str+11, str+22);
|
fprintf(file, " </TABLEDATA></DATA>\n");
|
fprintf(file, " </TABLEDATA></DATA>\n");
|
fprintf(file, " </TABLE>\n");
|
fprintf(file, " </TABLE>\n");
|
|
|
/* Configuration file */
|
/* Configuration file */
|
fprintf(file, " <RESOURCE ID=\"Config\" name=\"Config\">\n");
|
fprintf(file, " <RESOURCE ID=\"Config\" name=\"Config\">\n");
|
fprintf(file, " <DESCRIPTION>%s configuration</DESCRIPTION>\n", BANNER);
|
fprintf(file, " <DESCRIPTION>%s configuration</DESCRIPTION>\n", BANNER);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Command_Line\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Command_Line\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"obs.param\" value=\"%s",
|
" ucd=\"obs.param\" value=\"%s",
|
prefs.command_line[0]);
|
prefs.command_line[0]);
|
for (n=1; n<prefs.ncommand_line; n++)
|
for (n=1; n<prefs.ncommand_line; n++)
|
fprintf(file, " %s", prefs.command_line[n]);
|
fprintf(file, " %s", prefs.command_line[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Prefs_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Prefs_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"obs.param;meta.file\" value=\"%s\"/>\n",
|
" ucd=\"obs.param;meta.file\" value=\"%s\"/>\n",
|
prefs.prefs_name);
|
prefs.prefs_name);
|
|
|
if (!error)
|
if (!error)
|
{
|
{
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Catalog_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Catalog_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta\" value=\"%s\"/>\n",
|
" ucd=\"meta\" value=\"%s\"/>\n",
|
key[findkeys("CATALOG_TYPE",keylist,
|
key[findkeys("CATALOG_TYPE",keylist,
|
FIND_STRICT)].keylist[prefs.cat_type]);
|
FIND_STRICT)].keylist[prefs.cat_type]);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Catalog_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Catalog_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset;meta.file\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset;meta.file\" value=\"%s\"/>\n",
|
prefs.cat_name);
|
prefs.cat_name);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Parameters_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Parameters_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"obs.param;meta.file\" value=\"%s\"/>\n",
|
" ucd=\"obs.param;meta.file\" value=\"%s\"/>\n",
|
prefs.param_name);
|
prefs.param_name);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Detect_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Detect_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;instr.det;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.code;instr.det;obs.param\" value=\"%s\"/>\n",
|
key[findkeys("DETECT_TYPE", keylist,
|
key[findkeys("DETECT_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.detect_type]);
|
FIND_STRICT)].keylist[prefs.detect_type]);
|
fprintf(file, " <PARAM name=\"Detect_MinArea\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Detect_MinArea\" datatype=\"int\""
|
" ucd=\"phys.area;obs.param\" value=\"%d\" unit=\"pix2\"/>\n",
|
" ucd=\"phys.area;obs.param\" value=\"%d\" unit=\"pix2\"/>\n",
|
prefs.ext_minarea);
|
prefs.ext_minarea);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Thresh_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Thresh_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;instr.sensitivity;obs.param\" value=\"%s",
|
" ucd=\"meta.code;instr.sensitivity;obs.param\" value=\"%s",
|
key[findkeys("THRESH_TYPE", keylist,
|
key[findkeys("THRESH_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.thresh_type[0]]);
|
FIND_STRICT)].keylist[prefs.thresh_type[0]]);
|
if (prefs.nthresh_type>1)
|
if (prefs.nthresh_type>1)
|
fprintf(file, ",%s", key[findkeys("THRESH_TYPE", keylist,
|
fprintf(file, ",%s", key[findkeys("THRESH_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.thresh_type[1]]);
|
FIND_STRICT)].keylist[prefs.thresh_type[1]]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Detect_Thresh\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Detect_Thresh\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
prefs.ndthresh, prefs.dthresh[0]);
|
prefs.ndthresh, prefs.dthresh[0]);
|
if (prefs.ndthresh>1)
|
if (prefs.ndthresh>1)
|
fprintf(file, " %g", prefs.dthresh[1]);
|
fprintf(file, " %g", prefs.dthresh[1]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Analysis_Thresh\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Analysis_Thresh\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
prefs.nthresh, prefs.thresh[0]);
|
prefs.nthresh, prefs.thresh[0]);
|
if (prefs.nthresh>1)
|
if (prefs.nthresh>1)
|
fprintf(file, " %g", prefs.thresh[1]);
|
fprintf(file, " %g", prefs.thresh[1]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Filter\" datatype=\"boolean\""
|
" <PARAM name=\"Filter\" datatype=\"boolean\""
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
prefs.filter_flag? 'T':'F');
|
prefs.filter_flag? 'T':'F');
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Filter_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Filter_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
prefs.filter_name);
|
prefs.filter_name);
|
|
|
if (prefs.nfilter_thresh)
|
if (prefs.nfilter_thresh)
|
{
|
{
|
fprintf(file, " <PARAM name=\"Filter_Thresh\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Filter_Thresh\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
prefs.nfilter_thresh, prefs.filter_thresh[0]);
|
prefs.nfilter_thresh, prefs.filter_thresh[0]);
|
if (prefs.nfilter_thresh>1)
|
if (prefs.nfilter_thresh>1)
|
fprintf(file, " %g", prefs.filter_thresh[1]);
|
fprintf(file, " %g", prefs.filter_thresh[1]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
}
|
}
|
|
|
fprintf(file, " <PARAM name=\"Deblend_NThresh\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Deblend_NThresh\" datatype=\"int\""
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
prefs.deblend_nthresh);
|
prefs.deblend_nthresh);
|
fprintf(file, " <PARAM name=\"Deblend_MinCont\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Deblend_MinCont\" datatype=\"float\""
|
" ucd=\"obs.param;arith.ratio\" value=\"%g\"/>\n",
|
" ucd=\"obs.param;arith.ratio\" value=\"%g\"/>\n",
|
prefs.deblend_mincont);
|
prefs.deblend_mincont);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Clean\" datatype=\"boolean\""
|
" <PARAM name=\"Clean\" datatype=\"boolean\""
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
prefs.clean_flag? 'T':'F');
|
prefs.clean_flag? 'T':'F');
|
fprintf(file, " <PARAM name=\"Clean_Param\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Clean_Param\" datatype=\"float\""
|
" ucd=\"meta\" value=\"%g\"/>\n",
|
" ucd=\"meta\" value=\"%g\"/>\n",
|
prefs.clean_param);
|
prefs.clean_param);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Mask_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Mask_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;obs.param;\" value=\"%s\"/>\n",
|
" ucd=\"meta.code;obs.param;\" value=\"%s\"/>\n",
|
key[findkeys("MASK_TYPE", keylist,
|
key[findkeys("MASK_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.mask_type]);
|
FIND_STRICT)].keylist[prefs.mask_type]);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Weight_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Weight_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;obs.param\" value=\"%s",
|
" ucd=\"meta.code;obs.param\" value=\"%s",
|
key[findkeys("WEIGHT_TYPE", keylist,
|
key[findkeys("WEIGHT_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.weight_type[0]]);
|
FIND_STRICT)].keylist[prefs.weight_type[0]]);
|
if (prefs.nweight_type>1)
|
if (prefs.nweight_type>1)
|
fprintf(file, ",%s", key[findkeys("WEIGHT_TYPE", keylist,
|
fprintf(file, ",%s", key[findkeys("WEIGHT_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.weight_type[1]]);
|
FIND_STRICT)].keylist[prefs.weight_type[1]]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Weight_Thresh\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Weight_Thresh\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"instr.sensitivity;obs.param\" value=\"%g",
|
prefs.nweight_thresh, prefs.weight_thresh[0]);
|
prefs.nweight_thresh, prefs.weight_thresh[0]);
|
if (prefs.nweight_thresh>1)
|
if (prefs.nweight_thresh>1)
|
fprintf(file, " %g", prefs.weight_thresh[1]);
|
fprintf(file, " %g", prefs.weight_thresh[1]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
if ((prefs.weight_type[0] != WEIGHT_NONE
|
if ((prefs.weight_type[0] != WEIGHT_NONE
|
&& prefs.weight_type[0] != WEIGHT_FROMBACK)
|
&& prefs.weight_type[0] != WEIGHT_FROMBACK)
|
|| (prefs.weight_type[1] != WEIGHT_NONE
|
|| (prefs.weight_type[1] != WEIGHT_NONE
|
&& prefs.weight_type[1] != WEIGHT_FROMBACK))
|
&& prefs.weight_type[1] != WEIGHT_FROMBACK))
|
{
|
{
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Weight_Image\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Weight_Image\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"obs.image;meta.fits;obs.param\" value=\"%s",
|
" ucd=\"obs.image;meta.fits;obs.param\" value=\"%s",
|
(prefs.weight_type[0] != WEIGHT_NONE
|
(prefs.weight_type[0] != WEIGHT_NONE
|
&& prefs.weight_type[0] != WEIGHT_FROMBACK) ?
|
&& prefs.weight_type[0] != WEIGHT_FROMBACK) ?
|
prefs.wimage_name[0] : NULL);
|
prefs.wimage_name[0] : NULL);
|
if (prefs.weight_type[1] != WEIGHT_NONE
|
if (prefs.weight_type[1] != WEIGHT_NONE
|
&& prefs.weight_type[1] != WEIGHT_FROMBACK)
|
&& prefs.weight_type[1] != WEIGHT_FROMBACK)
|
fprintf(file, ",%s", prefs.wimage_name[1]);
|
fprintf(file, ",%s", prefs.wimage_name[1]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
}
|
}
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Weight_Gain\" datatype=\"boolean\""
|
" <PARAM name=\"Weight_Gain\" datatype=\"boolean\""
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
prefs.weightgain_flag? 'T':'F');
|
prefs.weightgain_flag? 'T':'F');
|
|
|
if (prefs.nimaflag)
|
if (prefs.nimaflag)
|
{
|
{
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Flag_Image\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Flag_Image\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"obs.image;meta.fits\" value=\"%s",
|
" ucd=\"obs.image;meta.fits\" value=\"%s",
|
prefs.fimage_name[0]);
|
prefs.fimage_name[0]);
|
for (n=1; n<prefs.nimaflag; n++)
|
for (n=1; n<prefs.nimaflag; n++)
|
fprintf(file, ",%s", prefs.fimage_name[n]);
|
fprintf(file, ",%s", prefs.fimage_name[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Flag_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Flag_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code\" value=\"%s",
|
" ucd=\"meta.code\" value=\"%s",
|
key[findkeys("FLAG_TYPE", keylist,
|
key[findkeys("FLAG_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.flag_type[0]]);
|
FIND_STRICT)].keylist[prefs.flag_type[0]]);
|
for (n=1; n<prefs.nimaflag; n++)
|
for (n=1; n<prefs.nimaflag; n++)
|
fprintf(file, ",%s", key[findkeys("FLAG_TYPE", keylist,
|
fprintf(file, ",%s", key[findkeys("FLAG_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.flag_type[n]]);
|
FIND_STRICT)].keylist[prefs.flag_type[n]]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
}
|
}
|
|
|
fprintf(file, " <PARAM name=\"Phot_Apertures\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Phot_Apertures\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"obs.param\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"obs.param\" value=\"%g",
|
prefs.naper, prefs.apert[0]);
|
prefs.naper, prefs.apert[0]);
|
for (n=1; n<prefs.naper; n++)
|
for (n=1; n<prefs.naper; n++)
|
fprintf(file, " %g", prefs.apert[n]);
|
fprintf(file, " %g", prefs.apert[n]);
|
fprintf(file, "\" unit=\"pix\"/>\n");
|
fprintf(file, "\" unit=\"pix\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Phot_AutoParams\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Phot_AutoParams\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"obs.param;phot\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"obs.param;phot\" value=\"%g",
|
prefs.nautoparam, prefs.autoparam[0]);
|
prefs.nautoparam, prefs.autoparam[0]);
|
for (n=1; n<prefs.nautoparam; n++)
|
for (n=1; n<prefs.nautoparam; n++)
|
fprintf(file, " %g", prefs.autoparam[n]);
|
fprintf(file, " %g", prefs.autoparam[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Phot_PetroParams\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Phot_PetroParams\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"obs.param;phot\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"obs.param;phot\" value=\"%g",
|
prefs.npetroparam, prefs.petroparam[0]);
|
prefs.npetroparam, prefs.petroparam[0]);
|
for (n=1; n<prefs.npetroparam; n++)
|
for (n=1; n<prefs.npetroparam; n++)
|
fprintf(file, " %g", prefs.petroparam[n]);
|
fprintf(file, " %g", prefs.petroparam[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Phot_AutoApers\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Phot_AutoApers\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"obs.param;phot\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"obs.param;phot\" value=\"%g",
|
prefs.nautoaper, prefs.autoaper[0]);
|
prefs.nautoaper, prefs.autoaper[0]);
|
for (n=1; n<prefs.nautoaper; n++)
|
for (n=1; n<prefs.nautoaper; n++)
|
fprintf(file, " %g", prefs.autoaper[n]);
|
fprintf(file, " %g", prefs.autoaper[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Phot_FluxFrac\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Phot_FluxFrac\" datatype=\"float\""
|
" arraysize=\"%d\" ucd=\"arith.factor;obs.param;phot\" value=\"%g",
|
" arraysize=\"%d\" ucd=\"arith.factor;obs.param;phot\" value=\"%g",
|
prefs.nflux_frac, prefs.flux_frac[0]);
|
prefs.nflux_frac, prefs.flux_frac[0]);
|
for (n=1; n<prefs.nflux_frac; n++)
|
for (n=1; n<prefs.nflux_frac; n++)
|
fprintf(file, " %g", prefs.flux_frac[n]);
|
fprintf(file, " %g", prefs.flux_frac[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Satur_Level\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Satur_Level\" datatype=\"float\""
|
" ucd=\"instr.saturation;phot.count;obs.param\" value=\"%g\""
|
" ucd=\"instr.saturation;phot.count;obs.param\" value=\"%g\""
|
" unit=\"ct\"/>\n", prefs.satur_level);
|
" unit=\"ct\"/>\n", prefs.satur_level);
|
fprintf(file, " <PARAM name=\"Mag_ZeroPoint\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Mag_ZeroPoint\" datatype=\"float\""
|
" ucd=\"phot.calib;phot.mag;obs.param\" value=\"%g\" unit=\"mag\"/>\n",
|
" ucd=\"phot.calib;phot.mag;obs.param\" value=\"%g\" unit=\"mag\"/>\n",
|
prefs.mag_zeropoint);
|
prefs.mag_zeropoint);
|
fprintf(file, " <PARAM name=\"Mag_Gamma\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Mag_Gamma\" datatype=\"float\""
|
" ucd=\"phot.calib;obs.param\" value=\"%g\"/>\n",
|
" ucd=\"phot.calib;obs.param\" value=\"%g\"/>\n",
|
prefs.mag_gamma);
|
prefs.mag_gamma);
|
fprintf(file, " <PARAM name=\"Gain\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Gain\" datatype=\"float\""
|
" ucd=\"instr.param;obs.param\" value=\"%g\"/>\n",
|
" ucd=\"instr.param;obs.param\" value=\"%g\"/>\n",
|
prefs.gain);
|
prefs.gain);
|
fprintf(file, " <PARAM name=\"Pixel_Scale\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Pixel_Scale\" datatype=\"float\""
|
" ucd=\"instr.scale;obs.param\" value=\"%g\" unit=\"arcsec\"/>\n",
|
" ucd=\"instr.scale;obs.param\" value=\"%g\" unit=\"arcsec\"/>\n",
|
prefs.pixel_scale);
|
prefs.pixel_scale);
|
fprintf(file, " <PARAM name=\"Seeing_FWHM\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Seeing_FWHM\" datatype=\"float\""
|
" ucd=\"instr.det.psf;stat.mean;obs.param\" value=\"%g\""
|
" ucd=\"instr.det.psf;stat.mean;obs.param\" value=\"%g\""
|
" unit=\"pix\"/>\n", prefs.seeing_fwhm);
|
" unit=\"pix\"/>\n", prefs.seeing_fwhm);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"StarNNW_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"StarNNW_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
prefs.nnw_name);
|
prefs.nnw_name);
|
|
|
fprintf(file, " <PARAM name=\"Back_Size\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Back_Size\" datatype=\"int\""
|
" arraysize=\"%d\" ucd=\"obs.param\" value=\"%d",
|
" arraysize=\"%d\" ucd=\"obs.param\" value=\"%d",
|
prefs.nbacksize, prefs.backsize[0]);
|
prefs.nbacksize, prefs.backsize[0]);
|
for (n=1; n<prefs.nbacksize; n++)
|
for (n=1; n<prefs.nbacksize; n++)
|
fprintf(file, " %d", prefs.backsize[n]);
|
fprintf(file, " %d", prefs.backsize[n]);
|
fprintf(file, "\" unit=\"pix\"/>\n");
|
fprintf(file, "\" unit=\"pix\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Back_FilterSize\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Back_FilterSize\" datatype=\"int\""
|
" arraysize=\"%d\" ucd=\"obs.param\" value=\"%d",
|
" arraysize=\"%d\" ucd=\"obs.param\" value=\"%d",
|
prefs.nbackfsize, prefs.backfsize[0]);
|
prefs.nbackfsize, prefs.backfsize[0]);
|
for (n=1; n<prefs.nbackfsize; n++)
|
for (n=1; n<prefs.nbackfsize; n++)
|
fprintf(file, " %d", prefs.backfsize[n]);
|
fprintf(file, " %d", prefs.backfsize[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"BackPhoto_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"BackPhoto_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;obs.param;\" value=\"%s\"/>\n",
|
" ucd=\"meta.code;obs.param;\" value=\"%s\"/>\n",
|
key[findkeys("BACKPHOTO_TYPE", keylist,
|
key[findkeys("BACKPHOTO_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.pback_type]);
|
FIND_STRICT)].keylist[prefs.pback_type]);
|
|
|
fprintf(file, " <PARAM name=\"BackPhoto_Thick\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"BackPhoto_Thick\" datatype=\"int\""
|
" ucd=\"obs.param\" value=\"%d\" unit=\"pix\"/>\n",
|
" ucd=\"obs.param\" value=\"%d\" unit=\"pix\"/>\n",
|
prefs.pback_size);
|
prefs.pback_size);
|
|
|
fprintf(file, " <PARAM name=\"Back_FiltThresh\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Back_FiltThresh\" datatype=\"float\""
|
" ucd=\"phot.count;arith.ratio;obs.param\" value=\"%g\"/>\n",
|
" ucd=\"phot.count;arith.ratio;obs.param\" value=\"%g\"/>\n",
|
prefs.backfthresh);
|
prefs.backfthresh);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"CheckImage_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"CheckImage_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code\" value=\"%s",
|
" ucd=\"meta.code\" value=\"%s",
|
key[findkeys("CHECKIMAGE_TYPE", keylist,
|
key[findkeys("CHECKIMAGE_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.check_type[0]]);
|
FIND_STRICT)].keylist[prefs.check_type[0]]);
|
for (n=1; n<prefs.ncheck_type; n++)
|
for (n=1; n<prefs.ncheck_type; n++)
|
fprintf(file,
|
fprintf(file,
|
",%s",
|
",%s",
|
key[findkeys("CHECKIMAGE_TYPE", keylist,
|
key[findkeys("CHECKIMAGE_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.check_type[n]]);
|
FIND_STRICT)].keylist[prefs.check_type[n]]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"CheckImage_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"CheckImage_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.file\" value=\"%s",
|
" ucd=\"meta.file\" value=\"%s",
|
prefs.check_name[0]);
|
prefs.check_name[0]);
|
for (n=1; n<prefs.ncheck_type; n++)
|
for (n=1; n<prefs.ncheck_type; n++)
|
if (prefs.check_type[n] != CHECK_NONE)
|
if (prefs.check_type[n] != CHECK_NONE)
|
fprintf(file, ",%s", prefs.check_name[n]);
|
fprintf(file, ",%s", prefs.check_name[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
|
|
fprintf(file, " <PARAM name=\"Memory_ObjStack\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Memory_ObjStack\" datatype=\"int\""
|
" ucd=\"meta.number;src;obs.param\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;src;obs.param\" value=\"%d\"/>\n",
|
prefs.clean_stacksize);
|
prefs.clean_stacksize);
|
fprintf(file, " <PARAM name=\"Memory_PixStack\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Memory_PixStack\" datatype=\"int\""
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
prefs.mem_pixstack);
|
prefs.mem_pixstack);
|
fprintf(file, " <PARAM name=\"Memory_BufSize\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Memory_BufSize\" datatype=\"int\""
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
prefs.mem_bufsize);
|
prefs.mem_bufsize);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Assoc_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Assoc_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset;meta.file\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset;meta.file\" value=\"%s\"/>\n",
|
prefs.assoc_name);
|
prefs.assoc_name);
|
if (prefs.nassoc_data)
|
if (prefs.nassoc_data)
|
{
|
{
|
fprintf(file, " <PARAM name=\"Assoc_Data\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Assoc_Data\" datatype=\"int\""
|
" arraysize=\"%d\" ucd=\"meta.code;obs.param\" value=\"%d",
|
" arraysize=\"%d\" ucd=\"meta.code;obs.param\" value=\"%d",
|
prefs.nassoc_data, prefs.assoc_data[0]);
|
prefs.nassoc_data, prefs.assoc_data[0]);
|
for (n=1; n<prefs.nassoc_data; n++)
|
for (n=1; n<prefs.nassoc_data; n++)
|
fprintf(file, " %d", prefs.assoc_data[n]);
|
fprintf(file, " %d", prefs.assoc_data[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
}
|
}
|
if (prefs.nassoc_param)
|
if (prefs.nassoc_param)
|
{
|
{
|
fprintf(file, " <PARAM name=\"Assoc_Params\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"Assoc_Params\" datatype=\"int\""
|
" arraysize=\"%d\" ucd=\"meta.code;obs.param\" value=\"%d",
|
" arraysize=\"%d\" ucd=\"meta.code;obs.param\" value=\"%d",
|
prefs.nassoc_param, prefs.assoc_param[0]);
|
prefs.nassoc_param, prefs.assoc_param[0]);
|
for (n=1; n<prefs.nassoc_param; n++)
|
for (n=1; n<prefs.nassoc_param; n++)
|
fprintf(file, " %d", prefs.assoc_param[n]);
|
fprintf(file, " %d", prefs.assoc_param[n]);
|
fprintf(file, "\"/>\n");
|
fprintf(file, "\"/>\n");
|
}
|
}
|
fprintf(file, " <PARAM name=\"Assoc_Radius\" datatype=\"float\""
|
fprintf(file, " <PARAM name=\"Assoc_Radius\" datatype=\"float\""
|
" ucd=\"phys.size.radius;obs.param\" value=\"%g\" unit=\"pix\"/>\n",
|
" ucd=\"phys.size.radius;obs.param\" value=\"%g\" unit=\"pix\"/>\n",
|
prefs.assoc_radius);
|
prefs.assoc_radius);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Assoc_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Assoc_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.code;obs.param\" value=\"%s\"/>\n",
|
key[findkeys("ASSOC_TYPE", keylist,
|
key[findkeys("ASSOC_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.assoc_type]);
|
FIND_STRICT)].keylist[prefs.assoc_type]);
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"AssocSelec_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"AssocSelec_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.code;obs.param\" value=\"%s\"/>\n",
|
key[findkeys("ASSOCSELEC_TYPE", keylist,
|
key[findkeys("ASSOCSELEC_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.assocselec_type]);
|
FIND_STRICT)].keylist[prefs.assocselec_type]);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"Verbose_Type\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"Verbose_Type\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.code\" value=\"%s\"/>\n",
|
" ucd=\"meta.code\" value=\"%s\"/>\n",
|
key[findkeys("VERBOSE_TYPE", keylist,
|
key[findkeys("VERBOSE_TYPE", keylist,
|
FIND_STRICT)].keylist[prefs.verbose_type]);
|
FIND_STRICT)].keylist[prefs.verbose_type]);
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"FITS_Unsigned\" datatype=\"boolean\""
|
" <PARAM name=\"FITS_Unsigned\" datatype=\"boolean\""
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
" ucd=\"meta.code;obs.param\" value=\"%c\"/>\n",
|
prefs.fitsunsigned_flag? 'T':'F');
|
prefs.fitsunsigned_flag? 'T':'F');
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"PSF_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"PSF_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
prefs.psf_name[0]);
|
prefs.psf_name[0]);
|
fprintf(file, " <PARAM name=\"PSF_NMax\" datatype=\"int\""
|
fprintf(file, " <PARAM name=\"PSF_NMax\" datatype=\"int\""
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
" ucd=\"meta.number;obs.param\" value=\"%d\"/>\n",
|
prefs.psf_npsfmax);
|
prefs.psf_npsfmax);
|
fprintf(file,
|
|
" <PARAM name=\"PSFDisplay_Type\" datatype=\"char\" arraysize=\"*\""
|
|
" ucd=\"meta.code;obs.param\" value=\"%s\"/>\n",
|
|
key[findkeys("PSFDISPLAY_TYPE", keylist,
|
|
FIND_STRICT)].keylist[prefs.psfdisplay_type]);
|
|
|
|
fprintf(file,
|
fprintf(file,
|
" <PARAM name=\"SOM_Name\" datatype=\"char\" arraysize=\"*\""
|
" <PARAM name=\"SOM_Name\" datatype=\"char\" arraysize=\"*\""
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
" ucd=\"meta.dataset;meta.file;obs.param\" value=\"%s\"/>\n",
|
prefs.som_name);
|
prefs.som_name);
|
}
|
}
|
|
|
fprintf(file, " </RESOURCE>\n");
|
fprintf(file, " </RESOURCE>\n");
|
fprintf(file, " </RESOURCE>\n");
|
fprintf(file, " </RESOURCE>\n");
|
|
|
return RETURN_OK;
|
return RETURN_OK;
|
}
|
}
|
|
|
|
|
|
|
|
|
/****** write_xmlerror ******************************************************
|
/****** write_xmlerror ******************************************************
|
PROTO int write_xmlerror(char *error)
|
PROTO int write_xmlerror(char *error)
|
PURPOSE Save meta-data to a simplified XML file in case of a catched error
|
PURPOSE Save meta-data to a simplified XML file in case of a catched error
|
INPUT a character string.
|
INPUT a character string.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
OUTPUT RETURN_OK if everything went fine, RETURN_ERROR otherwise.
|
NOTES -.
|
NOTES -.
|
AUTHOR E. Bertin (IAP)
|
AUTHOR E. Bertin (IAP)
|
VERSION 14/07/2006
|
VERSION 14/07/2006
|
***/
|
***/
|
void write_xmlerror(char *filename, char *error)
|
void write_xmlerror(char *filename, char *error)
|
{
|
{
|
FILE *file;
|
FILE *file;
|
|
|
if (!(file = fopen(filename, "w")))
|
if (!(file = fopen(filename, "w")))
|
return;
|
return;
|
|
|
write_xml_header(file);
|
write_xml_header(file);
|
|
|
fprintf(file, " </TABLE>\n");
|
fprintf(file, " </TABLE>\n");
|
|
|
write_xml_meta(file, error);
|
write_xml_meta(file, error);
|
|
|
fprintf(file, "</RESOURCE>\n");
|
fprintf(file, "</RESOURCE>\n");
|
fprintf(file, "</VOTABLE>\n");
|
fprintf(file, "</VOTABLE>\n");
|
|
|
fclose(file);
|
fclose(file);
|
|
|
return;
|
return;
|
}
|
}
|
|
|
|
|
|
|