Commit 1d1d4318 authored by Emmanuel Bertin's avatar Emmanuel Bertin
Browse files

Fixed BITPIX display info.

Changed CONCENTRATION_MODEL to SPREAD_MODEL.
Added SPREADERR_MODEL measurement (currently a crude estimate).
Optimized FFT calls.
Set PSF_NMAX to 2 by default.
parent ff13ac00
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
*
*	Contents:	functions for output of catalog data.
*
*	Last modify:	24/09/2009
*	Last modify:	29/09/2009
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
@@ -175,6 +175,7 @@ void updateparamflags()
			| FLAG(obj2.prof_disk_patternspiral);
  FLAG(obj2.prof_disk_scale) |= prefs.pattern_flag;

  FLAG(obj2.prof_concentration) |= FLAG(obj2.prof_concentrationerr);
  FLAG(obj2.poserraw_prof) |= FLAG(obj2.poserrbw_prof);
  FLAG(obj2.poserrcxxw_prof) |= FLAG(obj2.poserrcyyw_prof)
			| FLAG(obj2.poserrcxyw_prof);
@@ -210,8 +211,8 @@ void updateparamflags()
			| FLAG(obj2.prof_concentration)
			| FLAG(obj2.prof_class_star);

  FLAG(obj2.mag_prof) |= FLAG(obj2.magerr_prof);
  FLAG(obj2.magerr_prof) |= FLAG(obj2.fluxerr_prof);
  FLAG(obj2.fluxerr_prof) |= FLAG(obj2.magerr_prof)
			| FLAG(obj2.prof_concentrationerr);
  FLAG(obj2.flux_prof) |= FLAG(obj2.mag_prof) | FLAG(obj2.fluxerr_prof);
  FLAG(obj2.prof_spheroid_mag) |= FLAG(obj2.prof_spheroid_magerr);
  FLAG(obj2.prof_spheroid_reff) |= FLAG(obj2.prof_spheroid_refferr);
@@ -612,10 +613,10 @@ void dumpparams(void)

  for (i=0; *objkey[i].name ; i++)
    if (*objkey[i].unit)
      printf("#%-22.22s %-58.58s [%s]\n",
      printf("#%-24.24s %-57.57s [%s]\n",
		objkey[i].name, objkey[i].comment, objkey[i].unit);
    else
      printf("#%-22.22s %-58.58s\n",
      printf("#%-24.24s %-57.57s\n",
		objkey[i].name, objkey[i].comment);

  return;
+43 −13
Original line number Diff line number Diff line
@@ -32,11 +32,12 @@
#include "threads.h"
#endif

 fftwf_plan	fplan, bplan;
 int    firsttimeflag;
#ifdef USE_THREADS
 pthread_mutex_t	fftmutex;
#endif

 fftwf_complex 	*fdata1;
#define SWAP(a,b)       tempr=(a);(a)=(b);(b)=tempr

/****** fft_init ************************************************************
@@ -98,6 +99,30 @@ void fft_end(void)
  }


/****** fft_reset ***********************************************************
PROTO	void fft_reset(void)
PURPOSE	Reset the FFT plans
INPUT	-.
OUTPUT	-.
NOTES	-.
AUTHOR	E. Bertin (IAP)
VERSION	26/06/2009
 ***/
void    fft_reset(void)
 {
  if (fplan)
    {
    QFFTWFREE(fdata1);
    fftwf_destroy_plan(fplan);
    }
  if (bplan)
    fftwf_destroy_plan(bplan);
  fplan = bplan = NULL;

  return;
  }


/****** fft_conv ************************************************************
PROTO	void fft_conv(float *data1, float *fdata2, int *size)
PURPOSE	Optimized 2-dimensional FFT convolution using the FFTW library.
@@ -112,8 +137,7 @@ VERSION 26/03/2007
 ***/
void    fft_conv(float *data1, float *fdata2, int *size)
  {
   fftwf_plan	plan;
   float	*fdata1,*fdata1p,*fdata2p,
   float	*fdata1p,*fdata2p,
		real,imag, fac;
   int		i, npix,npix2;

@@ -125,18 +149,23 @@ void fft_conv(float *data1, float *fdata2, int *size)
#ifdef USE_THREADS
  QPTHREAD_MUTEX_LOCK(&fftmutex);
#endif
  QFFTWMALLOC(fdata1, float, npix2);
  plan = fftwf_plan_dft_r2c_2d(size[1], size[0], data1,
        (fftwf_complex *)fdata1, FFTW_ESTIMATE|FFTW_DESTROY_INPUT);
  if (!fplan)
    {
    QFFTWMALLOC(fdata1, fftwf_complex, npix2);
    fplan = fftwf_plan_dft_r2c_2d(size[1], size[0], data1,
        (fftwf_complex *)fdata1, FFTW_MEASURE|FFTW_DESTROY_INPUT);
    }
#ifdef USE_THREADS
  QPTHREAD_MUTEX_UNLOCK(&fftmutex);
#endif
  fftwf_execute(plan);
  fftwf_execute_dft_r2c(fplan, data1, fdata1);

//  fftwf_execute(plan);

#ifdef USE_THREADS
  QPTHREAD_MUTEX_LOCK(&fftmutex);
#endif
  fftwf_destroy_plan(plan);
//  fftwf_destroy_plan(plan);
#ifdef USE_THREADS
  QPTHREAD_MUTEX_UNLOCK(&fftmutex);
#endif
@@ -157,20 +186,21 @@ void fft_conv(float *data1, float *fdata2, int *size)
#ifdef USE_THREADS
  QPTHREAD_MUTEX_LOCK(&fftmutex);
#endif
  plan = fftwf_plan_dft_c2r_2d(size[1], size[0], (fftwf_complex *)fdata1, 
        data1, FFTW_ESTIMATE|FFTW_DESTROY_INPUT);
  if (!bplan)
    bplan = fftwf_plan_dft_c2r_2d(size[1], size[0], (fftwf_complex *)fdata1, 
        data1, FFTW_MEASURE|FFTW_DESTROY_INPUT);
#ifdef USE_THREADS
  QPTHREAD_MUTEX_UNLOCK(&fftmutex);
#endif
  fftwf_execute_dft_c2r(bplan, fdata1, data1);

  fftwf_execute(plan);
//  fftwf_execute(plan);

#ifdef USE_THREADS
  QPTHREAD_MUTEX_LOCK(&fftmutex);
#endif
  fftwf_destroy_plan(plan);
//  fftwf_destroy_plan(plan);
/* Free the fdata1 scratch array */
  QFFTWFREE(fdata1);
#ifdef USE_THREADS
  QPTHREAD_MUTEX_UNLOCK(&fftmutex);
#endif
+2 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
/*---------------------------------- protos --------------------------------*/
extern void	fft_conv(float *data1, float *fdata2, int *size),
		fft_end(),
		fft_init(int nthreads);
		fft_init(int nthreads),
		fft_reset(void);

extern float	*fft_rtf(float *data, int *size);
+1 −1
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ void makeit()
    changecatparamarrays("VECTOR_MODEL", &theprofit->nparam, 1);
    changecatparamarrays("VECTOR_MODELERR", &theprofit->nparam, 1);
    nparam2[0] = nparam2[1] = theprofit->nparam;
    changecatparamarrays("MATRIX_MODELERR", &nparam2, 2);
    changecatparamarrays("MATRIX_MODELERR", nparam2, 2);
    if (prefs.pattern_flag)
      {
      npat = prefs.prof_disk_patternvectorsize;
+5 −5
Original line number Diff line number Diff line
@@ -829,7 +829,7 @@ keystruct objkey[] = {
  {"ERRBPSF_IMAGE", "PSF RMS position error along minor axis",
	&outobj2.poserrb_psf, H_FLOAT, T_FLOAT, "%8.4f", "pixel",
	"stat.stdev;stat.min;pos.errorEllipse;instr.det", "pix"},
  {"ERRTHTPSF_IMAGE", "PSF error ellipse position angle (CCW/x)",
  {"ERRTHETAPSF_IMAGE", "PSF error ellipse position angle (CCW/x)",
	&outobj2.poserrtheta_psf, H_FLOAT, T_FLOAT, "%6.2f", "deg",
	"pos.posAng;pos.errorEllipse;instr.det", "deg"},
  {"ERRAPSF_WORLD", "World PSF RMS position error along major axis",
@@ -838,16 +838,16 @@ keystruct objkey[] = {
  {"ERRBPSF_WORLD", "World PSF RMS position error along minor axis",
	&outobj2.poserrbw_psf, H_FLOAT, T_FLOAT, "%12.7g", "pixel",
	"stat.stdev;stat.min;pos.errorEllipse", "deg"},
  {"ERRTHTPSF_WORLD", "PSF error ellipse pos. angle (CCW/world-x)",
  {"ERRTHETAPSF_WORLD", "PSF error ellipse pos. angle (CCW/world-x)",
	&outobj2.poserrthetaw_psf, H_FLOAT, T_FLOAT, "%6.2f", "deg",
	"pos.posAng;pos.errorEllipse", "deg"},
  {"ERRTHTPSF_SKY", "Native PSF error ellipse pos. angle (east of north)",
  {"ERRTHETAPSF_SKY", "Native PSF error ellipse pos. angle (east of north)",
	&outobj2.poserrthetas_psf, H_FLOAT, T_FLOAT, "%6.2f", "deg",
	"pos.posAng;pos.errorEllipse", "deg"},
  {"ERRTHTPSF_J2000", "J2000 PSF error ellipse pos. angle (east of north)",
  {"ERRTHETAPSF_J2000", "J2000 PSF error ellipse pos. angle (east of north)",
	&outobj2.poserrtheta2000_psf, H_FLOAT, T_FLOAT, "%6.2f", "deg",
	"pos.posAng;pos.errorEllipse", "deg"},
  {"ERRTHTPSF_B1950", "B1950 PSF error ellipse pos. angle (east of north)",
  {"ERRTHETAPSF_B1950", "B1950 PSF error ellipse pos. angle (east of north)",
	&outobj2.poserrtheta1950_psf, H_FLOAT, T_FLOAT, "%6.2f", "deg",
	"pos.posAng;pos.errorEllipse", "deg"},

Loading