Changeset 12332 for trunk/Ohana/src/libdvo
- Timestamp:
- Mar 8, 2007, 12:21:18 PM (19 years ago)
- Location:
- trunk/Ohana/src/libdvo
- Files:
-
- 8 added
- 19 edited
-
Makefile (modified) (2 diffs)
-
doc/dvo-structures.txt (modified) (2 diffs)
-
doc/notes.txt (added)
-
include/dvo.h (modified) (8 diffs)
-
src/LoadPhotcodes.c (modified) (1 diff)
-
src/LoadPhotcodesFITS.c (added)
-
src/LoadPhotcodesText.c (added)
-
src/SavePhotcodesFITS.c (added)
-
src/SavePhotcodesText.c (added)
-
src/coordops.c (modified) (11 diffs)
-
src/coordops.update.c (modified) (6 diffs)
-
src/dvo_catalog.c (modified) (3 diffs)
-
src/dvo_catalog_chipcoords.c (added)
-
src/dvo_catalog_mef.c (modified) (10 diffs)
-
src/dvo_catalog_raw.c (modified) (21 diffs)
-
src/dvo_catalog_split.c (modified) (29 diffs)
-
src/dvo_convert.c (modified) (21 diffs)
-
src/dvo_convert_elixir.c (modified) (13 diffs)
-
src/dvo_convert_loneos.c (modified) (14 diffs)
-
src/dvo_convert_panstarrs.c (modified) (9 diffs)
-
src/dvo_convert_panstarrs_DEV_0.c (added)
-
src/dvo_convert_pmtest.c (modified) (1 diff)
-
src/dvo_image.c (modified) (1 diff)
-
src/dvo_image_raw.c (modified) (3 diffs)
-
src/dvo_photcode_ops.c (added)
-
src/photfits.c (modified) (7 diffs)
-
src/skyregion_gsc.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libdvo/Makefile
r11880 r12332 29 29 $(SRC)/version.$(ARCH).o \ 30 30 $(SRC)/coordops.$(ARCH).o \ 31 $(SRC)/dvo_photcode_ops.$(ARCH).o \ 31 32 $(SRC)/LoadPhotcodes.$(ARCH).o \ 33 $(SRC)/LoadPhotcodesText.$(ARCH).o \ 34 $(SRC)/LoadPhotcodesFITS.$(ARCH).o \ 35 $(SRC)/SavePhotcodesText.$(ARCH).o \ 36 $(SRC)/SavePhotcodesFITS.$(ARCH).o \ 32 37 $(SRC)/imreg_datatypes.$(ARCH).o \ 33 38 $(SRC)/mosaic_astrom.$(ARCH).o \ … … 41 46 $(SRC)/dvo_catalog_split.$(ARCH).o \ 42 47 $(SRC)/dvo_catalog_create.$(ARCH).o \ 48 $(SRC)/dvo_catalog_chipcoords.$(ARCH).o \ 43 49 $(SRC)/dvo_convert.$(ARCH).o \ 44 50 $(SRC)/dvo_convert_elixir.$(ARCH).o \ 45 51 $(SRC)/dvo_convert_loneos.$(ARCH).o \ 46 $(SRC)/dvo_convert_panstarrs.$(ARCH).o \ 47 $(SRC)/dvo_convert_pmtest.$(ARCH).o \ 52 $(SRC)/dvo_convert_panstarrs_DEV_0.$(ARCH).o \ 48 53 $(SRC)/skyregion_io.$(ARCH).o \ 49 54 $(SRC)/skyregion_gsc.$(ARCH).o \ 50 55 $(SRC)/skyregion_ops.$(ARCH).o 56 57 # $(SRC)/dvo_convert_panstarrs.$(ARCH).o \ 58 # $(SRC)/dvo_convert_pmtest.$(ARCH).o \ 51 59 52 60 include ../libautocode/Makefile.Targets -
trunk/Ohana/src/libdvo/doc/dvo-structures.txt
r11991 r12332 1 2 2007.02.22 3 4 I have several DVO improvements to implement. I need to plan them a 5 bit carefully. Here are my thoughts on these updates. 6 7 - add chip X,Y to measure table 8 9 this is a fairly simple addition. In addstar/find_matches, I just need 10 to assign the X,Y value from the incoming star data. For loading 11 old catalogs which don't include X,Y in the table, I need to 12 calculate the X,Y position based on the R,D after finding the 13 matching image. I have code to do this calculation currently in 14 dvo/photometry.c for looking up X,Y on the fly. once this is moved 15 into the load functions, it will not be needed in photometry.c 16 17 - remove PRI/SEC and only use secfilt table for mags 18 19 this is not a very difficult change, conceptually, but it may be a 20 fair amount of work. all of the functions which currently switch on 21 the case of PRI/SEC just need to look in the secfilt location. the 22 value of Nsec needs to increase by 1. the load from tables which 23 used PRI/SEC need to move the PRI values to the correct location in 24 secfilt 25 26 eventually, rename 'secfilt' to a better name choice 27 28 - add image, average, measure IDs 29 30 for PS1, the image and measure need to be generated by the external 31 software. they would just be part of the input stream. for the 32 case were the IDs are not supplied, DVO needs to generate them in a 33 unique way. I probably need to understand / define that mechanism 34 before tackling this problem. 35 36 one point: I need to keep the old averef index. how do this index 37 and the objID work together? 38 39 - link measure to image 40 41 temporariliy use an index like averef? 42 43 - move photcode table to catdir (also zero points) 44 45 should be fairly easy: just like the SkyTable, look in the catdir 46 first, then generate from the default text table if it is missing. 47 48 - color term as a function of mosaic position 49 50 - mextract field,field,field 51 52 this should not be a very difficult job. just add a loop to the 53 avextract / mextract functions. 54 55 - mextract field(s) where condition 56 57 this is a bit trickier, and could make use of the code in the dvo 58 math functions 59 60 - dvo select from mysql 61 62 not very difficult: need to define the commands to select the 63 database and set up a connection, then parse the select line into 64 the appropriate format. just need to as the db for the type of the 65 fields that are requested: must be numerical. 66 67 select field,field,field from table where condition 68 69 - change vectors to doubles 70 71 probably not a terrible job. this will depend on how the union is 72 defined. I don't want this to explode the size of an image! 73 74 --------- 1 75 2 76 I now have the ability to load and save DVO databases in old formats, … … 12 86 - CFHT Elixir databases: cmp files, ELIXIR format 13 87 - Brandon's Taurus db: incorrect 'PANSTARRS' format, should be called 14 'PSTEST1' 88 'PSTEST1'. drop support for this eventually? have brandon migrate to 89 the new panstarrs formats? 15 90 16 91 I am going to use the following naming convention for future db table 17 92 updates: 18 93 19 - PANSTARRS.DEV.0 94 - PANSTARRS.DEV.0, PANSTARRS.DEV.1, etc 20 95 - PANSTARRS.PS1.0, PANSTARRS.PS1.1, etc 21 96 - PANSTARRS.PS4.0, PANSTARRS.PS4.1, etc -
trunk/Ohana/src/libdvo/include/dvo.h
r10931 r12332 18 18 19 19 /* DVO table formats */ 20 enum {DVO_FORMAT_UNDEF, DVO_FORMAT_INTERNAL, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS, DVO_FORMAT_PMTEST} DVOTableFormat; 20 enum {DVO_FORMAT_UNDEF, 21 DVO_FORMAT_INTERNAL, 22 DVO_FORMAT_ELIXIR, 23 DVO_FORMAT_LONEOS, 24 DVO_FORMAT_PANSTARRS, 25 DVO_FORMAT_PMTEST, 26 DVO_FORMAT_PANSTARRS_DEV_0 27 } DVOTableFormat; 21 28 22 29 /* image data modes in RegImage */ 23 30 enum {T_UNDEF = -1, T_NONE, T_OBJECT, T_DARK, T_BIAS, T_FLAT, T_MASK, T_FRINGE, T_SCATTER, T_MODES, T_FRINGEPTS, T_ANY, N_TYPE}; 24 31 enum {M_UNDEF = -1, M_NONE, M_MEF, M_SPLIT, M_SINGLE, M_CUBE, M_SLICE, M_MODES, N_MODE}; 32 33 typedef enum { 34 PROJ_NONE, // undefined 35 PROJ_ZEA, // zenithal 36 PROJ_ZPL, // zenithal 37 PROJ_ARC, // zenithal 38 PROJ_STG, // zenithal 39 PROJ_SIN, // zenithal 40 PROJ_TAN, // zenithal 41 PROJ_DIS, // zenithal (TAN + polyterms) 42 PROJ_LIN, // cartesian 43 PROJ_PLY, // cartesian 44 PROJ_WRP, // cartesian 45 PROJ_AIT, // pseudocyl 46 PROJ_GLS, // pseudocyl 47 PROJ_PAR, // pseudocyl 48 } OhanaProjection; 49 50 typedef enum { 51 PROJ_MODE_NONE, 52 PROJ_MODE_CARTESIAN, 53 PROJ_MODE_ZENITHAL, 54 PROJ_MODE_PSEUDOCYL, 55 } OhanaProjectionMode; 25 56 26 57 /* RegImage.flag values */ … … 39 70 40 71 /* photometry code types */ 41 # define PHOT_PRI 0x0172 // # define PHOT_PRI 0x01 42 73 # define PHOT_SEC 0x02 43 74 # define PHOT_DEP 0x03 … … 133 164 134 165 typedef struct { 135 int Ncode; 136 int Nsecfilt; 137 int hashcode[0x10000]; 138 int hashNsec[0x10000]; 166 int Ncode; // number of photcodes 167 int Nsecfilt; // number of average magnitudes 168 int hashcode[0x10000]; // index from photcode value to sequence 169 int hashNsec[0x10000]; // index from photcode value to Nsec seq 170 int codeNsec[0x10000]; // index from Nsec seq to photcode value 139 171 PhotCode *code; 140 172 } PhotCodeData; … … 191 223 192 224 /* in coords.c, using libautocode/def/coords.d */ 225 int XY_to_LM (double *L, double *M, double x, double y, Coords *coords); 226 int LM_to_XY (double *x, double *y, double L, double M, Coords *coords); 227 int RD_to_LM (double *L, double *M, double ra, double dec, Coords *coords); 228 int LM_to_RD (double *ra, double *dec, double L, double M, Coords *coords); 193 229 int XY_to_RD (double *ra, double *dec, double x, double y, Coords *coords); 194 230 int RD_to_XY (double *x, double *y, double ra, double dec, Coords *coords); … … 199 235 void RegisterMosaic (Coords *coords); 200 236 void coords_precess (double *ra, double *dec, double in_epoch, double out_epoch); 237 OhanaProjection GetProjection (char *ctype); 238 int SetProjection (char *ctype, OhanaProjection proj); 239 OhanaProjectionMode GetProjectionMode (OhanaProjection proj); 201 240 202 241 char *libdvo_version (); … … 232 271 float PhotdM (PhotCode *code, Average *average, SecFilt *secfilt); 233 272 234 # if (0) 235 short iPhotInst (Measure *measure); 236 short iPhotAbs (Measure *measure); 237 short iPhotCat (Measure *measure); 238 short iPhotSys (Measure *measure, Average *average, SecFilt *secfilt); 239 short iPhotRel (Measure *measure, Average *average, SecFilt *secfilt); 240 short iPhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 241 short iPhotAve (PhotCode *code, Average *average, SecFilt *secfilt); 242 short iPhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 243 short iPhotXm (PhotCode *code, Average *average, SecFilt *secfilt); 244 short iPhotdM (PhotCode *code, Average *average, SecFilt *secfilt); 245 # endif 246 247 float iPhotColor (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 273 float PhotColorForCode (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 248 274 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color); 249 275 250 int LoadPhotcodes (char *filename); 276 PhotCodeData *GetPhotcodeTable (); 277 278 int LoadPhotcodes (char *catdir_file, char *master_file); 279 int LoadPhotcodesText (char *filename); 280 int LoadPhotcodesFITS (char *filename); 281 int SavePhotcodesText (char *filename); 282 int SavePhotcodesFITS (char *filename); 283 284 void PrintPhotcodeNamebyCode (FILE *f, char *format, int code); 285 251 286 int GetPhotcodeCodebyName (char *name); 252 287 int GetPhotcodeEquivCodebyName (char *name); … … 297 332 298 333 /*** conversion functions / I/O conversions ***/ 299 Average *ReadRawAverage (FILE *f, int Naverage, int format );334 Average *ReadRawAverage (FILE *f, int Naverage, int format, SecFilt **primary); 300 335 Measure *ReadRawMeasure (FILE *f, int Nmeasure, int format); 301 336 SecFilt *ReadRawSecFilt (FILE *f, int Nsecfilt, int format); 302 int WriteRawAverage (FILE *f, Average *average, int Naverage, int format );337 int WriteRawAverage (FILE *f, Average *average, int Naverage, int format, SecFilt *primary); 303 338 int WriteRawMeasure (FILE *f, Measure *measure, int Nmeasure, int format); 304 339 int WriteRawSecFilt (FILE *f, SecFilt *secfilt, int Nsecfilt, int format); 305 340 306 Average *FtableToAverage (FTable *ftable, int *Naverage, int *format); 307 Average *AverageLoneosToInternal (AverageLoneos *in, int Nvalues); 308 Average *AverageElixirToInternal (AverageElixir *in, int Nvalues); 309 Average *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues); 310 Average *AveragePMtestToInternal (AveragePMtest *in, int Nvalues); 311 AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues); 312 AverageElixir *AverageInternalToElixir (Average *in, int Nvalues); 313 AveragePanstarrs *AverageInternalToPanstarrs (Average *in, int Nvalues); 314 AveragePMtest *AverageInternalToPMtest (Average *in, int Nvalues); 315 341 Average *FtableToAverage (FTable *ftable, int *Naverage, int *format, SecFilt **primary); 316 342 Measure *FtableToMeasure (FTable *ftable, int *Nmeasure, int *format); 317 Measure *MeasureLoneosToInternal (MeasureLoneos *in, int Nvalues);318 Measure *MeasureElixirToInternal (MeasureElixir *in, int Nvalues);319 Measure *MeasurePanstarrsToInternal (MeasurePanstarrs *in, int Nvalues);320 MeasureLoneos *MeasureInternalToLoneos (Measure *in, int Nvalues);321 MeasureElixir *MeasureInternalToElixir (Measure *in, int Nvalues);322 MeasurePanstarrs *MeasureInternalToPanstarrs (Measure *in, int Nvalues);323 324 343 SecFilt *FtableToSecFilt (FTable *ftable, int *Nsecfilt, int *format); 325 SecFilt *SecFiltLoneosToInternal (SecFiltLoneos *in, int Nvalues); 326 SecFilt *SecFiltElixirToInternal (SecFiltElixir *in, int Nvalues); 327 SecFilt *SecFiltPanstarrsToInternal (SecFiltPanstarrs *in, int Nvalues); 328 SecFiltLoneos *SecFiltInternalToLoneos (SecFilt *in, int Nvalues); 329 SecFiltElixir *SecFiltInternalToElixir (SecFilt *in, int Nvalues); 330 SecFiltPanstarrs *SecFiltInternalToPanstarrs (SecFilt *in, int Nvalues); 331 332 int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format); 344 int FtableToImage (FTable *ftable, Header *theader, int *format); 345 346 int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format, SecFilt *primary); 333 347 int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format); 334 348 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format); 349 int ImageToFtable (FTable *ftable, Header *theader, int format); 350 int ImageToVtable (VTable *vtable, Header *theader, int format); 351 352 Image *ImageElixirToInternal (ImageElixir *in, int Nvalues); 353 Image *ImageLoneosToInternal (ImageLoneos *in, int Nvalues); 354 Image *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues); 355 Image *ImagePanstarrs_DEV_0_ToInternal (ImagePanstarrs_DEV_0 *in, int Nvalues); 356 357 ImageElixir *ImageInternalToElixir (Image *in, int Nvalues); 358 ImageLoneos *ImageInternalToLoneos (Image *in, int Nvalues); 359 ImagePanstarrs *ImageInternalToPanstarrs (Image *in, int Nvalues); 360 ImagePanstarrs_DEV_0 *ImageInternalToPanstarrs_DEV_0 (Image *in, int Nvalues); 361 362 Average *AverageLoneosToInternal (AverageLoneos *in, int Nvalues, SecFilt **primary); 363 Average *AverageElixirToInternal (AverageElixir *in, int Nvalues, SecFilt **primary); 364 Average *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues); 365 Average *AveragePanstarrs_DEV_0_ToInternal (AveragePanstarrs_DEV_0 *in, int Nvalues); 366 367 AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues, SecFilt *primary); 368 AverageElixir *AverageInternalToElixir (Average *in, int Nvalues, SecFilt *primary); 369 AveragePanstarrs *AverageInternalToPanstarrs (Average *in, int Nvalues); 370 AveragePanstarrs_DEV_0 *AverageInternalToPanstarrs_DEV_0 (Average *in, int Nvalues); 371 372 Measure *MeasureLoneosToInternal (MeasureLoneos *in, int Nvalues); 373 Measure *MeasureElixirToInternal (MeasureElixir *in, int Nvalues); 374 Measure *MeasurePanstarrsToInternal (MeasurePanstarrs *in, int Nvalues); 375 Measure *MeasurePanstarrs_DEV_0_ToInternal (MeasurePanstarrs_DEV_0 *in, int Nvalues); 376 377 MeasureLoneos *MeasureInternalToLoneos (Measure *in, int Nvalues); 378 MeasureElixir *MeasureInternalToElixir (Measure *in, int Nvalues); 379 MeasurePanstarrs *MeasureInternalToPanstarrs (Measure *in, int Nvalues); 380 MeasurePanstarrs_DEV_0 *MeasureInternalToPanstarrs_DEV_0 (Measure *in, int Nvalues); 381 382 SecFilt *SecFiltLoneosToInternal (SecFiltLoneos *in, int Nvalues); 383 SecFilt *SecFiltElixirToInternal (SecFiltElixir *in, int Nvalues); 384 SecFilt *SecFiltPanstarrsToInternal (SecFiltPanstarrs *in, int Nvalues); 385 SecFilt *SecFiltPanstarrs_DEV_0_ToInternal (SecFiltPanstarrs_DEV_0 *in, int Nvalues); 386 387 SecFiltLoneos *SecFiltInternalToLoneos (SecFilt *in, int Nvalues); 388 SecFiltElixir *SecFiltInternalToElixir (SecFilt *in, int Nvalues); 389 SecFiltPanstarrs *SecFiltInternalToPanstarrs (SecFilt *in, int Nvalues); 390 SecFiltPanstarrs_DEV_0 *SecFiltInternalToPanstarrs_DEV_0 (SecFilt *in, int Nvalues); 335 391 336 392 /*** DVO image db I/O Functions ***/ … … 345 401 int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew); 346 402 void dvo_image_create (FITS_DB *db, double ZeroPoint); 347 348 int FtableToImage (FTable *ftable, Header *theader, int *format);349 int ImageToFtable (FTable *ftable, Header *theader, int format);350 int ImageToVtable (VTable *vtable, Header *theader, int format);351 Image *ImageElixirToInternal (ImageElixir *in, int Nvalues);352 ImageElixir *ImageInternalToElixir (Image *in, int Nvalues);353 Image *ImageLoneosToInternal (ImageLoneos *in, int Nvalues);354 ImageLoneos *ImageInternalToLoneos (Image *in, int Nvalues);355 Image *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues);356 ImagePanstarrs *ImageInternalToPanstarrs (Image *in, int Nvalues);357 403 358 404 /* skyregion APIs */ -
trunk/Ohana/src/libdvo/src/LoadPhotcodes.c
r9631 r12332 1 1 # include <dvo.h> 2 2 3 # define NCTERMS 4 4 # define F_PS 0.001 5 # define NO_MAG_PS 100.0 3 int LoadPhotcodes (char *catdir_file, char *master_file) { 6 4 7 static PhotCodeData *photcodes = NULL; 8 static double ZERO_POINT; 9 static short int Nseclist[0x10000]; 10 11 /* static short int iZERO_POINT; */ 12 13 void SetZeroPoint (double ZP) { 14 ZERO_POINT = ZP; 15 /* iZERO_POINT = 1000 * ZP; */ 16 } 17 18 int LoadPhotcodes (char *filename) { 5 /* first try to load the photcodes from the specified CATDIR location */ 6 if (LoadPhotcodesFITS (catdir_file)) return TRUE; 19 7 20 FILE *f; 21 int i, Ns, Np, NPHOTCODE, Npri, Nfield; 22 PhotCode *photcode; 23 int code; 24 char *c; 25 char line[256]; 26 char name[32], type[32], Zero[32], Airmass[32], Offset[32], 27 C1[32], C2[32], Slope[32], Color[32], Primary[32]; 28 int c1, c2; 29 30 /* allocate space to photcode table, free existing data */ 31 if (photcodes == NULL) { 32 ALLOCATE (photcodes, PhotCodeData, 1); 33 photcodes[0].code = NULL; 34 } 35 if (photcodes[0].code != NULL) free (photcodes[0].code); 36 37 f = fopen (filename, "r"); 38 if (f == (FILE *) NULL) { 39 photcodes[0].Ncode = 0; 40 photcodes[0].Nsecfilt = 0; 41 photcodes[0].code = (PhotCode *) NULL; 42 return (FALSE); 8 /* next try to load the photcodes from the master text photcode file */ 9 /* automatically (or on demand?) save the text file to the FITS version */ 10 if (LoadPhotcodesText (master_file)) { 11 if (!check_file_access (catdir_file, TRUE, TRUE)) return TRUE; 12 SavePhotcodesFITS (catdir_file); 13 return TRUE; 43 14 } 44 15 45 Np = 0; 46 NPHOTCODE = 10; 47 ALLOCATE (photcode, PhotCode, NPHOTCODE); 48 photcodes[0].Nsecfilt = 0; 49 for (i = 0; i < 0x10000; i++) { 50 photcodes[0].hashcode[i] = -1; 51 photcodes[0].hashNsec[i] = -1; 52 } 53 54 while (scan_line (f, line) != EOF) { 55 for (c = line; isspace (*c); c++); 56 if (*c == '#') continue; 57 Nfield = sscanf (c, "%d %s %s %s %s %s %s %s %s %s %s", 58 &code, name, type, Zero, Airmass, Offset, C1, C2, Slope, Color, Primary); 59 if (Nfield != 11) { continue; } 60 61 c1 = atof (C1); 62 c2 = atof (C2); 63 if (!strcmp (C1, "-")) { c1 = 0; } 64 if (!strcmp (C2, "-")) { c2 = 0; } 65 66 photcode[Np].type = 0; 67 photcode[Np].code = code; 68 strcpy (photcode[Np].name, name); 69 if (!strncasecmp (type, "pri", 3)) { 70 photcode[Np].type = PHOT_PRI; 71 photcode[Np].C = 1000*atof (Zero); 72 photcode[Np].K = atof (Airmass); 73 photcode[Np].dC = 1000*atof (Offset); 74 photcode[Np].dX = 1000*atof (Color); 75 photcode[Np].c1 = c1; 76 photcode[Np].c2 = c2; 77 photcode[Np].equiv = atoi (Primary); 78 ParseColorTerms (Slope, photcode[Np].X, &photcode[Np].Nc); 79 Nseclist[0] = Np; 80 } 81 if (!strncasecmp (type, "sec", 3)) { 82 photcode[Np].type = PHOT_SEC; 83 photcode[Np].C = 1000*atof (Zero); 84 photcode[Np].K = atof (Airmass); 85 photcode[Np].dC = 1000*atof (Offset); 86 photcode[Np].dX = 1000*atof (Color); 87 photcode[Np].c1 = c1; 88 photcode[Np].c2 = c2; 89 photcode[Np].equiv = atoi (Primary); 90 photcodes[0].Nsecfilt ++; 91 ParseColorTerms (Slope, photcode[Np].X, &photcode[Np].Nc); 92 Nseclist[photcodes[0].Nsecfilt] = Np; 93 } 94 if (!strncasecmp (type, "dep", 3)) { 95 photcode[Np].type = PHOT_DEP; 96 photcode[Np].C = 1000*atof (Zero); /* zero point in millimags */ 97 photcode[Np].K = atof (Airmass); /* airmass coeff (millimag / millimag) */ 98 photcode[Np].dC = 1000*atof (Offset); /* color ref z.p. (millimag) */ 99 photcode[Np].dX = 1000*atof (Color); /* average color (millimag) */ 100 photcode[Np].c1 = c1; 101 photcode[Np].c2 = c2; 102 photcode[Np].equiv = atoi (Primary); 103 ParseColorTerms (Slope, photcode[Np].X, &photcode[Np].Nc); 104 } 105 if (!strncasecmp (type, "ref", 3)) { 106 photcode[Np].type = PHOT_REF; 107 photcode[Np].C = 0; 108 photcode[Np].K = 0; 109 photcode[Np].dC = 0; 110 photcode[Np].dX = 0; 111 photcode[Np].c1 = 0; 112 photcode[Np].c2 = 0; 113 photcode[Np].equiv = atoi (Primary); 114 photcode[Np].X[0] = 0; 115 photcode[Np].Nc = 0; 116 } 117 118 /* alt photcodes are a little different: they have the SAME photcode as an existing 119 pri/sec photcode, but define an alternate transformation for that code */ 120 if (!strncasecmp (type, "alt", 3)) { 121 photcode[Np].type = PHOT_ALT; 122 photcode[Np].C = 1000*atof (Zero); /* zero point in millimags */ 123 photcode[Np].K = atof (Airmass); /* airmass coeff (millimag / millimag) */ 124 photcode[Np].dC = 1000*atof (Offset); /* color ref z.p. (millimag) */ 125 photcode[Np].dX = 1000*atof (Color); /* average color (millimag) */ 126 photcode[Np].c1 = c1; 127 photcode[Np].c2 = c2; 128 photcode[Np].equiv = atoi (Primary); 129 ParseColorTerms (Slope, photcode[Np].X, &photcode[Np].Nc); 130 } 131 if (!photcode[Np].type) { 132 fprintf (stderr, "error in Photfile: unknown type %s\n", type); 133 } 134 135 Np++; 136 if (Np == NPHOTCODE) { 137 NPHOTCODE += 10; 138 REALLOCATE (photcode, PhotCode, NPHOTCODE); 139 } 140 } 141 fclose (f); 142 143 /* set up hashcode for photcode refs: 144 * the hashcode gives the structure sequence for a given photcode: 145 * photcode[i].hashcode[photcode[i].code] == i 146 */ 147 148 Ns = 0; 149 for (i = 0; i < Np; i++) { 150 if (photcode[i].type == PHOT_ALT) continue; /* no hashcode for ALT codes */ 151 if (photcodes[0].hashcode[photcode[i].code] != -1) { 152 fprintf (stderr, "duplicate photcodes in file\n"); 153 code = photcodes[0].hashcode[photcode[i].code]; 154 fprintf (stderr, "conflict between %s (%d) and %s (%d)\n", 155 photcode[i].name, photcode[i].code, photcode[code].name, photcode[code].code); 156 free (photcode); 157 return (FALSE); 158 } 159 photcodes[0].hashcode[photcode[i].code] = i; 160 if (photcode[i].type == PHOT_SEC) { 161 photcodes[0].hashNsec[photcode[i].code] = Ns; 162 Ns ++; 163 } 164 } 165 /* validity check for references */ 166 for (i = 0; i < Np; i++) { 167 if (photcode[i].type == PHOT_DEP) { 168 Npri = photcodes[0].hashcode[photcode[i].equiv]; 169 if ((Npri >= Np) || (Npri < 0)) { 170 fprintf (stderr, "reference for dependent photcode is not in photcodes\n"); 171 free (photcode); 172 return (FALSE); 173 } 174 if ((photcode[Npri].type != PHOT_PRI) && (photcode[Npri].type != PHOT_SEC)) { 175 fprintf (stderr, "reference for dependent photcode is not a primary or secondary code\n"); 176 free (photcode); 177 return (FALSE); 178 } 179 } 180 if (photcode[i].type == PHOT_ALT) { 181 Npri = photcodes[0].hashcode[photcode[i].code]; 182 if ((Npri >= Np) || (Npri < 0)) { 183 fprintf (stderr, "reference for alternate photcode is not in photcodes\n"); 184 free (photcode); 185 return (FALSE); 186 } 187 if ((photcode[Npri].type != PHOT_PRI) && (photcode[Npri].type != PHOT_SEC)) { 188 fprintf (stderr, "reference for alternate photcode is not a primary or secondary code\n"); 189 free (photcode); 190 return (FALSE); 191 } 192 } 193 } 194 photcodes[0].code = photcode; 195 photcodes[0].Ncode = Np; 196 197 return (TRUE); 198 16 return FALSE; 199 17 } 200 201 void ParseColorTerms (char *terms, float *X, int *N) {202 203 int i;204 char *p;205 206 p = terms;207 208 for (i = 0; (p != NULL) && (i < NCTERMS); i++) {209 X[i] = atof (p);210 p = strchr (p, ',');211 if (p == (char *) NULL) continue;212 p ++;213 }214 *N = i;215 }216 217 /********** photcode lookups **********/218 219 /* return photcode for given name */220 PhotCode *GetPhotcodebyName (char *name) {221 222 int i;223 224 if (name == (char *) NULL ) return (NULL);225 226 for (i = 0; i < photcodes[0].Ncode; i++) {227 if (!strcmp (photcodes[0].code[i].name, name)) {228 return (&photcodes[0].code[i]);229 }230 }231 return (NULL);232 }233 /* return photcode.code for given name */234 int GetPhotcodeCodebyName (char *name) {235 236 int i;237 238 if (name == (char *) NULL ) return (0);239 240 for (i = 0; i < photcodes[0].Ncode; i++) {241 if (!strcmp (photcodes[0].code[i].name, name)) {242 return (photcodes[0].code[i].code);243 }244 }245 return (0);246 }247 /* return equivalent photcode for given name */248 PhotCode *GetPhotcodeEquivbyName (char *name) {249 250 int i, equiv;251 252 if (name == (char *) NULL ) return (NULL);253 254 for (i = 0; i < photcodes[0].Ncode; i++) {255 if (!strcmp (photcodes[0].code[i].name, name)) {256 if (photcodes[0].code[i].equiv == 0) return (NULL);257 equiv = photcodes[0].hashcode[photcodes[0].code[i].equiv];258 if (equiv == -1) return (NULL);259 return (&photcodes[0].code[equiv]);260 }261 }262 return (NULL);263 }264 /* return equivalent photcode.code for given name */265 int GetPhotcodeEquivCodebyName (char *name) {266 267 int i, equiv;268 269 if (name == (char *) NULL ) return (0);270 271 for (i = 0; i < photcodes[0].Ncode; i++) {272 if (!strcmp (photcodes[0].code[i].name, name)) {273 if (photcodes[0].code[i].equiv == 0) return (0);274 equiv = photcodes[0].hashcode[photcodes[0].code[i].equiv];275 if (equiv == -1) return (0);276 return (photcodes[0].code[equiv].code);277 }278 }279 return (0);280 }281 282 /* return photcode for given code */283 PhotCode *GetPhotcodebyCode (int code) {284 285 int entry;286 287 if (code < 0) return (NULL);288 if (code > 0x10000) return (NULL);289 290 entry = photcodes[0].hashcode[code];291 if (entry == -1) return (NULL);292 293 return (&photcodes[0].code[entry]);294 }295 /* return photcode.code for given code */296 char *GetPhotcodeNamebyCode (int code) {297 298 int entry;299 300 if (code < 0) return (NULL);301 if (code > 0x10000) return (NULL);302 303 entry = photcodes[0].hashcode[code];304 if (entry == -1) return (NULL);305 306 return (photcodes[0].code[entry].name);307 }308 /* return equivalent photcode for given code */309 PhotCode *GetPhotcodeEquivbyCode (int code) {310 311 int entry, equiv;312 313 if (code < 0) return (NULL);314 if (code > 0x10000) return (NULL);315 316 entry = photcodes[0].hashcode[code];317 if (entry == -1) return (NULL);318 319 if (photcodes[0].code[entry].equiv == 0) return (NULL);320 equiv = photcodes[0].hashcode[photcodes[0].code[entry].equiv];321 322 if (equiv == -1) return (NULL);323 return (&photcodes[0].code[equiv]);324 }325 /* return equivalent photcode.code for given code */326 int GetPhotcodeEquivCodebyCode (int code) {327 328 int entry;329 330 if (code < 0) return (0);331 if (code > 0x10000) return (0);332 333 entry = photcodes[0].hashcode[code];334 if (entry == -1) return (0);335 return (photcodes[0].code[entry].equiv);336 }337 338 int GetPhotcodeNsec (int code) {339 340 int Nsec;341 342 if (code < 0) return (-1);343 if (code > 0x10000) return (-1);344 345 Nsec = photcodes[0].hashNsec[code];346 return (Nsec);347 }348 349 /* Nsec of 0 is PRI */350 PhotCode *GetPhotcodebyNsec (int Nsec) {351 352 if (Nsec > photcodes[0].Nsecfilt) return (NULL);353 if (Nsec < 0) return (NULL);354 355 return (&photcodes[0].code[Nseclist[Nsec]]);356 }357 358 int GetPhotcodeNsecfilt () {359 return (photcodes[0].Nsecfilt);360 }361 362 /* ALLOCATE and return list of all photcodes363 with photcode.equiv == code */364 int *GetPhotcodeEquivList (int code, int *nlist) {365 366 int i, Nlist;367 int *list;368 369 ALLOCATE (list, int, MAX (1, photcodes[0].Ncode));370 Nlist = 0;371 for (i = 0; i < photcodes[0].Ncode; i++) {372 if (photcodes[0].code[i].equiv != code) continue;373 list[Nlist] = photcodes[0].code[i].code;374 Nlist ++;375 }376 REALLOCATE (list, int, MAX (1, Nlist));377 378 *nlist = Nlist;379 return (list);380 }381 382 /**** conversion to INTERNAL vs TABLE types makes the iPhot versions irrelevant ****/383 # if (0)384 /******** photometry conversions *********/385 double PhotInst (Measure *measure) {386 387 short Mi;388 double M;389 390 Mi = iPhotInst (measure);391 M = 0.001*Mi;392 return (M);393 }394 395 /****/396 double PhotCat (Measure *measure) {397 398 short Mi;399 double M;400 401 Mi = iPhotCat (measure);402 M = 0.001*Mi;403 return (M);404 }405 406 /****/407 double PhotSys (Measure *measure, Average *average, SecFilt *secfilt) {408 409 short Mi;410 double M;411 412 Mi = iPhotSys (measure, average, secfilt);413 M = 0.001*Mi;414 return (M);415 }416 417 /****/418 double PhotRel (Measure *measure, Average *average, SecFilt *secfilt) {419 420 short Mi;421 double M;422 423 Mi = iPhotRel (measure, average, secfilt);424 M = 0.001*Mi;425 return (M);426 }427 428 /****/429 double PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) {430 431 short Mi;432 double M;433 434 Mi = iPhotCal (thisone, average, secfilt, measure, code);435 M = 0.001*Mi;436 return (M);437 }438 439 /****/440 double PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure) {441 442 short Mi;443 double M;444 445 Mi = iPhotRef (code, average, secfilt, measure);446 M = 0.001*Mi;447 return (M);448 }449 450 /****/451 double PhotAve (PhotCode *code, Average *average, SecFilt *secfilt) {452 453 short Mi;454 double M;455 456 Mi = iPhotAve (code, average, secfilt);457 M = 0.001*Mi;458 return (M);459 }460 461 /****/462 double PhotdM (PhotCode *code, Average *average, SecFilt *secfilt) {463 464 short Mi;465 double M;466 467 Mi = iPhotdM (code, average, secfilt);468 M = 0.001*Mi;469 return (M);470 }471 472 /****/473 double PhotXm (PhotCode *code, Average *average, SecFilt *secfilt) {474 475 int Mi;476 double Xm;477 478 Mi = iPhotXm (code, average, secfilt);479 Xm = (Mi == NO_MAG) ? -1.0 : pow (10.0, 0.01*Mi);480 return (Xm);481 }482 483 # endif484 485 /******** internal photometry conversions (keeps values in short int millimags) *********/486 float PhotInst (Measure *measure) {487 488 int Np;489 float M;490 491 Np = photcodes[0].hashcode[measure[0].source];492 if (Np == -1) return (NO_MAG_PS);493 494 if (photcodes[0].code[Np].type == PHOT_REF) {495 M = measure[0].M_PS;496 return (M);497 }498 499 M = measure[0].M_PS - measure[0].dt_PS - ZERO_POINT;500 501 return (M);502 503 }504 505 float PhotCat (Measure *measure) {506 507 int Np;508 float Mcat;509 PhotCode *code;510 511 Np = photcodes[0].hashcode[measure[0].source];512 if (Np == -1) return (NO_MAG_PS);513 514 if (photcodes[0].code[Np].type == PHOT_REF) {515 Mcat = measure[0].M_PS;516 return (Mcat);517 }518 code = &photcodes[0].code[Np];519 Mcat = measure[0].M_PS - ZERO_POINT + code[0].K*(measure[0].airmass_PS - 1.000) + F_PS*code[0].C;520 521 return (Mcat);522 }523 524 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt) {525 526 int i, Np;527 float Mcat, Mcol, Msys, mc, Mc;528 PhotCode *code;529 530 Np = photcodes[0].hashcode[measure[0].source];531 if (Np == -1) return (NO_MAG_PS);532 533 if (photcodes[0].code[Np].type == PHOT_REF) {534 Msys = measure[0].M_PS;535 return (Msys);536 }537 code = &photcodes[0].code[Np];538 Mcat = measure[0].M_PS - ZERO_POINT + code[0].K*(measure[0].airmass_PS - 1.000) + F_PS*code[0].C;539 540 /* for DEP, color must be made of PRI/SEC */541 mc = iPhotColor (average, secfilt, NULL, code);542 if (mc == NO_MAG_PS) return (Mcat);543 mc = mc - F_PS*code[0].dX;544 545 Mc = mc;546 Mcol = 0;547 for (i = 0; i < code[0].Nc; i++) {548 Mcol += code[0].X[i]*Mc;549 Mc *= mc;550 }551 Msys = Mcat + Mcol;552 return (Msys);553 }554 555 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt) {556 557 int i, Np;558 float Mcat, Mcol, Mrel, mc, Mc;559 PhotCode *code;560 561 Np = photcodes[0].hashcode[measure[0].source];562 if (Np == -1) return (NO_MAG_PS);563 564 if (photcodes[0].code[Np].type == PHOT_REF) {565 Mcat = measure[0].M_PS;566 return (Mcat);567 }568 code = &photcodes[0].code[Np];569 Mrel = measure[0].M_PS - ZERO_POINT + code[0].K*(measure[0].airmass_PS - 1.000) + F_PS*code[0].C - measure[0].Mcal_PS;570 571 /* for DEP, color must be made of PRI/SEC */572 mc = iPhotColor (average, secfilt, NULL, code);573 if (mc == NO_MAG_PS) return (Mrel);574 mc = mc - F_PS*code[0].dX;575 576 Mc = mc;577 Mcol = 0;578 for (i = 0; i < code[0].Nc; i++) {579 Mcol += code[0].X[i]*Mc;580 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */581 }582 Mrel += Mcol;583 return (Mrel);584 }585 586 /* return calibrated magnitude from measure for given photcode */587 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) {588 589 int i, Np;590 float Mcal, Mrel, Mcol, mc, Mc;591 592 /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */593 Np = photcodes[0].hashcode[thisone[0].source];594 if (Np == -1) {595 return (NO_MAG_PS);596 }597 598 if (photcodes[0].code[Np].type == PHOT_REF) {599 Mrel = thisone[0].M_PS;600 return (Mrel);601 }602 if (code[0].code != photcodes[0].code[Np].equiv) {603 return (NO_MAG_PS);604 }605 606 Mcal = PhotRel (thisone, average, secfilt) + F_PS*code[0].C;607 608 mc = iPhotColor (average, secfilt, measure, code);609 if (mc == NO_MAG_PS) return (Mcal);610 mc = mc - F_PS*code[0].dX;611 612 Mc = mc;613 Mcol = 0;614 for (i = 0; i < code[0].Nc; i++) {615 Mcol += code[0].X[i]*Mc;616 Mc *= mc;617 }618 Mcal += Mcol;619 return (Mcal);620 }621 622 /* color term may not use DEP magnitude */623 float iPhotColor (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) {624 625 int i, Ns1, Ns2, Ns;626 float m1, m2, mc;627 PhotCode *color;628 629 m1 = m2 = NO_MAG_PS;630 631 if (measure == NULL) {632 Ns1 = photcodes[0].hashNsec[code[0].c1];633 Ns2 = photcodes[0].hashNsec[code[0].c2];634 635 m1 = (Ns1 == -1) ? average[0].M : secfilt[Ns1].M_PS;636 m2 = (Ns2 == -1) ? average[0].M : secfilt[Ns2].M_PS;637 mc = ((m1 == NO_MAG_PS) || (m2 == NO_MAG_PS)) ? NO_MAG_PS : (m1 - m2);638 return (mc);639 }640 641 /* find magnitude matching first color term */642 color = GetPhotcodebyCode (code[0].c1);643 if (color == NULL) return (NO_MAG_PS);644 if (color[0].type == PHOT_REF) {645 for (i = 0; (i < average[0].Nm) && (m1 == NO_MAG_PS); i++) {646 if (measure[i].source == color[0].code) {647 m1 = measure[i].M_PS;648 }649 }650 } else {651 Ns = photcodes[0].hashNsec[color[0].code];652 m1 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;653 }654 655 /* find magnitude matching second color term */656 color = GetPhotcodebyCode (code[0].c2);657 if (color == NULL) return (NO_MAG_PS);658 if (color[0].type == PHOT_REF) {659 for (i = 0; (i < average[0].Nm) && (m2 == NO_MAG_PS); i++) {660 if (measure[i].source == color[0].code) {661 m2 = measure[i].M_PS;662 }663 }664 } else {665 Ns = photcodes[0].hashNsec[color[0].code];666 m2 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;667 }668 mc = ((m1 == NO_MAG_PS) || (m2 == NO_MAG_PS)) ? NO_MAG_PS : (m1 - m2);669 return (mc);670 }671 672 /* return calibrated magnitude from average/secfilt for given photcode */673 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure) {674 675 int i, Ns;676 float Mave, Mref, Mcol, mc;677 double Mc;678 679 Ns = photcodes[0].hashNsec[code[0].code];680 Mave = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;681 Mref = Mave + F_PS*code[0].C;682 683 mc = iPhotColor (average, secfilt, measure, code);684 if (mc == NO_MAG_PS) return (Mref);685 mc = mc - F_PS*code[0].dX;686 687 Mc = mc;688 Mcol = 0;689 for (i = 0; i < code[0].Nc; i++) {690 Mcol += code[0].X[i]*Mc;691 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */692 }693 Mref += Mcol;694 return (Mref);695 }696 697 /***/698 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt) {699 700 int Ns;701 float Mave;702 703 Ns = photcodes[0].hashNsec[code[0].code];704 Mave = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;705 return (Mave);706 }707 708 /*** note that this is NOT a wrapper around iPhotdM ***/709 float PhotdM (PhotCode *code, Average *average, SecFilt *secfilt) {710 711 int Ns;712 float dM;713 714 Ns = photcodes[0].hashNsec[code[0].code];715 dM = (Ns == -1) ? average[0].dM : secfilt[Ns].dM_PS;716 return (dM);717 }718 719 /*** note that this is NOT a wrapper around iPhotXm ***/720 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt) {721 722 int Ns;723 short Mi;724 float Xm;725 726 Ns = photcodes[0].hashNsec[code[0].code];727 Mi = (Ns == -1) ? average[0].Xm : secfilt[Ns].Xm;728 Xm = (Mi == NO_MAG_PS) ? -1.0 : pow (10.0, 0.01*Mi);729 return (Xm);730 }731 732 /* given a photcode pair c1 & c2, return the color of this star (NaN if not found) */733 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color) {734 735 int i, Ns;736 double M1, M2, dM;737 PhotCode *code;738 739 code = GetPhotcodebyCode (c1);740 if (code == NULL) return (FALSE);741 if (code[0].type == PHOT_REF) {742 for (i = 0; i < average[0].Nm; i++) {743 if (measure[i].source == c1) {744 M1 = measure[i].M_PS;745 goto filter1;746 }747 }748 return (FALSE);749 } else {750 Ns = photcodes[0].hashNsec[code[0].code];751 M1 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;752 }753 754 filter1:755 code = GetPhotcodebyCode (c2);756 if (code == NULL) return (FALSE);757 if (code[0].type == PHOT_REF) {758 for (i = 0; i < average[0].Nm; i++) {759 if (measure[i].source == c2) {760 M2 = measure[i].M_PS;761 goto filter2;762 }763 }764 return (FALSE);765 } else {766 Ns = photcodes[0].hashNsec[code[0].code];767 M2 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;768 }769 770 filter2:771 772 dM = M1 - M2;773 *color = dM;774 775 return (TRUE);776 }777 778 /* photcode table should have the following format:779 780 # code name type zero airmass offset c1 c2 slope <color> primary781 1 B pri 24.0 0.15 - - - - - -782 2 B pri 24.0 0.15 - - - - - -783 3 B1 sec 22.5 0.18 0.15 1 2 0.10 0.50 1784 1000 USNO_B ref - - - - - - - -785 786 */787 788 789 /*790 Nc1 = photcodes[0].code[Np].c1;791 Ns1 = photcodes[0].hashNsec[Nc1];792 793 Nc2 = photcodes[0].code[Np].c2;794 Ns2 = photcodes[0].hashNsec[Nc2];795 796 Xlam = photcodes[0].code[Np].X[0];797 Klam = photcodes[0].code[Np].K;798 799 m1 = (Ns1 == -1) ? average[0].M : secfilt[Ns1].M;800 m2 = (Ns2 == -1) ? average[0].M : secfilt[Ns2].M;801 */ -
trunk/Ohana/src/libdvo/src/coordops.c
r10510 r12332 7 7 } 8 8 9 int XY_to_RD (double *ra, double *dec, double x, double y, Coords *coords) { 10 11 int Zenith1, Zenith2, Zenithal, Polynomial, Cartesian, PseudoCyl; 12 char *type; 13 double L, M, X, Y, T, Z, Z2; 14 double R, sphi, cphi, stht, ctht; 15 double alpha, delta, salp, calp, sdel, sdp, cdp; 16 17 *ra = 0; 18 *dec = 0; 19 stht = ctht = 1; 20 type = &coords[0].ctype[4]; 21 22 /* PLY is equiv to LIN with higher order terms 23 ZPL is equiv to ZEA with higher order terms 24 DIS is equiv to TAN with higher order terms 25 WRP is equiv to PLY, with implied mosaic */ 26 27 Polynomial = !strcmp(type, "-PLY") || !strcmp(type, "-DIS") || !strcmp(type, "-WRP") || !strcmp(type, "-ZPL"); 28 Cartesian = !strcmp(type, "-LIN") || !strcmp(type, "-PLY") || !strcmp(type, "-WRP") || !strcmp(&coords[0].ctype[0], "GENE"); 29 PseudoCyl = !strcmp(type, "-AIT") || !strcmp(type, "-GLS") || !strcmp(type, "-PAR"); 30 Zenith1 = !strcmp(type, "-DIS") || !strcmp(type, "-TAN") || !strcmp(type, "-STG"); 31 Zenith2 = !strcmp(type, "-SIN") || !strcmp(&coords[0].ctype[0], "MM"); 32 Zenithal = !strcmp(type, "-ZEA") || !strcmp(type, "-ZPL") || Zenith1 || Zenith2; 33 if (!Zenithal && !Cartesian && !PseudoCyl) return (FALSE); 9 int XY_to_LM (double *L, double *M, double x, double y, Coords *coords) { 10 11 double X, Y; 34 12 35 13 /** convert pixel coordinates to cartesian system **/ … … 37 15 Y = coords[0].cdelt2*(y - coords[0].crpix2); 38 16 39 L = (X*coords[0].pc1_1 + Y*coords[0].pc1_2);40 M = (X*coords[0].pc2_1 + Y*coords[0].pc2_2);17 *L = (X*coords[0].pc1_1 + Y*coords[0].pc1_2); 18 *M = (X*coords[0].pc2_1 + Y*coords[0].pc2_2); 41 19 42 20 /** extra polynomial terms **/ 43 21 if (coords[0].Npolyterms > 1) { 44 L += X*X*coords[0].polyterms[0][0] + X*Y*coords[0].polyterms[1][0] + Y*Y*coords[0].polyterms[2][0];45 M += X*X*coords[0].polyterms[0][1] + X*Y*coords[0].polyterms[1][1] + Y*Y*coords[0].polyterms[2][1];22 *L += X*X*coords[0].polyterms[0][0] + X*Y*coords[0].polyterms[1][0] + Y*Y*coords[0].polyterms[2][0]; 23 *M += X*X*coords[0].polyterms[0][1] + X*Y*coords[0].polyterms[1][1] + Y*Y*coords[0].polyterms[2][1]; 46 24 } 47 25 if (coords[0].Npolyterms > 2) { 48 L += X*X*X*coords[0].polyterms[3][0] + X*X*Y*coords[0].polyterms[4][0] + X*Y*Y*coords[0].polyterms[5][0] + Y*Y*Y*coords[0].polyterms[6][0]; 49 M += X*X*X*coords[0].polyterms[3][1] + X*X*Y*coords[0].polyterms[4][1] + X*Y*Y*coords[0].polyterms[5][1] + Y*Y*Y*coords[0].polyterms[6][1]; 50 } 51 52 /**** Locally Cartesian Projections ****/ 53 if (Cartesian) { 26 *L += X*X*X*coords[0].polyterms[3][0] + X*X*Y*coords[0].polyterms[4][0] + X*Y*Y*coords[0].polyterms[5][0] + Y*Y*Y*coords[0].polyterms[6][0]; 27 *M += X*X*X*coords[0].polyterms[3][1] + X*X*Y*coords[0].polyterms[4][1] + X*Y*Y*coords[0].polyterms[5][1] + Y*Y*Y*coords[0].polyterms[6][1]; 28 } 29 30 return (TRUE); 31 } 32 33 int LM_to_RD (double *ra, double *dec, double L, double M, Coords *coords) { 34 35 OhanaProjection proj; 36 OhanaProjectionMode mode; 37 double R, T, Z, Z2, sphi, cphi, stht, ctht; 38 double alpha, delta, salp, calp, sdel, sdp, cdp; 39 40 proj = GetProjection (coords[0].ctype); 41 mode = GetProjectionMode (proj); 42 if (proj == PROJ_NONE) return (FALSE); 43 if (proj == PROJ_MODE_NONE) return (FALSE); 44 45 stht = ctht = 1; 46 47 /** Locally Cartesian Projections **/ 48 if (mode == PROJ_MODE_CARTESIAN) { 54 49 *ra = L + coords[0].crval1; 55 50 *dec = M + coords[0].crval2; 56 51 57 52 /* mosaic astrometry : WRP is chip astrometry; apply mosaic (DIS) term */ 58 if ( !strcmp(type, "-WRP")) {53 if (proj == PROJ_WRP) { 59 54 if (mosaic == NULL) return (FALSE); 60 55 XY_to_RD (ra, dec, L + coords[0].crval1, M + coords[0].crval2, mosaic); … … 63 58 } 64 59 65 /** ** Zenithal Projections ****/66 if ( Zenithal) {60 /** Zenithal Projections **/ 61 if (mode == PROJ_MODE_ZENITHAL) { 67 62 R = hypot (L,M); 68 63 if ((L == 0) && (M == 0)) { … … 74 69 } 75 70 76 /* this is wrong : STG is not TAN - need to put in correct relationships. but is a close approx */ 77 if (Zenith1) { 78 if (R == 0) { 79 stht = 1.0; 80 ctht = 0.0; 81 } else { 82 T = DEG_RAD / R; 83 stht = T / sqrt ( 1.0 + T*T); 84 ctht = 1.0 / sqrt ( 1.0 + T*T); 85 } 86 } 87 if (Zenith2) { 88 ctht = RAD_DEG * R; 89 stht = sqrt (1 - ctht*ctht); 90 } 91 if (!strcmp(type, "-ZEA") || !strcmp(type, "-ZPL")) { 92 if (R > 2*DEG_RAD) { 93 *ra = L; 94 *dec = M; 71 switch (proj) { 72 case PROJ_TAN: 73 if (R == 0) { 74 stht = 1.0; 75 ctht = 0.0; 76 } else { 77 T = DEG_RAD / R; 78 stht = T / sqrt ( 1.0 + T*T); 79 ctht = 1.0 / sqrt ( 1.0 + T*T); 80 } 81 break; 82 case PROJ_STG: 83 stht = (4 - RAD_DEG*R) / (4 + RAD_DEG*R); 84 ctht = sqrt (1 - stht*stht); 85 break; 86 case PROJ_SIN: 87 ctht = RAD_DEG * R; 88 stht = sqrt (1 - ctht*ctht); 89 break; 90 case PROJ_ZEA: 91 case PROJ_ZPL: 92 if (R > 2*DEG_RAD) { 93 *ra = L; 94 *dec = M; 95 return (FALSE); 96 } 97 stht = 1 - 0.5*SQ(R*RAD_DEG); 98 ctht = sqrt (1 - stht*stht); 99 break; 100 default: 95 101 return (FALSE); 96 } 97 stht = 1 - 0.5*SQ(R*RAD_DEG); 98 ctht = sqrt (1 - stht*stht); 99 } 100 102 } 101 103 sdp = sin(RAD_DEG*coords[0].crval2); 102 104 cdp = cos(RAD_DEG*coords[0].crval2); … … 119 121 120 122 /**** Other Conventional Projections ****/ 121 if (PseudoCyl) { 122 if (!strcmp(type, "-AIT")) { 123 if (mode == PROJ_MODE_PSEUDOCYL) { 124 switch (proj) { 125 case PROJ_AIT: 123 126 Z2 = (1.0 - SQ(RAD_DEG*0.25*L) - SQ(RAD_DEG*0.5*M)); 124 127 if (Z2 < 0) return (FALSE); … … 126 129 alpha = 2.0 * DEG_RAD * atan2 (RAD_DEG*0.5*Z*L, 2.0*Z2 - 1.0); 127 130 delta = DEG_RAD * asin (RAD_DEG*M*Z); 128 *ra = alpha + coords[0].crval1;129 *dec = delta + coords[0].crval2;130 }131 if (!strcmp(type, "-GLS")) { 132 /* L,M in degrees, alpha,delta in degrees */ 133 alpha = L / cos (RAD_DEG * M);134 delta = M;135 *ra = alpha + coords[0].crval1;136 *dec = delta + coords[0].crval2; 137 } 138 if (!strcmp(type, "-PAR")) { 139 /* L,M in degrees, alpha,delta in degrees */ 140 alpha = L / (1.0 - SQ(2.0*M/180));141 delta = 3 * DEG_RAD * asin (M/180.0);142 *ra = alpha + coords[0].crval1;143 *dec = delta + coords[0].crval2;144 }131 break; 132 133 case PROJ_GLS: 134 /* L,M in degrees, alpha,delta in degrees */ 135 alpha = L / cos (RAD_DEG * M); 136 delta = M; 137 break; 138 case PROJ_PAR: 139 /* L,M in degrees, alpha,delta in degrees */ 140 alpha = L / (1.0 - SQ(2.0*M/180)); 141 delta = 3 * DEG_RAD * asin (M/180.0); 142 break; 143 default: 144 return (FALSE); 145 } 146 *ra = alpha + coords[0].crval1; 147 *dec = delta + coords[0].crval2; 145 148 146 149 /* rationalize ra range 0 - 360.0 */ … … 153 156 } 154 157 155 int RD_to_XY (double *x, double *y, double ra, double dec, Coords *coords) { 156 157 char *type; 158 int i, status, Polynomial, Zenith1, Zenith2, Zenithal, Cartesian, PseudoCyl; 158 int RD_to_LM (double *L, double *M, double ra, double dec, Coords *coords) { 159 159 160 double phi, theta; 160 double determ; 161 double X, Y, L, M, Lo, Mo, dL, dM; 161 double Lo, Mo; 162 162 double sphi, cphi, stht; 163 163 double salp, calp, sdel, cdel, sdp, cdp; 164 164 double P, A, Rc; 165 166 status = TRUE; 167 *x = 0; 168 *y = 0; 169 type = &coords[0].ctype[4]; 170 L = M = 0; 171 172 Polynomial = !strcmp(type, "-PLY") || !strcmp(type, "-DIS") || !strcmp(type, "-WRP") || !strcmp(type, "-ZPL"); 173 Cartesian = !strcmp(type, "-LIN") || !strcmp(type, "-PLY") || !strcmp(type, "-WRP") || !strcmp(&coords[0].ctype[0], "GENE"); 174 PseudoCyl = !strcmp(type, "-AIT") || !strcmp(type, "-GLS") || !strcmp(type, "-PAR"); 175 Zenith1 = !strcmp(type, "-DIS") || !strcmp(type, "-TAN") || !strcmp(type, "-STG"); 176 Zenith2 = !strcmp(type, "-SIN") || !strcmp(&coords[0].ctype[0], "MM"); 177 Zenithal = !strcmp(type, "-ZEA") || !strcmp(type, "-ZPL") || Zenith1 || Zenith2; 178 if (!Zenithal && !Cartesian && !PseudoCyl) return (FALSE); 165 OhanaProjection proj; 166 OhanaProjectionMode mode; 167 168 *L = *M = 0; 169 170 proj = GetProjection (coords[0].ctype); 171 mode = GetProjectionMode (proj); 172 if (proj == PROJ_NONE) return (FALSE); 173 if (proj == PROJ_MODE_NONE) return (FALSE); 179 174 180 175 /**** Locally Cartesian Projections ****/ 181 if ( Cartesian) {182 if ( !strcmp(type, "-WRP")) {176 if (mode == PROJ_MODE_CARTESIAN) { 177 if (proj == PROJ_WRP) { 183 178 if (mosaic == NULL) return (FALSE); 184 179 RD_to_XY (&Lo, &Mo, ra, dec, mosaic); 185 L = (Lo - coords[0].crval1); 186 M = (Mo - coords[0].crval2); 187 } else { 188 L = (ra - coords[0].crval1); 189 M = (dec - coords[0].crval2); 190 } 180 *L = (Lo - coords[0].crval1); 181 *M = (Mo - coords[0].crval2); 182 return (TRUE); 183 } 184 *L = (ra - coords[0].crval1); 185 *M = (dec - coords[0].crval2); 186 return (TRUE); 191 187 } 192 188 193 189 /**** Zenithal Projections ****/ 194 if ( Zenithal){190 if (mode == PROJ_MODE_ZENITHAL) { 195 191 sdp = sin(RAD_DEG*coords[0].crval2); 196 192 cdp = cos(RAD_DEG*coords[0].crval2); … … 203 199 sphi = cdel*salp; /* = cos(theta)*sin(phi) */ 204 200 cphi = cdel*sdp*calp - sdel*cdp; /* = cos(theta)*cos(phi) */ 205 if (stht < 0) status = FALSE; 206 207 if (Zenith1) { 208 L = DEG_RAD * sphi / stht; 209 M = -DEG_RAD * cphi / stht; 210 } 211 if (Zenith2) { 212 L = DEG_RAD * sphi; 213 M = -DEG_RAD * cphi; 214 } 215 if (!strcmp(type, "-ZEA") || !strcmp(type, "-ZPL")) { 216 Rc = DEG_RAD * M_SQRT2 / sqrt (1 + stht); 217 L = Rc * sphi; 218 M = -Rc * cphi; 219 status = TRUE; 220 } 201 if (stht < 0) return (FALSE); 202 203 switch (proj) { 204 case PROJ_TAN: 205 case PROJ_DIS: 206 *L = DEG_RAD * sphi / stht; 207 *M = -DEG_RAD * cphi / stht; 208 return (TRUE); 209 case PROJ_SIN: 210 *L = DEG_RAD * sphi; 211 *M = -DEG_RAD * cphi; 212 return (TRUE); 213 case PROJ_ZEA: 214 case PROJ_ZPL: 215 Rc = DEG_RAD * M_SQRT2 / sqrt (1 + stht); 216 *L = Rc * sphi; 217 *M = -Rc * cphi; 218 return (TRUE); 219 default: 220 return (FALSE); 221 } 222 return (FALSE); 221 223 } 222 224 223 225 /**** Other Standard Projections ****/ 224 if (PseudoCyl) { 225 if (!strcmp(type, "-AIT")) { 226 phi = RAD_DEG*(ra - coords[0].crval1); 227 theta = RAD_DEG*(dec - coords[0].crval2); 228 P = 1.0 + cos (theta) * cos (0.5*phi); 229 if (P != 0.0) { 226 if (mode == PROJ_MODE_PSEUDOCYL) { 227 switch (proj) { 228 case PROJ_AIT: 229 phi = RAD_DEG*(ra - coords[0].crval1); 230 theta = RAD_DEG*(dec - coords[0].crval2); 231 P = 1.0 + cos (theta) * cos (0.5*phi); 232 if (P == 0.0) { 233 *L = 0.0; 234 *M = 0.0; 235 return (TRUE); 236 } 230 237 A = DEG_RAD * sqrt (2.0 / P); 231 L = 2.0 * A * cos (theta) * sin (0.5*phi); 232 M = A * sin (theta); 233 } else { 234 L = 0.0; 235 M = 0.0; 236 } 237 } 238 if (!strcmp(type, "-GLS")) { 239 phi = ra - coords[0].crval1; 240 theta = dec - coords[0].crval2; 241 L = phi * cos(RAD_DEG * theta); 242 M = theta; 243 } 244 if (!strcmp(type, "-PAR")) { 245 phi = ra - coords[0].crval1; 246 theta = dec - coords[0].crval2; 247 L = phi * (2.0*cos(2*RAD_DEG*theta/3.0) - 1); 248 M = 180.0 * sin (RAD_DEG*theta/3.0); 249 } 250 } 238 *L = 2.0 * A * cos (theta) * sin (0.5*phi); 239 *M = A * sin (theta); 240 return (TRUE); 241 case PROJ_GLS: 242 phi = ra - coords[0].crval1; 243 theta = dec - coords[0].crval2; 244 *L = phi * cos(RAD_DEG * theta); 245 *M = theta; 246 return (TRUE); 247 case PROJ_PAR: 248 phi = ra - coords[0].crval1; 249 theta = dec - coords[0].crval2; 250 *L = phi * (2.0*cos(2*RAD_DEG*theta/3.0) - 1); 251 *M = 180.0 * sin (RAD_DEG*theta/3.0); 252 return (TRUE); 253 default: 254 return (FALSE); 255 } 256 return (FALSE); 257 } 258 return (FALSE); 259 } 260 261 int LM_to_XY (double *x, double *y, double L, double M, Coords *coords) { 262 263 int i; 264 double determ; 265 double X, Y, Lo, Mo, dL, dM; 266 267 *x = 0; 268 *y = 0; 251 269 252 270 /* convert L,M to X,Y */ … … 270 288 dL = (L - Lo); 271 289 dM = (M - Mo); 272 // fprintf (stderr, "%d: %f,%f : %f,%f : %f,%f : %f,%f\n", i, L, M, X, Y, Lo, Mo, dL, dM);273 290 274 291 X += determ * (coords[0].pc2_2*dL - coords[0].pc1_2*dM); … … 281 298 *y = Y / coords[0].cdelt2 + coords[0].crpix2; 282 299 300 return (TRUE); 301 } 302 303 int XY_to_RD (double *ra, double *dec, double x, double y, Coords *coords) { 304 305 double L, M; 306 int status; 307 308 status = XY_to_LM (&L, &M, x, y, coords); 309 if (!status) return FALSE; 310 311 status = LM_to_RD (ra, dec, L, M, coords); 283 312 return (status); 284 313 } 314 315 int RD_to_XY (double *x, double *y, double ra, double dec, Coords *coords) { 316 317 double L, M; 318 int status; 319 320 status = RD_to_LM (&L, &M, ra, dec, coords); 321 if (!status) return FALSE; 322 323 status = LM_to_XY (x, y, L, M, coords); 324 return (status); 285 325 } 286 326 … … 599 639 600 640 */ 641 642 /* PLY is equiv to LIN with higher order terms 643 ZPL is equiv to ZEA with higher order terms 644 DIS is equiv to TAN with higher order terms 645 WRP is equiv to PLY, with implied mosaic */ 646 647 OhanaProjection GetProjection (char *ctype) { 648 if (!strcmp(&ctype[4], "-ZEA")) return PROJ_ZEA; 649 if (!strcmp(&ctype[4], "-ZPL")) return PROJ_ZPL; 650 if (!strcmp(&ctype[4], "-ARC")) return PROJ_ARC; 651 if (!strcmp(&ctype[4], "-STG")) return PROJ_STG; 652 if (!strcmp(&ctype[4], "-SIN")) return PROJ_SIN; 653 if (!strcmp(&ctype[0], "MM")) return PROJ_SIN; // note ctype[0] 654 if (!strcmp(&ctype[4], "-TAN")) return PROJ_TAN; 655 if (!strcmp(&ctype[4], "-DIS")) return PROJ_DIS; 656 if (!strcmp(&ctype[4], "-LIN")) return PROJ_LIN; 657 if (!strcmp(&ctype[0], "GENE")) return PROJ_LIN; // note ctype[0] 658 if (!strcmp(&ctype[4], "-PLY")) return PROJ_PLY; 659 if (!strcmp(&ctype[4], "-WRP")) return PROJ_WRP; 660 if (!strcmp(&ctype[4], "-AIT")) return PROJ_AIT; 661 if (!strcmp(&ctype[4], "-GLS")) return PROJ_GLS; 662 if (!strcmp(&ctype[4], "-PAR")) return PROJ_PAR; 663 return PROJ_NONE; 664 } 665 666 int SetProjection (char *ctype, OhanaProjection proj) { 667 switch (proj) { 668 case PROJ_ZEA: strcpy(&ctype[4], "-ZEA"); return TRUE; 669 case PROJ_ZPL: strcpy(&ctype[4], "-ZPL"); return TRUE; 670 case PROJ_ARC: strcpy(&ctype[4], "-ARC"); return TRUE; 671 case PROJ_STG: strcpy(&ctype[4], "-STG"); return TRUE; 672 case PROJ_SIN: strcpy(&ctype[4], "-SIN"); return TRUE; 673 case PROJ_TAN: strcpy(&ctype[4], "-TAN"); return TRUE; 674 case PROJ_DIS: strcpy(&ctype[4], "-DIS"); return TRUE; 675 case PROJ_LIN: strcpy(&ctype[4], "-LIN"); return TRUE; 676 case PROJ_PLY: strcpy(&ctype[4], "-PLY"); return TRUE; 677 case PROJ_WRP: strcpy(&ctype[4], "-WRP"); return TRUE; 678 case PROJ_AIT: strcpy(&ctype[4], "-AIT"); return TRUE; 679 case PROJ_GLS: strcpy(&ctype[4], "-GLS"); return TRUE; 680 case PROJ_PAR: strcpy(&ctype[4], "-PAR"); return TRUE; 681 case PROJ_NONE: return FALSE; 682 } 683 return FALSE; 684 } 685 686 OhanaProjectionMode GetProjectionMode (OhanaProjection proj) { 687 switch (proj) { 688 case PROJ_ZEA: 689 case PROJ_ZPL: 690 case PROJ_ARC: 691 case PROJ_STG: 692 case PROJ_SIN: 693 case PROJ_TAN: 694 case PROJ_DIS: 695 return PROJ_MODE_ZENITHAL; 696 case PROJ_LIN: 697 case PROJ_PLY: 698 case PROJ_WRP: 699 return PROJ_MODE_CARTESIAN; 700 case PROJ_AIT: 701 case PROJ_GLS: 702 case PROJ_PAR: 703 return PROJ_MODE_PSEUDOCYL; 704 default: PROJ_MODE_NONE; 705 } 706 return PROJ_MODE_NONE; 707 } 708 -
trunk/Ohana/src/libdvo/src/coordops.update.c
r8638 r12332 86 86 case PROJ_ZEA: 87 87 case PROJ_ZPL: 88 if (R > 2*DEG_RAD) { 89 *ra = L; 90 *dec = M; 91 return (FALSE); 92 } 88 93 stht = 1 - 0.5*SQ(R*RAD_DEG); 89 94 ctht = sqrt (1 - stht*stht); … … 110 115 111 116 /**** Other Conventional Projections ****/ 112 if (mode == PROJ_MODE_ ZENITHAL) {117 if (mode == PROJ_MODE_PSEUDOCLY) { 113 118 switch (proj) { 114 119 case PROJ_AIT: … … 119 124 delta = DEG_RAD * asin (RAD_DEG*M*Z); 120 125 break; 121 126 122 127 case PROJ_GLS: 123 128 /* L,M in degrees, alpha,delta in degrees */ … … 213 218 214 219 /**** Other Standard Projections ****/ 215 if (PseudoCyl) { 216 if (!strcmp(type, "-AIT")) { 217 phi = RAD_DEG*(ra - coords[0].crval1); 218 theta = RAD_DEG*(dec - coords[0].crval2); 219 P = 1.0 + cos (theta) * cos (0.5*phi); 220 if (P != 0.0) { 221 A = DEG_RAD * sqrt (2.0 / P); 222 L = 2.0 * A * cos (theta) * sin (0.5*phi); 223 M = A * sin (theta); 224 } else { 225 L = 0.0; 226 M = 0.0; 227 } 228 } 229 if (!strcmp(type, "-GLS")) { 230 phi = ra - coords[0].crval1; 231 theta = dec - coords[0].crval2; 232 L = phi * cos(RAD_DEG * theta); 233 M = theta; 234 } 235 if (!strcmp(type, "-PAR")) { 236 phi = ra - coords[0].crval1; 237 theta = dec - coords[0].crval2; 238 L = phi * (2.0*cos(2*RAD_DEG*theta/3.0) - 1); 239 M = 180.0 * sin (RAD_DEG*theta/3.0); 220 if (mode == PROJ_MODE_PSEUDOCYL) { 221 switch (proj) { 222 case PROJ_AIT: 223 phi = RAD_DEG*(ra - coords[0].crval1); 224 theta = RAD_DEG*(dec - coords[0].crval2); 225 P = 1.0 + cos (theta) * cos (0.5*phi); 226 if (P != 0.0) { 227 A = DEG_RAD * sqrt (2.0 / P); 228 L = 2.0 * A * cos (theta) * sin (0.5*phi); 229 M = A * sin (theta); 230 } else { 231 L = 0.0; 232 M = 0.0; 233 } 234 break; 235 case PROJ_GLS: 236 phi = ra - coords[0].crval1; 237 theta = dec - coords[0].crval2; 238 L = phi * cos(RAD_DEG * theta); 239 M = theta; 240 break; 241 case PROJ_PAR: 242 phi = ra - coords[0].crval1; 243 theta = dec - coords[0].crval2; 244 L = phi * (2.0*cos(2*RAD_DEG*theta/3.0) - 1); 245 M = 180.0 * sin (RAD_DEG*theta/3.0); 246 break; 240 247 } 241 248 } … … 261 268 dL = (L - Lo); 262 269 dM = (M - Mo); 263 // fprintf (stderr, "%d: %f,%f : %f,%f : %f,%f : %f,%f\n", i, L, M, X, Y, Lo, Mo, dL, dM);264 270 265 271 X += determ * (coords[0].pc2_2*dL - coords[0].pc1_2*dM); … … 273 279 274 280 return (status); 275 276 281 } 277 282 -
trunk/Ohana/src/libdvo/src/dvo_catalog.c
r8520 r12332 50 50 if (!strcasecmp (catformat, "PANSTARRS")) return (DVO_FORMAT_PANSTARRS); 51 51 if (!strcasecmp (catformat, "PMTEST")) return (DVO_FORMAT_PMTEST); 52 if (!strcasecmp (catformat, "PANSTARRS_DEV_0")) return (DVO_FORMAT_PANSTARRS_DEV_0); 52 53 return (DVO_FORMAT_UNDEF); 53 54 } … … 340 341 for (in = out = i = 0; i < catalog[0].Naverage; i++) { 341 342 for (j = 0; j < catalog[0].Nsecfilt; j++, in++, out++) { 342 outsec[out].M _PS = insec[in].M_PS;343 outsec[out].dM _PS = insec[in].dM_PS;343 outsec[out].M = insec[in].M; 344 outsec[out].dM = insec[in].dM; 344 345 outsec[out].Xm = insec[in].Xm; 345 346 } 346 347 for (j = 0; j < Nextra; j++, out++) { 347 outsec[out].M _PS= NO_MAG;348 outsec[out].dM _PS= NO_MAG;348 outsec[out].M = NO_MAG; 349 outsec[out].dM = NO_MAG; 349 350 outsec[out].Xm = NO_MAG; 350 351 } … … 386 387 /* 387 388 mode : items to read (LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF) 388 format : what structure on disk (INTERNAL, ELIXIR, LONEOS, PANSTARRS)389 format : what table structure on disk (INTERNAL, LONEOS, etc, ) 389 390 style : raw, mef, split, mysql 390 391 */ -
trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c
r8328 r12332 9 9 Matrix matrix; 10 10 FTable ftable; 11 SecFilt *primary; 11 12 12 13 f = catalog[0].f; … … 44 45 return (FALSE); 45 46 } 46 catalog[0].average = FtableToAverage (&ftable, &catalog[0].Naverage, &catalog[0].catformat); 47 /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */ 48 catalog[0].average = FtableToAverage (&ftable, &catalog[0].Naverage, &catalog[0].catformat, &primary); 47 49 if (Naverage != catalog[0].Naverage) { 48 50 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%d vs %d)\n", Naverage, catalog[0].Naverage); … … 96 98 } 97 99 98 // catalog[0].secfilt = gfits_table_get_SecFilt (&ftable, &Nitems, NULL);99 // catalog[0].Nsecfilt = Nitems / catalog[0].Naverage;100 101 100 /* read secfilt table header */ 102 101 if (!gfits_fread_header (f, &header)) { … … 110 109 return (FALSE); 111 110 } 111 112 /* how many entries do we expect from the secfilt table? */ 112 113 Nexpect = catalog[0].Nsecfilt * catalog[0].Naverage; 113 114 catalog[0].secfilt = FtableToSecFilt (&ftable, &Nitems, &catalog[0].catformat); … … 115 116 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%d vs %d)\n", Nexpect, Nitems); 116 117 } 118 119 /* if primary is defined, we were supplied with one additional average magnitude from Average 120 we need to interleave these magnitudes with the secfilt entries just loaded */ 121 if (primary != NULL) { 122 int Ntmpfilt, Ntotal, i, j; 123 SecFilt *tmpfilt; 124 tmpfilt = catalog[0].secfilt; 125 Ntmpfilt = catalog[0].Nsecfilt; 126 Nsecfilt = catalog[0].Nsecfilt + 1; 127 Ntotal = Nsecfilt * catalog[0].Naverage; 128 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); 129 for (i = 0; i < catalog[0].Naverage; i++) { 130 catalog[0].secfilt[i*Nsecfilt + 0] = primary[i]; 131 for (j = 0; j < Ntmpfilt; j++) { 132 catalog[0].secfilt[i*Nsecfilt + j + 1] = tmpfilt[i*Ntmpfilt + j]; 133 } 134 } 135 catalog[0].Nsecfilt = Nsecfilt; 136 free (primary); 137 } 138 117 139 } else { 118 140 /* no real need to skip the data array here... */ 119 141 Nbytes = gfits_matrix_size (&header); 120 142 fseek (f, Nbytes, SEEK_CUR); 143 if (primary != NULL) free (primary); 121 144 } 122 145 … … 129 152 } 130 153 154 /* XXX need to decompose the primary and secfilt entries for Elixir and Loneos */ 131 155 /* save_catalog_mef writes a complete new file from scratch */ 132 133 156 int dvo_catalog_save_mef (Catalog *catalog, char VERBOSE) { 134 157 … … 138 161 Header header; 139 162 FTable ftable; 163 SecFilt *primary; 164 SecFilt *secfilt; 165 int i, j, Nsecfilt, Nallfilt, Ntotal; 140 166 141 167 if (catalog[0].Naverage == 0) { … … 171 197 gfits_free_matrix (&matrix); 172 198 199 /* for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary */ 200 if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR 201 (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS 202 Nallfilt = catalog[0].Nsecfilt; 203 Nsecfilt = catalog[0].Nsecfilt - 1; 204 Ntotal = Nsecfilt * catalog[0].Naverage; 205 ALLOCATE (primary, SecFilt, catalog[0].Naverage); 206 ALLOCATE (secfilt, SecFilt, Ntotal); 207 208 for (i = 0; i < catalog[0].Naverage; i++) { 209 primary[i] = catalog[0].secfilt[i*Nallfilt + 0]; 210 for (j = 0; j < Nsecfilt; j++) { 211 secfilt[i*Nsecfilt + j] = catalog[0].secfilt[i*Nallfilt + j + 1]; 212 } 213 } 214 } else { 215 primary = NULL; 216 secfilt = catalog[0].secfilt; 217 Nsecfilt = catalog[0].Nsecfilt; 218 } 219 173 220 /* write out Average table (convert to FITS table format) */ 174 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat );221 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary); 175 222 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 176 223 fprintf (stderr, "can't write table header"); … … 211 258 212 259 /* write out SecFilt table (convert to FITS table format) */ 213 Nitems = catalog[0].Naverage * catalog[0].Nsecfilt; 214 SecFiltToFtable (&ftable, catalog[0].secfilt, Nitems, catalog[0].catformat); 215 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 216 fprintf (stderr, "can't write table header"); 217 return (FALSE); 218 } 219 if (!gfits_fwrite_table (catalog[0].f, &ftable)) { 220 fprintf (stderr, "can't write table data"); 221 return (FALSE); 222 } 223 gfits_free_table (&ftable); 224 gfits_free_header (&header); 260 Nitems = catalog[0].Naverage * Nsecfilt; 261 SecFiltToFtable (&ftable, secfilt, Nitems, catalog[0].catformat); 262 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 263 fprintf (stderr, "can't write table header"); 264 return (FALSE); 265 } 266 if (!gfits_fwrite_table (catalog[0].f, &ftable)) { 267 fprintf (stderr, "can't write table data"); 268 return (FALSE); 269 } 270 gfits_free_table (&ftable); 271 gfits_free_header (&header); 272 273 /* free temp storage */ 274 if (primary != NULL) { 275 free (primary); 276 free (secfilt); 277 } 225 278 226 279 return (TRUE); … … 228 281 229 282 /* 230 catalog data is:231 header (bitpix == 8)232 matrix (empty)233 average header234 average table235 measure header236 measure table237 missing header238 missing table239 secfilt header240 secfilt table283 catalog data is: 284 header (bitpix == 8) 285 matrix (empty) 286 average header 287 average table 288 measure header 289 measure table 290 missing header 291 missing table 292 secfilt header 293 secfilt table 241 294 */ 242 295 -
trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
r8456 r12332 12 12 struct stat filestatus; 13 13 char format[80], telescope[80]; 14 SecFilt *primary; 14 15 15 16 f = catalog[0].f; … … 28 29 catalog[0].catformat = DVO_FORMAT_UNDEF; 29 30 if (gfits_scan (&catalog[0].header, "FORMAT", "%s", 1, format)) { 30 if (!strcmp (format, "INTERNAL")) catalog[0].catformat = DVO_FORMAT_INTERNAL; 31 if (!strcmp (format, "LONEOS")) catalog[0].catformat = DVO_FORMAT_LONEOS; 32 if (!strcmp (format, "ELIXIR")) catalog[0].catformat = DVO_FORMAT_ELIXIR; 33 if (!strcmp (format, "PANSTARRS")) catalog[0].catformat = DVO_FORMAT_PANSTARRS; 34 if (!strcmp (format, "PMTEST")) catalog[0].catformat = DVO_FORMAT_PMTEST; 31 catalog[0].catformat = dvo_catalog_catformat (format); 35 32 if (catalog[0].catformat != DVO_FORMAT_UNDEF) goto got_format; 36 33 } 37 34 /* special cases: old versions of the DB tables which were poorly identified */ 38 35 if (gfits_scan (&catalog[0].header, "NEWMEAS", "%t", 1, &NewMeasure)) { 39 catalog[0].catformat = DVO_FORMAT_ELIXIR; 36 catalog[0].catformat = DVO_FORMAT_ELIXIR; // special case for ELIXIR 40 37 goto got_format; 41 38 } 42 39 if (gfits_scan (&catalog[0].header, "TELESCOP", "%s", 1, telescope)) { 43 40 if (!strncmp (telescope, "LONEOS", strlen("LONEOS"))) { 44 catalog[0].catformat = DVO_FORMAT_LONEOS; 41 catalog[0].catformat = DVO_FORMAT_LONEOS; // special case for LONEOS 45 42 goto got_format; 46 43 } 47 44 if (!strncmp (telescope, "1.3m McGraw-Hill", strlen("1.3m McGraw-Hill"))) { 48 catalog[0].catformat = DVO_FORMAT_ELIXIR; 45 catalog[0].catformat = DVO_FORMAT_ELIXIR; // special case for ELIXIR 49 46 goto got_format; 50 47 } … … 59 56 AverageSize = sizeof(Average); 60 57 MeasureSize = sizeof(Measure); 61 SecFiltSize = sizeof (SecFilt);58 SecFiltSize = sizeof(SecFilt); 62 59 break; 63 60 case DVO_FORMAT_LONEOS: 64 61 AverageSize = sizeof(AverageLoneos); 65 62 MeasureSize = sizeof(MeasureLoneos); 66 SecFiltSize = sizeof (SecFiltLoneos);63 SecFiltSize = sizeof(SecFiltLoneos); 67 64 break; 68 65 case DVO_FORMAT_ELIXIR: 69 66 AverageSize = sizeof(AverageElixir); 70 67 MeasureSize = sizeof(MeasureElixir); 71 SecFiltSize = sizeof (SecFiltElixir);68 SecFiltSize = sizeof(SecFiltElixir); 72 69 break; 70 case DVO_FORMAT_PANSTARRS_DEV_0: 71 AverageSize = sizeof(AveragePanstarrs_DEV_0); 72 MeasureSize = sizeof(MeasurePanstarrs_DEV_0); 73 SecFiltSize = sizeof(SecFiltPanstarrs_DEV_0); 74 break; 75 # if 0 73 76 case DVO_FORMAT_PANSTARRS: 74 77 AverageSize = sizeof(AveragePanstarrs); 75 78 MeasureSize = sizeof(MeasurePanstarrs); 76 SecFiltSize = sizeof (SecFiltPanstarrs);79 SecFiltSize = sizeof(SecFiltPanstarrs); 77 80 break; 78 81 case DVO_FORMAT_PMTEST: 79 82 AverageSize = sizeof(AveragePMtest); 80 83 MeasureSize = sizeof(MeasurePanstarrs); 81 SecFiltSize = sizeof (SecFiltPanstarrs);84 SecFiltSize = sizeof(SecFiltPanstarrs); 82 85 break; 86 # endif 83 87 default: 84 88 fprintf (stderr, "programming error in phot_catalog_raw\n"); … … 120 124 121 125 /* read and convert the averages (use a macro to clean this up?) */ 126 /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */ 122 127 if (catalog[0].catflags & LOAD_AVES) { 123 catalog[0].average = ReadRawAverage (catalog[0].f, catalog[0].Naverage, catalog[0].catformat );128 catalog[0].average = ReadRawAverage (catalog[0].f, catalog[0].Naverage, catalog[0].catformat, &primary); 124 129 } else { 125 130 /* skip over averages */ … … 157 162 Nitems = catalog[0].Naverage * catalog[0].Nsecfilt; 158 163 catalog[0].secfilt = ReadRawSecFilt (catalog[0].f, Nitems, catalog[0].catformat); 164 165 /* if primary is defined, we were supplied with one additional average magnitude from Average 166 we need to interleave these magnitudes with the secfilt entries just loaded */ 167 if (primary != NULL) { 168 int Ntmpfilt, Nsecfilt, Ntotal, i, j; 169 SecFilt *tmpfilt; 170 tmpfilt = catalog[0].secfilt; 171 Ntmpfilt = catalog[0].Nsecfilt; 172 Nsecfilt = catalog[0].Nsecfilt + 1; 173 Ntotal = Nsecfilt * catalog[0].Naverage; 174 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); 175 for (i = 0; i < catalog[0].Naverage; i++) { 176 catalog[0].secfilt[i*Nsecfilt + 0] = primary[i]; 177 for (j = 0; j < Ntmpfilt; j++) { 178 catalog[0].secfilt[i*Nsecfilt + j + 1] = tmpfilt[i*Ntmpfilt + j]; 179 } 180 } 181 catalog[0].Nsecfilt = Nsecfilt; 182 free (primary); 183 } 184 159 185 } else { 160 186 /* skip over secfilts */ 161 187 Nskip = catalog[0].Nsecfilt * catalog[0].Naverage * SecFiltSize; 162 188 fseek (f, Nskip, SEEK_CUR); 189 if (primary != NULL) free (primary); 163 190 } 164 191 … … 194 221 int Nitems, nitems; 195 222 FILE *f; 223 SecFilt *primary; 224 SecFilt *secfilt; 225 int i, j, Nsecfilt, Nallfilt, Ntotal; 196 226 197 227 if (catalog[0].Naverage == 0) { … … 210 240 if (catalog[0].catformat == DVO_FORMAT_LONEOS) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "LONEOS"); 211 241 if (catalog[0].catformat == DVO_FORMAT_ELIXIR) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "ELIXIR"); 212 if (catalog[0].catformat == DVO_FORMAT_PANSTARRS) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS"); 213 if (catalog[0].catformat == DVO_FORMAT_PMTEST) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PMTEST"); 242 if (catalog[0].catformat == DVO_FORMAT_PANSTARRS_DEV_0) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS_DEV_0"); 243 // if (catalog[0].catformat == DVO_FORMAT_PANSTARRS) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS"); 244 // if (catalog[0].catformat == DVO_FORMAT_PMTEST) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PMTEST"); 214 245 215 246 /* rewind file pointers and truncate file */ … … 225 256 } 226 257 258 /* for the appropriate types, pull out the first secfilt and pass to WriteRawAverage as primary */ 259 if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR 260 (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS 261 Nallfilt = catalog[0].Nsecfilt; 262 Nsecfilt = catalog[0].Nsecfilt - 1; 263 Ntotal = Nsecfilt * catalog[0].Naverage; 264 ALLOCATE (primary, SecFilt, catalog[0].Naverage); 265 ALLOCATE (secfilt, SecFilt, Ntotal); 266 267 for (i = 0; i < catalog[0].Naverage; i++) { 268 primary[i] = catalog[0].secfilt[i*Nallfilt + 0]; 269 for (j = 0; j < Nsecfilt; j++) { 270 secfilt[i*Nsecfilt + j] = catalog[0].secfilt[i*Nallfilt + j + 1]; 271 } 272 } 273 } else { 274 primary = NULL; 275 secfilt = catalog[0].secfilt; 276 Nsecfilt = catalog[0].Nsecfilt; 277 } 278 227 279 /* write averages and measures */ 228 WriteRawAverage (f, catalog[0].average, catalog[0].Naverage, catalog[0].catformat );280 WriteRawAverage (f, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary); 229 281 WriteRawMeasure (f, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat); 230 282 … … 240 292 Nitems = catalog[0].Naverage * catalog[0].Nsecfilt; 241 293 WriteRawSecFilt (f, catalog[0].secfilt, Nitems, catalog[0].catformat); 294 295 /* free temp storage */ 296 if (primary != NULL) { 297 free (primary); 298 free (secfilt); 299 } 300 242 301 return (TRUE); 243 302 } … … 250 309 /** Average / Raw Table conversions **/ 251 310 252 Average *ReadRawAverage (FILE *f, int Naverage, int format ) {311 Average *ReadRawAverage (FILE *f, int Naverage, int format, SecFilt **primary) { 253 312 254 313 int nitems; 255 314 Average *average; 256 AverageElixir *tmpAverageElixir; 257 AverageLoneos *tmpAverageLoneos;258 AveragePanstarrs *tmpAveragePanstarrs;259 AveragePMtest *tmpAveragePMtest;315 316 /* in the Elixir and Loneos cases, we are supplied with an average magnitude in Average 317 in these cases, save these values in primary; otherwise set primary to NULL */ 318 *primary = NULL; 260 319 261 320 switch (format) { 262 case DVO_FORMAT_INTERNAL: 321 case DVO_FORMAT_INTERNAL: { 263 322 ALLOCATE (average, Average, MAX (Naverage, 1)); 264 323 nitems = fread (average, sizeof(Average), Naverage, f); … … 268 327 } 269 328 gfits_convert_Average (average, sizeof(Average), Naverage); 270 break; 271 case DVO_FORMAT_ELIXIR: 272 ALLOCATE (tmpAverageElixir, AverageElixir, MAX (Naverage, 1)); 273 nitems = fread (tmpAverageElixir, sizeof(AverageElixir), Naverage, f); 329 break; } 330 case DVO_FORMAT_ELIXIR: { 331 AverageElixir *tmpAverage; 332 ALLOCATE (tmpAverage, AverageElixir, MAX (Naverage, 1)); 333 nitems = fread (tmpAverage, sizeof(AverageElixir), Naverage, f); 274 334 if (nitems != Naverage) { 275 335 fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage); 276 336 return (NULL); 277 337 } 278 gfits_convert_AverageElixir (tmpAverageElixir, sizeof(AverageElixir), Naverage); 279 average = AverageElixirToInternal (tmpAverageElixir, Naverage); 280 free (tmpAverageElixir); 281 break; 282 case DVO_FORMAT_LONEOS: 283 ALLOCATE (tmpAverageLoneos, AverageLoneos, MAX (Naverage, 1)); 284 nitems = fread (tmpAverageLoneos, sizeof(AverageLoneos), Naverage, f); 338 gfits_convert_AverageElixir (tmpAverage, sizeof(AverageElixir), Naverage); 339 average = AverageElixirToInternal (tmpAverage, Naverage, primary); 340 free (tmpAverage); 341 break; } 342 case DVO_FORMAT_LONEOS: { 343 AverageLoneos *tmpAverage; 344 ALLOCATE (tmpAverage, AverageLoneos, MAX (Naverage, 1)); 345 nitems = fread (tmpAverage, sizeof(AverageLoneos), Naverage, f); 285 346 if (nitems != Naverage) { 286 347 fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage); 287 348 return (NULL); 288 349 } 289 gfits_convert_AverageLoneos (tmpAverageLoneos, sizeof(AverageLoneos), Naverage); 290 average = AverageLoneosToInternal (tmpAverageLoneos, Naverage); 291 free (tmpAverageLoneos); 292 break; 293 case DVO_FORMAT_PANSTARRS: 294 ALLOCATE (tmpAveragePanstarrs, AveragePanstarrs, MAX (Naverage, 1)); 295 nitems = fread (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage, f); 350 gfits_convert_AverageLoneos (tmpAverage, sizeof(AverageLoneos), Naverage); 351 average = AverageLoneosToInternal (tmpAverage, Naverage, primary); 352 free (tmpAverage); 353 break; } 354 case DVO_FORMAT_PANSTARRS_DEV_0: { 355 AveragePanstarrs_DEV_0 *tmpAverage; 356 ALLOCATE (tmpAverage, AveragePanstarrs_DEV_0, MAX (Naverage, 1)); 357 nitems = fread (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage, f); 296 358 if (nitems != Naverage) { 297 359 fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage); 298 360 return (NULL); 299 361 } 300 gfits_convert_AveragePanstarrs (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage); 301 average = AveragePanstarrsToInternal (tmpAveragePanstarrs, Naverage); 302 free (tmpAveragePanstarrs); 303 break; 304 case DVO_FORMAT_PMTEST: 305 ALLOCATE (tmpAveragePMtest, AveragePMtest, MAX (Naverage, 1)); 306 nitems = fread (tmpAveragePMtest, sizeof(AveragePMtest), Naverage, f); 362 gfits_convert_AveragePanstarrs_DEV_0 (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage); 363 average = AveragePanstarrs_DEV_0_ToInternal (tmpAverage, Naverage); 364 free (tmpAverage); 365 break; } 366 # if 0 367 case DVO_FORMAT_PANSTARRS: { 368 AveragePanstarrs *tmpAverage; 369 ALLOCATE (tmpAverage, AveragePanstarrs, MAX (Naverage, 1)); 370 nitems = fread (tmpAverage, sizeof(AveragePanstarrs), Naverage, f); 307 371 if (nitems != Naverage) { 308 372 fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage); 309 373 return (NULL); 310 374 } 311 gfits_convert_AveragePMtest (tmpAveragePMtest, sizeof(AveragePMtest), Naverage); 312 average = AveragePMtestToInternal (tmpAveragePMtest, Naverage); 313 free (tmpAveragePMtest); 314 break; 375 gfits_convert_AveragePanstarrs (tmpAverage, sizeof(AveragePanstarrs), Naverage); 376 average = AveragePanstarrsToInternal (tmpAverage, Naverage); 377 free (tmpAverage); 378 break; } 379 case DVO_FORMAT_PMTEST: { 380 AveragePMtest *tmpAverage; 381 ALLOCATE (tmpAverage, AveragePMtest, MAX (Naverage, 1)); 382 nitems = fread (tmpAverage, sizeof(AveragePMtest), Naverage, f); 383 if (nitems != Naverage) { 384 fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage); 385 return (NULL); 386 } 387 gfits_convert_AveragePMtest (tmpAverage, sizeof(AveragePMtest), Naverage); 388 average = AveragePMtestToInternal (tmpAverage, Naverage); 389 free (tmpAverage); 390 break; } 391 # endif 315 392 default: 316 393 fprintf (stderr, "error reading measures\n"); … … 322 399 /* accepts and converts internal average formats and outputs 323 400 raw data in the specified format */ 324 int WriteRawAverage (FILE *f, Average *average, int Naverage, int format ) {401 int WriteRawAverage (FILE *f, Average *average, int Naverage, int format, SecFilt *primary) { 325 402 326 403 int nitems; 327 AverageElixir *tmpAverageElixir;328 AverageLoneos *tmpAverageLoneos;329 AveragePanstarrs *tmpAveragePanstarrs;330 AveragePMtest *tmpAveragePMtest;331 404 332 405 switch (format) { 333 case DVO_FORMAT_INTERNAL: 406 case DVO_FORMAT_INTERNAL: { 334 407 gfits_convert_Average (average, sizeof(Average), Naverage); 335 408 nitems = fwrite (average, sizeof(Average), Naverage, f); … … 338 411 return (FALSE); 339 412 } 340 break; 341 case DVO_FORMAT_ELIXIR: 342 tmpAverageElixir = AverageInternalToElixir (average, Naverage); 343 gfits_convert_AverageElixir (tmpAverageElixir, sizeof(AverageElixir), Naverage); 344 nitems = fwrite (tmpAverageElixir, sizeof(AverageElixir), Naverage, f); 345 free (tmpAverageElixir); 413 break; } 414 case DVO_FORMAT_ELIXIR: { 415 AverageElixir *tmpAverage; 416 tmpAverage = AverageInternalToElixir (average, Naverage, primary); 417 gfits_convert_AverageElixir (tmpAverage, sizeof(AverageElixir), Naverage); 418 nitems = fwrite (tmpAverage, sizeof(AverageElixir), Naverage, f); 419 free (tmpAverage); 346 420 if (nitems != Naverage) { 347 421 fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage); 348 422 return (FALSE); 349 423 } 350 break; 351 case DVO_FORMAT_LONEOS: 352 tmpAverageLoneos = AverageInternalToLoneos (average, Naverage); 353 gfits_convert_AverageLoneos (tmpAverageLoneos, sizeof(AverageLoneos), Naverage); 354 nitems = fwrite (tmpAverageLoneos, sizeof(AverageLoneos), Naverage, f); 355 free (tmpAverageLoneos); 424 break; } 425 case DVO_FORMAT_LONEOS: { 426 AverageLoneos *tmpAverage; 427 tmpAverage = AverageInternalToLoneos (average, Naverage, primary); 428 gfits_convert_AverageLoneos (tmpAverage, sizeof(AverageLoneos), Naverage); 429 nitems = fwrite (tmpAverage, sizeof(AverageLoneos), Naverage, f); 430 free (tmpAverage); 356 431 if (nitems != Naverage) { 357 432 fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage); 358 433 return (FALSE); 359 434 } 360 break; 361 case DVO_FORMAT_PANSTARRS: 362 tmpAveragePanstarrs = AverageInternalToPanstarrs (average, Naverage); 363 gfits_convert_AveragePanstarrs (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage); 364 nitems = fwrite (tmpAveragePanstarrs, sizeof(AveragePanstarrs), Naverage, f); 365 free (tmpAveragePanstarrs); 435 break; } 436 case DVO_FORMAT_PANSTARRS_DEV_0: { 437 AveragePanstarrs_DEV_0 *tmpAverage; 438 tmpAverage = AverageInternalToPanstarrs_DEV_0 (average, Naverage); 439 gfits_convert_AveragePanstarrs_DEV_0 (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage); 440 nitems = fwrite (tmpAverage, sizeof(AveragePanstarrs_DEV_0), Naverage, f); 441 free (tmpAverage); 366 442 if (nitems != Naverage) { 367 443 fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage); 368 444 return (FALSE); 369 445 } 370 break; 371 case DVO_FORMAT_PMTEST: 372 tmpAveragePMtest = AverageInternalToPMtest (average, Naverage); 373 gfits_convert_AveragePMtest (tmpAveragePMtest, sizeof(AveragePMtest), Naverage); 374 nitems = fwrite (tmpAveragePMtest, sizeof(AveragePMtest), Naverage, f); 375 free (tmpAveragePMtest); 446 break; } 447 # if 0 448 case DVO_FORMAT_PANSTARRS: { 449 AveragePanstarrs *tmpAverage; 450 tmpAverage = AverageInternalToPanstarrs (average, Naverage); 451 gfits_convert_AveragePanstarrs (tmpAverage, sizeof(AveragePanstarrs), Naverage); 452 nitems = fwrite (tmpAverage, sizeof(AveragePanstarrs), Naverage, f); 453 free (tmpAverage); 376 454 if (nitems != Naverage) { 377 455 fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage); 378 456 return (FALSE); 379 457 } 380 break; 458 break; } 459 case DVO_FORMAT_PMTEST: { 460 AveragePMtest *tmpAverage; 461 tmpAverage = AverageInternalToPMtest (average, Naverage); 462 gfits_convert_AveragePMtest (tmpAverage, sizeof(AveragePMtest), Naverage); 463 nitems = fwrite (tmpAverage, sizeof(AveragePMtest), Naverage, f); 464 free (tmpAverage); 465 if (nitems != Naverage) { 466 fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage); 467 return (FALSE); 468 } 469 break; } 470 # endif 381 471 default: 382 472 fprintf (stderr, "error writing averages\n"); … … 392 482 int nitems; 393 483 Measure *measure; 394 MeasureElixir *tmpMeasureElixir;395 MeasureLoneos *tmpMeasureLoneos;396 MeasurePanstarrs *tmpMeasurePanstarrs;397 484 398 485 switch (format) { 399 case DVO_FORMAT_INTERNAL: 486 case DVO_FORMAT_INTERNAL: { 400 487 ALLOCATE (measure, Measure, MAX (Nmeasure, 1)); 401 488 nitems = fread (measure, sizeof(Measure), Nmeasure, f); … … 405 492 } 406 493 gfits_convert_Measure (measure, sizeof(Measure), Nmeasure); 407 break; 408 case DVO_FORMAT_ELIXIR: 409 ALLOCATE (tmpMeasureElixir, MeasureElixir, MAX (Nmeasure, 1)); 410 nitems = fread (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure, f); 494 break; } 495 case DVO_FORMAT_ELIXIR: { 496 MeasureElixir *tmpMeasure; 497 ALLOCATE (tmpMeasure, MeasureElixir, MAX (Nmeasure, 1)); 498 nitems = fread (tmpMeasure, sizeof(MeasureElixir), Nmeasure, f); 411 499 if (nitems != Nmeasure) { 412 500 fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure); 413 501 return (NULL); 414 502 } 415 gfits_convert_MeasureElixir (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure); 416 measure = MeasureElixirToInternal (tmpMeasureElixir, Nmeasure); 417 free (tmpMeasureElixir); 418 break; 419 case DVO_FORMAT_LONEOS: 420 ALLOCATE (tmpMeasureLoneos, MeasureLoneos, MAX (Nmeasure, 1)); 421 nitems = fread (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure, f); 503 gfits_convert_MeasureElixir (tmpMeasure, sizeof(MeasureElixir), Nmeasure); 504 measure = MeasureElixirToInternal (tmpMeasure, Nmeasure); 505 free (tmpMeasure); 506 break; } 507 case DVO_FORMAT_LONEOS: { 508 MeasureLoneos *tmpMeasure; 509 ALLOCATE (tmpMeasure, MeasureLoneos, MAX (Nmeasure, 1)); 510 nitems = fread (tmpMeasure, sizeof(MeasureLoneos), Nmeasure, f); 422 511 if (nitems != Nmeasure) { 423 512 fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure); 424 513 return (NULL); 425 514 } 426 gfits_convert_MeasureLoneos (tmpMeasure Loneos, sizeof(MeasureLoneos), Nmeasure);427 measure = MeasureLoneosToInternal (tmpMeasure Loneos, Nmeasure);428 free (tmpMeasure Loneos);429 break; 430 case DVO_FORMAT_PANSTARRS :431 case DVO_FORMAT_PMTEST:432 ALLOCATE (tmpMeasure Panstarrs, MeasurePanstarrs, MAX (Nmeasure, 1));433 nitems = fread (tmpMeasure Panstarrs, sizeof(MeasurePanstarrs), Nmeasure, f);515 gfits_convert_MeasureLoneos (tmpMeasure, sizeof(MeasureLoneos), Nmeasure); 516 measure = MeasureLoneosToInternal (tmpMeasure, Nmeasure); 517 free (tmpMeasure); 518 break; } 519 case DVO_FORMAT_PANSTARRS_DEV_0: { 520 MeasurePanstarrs_DEV_0 *tmpMeasure; 521 ALLOCATE (tmpMeasure, MeasurePanstarrs_DEV_0, MAX (Nmeasure, 1)); 522 nitems = fread (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure, f); 434 523 if (nitems != Nmeasure) { 435 524 fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure); 436 525 return (NULL); 437 526 } 438 gfits_convert_MeasurePanstarrs (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure); 439 measure = MeasurePanstarrsToInternal (tmpMeasurePanstarrs, Nmeasure); 440 free (tmpMeasurePanstarrs); 441 break; 527 gfits_convert_MeasurePanstarrs_DEV_0 (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure); 528 measure = MeasurePanstarrs_DEV_0_ToInternal (tmpMeasure, Nmeasure); 529 free (tmpMeasure); 530 break; } 531 # if 0 532 case DVO_FORMAT_PANSTARRS: { 533 MeasurePanstarrs *tmpMeasure; 534 ALLOCATE (tmpMeasure, MeasurePanstarrs, MAX (Nmeasure, 1)); 535 nitems = fread (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure, f); 536 if (nitems != Nmeasure) { 537 fprintf (stderr, "failed to read measures (%d vs %d)\n", nitems, Nmeasure); 538 return (NULL); 539 } 540 gfits_convert_MeasurePanstarrs (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure); 541 measure = MeasurePanstarrsToInternal (tmpMeasure, Nmeasure); 542 free (tmpMeasure); 543 break; } 544 # endif 442 545 default: 443 546 fprintf (stderr, "error reading measures\n"); … … 452 555 453 556 int nitems; 454 MeasureElixir *tmpMeasureElixir;455 MeasureLoneos *tmpMeasureLoneos;456 MeasurePanstarrs *tmpMeasurePanstarrs;457 557 458 558 switch (format) { 459 case DVO_FORMAT_INTERNAL: 559 case DVO_FORMAT_INTERNAL: { 460 560 gfits_convert_Measure (measure, sizeof(Measure), Nmeasure); 461 561 nitems = fwrite (measure, sizeof(Measure), Nmeasure, f); … … 464 564 return (FALSE); 465 565 } 466 break; 467 case DVO_FORMAT_ELIXIR: 468 tmpMeasureElixir = MeasureInternalToElixir (measure, Nmeasure); 469 gfits_convert_MeasureElixir (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure); 470 nitems = fwrite (tmpMeasureElixir, sizeof(MeasureElixir), Nmeasure, f); 471 free (tmpMeasureElixir); 566 break; } 567 case DVO_FORMAT_ELIXIR: { 568 MeasureElixir *tmpMeasure; 569 tmpMeasure = MeasureInternalToElixir (measure, Nmeasure); 570 gfits_convert_MeasureElixir (tmpMeasure, sizeof(MeasureElixir), Nmeasure); 571 nitems = fwrite (tmpMeasure, sizeof(MeasureElixir), Nmeasure, f); 572 free (tmpMeasure); 472 573 if (nitems != Nmeasure) { 473 574 fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure); 474 575 return (FALSE); 475 576 } 476 break; 477 case DVO_FORMAT_LONEOS: 478 tmpMeasureLoneos = MeasureInternalToLoneos (measure, Nmeasure); 479 gfits_convert_MeasureLoneos (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure); 480 nitems = fwrite (tmpMeasureLoneos, sizeof(MeasureLoneos), Nmeasure, f); 481 free (tmpMeasureLoneos); 577 break; } 578 case DVO_FORMAT_LONEOS: { 579 MeasureLoneos *tmpMeasure; 580 tmpMeasure = MeasureInternalToLoneos (measure, Nmeasure); 581 gfits_convert_MeasureLoneos (tmpMeasure, sizeof(MeasureLoneos), Nmeasure); 582 nitems = fwrite (tmpMeasure, sizeof(MeasureLoneos), Nmeasure, f); 583 free (tmpMeasure); 482 584 if (nitems != Nmeasure) { 483 585 fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure); 484 586 return (FALSE); 485 587 } 486 break; 487 case DVO_FORMAT_PANSTARRS :488 case DVO_FORMAT_PMTEST:489 tmpMeasure Panstarrs = MeasureInternalToPanstarrs(measure, Nmeasure);490 gfits_convert_MeasurePanstarrs (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure);491 nitems = fwrite (tmpMeasure Panstarrs, sizeof(MeasurePanstarrs), Nmeasure, f);492 free (tmpMeasure Panstarrs);588 break; } 589 case DVO_FORMAT_PANSTARRS_DEV_0: { 590 MeasurePanstarrs_DEV_0 *tmpMeasure; 591 tmpMeasure = MeasureInternalToPanstarrs_DEV_0 (measure, Nmeasure); 592 gfits_convert_MeasurePanstarrs_DEV_0 (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure); 593 nitems = fwrite (tmpMeasure, sizeof(MeasurePanstarrs_DEV_0), Nmeasure, f); 594 free (tmpMeasure); 493 595 if (nitems != Nmeasure) { 494 596 fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure); 495 597 return (FALSE); 496 598 } 497 break; 599 break; } 600 # if 0 601 case DVO_FORMAT_PANSTARRS: { 602 MeasurePanstarrs *tmpMeasure; 603 tmpMeasure = MeasureInternalToPanstarrs (measure, Nmeasure); 604 gfits_convert_MeasurePanstarrs (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure); 605 nitems = fwrite (tmpMeasure, sizeof(MeasurePanstarrs), Nmeasure, f); 606 free (tmpMeasure); 607 if (nitems != Nmeasure) { 608 fprintf (stderr, "failed to write measures (%d vs %d)\n", nitems, Nmeasure); 609 return (FALSE); 610 } 611 break; } 612 # endif 498 613 default: 499 614 fprintf (stderr, "error writing measures\n"); … … 509 624 int nitems; 510 625 SecFilt *secfilt; 511 SecFiltElixir *tmpSecFiltElixir;512 SecFiltLoneos *tmpSecFiltLoneos;513 SecFiltPanstarrs *tmpSecFiltPanstarrs;514 626 515 627 switch (format) { 516 case DVO_FORMAT_INTERNAL: 628 case DVO_FORMAT_INTERNAL: { 517 629 ALLOCATE (secfilt, SecFilt, MAX (Nsecfilt, 1)); 518 630 nitems = fread (secfilt, sizeof(SecFilt), Nsecfilt, f); … … 522 634 } 523 635 gfits_convert_SecFilt (secfilt, sizeof(SecFilt), Nsecfilt); 524 break; 525 case DVO_FORMAT_ELIXIR: 526 ALLOCATE (tmpSecFiltElixir, SecFiltElixir, MAX (Nsecfilt, 1)); 527 nitems = fread (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt, f); 636 break; } 637 case DVO_FORMAT_ELIXIR: { 638 SecFiltElixir *tmpSecFilt; 639 ALLOCATE (tmpSecFilt, SecFiltElixir, MAX (Nsecfilt, 1)); 640 nitems = fread (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt, f); 528 641 if (nitems != Nsecfilt) { 529 642 fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt); 530 643 return (NULL); 531 644 } 532 gfits_convert_SecFiltElixir (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt); 533 secfilt = SecFiltElixirToInternal (tmpSecFiltElixir, Nsecfilt); 534 free (tmpSecFiltElixir); 535 break; 536 case DVO_FORMAT_LONEOS: 537 ALLOCATE (tmpSecFiltLoneos, SecFiltLoneos, MAX (Nsecfilt, 1)); 538 nitems = fread (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt, f); 645 gfits_convert_SecFiltElixir (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt); 646 secfilt = SecFiltElixirToInternal (tmpSecFilt, Nsecfilt); 647 free (tmpSecFilt); 648 break; } 649 case DVO_FORMAT_LONEOS: { 650 SecFiltLoneos *tmpSecFilt; 651 ALLOCATE (tmpSecFilt, SecFiltLoneos, MAX (Nsecfilt, 1)); 652 nitems = fread (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt, f); 539 653 if (nitems != Nsecfilt) { 540 654 fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt); 541 655 return (NULL); 542 656 } 543 gfits_convert_SecFiltLoneos (tmpSecFilt Loneos, sizeof(SecFiltLoneos), Nsecfilt);544 secfilt = SecFiltLoneosToInternal (tmpSecFilt Loneos, Nsecfilt);545 free (tmpSecFilt Loneos);546 break; 547 case DVO_FORMAT_PANSTARRS :548 case DVO_FORMAT_PMTEST:549 ALLOCATE (tmpSecFilt Panstarrs, SecFiltPanstarrs, MAX (Nsecfilt, 1));550 nitems = fread (tmpSecFilt Panstarrs, sizeof(SecFiltPanstarrs), Nsecfilt, f);657 gfits_convert_SecFiltLoneos (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt); 658 secfilt = SecFiltLoneosToInternal (tmpSecFilt, Nsecfilt); 659 free (tmpSecFilt); 660 break; } 661 case DVO_FORMAT_PANSTARRS_DEV_0: { 662 SecFiltPanstarrs_DEV_0 *tmpSecFilt; 663 ALLOCATE (tmpSecFilt, SecFiltPanstarrs_DEV_0, MAX (Nsecfilt, 1)); 664 nitems = fread (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt, f); 551 665 if (nitems != Nsecfilt) { 552 666 fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt); 553 667 return (NULL); 554 668 } 555 gfits_convert_SecFiltPanstarrs (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt); 556 secfilt = SecFiltPanstarrsToInternal (tmpSecFiltPanstarrs, Nsecfilt); 557 free (tmpSecFiltPanstarrs); 558 break; 669 gfits_convert_SecFiltPanstarrs_DEV_0 (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt); 670 secfilt = SecFiltPanstarrs_DEV_0_ToInternal (tmpSecFilt, Nsecfilt); 671 free (tmpSecFilt); 672 break; } 673 # if 0 674 case DVO_FORMAT_PANSTARRS: { 675 SecFiltPanstarrs *tmpSecFilt; 676 ALLOCATE (tmpSecFilt, SecFiltPanstarrs, MAX (Nsecfilt, 1)); 677 nitems = fread (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt, f); 678 if (nitems != Nsecfilt) { 679 fprintf (stderr, "failed to read secfilts (%d vs %d)\n", nitems, Nsecfilt); 680 return (NULL); 681 } 682 gfits_convert_SecFiltPanstarrs (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt); 683 secfilt = SecFiltPanstarrsToInternal (tmpSecFilt, Nsecfilt); 684 free (tmpSecFilt); 685 break; } 686 # endif 559 687 default: 560 688 fprintf (stderr, "error reading measures\n"); … … 569 697 570 698 int nitems; 571 SecFiltElixir *tmpSecFiltElixir;572 SecFiltLoneos *tmpSecFiltLoneos;573 SecFiltPanstarrs *tmpSecFiltPanstarrs;574 699 575 700 switch (format) { 576 case DVO_FORMAT_INTERNAL: 701 case DVO_FORMAT_INTERNAL: { 577 702 gfits_convert_SecFilt (secfilt, sizeof(SecFilt), Nsecfilt); 578 703 nitems = fwrite (secfilt, sizeof(SecFilt), Nsecfilt, f); … … 581 706 return (FALSE); 582 707 } 583 break; 584 case DVO_FORMAT_ELIXIR: 585 tmpSecFiltElixir = SecFiltInternalToElixir (secfilt, Nsecfilt); 586 gfits_convert_SecFiltElixir (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt); 587 nitems = fwrite (tmpSecFiltElixir, sizeof(SecFiltElixir), Nsecfilt, f); 588 free (tmpSecFiltElixir); 708 break; } 709 case DVO_FORMAT_ELIXIR: { 710 SecFiltElixir *tmpSecFilt; 711 tmpSecFilt = SecFiltInternalToElixir (secfilt, Nsecfilt); 712 gfits_convert_SecFiltElixir (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt); 713 nitems = fwrite (tmpSecFilt, sizeof(SecFiltElixir), Nsecfilt, f); 714 free (tmpSecFilt); 589 715 if (nitems != Nsecfilt) { 590 716 fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt); 591 717 return (FALSE); 592 718 } 593 break; 594 case DVO_FORMAT_LONEOS: 595 tmpSecFiltLoneos = SecFiltInternalToLoneos (secfilt, Nsecfilt); 596 gfits_convert_SecFiltLoneos (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt); 597 nitems = fwrite (tmpSecFiltLoneos, sizeof(SecFiltLoneos), Nsecfilt, f); 598 free (tmpSecFiltLoneos); 719 break; } 720 case DVO_FORMAT_LONEOS: { 721 SecFiltLoneos *tmpSecFilt; 722 tmpSecFilt = SecFiltInternalToLoneos (secfilt, Nsecfilt); 723 gfits_convert_SecFiltLoneos (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt); 724 nitems = fwrite (tmpSecFilt, sizeof(SecFiltLoneos), Nsecfilt, f); 725 free (tmpSecFilt); 599 726 if (nitems != Nsecfilt) { 600 727 fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt); 601 728 return (FALSE); 602 729 } 603 break; 604 case DVO_FORMAT_PANSTARRS :605 case DVO_FORMAT_PMTEST:606 tmpSecFilt Panstarrs = SecFiltInternalToPanstarrs(secfilt, Nsecfilt);607 gfits_convert_SecFiltPanstarrs (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt);608 nitems = fwrite (tmpSecFilt Panstarrs, sizeof(SecFiltPanstarrs), Nsecfilt, f);609 free (tmpSecFilt Panstarrs);730 break; } 731 case DVO_FORMAT_PANSTARRS_DEV_0: { 732 SecFiltPanstarrs_DEV_0 *tmpSecFilt; 733 tmpSecFilt = SecFiltInternalToPanstarrs_DEV_0 (secfilt, Nsecfilt); 734 gfits_convert_SecFiltPanstarrs_DEV_0 (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt); 735 nitems = fwrite (tmpSecFilt, sizeof(SecFiltPanstarrs_DEV_0), Nsecfilt, f); 736 free (tmpSecFilt); 610 737 if (nitems != Nsecfilt) { 611 738 fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt); 612 739 return (FALSE); 613 740 } 614 break; 741 break; } 742 # if 0 743 case DVO_FORMAT_PANSTARRS: { 744 SecFiltPanstarrs *tmpSecFilt; 745 tmpSecFilt = SecFiltInternalToPanstarrs (secfilt, Nsecfilt); 746 gfits_convert_SecFiltPanstarrs (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt); 747 nitems = fwrite (tmpSecFilt, sizeof(SecFiltPanstarrs), Nsecfilt, f); 748 free (tmpSecFilt); 749 if (nitems != Nsecfilt) { 750 fprintf (stderr, "failed to write secfilts (%d vs %d)\n", nitems, Nsecfilt); 751 return (FALSE); 752 } 753 break; } 754 # endif 615 755 default: 616 756 fprintf (stderr, "error writing secfilts\n"); -
trunk/Ohana/src/libdvo/src/dvo_catalog_split.c
r8456 r12332 8 8 Matrix matrix; 9 9 FTable ftable; 10 SecFilt *primary; 10 11 Catalog *measure, *missing, *secfilt; 11 12 … … 54 55 return (FALSE); 55 56 } 56 catalog[0].average = FtableToAverage (&ftable, &catalog[0].Naverage, &catalog[0].catformat); 57 /* old versions of DVO stored one of the average magnitudes in Average. we save this if needed */ 58 catalog[0].average = FtableToAverage (&ftable, &catalog[0].Naverage, &catalog[0].catformat, &primary); 57 59 if (Naverage != catalog[0].Naverage) { 58 60 fprintf (stderr, "Warning: mismatch between Naverage in PHU and Table headers (%d vs %d)\n", Naverage, catalog[0].Naverage); … … 240 242 fprintf (stderr, "Warning: mismatch between Nsecfilt items in PHU and Table headers (%d vs %d)\n", Nexpect, Nitems); 241 243 } 244 245 /* if primary is defined, we were supplied with one additional average magnitude from Average 246 we need to interleave these magnitudes with the secfilt entries just loaded */ 247 if (primary != NULL) { 248 int Ntmpfilt, Ntotal, i, j; 249 SecFilt *tmpfilt; 250 tmpfilt = catalog[0].secfilt; 251 Ntmpfilt = catalog[0].Nsecfilt; 252 Nsecfilt = catalog[0].Nsecfilt + 1; 253 Ntotal = Nsecfilt * catalog[0].Naverage; 254 ALLOCATE (catalog[0].secfilt, SecFilt, Ntotal); 255 for (i = 0; i < catalog[0].Naverage; i++) { 256 catalog[0].secfilt[i*Nsecfilt + 0] = primary[i]; 257 for (j = 0; j < Ntmpfilt; j++) { 258 catalog[0].secfilt[i*Nsecfilt + j + 1] = tmpfilt[i*Ntmpfilt + j]; 259 } 260 } 261 catalog[0].Nsecfilt = Nsecfilt; 262 free (primary); 263 } 264 265 242 266 gfits_free_header (&header); 243 267 gfits_free_matrix (&matrix); 244 } 268 } else { 269 if (primary != NULL) free (primary); 270 } 271 245 272 catalog[0].secfilt_catalog = secfilt; 246 273 … … 254 281 255 282 /* save_catalog_split writes complete new files from scratch */ 256 257 283 int dvo_catalog_save_split (Catalog *catalog, char VERBOSE) { 258 284 … … 261 287 Header header; 262 288 FTable ftable; 263 Catalog *measure, *missing, *secfilt; 289 Catalog *catfile; 290 SecFilt *primary, *secfilt; 291 int i, j, Nsecfilt, Nallfilt, Ntotal; 264 292 265 293 ftable.header = &header; … … 289 317 /* in split mode, we can save only part of the data */ 290 318 319 /* for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary */ 320 if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR 321 (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS 322 if (catalog[0].secfilt == NULL) { 323 fprintf (stderr, "missing secfilt, cannot build output averages (dvo_catalog_split.c:544)\n"); 324 exit (1); 325 } 326 secfilt = catalog[0].secfilt; 327 328 Nallfilt = catalog[0].Nsecfilt; 329 Nsecfilt = catalog[0].Nsecfilt - 1; 330 Ntotal = Nsecfilt * catalog[0].Naverage; 331 ALLOCATE (primary, SecFilt, catalog[0].Naverage); 332 ALLOCATE (secfilt, SecFilt, Ntotal); 333 334 for (i = 0; i < catalog[0].Naverage; i++) { 335 primary[i] = secfilt[i*Nallfilt + 0]; 336 for (j = 0; j < Nsecfilt; j++) { 337 secfilt[i*Nsecfilt + j] = catalog[0].secfilt[i*Nallfilt + j + 1]; 338 } 339 } 340 } else { 341 primary = NULL; 342 secfilt = catalog[0].secfilt; 343 Nsecfilt = catalog[0].Nsecfilt; 344 } 345 291 346 /*** Average Table ***/ 292 347 … … 303 358 304 359 /* write out Average table (convert to FITS table format) */ 305 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat );360 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary); 306 361 if (!gfits_fwrite_Theader (catalog[0].f, &header)) { 307 362 fprintf (stderr, "can't write table header"); … … 317 372 318 373 /*** Measure Table ***/ 319 320 374 if (catalog[0].measure != NULL) { 321 375 322 measure = catalog[0].measure_catalog; 376 /* catalog file data is stored in separate structure */ 377 catfile = catalog[0].measure_catalog; 323 378 324 379 /* XXX EAM : warn about this condition; add code to handle? */ … … 329 384 330 385 /* rewind file pointers and truncate (file is still open) */ 331 fseek ( measure[0].f, 0, SEEK_SET);332 ftruncate (fileno ( measure[0].f), 0);386 fseek (catfile[0].f, 0, SEEK_SET); 387 ftruncate (fileno (catfile[0].f), 0); 333 388 334 389 /* write table PHU header */ 335 if (!gfits_fwrite_header ( measure[0].f, &measure[0].header)) {390 if (!gfits_fwrite_header (catfile[0].f, &catfile[0].header)) { 336 391 fprintf (stderr, "can't write primary header"); 337 392 return (FALSE); … … 339 394 340 395 /* this is probably a NOP, do I have to keep it in? */ 341 gfits_create_matrix (& measure[0].header, &matrix);342 if (!gfits_fwrite_matrix ( measure[0].f, &matrix)) {396 gfits_create_matrix (&catfile[0].header, &matrix); 397 if (!gfits_fwrite_matrix (catfile[0].f, &matrix)) { 343 398 fprintf (stderr, "can't write primary matrix"); 344 399 return (FALSE); … … 348 403 /* write out Measure table (convert to FITS table format) */ 349 404 MeasureToFtable (&ftable, catalog[0].measure, catalog[0].Nmeasure, catalog[0].catformat); 350 if (!gfits_fwrite_Theader ( measure[0].f, &header)) {405 if (!gfits_fwrite_Theader (catfile[0].f, &header)) { 351 406 fprintf (stderr, "can't write table header"); 352 407 return (FALSE); 353 408 } 354 if (!gfits_fwrite_table ( measure[0].f, &ftable)) {409 if (!gfits_fwrite_table (catfile[0].f, &ftable)) { 355 410 fprintf (stderr, "can't write table data"); 356 411 return (FALSE); … … 361 416 362 417 /*** Missing Table ***/ 363 364 418 if (catalog[0].missing != NULL) { 365 419 366 missing = catalog[0].missing_catalog; 420 /* catalog data is stored in separate catalog */ 421 catfile = catalog[0].missing_catalog; 367 422 368 423 /* rewind file pointers and truncate (file is still open) */ 369 fseek ( missing[0].f, 0, SEEK_SET);370 ftruncate (fileno ( missing[0].f), 0);424 fseek (catfile[0].f, 0, SEEK_SET); 425 ftruncate (fileno (catfile[0].f), 0); 371 426 372 427 /* write table PHU header */ 373 if (!gfits_fwrite_header ( missing[0].f, &missing[0].header)) {428 if (!gfits_fwrite_header (catfile[0].f, &catfile[0].header)) { 374 429 fprintf (stderr, "can't write primary header"); 375 430 return (FALSE); … … 377 432 378 433 /* this is probably a NOP, do I have to keep it in? */ 379 gfits_create_matrix (& missing[0].header, &matrix);380 if (!gfits_fwrite_matrix ( missing[0].f, &matrix)) {434 gfits_create_matrix (&catfile[0].header, &matrix); 435 if (!gfits_fwrite_matrix (catfile[0].f, &matrix)) { 381 436 fprintf (stderr, "can't write primary matrix"); 382 437 return (FALSE); … … 386 441 /* write out Missing table (convert to FITS table format) */ 387 442 gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing); 388 if (!gfits_fwrite_Theader ( missing[0].f, &header)) {443 if (!gfits_fwrite_Theader (catfile[0].f, &header)) { 389 444 fprintf (stderr, "can't write table header"); 390 445 return (FALSE); 391 446 } 392 if (!gfits_fwrite_table ( missing[0].f, &ftable)) {447 if (!gfits_fwrite_table (catfile[0].f, &ftable)) { 393 448 fprintf (stderr, "can't write table data"); 394 449 return (FALSE); … … 399 454 400 455 /*** Secfilt Table ***/ 401 402 456 if (catalog[0].secfilt != NULL) { 403 457 404 secfilt = catalog[0].secfilt_catalog; 458 /* catalog file data is stored in a separate catalog structure */ 459 catfile = catalog[0].secfilt_catalog; 405 460 406 461 /* rewind file pointers and truncate (file is still open) */ 407 fseek ( secfilt[0].f, 0, SEEK_SET);408 ftruncate (fileno ( secfilt[0].f), 0);462 fseek (catfile[0].f, 0, SEEK_SET); 463 ftruncate (fileno (catfile[0].f), 0); 409 464 410 465 /* write table PHU header */ 411 if (!gfits_fwrite_header ( secfilt[0].f, &secfilt[0].header)) {466 if (!gfits_fwrite_header (catfile[0].f, &catfile[0].header)) { 412 467 fprintf (stderr, "can't write primary header"); 413 468 return (FALSE); … … 415 470 416 471 /* this is probably a NOP, do I have to keep it in? */ 417 gfits_create_matrix (& secfilt[0].header, &matrix);418 if (!gfits_fwrite_matrix ( secfilt[0].f, &matrix)) {472 gfits_create_matrix (&catfile[0].header, &matrix); 473 if (!gfits_fwrite_matrix (catfile[0].f, &matrix)) { 419 474 fprintf (stderr, "can't write primary matrix"); 420 475 return (FALSE); … … 424 479 /* write out SecFilt table (convert to FITS table format) */ 425 480 Nitems = catalog[0].Naverage * catalog[0].Nsecfilt; 426 SecFiltToFtable (&ftable, catalog[0].secfilt, Nitems, catalog[0].catformat);427 if (!gfits_fwrite_Theader ( secfilt[0].f, &header)) {481 SecFiltToFtable (&ftable, secfilt, Nitems, catalog[0].catformat); 482 if (!gfits_fwrite_Theader (catfile[0].f, &header)) { 428 483 fprintf (stderr, "can't write table header"); 429 484 return (FALSE); 430 485 } 431 if (!gfits_fwrite_table ( secfilt[0].f, &ftable)) {486 if (!gfits_fwrite_table (catfile[0].f, &ftable)) { 432 487 fprintf (stderr, "can't write table data"); 433 488 return (FALSE); … … 435 490 gfits_free_table (&ftable); 436 491 gfits_free_header (&header); 492 } 493 494 /* free temp storage */ 495 if (primary != NULL) { 496 free (primary); 497 free (secfilt); 437 498 } 438 499 … … 453 514 FTable ftable; 454 515 VTable vtable; 455 Catalog *measure, *missing, *secfilt; 516 Catalog *catfile; 517 SecFilt *primary, *secfilt; 518 int j, Nsecfilt, Nallfilt, Ntotal; 456 519 457 520 ftable.header = &header; … … 480 543 } 481 544 545 /** for the appropriate types, pull out the first secfilt and pass to AverageToFtable as primary **/ 546 if ((catalog[0].catformat == DVO_FORMAT_ELIXIR) || // special case for ELIXIR 547 (catalog[0].catformat == DVO_FORMAT_LONEOS)) { // special case for LONEOS 548 if (catalog[0].secfilt == NULL) { 549 fprintf (stderr, "missing secfilt, cannot build output averages (dvo_catalog_split.c:544)\n"); 550 exit (1); 551 } 552 secfilt = catalog[0].secfilt; 553 554 Nallfilt = catalog[0].Nsecfilt; 555 Nsecfilt = catalog[0].Nsecfilt - 1; 556 Ntotal = Nsecfilt * catalog[0].Naverage; 557 ALLOCATE (primary, SecFilt, catalog[0].Naverage); 558 ALLOCATE (secfilt, SecFilt, Ntotal); 559 560 for (i = 0; i < catalog[0].Naverage; i++) { 561 primary[i] = secfilt[i*Nallfilt + 0]; 562 for (j = 0; j < Nsecfilt; j++) { 563 secfilt[i*Nsecfilt + j] = catalog[0].secfilt[i*Nallfilt + j + 1]; 564 } 565 } 566 } else { 567 primary = NULL; 568 secfilt = catalog[0].secfilt; 569 Nsecfilt = catalog[0].Nsecfilt; 570 } 571 482 572 /*** Average Table ***/ 483 484 573 if (catalog[0].average != NULL) { 485 574 … … 492 581 493 582 /* write out Average table (convert to FITS table format) */ 494 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat );583 AverageToFtable (&ftable, catalog[0].average, catalog[0].Naverage, catalog[0].catformat, primary); 495 584 /* convert only output rows to vtable */ 496 585 gfits_table_to_vtable (&ftable, &vtable, catalog[0].Nave_disk, Nout); … … 510 599 511 600 /*** Measure Table ***/ 512 513 601 if (catalog[0].measure != NULL) { 514 602 515 measure = catalog[0].measure_catalog;603 catfile = catalog[0].measure_catalog; 516 604 517 605 /* skip past PHU header and matrix */ 518 Nskip = measure[0].header.size + gfits_matrix_size (&measure[0].header);519 fseek ( measure[0].f, Nskip, SEEK_SET);606 Nskip = catfile[0].header.size + gfits_matrix_size (&catfile[0].header); 607 fseek (catfile[0].f, Nskip, SEEK_SET); 520 608 521 609 Ndisk = catalog[0].Nmeas_disk; … … 547 635 vtable.pad = vtable.size - Nx*Ny; 548 636 549 if (!gfits_fwrite_Theader ( measure[0].f, &header)) {637 if (!gfits_fwrite_Theader (catfile[0].f, &header)) { 550 638 fprintf (stderr, "can't write table header"); 551 639 return (FALSE); 552 640 } 553 if (!gfits_fwrite_vtable ( measure[0].f, &vtable)) {641 if (!gfits_fwrite_vtable (catfile[0].f, &vtable)) { 554 642 fprintf (stderr, "can't write table data"); 555 643 return (FALSE); … … 566 654 if (catalog[0].missing != NULL) { 567 655 568 missing= catalog[0].missing_catalog;656 catfile = catalog[0].missing_catalog; 569 657 570 658 /* rewind file pointers and truncate (file is still open) */ 571 fseek ( missing[0].f, 0, SEEK_SET);572 ftruncate (fileno ( missing[0].f), 0);659 fseek (catfile[0].f, 0, SEEK_SET); 660 ftruncate (fileno (catfile[0].f), 0); 573 661 574 662 /* write table PHU header */ 575 if (!gfits_fwrite_header ( missing[0].f, &missing[0].header)) {663 if (!gfits_fwrite_header (catfile[0].f, &catfile[0].header)) { 576 664 fprintf (stderr, "can't write primary header"); 577 665 return (FALSE); … … 579 667 580 668 /* this is probably a NOP, do I have to keep it in? */ 581 gfits_create_matrix (& missing[0].header, &matrix);582 if (!gfits_fwrite_matrix ( missing[0].f, &matrix)) {669 gfits_create_matrix (&catfile[0].header, &matrix); 670 if (!gfits_fwrite_matrix (catfile[0].f, &matrix)) { 583 671 fprintf (stderr, "can't write primary matrix"); 584 672 return (FALSE); … … 588 676 /* write out Missing table (convert to FITS table format) */ 589 677 gfits_table_set_Missing (&ftable, catalog[0].missing, catalog[0].Nmissing); 590 if (!gfits_fwrite_Theader ( missing[0].f, &header)) {678 if (!gfits_fwrite_Theader (catfile[0].f, &header)) { 591 679 fprintf (stderr, "can't write table header"); 592 680 return (FALSE); 593 681 } 594 if (!gfits_fwrite_table ( missing[0].f, &ftable)) {682 if (!gfits_fwrite_table (catfile[0].f, &ftable)) { 595 683 fprintf (stderr, "can't write table data"); 596 684 return (FALSE); … … 601 689 602 690 /*** Secfilt Table ***/ 603 604 691 if (catalog[0].secfilt != NULL) { 605 692 606 secfilt= catalog[0].secfilt_catalog;693 catfile = catalog[0].secfilt_catalog; 607 694 608 695 /* skip past PHU header and matrix */ 609 Nskip = secfilt[0].header.size + gfits_matrix_size (&secfilt[0].header);610 fseek ( secfilt[0].f, Nskip, SEEK_SET);696 Nskip = catfile[0].header.size + gfits_matrix_size (&catfile[0].header); 697 fseek (catfile[0].f, Nskip, SEEK_SET); 611 698 612 699 /* how many lines to write out? */ … … 616 703 /* convert to output format FITS table */ 617 704 Nitems = catalog[0].Naverage * catalog[0].Nsecfilt; 618 SecFiltToFtable (&ftable, catalog[0].secfilt, Nitems, catalog[0].catformat);705 SecFiltToFtable (&ftable, secfilt, Nitems, catalog[0].catformat); 619 706 /* convert only output rows to vtable */ 620 707 gfits_table_to_vtable (&ftable, &vtable, Ndisk, Nout); 621 708 622 if (!gfits_fwrite_Theader ( secfilt[0].f, &header)) {709 if (!gfits_fwrite_Theader (catfile[0].f, &header)) { 623 710 fprintf (stderr, "can't write table header"); 624 711 return (FALSE); 625 712 } 626 if (!gfits_fwrite_vtable ( secfilt[0].f, &vtable)) {713 if (!gfits_fwrite_vtable (catfile[0].f, &vtable)) { 627 714 fprintf (stderr, "can't write table data"); 628 715 return (FALSE); … … 631 718 gfits_free_table (&ftable); 632 719 gfits_free_header (&header); 720 } 721 722 /* free temp storage */ 723 if (primary != NULL) { 724 free (primary); 725 free (secfilt); 633 726 } 634 727 -
trunk/Ohana/src/libdvo/src/dvo_convert.c
r8456 r12332 13 13 /*** Average / FTable conversion functions ***/ 14 14 15 Average *FtableToAverage (FTable *ftable, int *Naverage, int *format ) {15 Average *FtableToAverage (FTable *ftable, int *Naverage, int *format, SecFilt **primary) { 16 16 17 17 Average *average; 18 18 char extname[80]; 19 20 /* in the Elixir and Loneos cases, we are supplied with an average magnitude in Average 21 in these cases, save these values in primary; otherwise set primary to NULL */ 22 *primary = NULL; 19 23 20 24 /* convert to the internal format */ … … 31 35 AverageElixir *tmpAverage; 32 36 tmpAverage = gfits_table_get_AverageElixir (ftable, Naverage, NULL); 33 average = AverageElixirToInternal (tmpAverage, *Naverage );37 average = AverageElixirToInternal (tmpAverage, *Naverage, primary); 34 38 free (tmpAverage); 35 39 *format = DVO_FORMAT_ELIXIR; … … 39 43 AverageLoneos *tmpAverage; 40 44 tmpAverage = gfits_table_get_AverageLoneos (ftable, Naverage, NULL); 41 average = AverageLoneosToInternal (tmpAverage, *Naverage );45 average = AverageLoneosToInternal (tmpAverage, *Naverage, primary); 42 46 free (tmpAverage); 43 47 *format = DVO_FORMAT_LONEOS; 44 48 return (average); 45 49 } 50 if (!strcmp (extname, "DVO_AVERAGE_PANSTARRS_DEV_0")) { 51 AveragePanstarrs_DEV_0 *tmpAverage; 52 tmpAverage = gfits_table_get_AveragePanstarrs_DEV_0 (ftable, Naverage, NULL); 53 average = AveragePanstarrs_DEV_0_ToInternal (tmpAverage, *Naverage); 54 free (tmpAverage); 55 *format = DVO_FORMAT_PANSTARRS_DEV_0; 56 return (average); 57 } 58 /* disable the new and minimally-used versions for now. 59 put them back in after dev work is further along 60 OR replace with other output formats */ 61 # if 0 46 62 if (!strcmp (extname, "DVO_AVERAGE_PANSTARRS")) { 47 63 AveragePanstarrs *tmpAverage; … … 60 76 return (average); 61 77 } 78 # endif 62 79 63 80 fprintf (stderr, "table format unknown: %s\n", extname); … … 67 84 } 68 85 69 int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format) { 70 71 AverageElixir *tmpAverageElixir; 72 AverageLoneos *tmpAverageLoneos ; 73 AveragePanstarrs *tmpAveragePanstarrs; 74 AveragePMtest *tmpAveragePMtest; 86 int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format, SecFilt *primary) { 87 75 88 76 89 /* convert from the internal format */ 77 90 switch (format) { 78 case DVO_FORMAT_INTERNAL: 91 case DVO_FORMAT_INTERNAL: { 79 92 gfits_table_set_Average (ftable, average, Naverage); 80 break; 81 case DVO_FORMAT_ELIXIR: 82 tmpAverageElixir = AverageInternalToElixir (average, Naverage); 83 gfits_table_set_AverageElixir (ftable, tmpAverageElixir, Naverage); 84 free (tmpAverageElixir); 85 break; 86 case DVO_FORMAT_LONEOS: 87 tmpAverageLoneos = AverageInternalToLoneos (average, Naverage); 88 gfits_table_set_AverageLoneos (ftable, tmpAverageLoneos , Naverage); 89 free (tmpAverageLoneos ); 90 break; 91 case DVO_FORMAT_PANSTARRS: 92 tmpAveragePanstarrs = AverageInternalToPanstarrs (average, Naverage); 93 gfits_table_set_AveragePanstarrs (ftable, tmpAveragePanstarrs, Naverage); 94 free (tmpAveragePanstarrs); 95 break; 96 case DVO_FORMAT_PMTEST: 97 tmpAveragePMtest = AverageInternalToPMtest (average, Naverage); 98 gfits_table_set_AveragePMtest (ftable, tmpAveragePMtest, Naverage); 99 free (tmpAveragePMtest); 100 break; 93 break; } 94 case DVO_FORMAT_ELIXIR: { 95 AverageElixir *tmpAverage; 96 tmpAverage = AverageInternalToElixir (average, Naverage, primary); 97 gfits_table_set_AverageElixir (ftable, tmpAverage, Naverage); 98 free (tmpAverage); 99 break; } 100 case DVO_FORMAT_LONEOS: { 101 AverageLoneos *tmpAverage ; 102 tmpAverage = AverageInternalToLoneos (average, Naverage, primary); 103 gfits_table_set_AverageLoneos (ftable, tmpAverage, Naverage); 104 free (tmpAverage ); 105 break; } 106 case DVO_FORMAT_PANSTARRS_DEV_0: { 107 AveragePanstarrs_DEV_0 *tmpAverage; 108 tmpAverage = AverageInternalToPanstarrs_DEV_0 (average, Naverage); 109 gfits_table_set_AveragePanstarrs_DEV_0 (ftable, tmpAverage, Naverage); 110 free (tmpAverage); 111 break; } 112 # if 0 113 case DVO_FORMAT_PANSTARRS: { 114 AveragePanstarrs *tmpAverage; 115 tmpAverage = AverageInternalToPanstarrs (average, Naverage); 116 gfits_table_set_AveragePanstarrs (ftable, tmpAverage, Naverage); 117 free (tmpAverage); 118 break; } 119 case DVO_FORMAT_PMTEST: { 120 AveragePMtest *tmpAverage; 121 tmpAverage = AverageInternalToPMtest (average, Naverage); 122 gfits_table_set_AveragePMtest (ftable, tmpAverage, Naverage); 123 free (tmpAverage); 124 break; } 125 # endif 101 126 default: 102 127 fprintf (stderr, "table format unknown (average)\n"); … … 139 164 return (measure); 140 165 } 166 if (!strcmp (extname, "DVO_MEASURE_PANSTARRS_DEV_0")) { 167 MeasurePanstarrs_DEV_0 *tmpMeasure; 168 tmpMeasure = gfits_table_get_MeasurePanstarrs_DEV_0 (ftable, Nmeasure, NULL); 169 measure = MeasurePanstarrs_DEV_0_ToInternal (tmpMeasure, *Nmeasure); 170 free (tmpMeasure); 171 *format = DVO_FORMAT_PANSTARRS_DEV_0; 172 return (measure); 173 } 174 # if 0 141 175 if (!strcmp (extname, "DVO_MEASURE_PANSTARRS") || !strcmp (extname, "DVO_MEASURE_PMTEST")) { 142 176 MeasurePanstarrs *tmpMeasure; … … 147 181 return (measure); 148 182 } 183 # endif 149 184 150 185 fprintf (stderr, "table format unknown: %s\n", extname); … … 156 191 int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format) { 157 192 158 MeasureElixir *tmpMeasureElixir;159 MeasureLoneos *tmpMeasureLoneos;160 MeasurePanstarrs *tmpMeasurePanstarrs;161 193 162 194 /* convert from the internal format */ 163 195 switch (format) { 164 case DVO_FORMAT_INTERNAL: 196 case DVO_FORMAT_INTERNAL: { 165 197 gfits_table_set_Measure (ftable, measure, Nmeasure); 166 break; 167 case DVO_FORMAT_ELIXIR: 168 tmpMeasureElixir = MeasureInternalToElixir (measure, Nmeasure); 169 gfits_table_set_MeasureElixir (ftable, tmpMeasureElixir, Nmeasure); 170 free (tmpMeasureElixir); 171 break; 172 case DVO_FORMAT_LONEOS: 173 tmpMeasureLoneos = MeasureInternalToLoneos (measure, Nmeasure); 174 gfits_table_set_MeasureLoneos (ftable, tmpMeasureLoneos, Nmeasure); 175 free (tmpMeasureLoneos); 176 break; 177 case DVO_FORMAT_PANSTARRS: 178 case DVO_FORMAT_PMTEST: 179 tmpMeasurePanstarrs = MeasureInternalToPanstarrs (measure, Nmeasure); 180 gfits_table_set_MeasurePanstarrs (ftable, tmpMeasurePanstarrs, Nmeasure); 181 free (tmpMeasurePanstarrs); 182 break; 198 break; } 199 case DVO_FORMAT_ELIXIR: { 200 MeasureElixir *tmpMeasure; 201 tmpMeasure = MeasureInternalToElixir (measure, Nmeasure); 202 gfits_table_set_MeasureElixir (ftable, tmpMeasure, Nmeasure); 203 free (tmpMeasure); 204 break; } 205 case DVO_FORMAT_LONEOS: { 206 MeasureLoneos *tmpMeasure; 207 tmpMeasure = MeasureInternalToLoneos (measure, Nmeasure); 208 gfits_table_set_MeasureLoneos (ftable, tmpMeasure, Nmeasure); 209 free (tmpMeasure); 210 break; } 211 case DVO_FORMAT_PANSTARRS_DEV_0: { 212 MeasurePanstarrs_DEV_0 *tmpMeasure; 213 tmpMeasure = MeasureInternalToPanstarrs_DEV_0 (measure, Nmeasure); 214 gfits_table_set_MeasurePanstarrs_DEV_0 (ftable, tmpMeasure, Nmeasure); 215 free (tmpMeasure); 216 break; } 217 # if 0 218 case DVO_FORMAT_PANSTARRS: { 219 MeasurePanstarrs *tmpMeasure; 220 tmpMeasure = MeasureInternalToPanstarrs (measure, Nmeasure); 221 gfits_table_set_MeasurePanstarrs (ftable, tmpMeasure, Nmeasure); 222 free (tmpMeasure); 223 break; } 224 # endif 183 225 default: 184 226 fprintf (stderr, "table format unknown (measure)\n"); … … 221 263 return (secfilt); 222 264 } 265 if (!strcmp (extname, "DVO_SECFILT_PANSTARRS_DEV_0")) { 266 SecFiltPanstarrs_DEV_0 *tmpSecFilt; 267 tmpSecFilt = gfits_table_get_SecFiltPanstarrs_DEV_0 (ftable, Nsecfilt, NULL); 268 secfilt = SecFiltPanstarrs_DEV_0_ToInternal (tmpSecFilt, *Nsecfilt); 269 free (tmpSecFilt); 270 *format = DVO_FORMAT_PANSTARRS_DEV_0; 271 return (secfilt); 272 } 273 # if 0 223 274 if (!strcmp (extname, "DVO_SECFILT_PANSTARRS") || !strcmp (extname, "DVO_SECFILT_PMTEST")) { 224 275 SecFiltPanstarrs *tmpSecFilt; … … 229 280 return (secfilt); 230 281 } 282 # endif 231 283 232 284 fprintf (stderr, "table format unknown: %s\n", extname); … … 238 290 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format) { 239 291 240 SecFiltElixir *tmpSecFiltElixir;241 SecFiltLoneos *tmpSecFiltLoneos;242 SecFiltPanstarrs *tmpSecFiltPanstarrs;243 244 292 /* convert from the internal format */ 245 293 switch (format) { 246 case DVO_FORMAT_INTERNAL: 294 case DVO_FORMAT_INTERNAL: { 247 295 gfits_table_set_SecFilt (ftable, secfilt, Nsecfilt); 248 break; 249 case DVO_FORMAT_ELIXIR: 250 tmpSecFiltElixir = SecFiltInternalToElixir (secfilt, Nsecfilt); 251 gfits_table_set_SecFiltElixir (ftable, tmpSecFiltElixir, Nsecfilt); 252 free (tmpSecFiltElixir); 253 break; 254 case DVO_FORMAT_LONEOS: 255 tmpSecFiltLoneos = SecFiltInternalToLoneos (secfilt, Nsecfilt); 256 gfits_table_set_SecFiltLoneos (ftable, tmpSecFiltLoneos, Nsecfilt); 257 free (tmpSecFiltLoneos); 258 break; 259 case DVO_FORMAT_PANSTARRS: 260 case DVO_FORMAT_PMTEST: 261 tmpSecFiltPanstarrs = SecFiltInternalToPanstarrs (secfilt, Nsecfilt); 262 gfits_table_set_SecFiltPanstarrs (ftable, tmpSecFiltPanstarrs, Nsecfilt); 263 free (tmpSecFiltPanstarrs); 264 break; 296 break; } 297 case DVO_FORMAT_ELIXIR: { 298 SecFiltElixir *tmpSecFilt; 299 tmpSecFilt = SecFiltInternalToElixir (secfilt, Nsecfilt); 300 gfits_table_set_SecFiltElixir (ftable, tmpSecFilt, Nsecfilt); 301 free (tmpSecFilt); 302 break; } 303 case DVO_FORMAT_LONEOS: { 304 SecFiltLoneos *tmpSecFilt; 305 tmpSecFilt = SecFiltInternalToLoneos (secfilt, Nsecfilt); 306 gfits_table_set_SecFiltLoneos (ftable, tmpSecFilt, Nsecfilt); 307 free (tmpSecFilt); 308 break; } 309 case DVO_FORMAT_PANSTARRS_DEV_0: { 310 SecFiltPanstarrs_DEV_0 *tmpSecFilt; 311 tmpSecFilt = SecFiltInternalToPanstarrs_DEV_0 (secfilt, Nsecfilt); 312 gfits_table_set_SecFiltPanstarrs_DEV_0 (ftable, tmpSecFilt, Nsecfilt); 313 free (tmpSecFilt); 314 break; } 315 # if 0 316 case DVO_FORMAT_PANSTARRS: { 317 SecFiltPanstarrs *tmpSecFilt; 318 tmpSecFilt = SecFiltInternalToPanstarrs (secfilt, Nsecfilt); 319 gfits_table_set_SecFiltPanstarrs (ftable, tmpSecFilt, Nsecfilt); 320 free (tmpSecFilt); 321 break; } 322 # endif 265 323 default: 266 324 fprintf (stderr, "table format unknown (secfilt)\n"); … … 278 336 279 337 /* extname may be set from outside if the source is RAW not MEF */ 280 if (*format == DVO_FORMAT_ELIXIR) { 338 if (*format == DVO_FORMAT_ELIXIR) { // special case for ELIXIR 281 339 ImageElixir *tmpimage; 282 340 tmpimage = gfits_table_get_ImageElixir (ftable, &Nimage, NULL); … … 313 371 goto set_header; 314 372 } 373 if (!strcmp (extname, "DVO_IMAGE_PANSTARRS_DEV_0")) { 374 ImagePanstarrs_DEV_0 *tmpimage; 375 *format = DVO_FORMAT_PANSTARRS_DEV_0; 376 tmpimage = gfits_table_get_ImagePanstarrs_DEV_0 (ftable, &Nimage, NULL); 377 ftable[0].buffer = (char *) ImagePanstarrs_DEV_0_ToInternal (tmpimage, Nimage); 378 free (tmpimage); 379 goto set_header; 380 } 381 # if 0 315 382 if (!strcmp (extname, "DVO_IMAGE_PANSTARRS") || !strcmp (extname, "DVO_IMAGE_PMTEST")) { 316 383 ImagePanstarrs *tmpimage; … … 321 388 goto set_header; 322 389 } 390 # endif 323 391 fprintf (stderr, "table format unknown: %s\n", extname); 324 392 return (FALSE); … … 336 404 337 405 int Nimage; 338 ImageElixir *tmpImageElixir;339 ImageLoneos *tmpImageLoneos;340 ImagePanstarrs *tmpImagePanstarrs;341 406 342 407 Nimage = theader[0].Naxis[1]; … … 344 409 /* convert from the internal format */ 345 410 switch (format) { 346 case DVO_FORMAT_INTERNAL: 411 case DVO_FORMAT_INTERNAL: { 347 412 gfits_convert_Image ((Image *) ftable[0].buffer, sizeof(Image), Nimage); 348 break; 349 case DVO_FORMAT_ELIXIR: 350 tmpImageElixir = ImageInternalToElixir ((Image *) ftable[0].buffer, Nimage); 413 break; } 414 case DVO_FORMAT_ELIXIR: { 415 ImageElixir *tmpImage; 416 tmpImage = ImageInternalToElixir ((Image *) ftable[0].buffer, Nimage); 351 417 free (ftable[0].buffer); 352 gfits_table_set_ImageElixir (ftable, tmpImageElixir, Nimage); 353 free (tmpImageElixir); 354 break; 355 case DVO_FORMAT_LONEOS: 356 tmpImageLoneos = ImageInternalToLoneos ((Image *) ftable[0].buffer, Nimage); 418 gfits_table_set_ImageElixir (ftable, tmpImage, Nimage); 419 free (tmpImage); 420 break; } 421 case DVO_FORMAT_LONEOS: { 422 ImageLoneos *tmpImage; 423 tmpImage = ImageInternalToLoneos ((Image *) ftable[0].buffer, Nimage); 357 424 free (ftable[0].buffer); 358 gfits_table_set_ImageLoneos (ftable, tmpImage Loneos, Nimage);359 free (tmpImage Loneos);360 break; 361 case DVO_FORMAT_PANSTARRS :362 case DVO_FORMAT_PMTEST:363 tmpImage Panstarrs = ImageInternalToPanstarrs((Image *) ftable[0].buffer, Nimage);425 gfits_table_set_ImageLoneos (ftable, tmpImage, Nimage); 426 free (tmpImage); 427 break; } 428 case DVO_FORMAT_PANSTARRS_DEV_0: { 429 ImagePanstarrs_DEV_0 *tmpImage; 430 tmpImage = ImageInternalToPanstarrs_DEV_0 ((Image *) ftable[0].buffer, Nimage); 364 431 free (ftable[0].buffer); 365 gfits_table_set_ImagePanstarrs (ftable, tmpImagePanstarrs, Nimage); 366 free (tmpImagePanstarrs); 367 break; 432 gfits_table_set_ImagePanstarrs_DEV_0 (ftable, tmpImage, Nimage); 433 free (tmpImage); 434 break; } 435 # if 0 436 case DVO_FORMAT_PANSTARRS: { 437 ImagePanstarrs *tmpImage; 438 tmpImage = ImageInternalToPanstarrs ((Image *) ftable[0].buffer, Nimage); 439 free (ftable[0].buffer); 440 gfits_table_set_ImagePanstarrs (ftable, tmpImage, Nimage); 441 free (tmpImage); 442 break; } 443 # endif 368 444 default: 369 445 fprintf (stderr, "table format unknown (image ftable)\n"); … … 375 451 int ImageToVtable (VTable *vtable, Header *theader, int format) { 376 452 377 ImageElixir *tmpImageElixir;378 ImageLoneos *tmpImageLoneos;379 ImagePanstarrs *tmpImagePanstarrs;380 453 int i, Nrow, Nimage; 381 454 … … 384 457 /* convert from the internal format */ 385 458 switch (format) { 386 case DVO_FORMAT_INTERNAL: 459 case DVO_FORMAT_INTERNAL: { 387 460 for (i = 0; i < Nrow; i++) { 388 461 gfits_convert_Image ((Image *) vtable[0].buffer[i], sizeof(Image), 1); 389 462 } 390 return (TRUE); 391 case DVO_FORMAT_ELIXIR: 463 return (TRUE); } 464 case DVO_FORMAT_ELIXIR: { 465 ImageElixir *tmpImage; 392 466 /* convert table rows from internal to external format */ 393 467 for (i = 0; i < Nrow; i++) { 394 tmpImage Elixir= ImageInternalToElixir ((Image *) vtable[0].buffer[i], 1);395 gfits_convert_ImageElixir (tmpImage Elixir, sizeof(ImageElixir), 1);468 tmpImage = ImageInternalToElixir ((Image *) vtable[0].buffer[i], 1); 469 gfits_convert_ImageElixir (tmpImage, sizeof(ImageElixir), 1); 396 470 free (vtable[0].buffer[i]); 397 vtable[0].buffer[i] = (char *) tmpImage Elixir;471 vtable[0].buffer[i] = (char *) tmpImage; 398 472 } 399 473 … … 407 481 theader[0].Naxis[1] = Nimage; 408 482 vtable[0].size = gfits_matrix_size (theader); 409 return (TRUE); 410 case DVO_FORMAT_LONEOS: 483 return (TRUE); } 484 case DVO_FORMAT_LONEOS: { 485 ImageLoneos *tmpImage; 411 486 /* convert table rows from internal to external format */ 412 487 for (i = 0; i < Nrow; i++) { 413 tmpImage Loneos= ImageInternalToLoneos ((Image *) vtable[0].buffer[i], 1);414 gfits_convert_ImageLoneos (tmpImage Loneos, sizeof(ImageLoneos), 1);488 tmpImage = ImageInternalToLoneos ((Image *) vtable[0].buffer[i], 1); 489 gfits_convert_ImageLoneos (tmpImage, sizeof(ImageLoneos), 1); 415 490 free (vtable[0].buffer[i]); 416 vtable[0].buffer[i] = (char *) tmpImage Loneos;491 vtable[0].buffer[i] = (char *) tmpImage; 417 492 } 418 493 … … 426 501 theader[0].Naxis[1] = Nimage; 427 502 vtable[0].size = gfits_matrix_size (theader); 428 return (TRUE); 429 case DVO_FORMAT_PANSTARRS :430 case DVO_FORMAT_PMTEST:503 return (TRUE); } 504 case DVO_FORMAT_PANSTARRS_DEV_0: { 505 ImagePanstarrs_DEV_0 *tmpImage; 431 506 /* convert table rows from internal to external format */ 432 507 for (i = 0; i < Nrow; i++) { 433 tmpImage Panstarrs = ImageInternalToPanstarrs((Image *) vtable[0].buffer[i], 1);434 gfits_convert_ImagePanstarrs (tmpImagePanstarrs, sizeof(ImagePanstarrs), 1);508 tmpImage = ImageInternalToPanstarrs_DEV_0 ((Image *) vtable[0].buffer[i], 1); 509 gfits_convert_ImagePanstarrs_DEV_0 (tmpImage, sizeof(ImagePanstarrs_DEV_0), 1); 435 510 free (vtable[0].buffer[i]); 436 vtable[0].buffer[i] = (char *) tmpImage Panstarrs;511 vtable[0].buffer[i] = (char *) tmpImage; 437 512 } 438 513 /* convert header from old format to new format */ 514 gfits_scan (theader, "NAXIS2", "%d", 1, &Nimage); 515 gfits_free_header (theader); 516 gfits_table_mkheader_ImagePanstarrs_DEV_0 (theader); 517 gfits_modify (theader, "NAXIS2", "%d", 1, Nimage); 518 theader[0].Naxis[1] = Nimage; 519 vtable[0].size = gfits_matrix_size (theader); 520 return (TRUE); } 521 # if 0 522 case DVO_FORMAT_PANSTARRS: { 523 ImagePanstarrs *tmpImage; 524 /* convert table rows from internal to external format */ 525 for (i = 0; i < Nrow; i++) { 526 tmpImage = ImageInternalToPanstarrs ((Image *) vtable[0].buffer[i], 1); 527 gfits_convert_ImagePanstarrs (tmpImage, sizeof(ImagePanstarrs), 1); 528 free (vtable[0].buffer[i]); 529 vtable[0].buffer[i] = (char *) tmpImage; 530 } 439 531 /* convert header from old format to new format */ 440 532 gfits_scan (theader, "NAXIS2", "%d", 1, &Nimage); … … 444 536 theader[0].Naxis[1] = Nimage; 445 537 vtable[0].size = gfits_matrix_size (theader); 446 return (TRUE); 538 return (TRUE); } 539 # endif 447 540 default: 448 541 break; -
trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c
r6683 r12332 10 10 11 11 for (i = 0; i < Nvalues; i++) { 12 out[i].dR_PS = in[i].dR * 0.01; 13 out[i].dD_PS = in[i].dD * 0.01; 14 out[i].M_PS = in[i].M * 0.001; 15 out[i].dM_PS = in[i].dM * 0.001; 16 out[i].dt_PS = in[i].dt * 0.001; 17 out[i].Mcal_PS = in[i].Mcal * 0.001; 18 out[i].Mgal_PS = in[i].Mgal * 0.001; 19 out[i].airmass_PS = in[i].airmass * 0.001; 12 out[i].dR = in[i].dR * 0.01; 13 out[i].dD = in[i].dD * 0.01; 14 out[i].M = in[i].M * 0.001; 15 out[i].dM = in[i].dM * 0.001; 16 out[i].dt = in[i].dt * 0.001; 17 out[i].Mcal = in[i].Mcal * 0.001; 18 out[i].Mgal = in[i].Mgal * 0.001; 19 out[i].airmass = in[i].airmass * 0.001; 20 out[i].FWx = in[i].FWx; 21 out[i].FWy = in[i].fwy * in[i].FWx * 0.01; 22 out[i].theta = in[i].theta*(0x10000 / 0x100); 23 out[i].dophot = in[i].dophot; 24 out[i].photcode = in[i].source; 25 out[i].t = in[i].t; 26 out[i].averef = in[i].averef; 27 out[i].flags = in[i].flags; 28 29 /* these can be determined if needed / desired */ 30 out[i].Xccd = 0; 31 out[i].Yccd = 0; 32 out[i].dXccd = 0; 33 out[i].dYccd = 0; 34 35 /* these do not have a corresponding value */ 36 out[i].stargal = 0; 37 out[i].Sky = 0; 38 out[i].dSky = 0; 39 out[i].qPSF = 0; 40 41 /* XXX add these later */ 42 out[i].detID_hi = 0; 43 out[i].detID_lo = 0; 44 out[i].imageID_hi = 0; 45 out[i].imageID_lo = 0; 46 } 47 return (out); 48 } 49 50 /* convert internal measures to elixir-format measures */ 51 MeasureElixir *MeasureInternalToElixir (Measure *in, int Nvalues) { 52 53 int i; 54 MeasureElixir *out; 55 56 ALLOCATE (out, MeasureElixir, Nvalues); 57 58 for (i = 0; i < Nvalues; i++) { 59 out[i].dR = in[i].dR * 100.0; 60 out[i].dD = in[i].dD * 100.0; 61 out[i].M = in[i].M * 1000.0; 62 out[i].dM = in[i].dM * 1000.0; 63 out[i].dt = in[i].dt * 1000.0; 64 out[i].Mcal = in[i].Mcal * 1000.0; 65 out[i].Mgal = in[i].Mgal * 1000.0; 66 out[i].airmass = in[i].airmass * 1000.0; 20 67 out[i].FWx = in[i].FWx; 21 out[i]. FWy = in[i].fwy * in[i].FWx * 0.01;22 out[i].theta = in[i].theta ;68 out[i].fwy = in[i].FWy * 100.0 / in[i].FWx; 69 out[i].theta = in[i].theta*(0x100/ 0x10000); 23 70 out[i].dophot = in[i].dophot; 24 out[i].source = in[i]. source;71 out[i].source = in[i].photcode; 25 72 out[i].t = in[i].t; 26 73 out[i].averef = in[i].averef; … … 30 77 } 31 78 32 /* convert internal measures to elixir-format measures */33 MeasureElixir *MeasureInternalToElixir (Measure *in, int Nvalues) {34 35 int i;36 MeasureElixir *out;37 38 ALLOCATE (out, MeasureElixir, Nvalues);39 40 for (i = 0; i < Nvalues; i++) {41 out[i].dR = in[i].dR_PS * 100.0;42 out[i].dD = in[i].dD_PS * 100.0;43 out[i].M = in[i].M_PS * 1000.0;44 out[i].dM = in[i].dM_PS * 1000.0;45 out[i].dt = in[i].dt_PS * 1000.0;46 out[i].Mcal = in[i].Mcal_PS * 1000.0;47 out[i].Mgal = in[i].Mgal_PS * 1000.0;48 out[i].airmass = in[i].airmass_PS * 1000.0;49 out[i].FWx = in[i].FWx;50 out[i].fwy = 100.0 * in[i].FWy / in[i].FWx;51 out[i].theta = in[i].theta;52 out[i].dophot = in[i].dophot;53 out[i].source = in[i].source;54 out[i].t = in[i].t;55 out[i].averef = in[i].averef;56 out[i].flags = in[i].flags;57 }58 return (out);59 }60 61 79 /* convert elixir-format averages to internal averages */ 62 Average *AverageElixirToInternal (AverageElixir *in, int Nvalues ) {80 Average *AverageElixirToInternal (AverageElixir *in, int Nvalues, SecFilt **primary) { 63 81 64 82 int i; … … 66 84 67 85 ALLOCATE (out, Average, Nvalues); 86 ALLOCATE (*primary, SecFilt, Nvalues); 68 87 69 88 for (i = 0; i < Nvalues; i++) { 70 89 out[i].R = in[i].R; 71 90 out[i].D = in[i].D; 72 out[i].M = in[i].M * 0.001;73 out[i].dM = in[i].dM * 0.001;74 91 out[i].Xp = in[i].Xp; 75 out[i].Xm = in[i].Xm;76 92 out[i].Nm = in[i].Nm; 77 93 out[i].Nn = in[i].Nn; … … 79 95 out[i].offset = in[i].offset; 80 96 out[i].missing = in[i].missing; 81 out[i].Xg = in[i].Xg;82 97 83 98 /* these don't exist in Elixir */ … … 90 105 out[i].P = 0; 91 106 out[i].dP = 0; 107 108 /* XXX add these later */ 109 out[i].objID_hi = 0; 110 out[i].objID_lo = 0; 111 112 primary[0][i].M = in[i].M * 0.001; 113 primary[0][i].dM = in[i].dM * 0.001; 114 primary[0][i].Xm = in[i].Xm; 115 primary[0][i].Ncode = 0; 116 primary[0][i].Nused = 0; 117 118 // XXX drop this or keep this? 119 // primary[0][i].Xg = in[i].Xg; 92 120 } 93 121 return (out); … … 95 123 96 124 /* convert internal averages to elixir-format averages */ 97 AverageElixir *AverageInternalToElixir (Average *in, int Nvalues ) {125 AverageElixir *AverageInternalToElixir (Average *in, int Nvalues, SecFilt *primary) { 98 126 99 127 int i; … … 105 133 out[i].R = in[i].R; 106 134 out[i].D = in[i].D; 107 out[i].M = in[i].M * 1000.0;108 out[i].dM = in[i].dM * 1000.0;109 135 out[i].Xp = in[i].Xp; 110 out[i].Xm = in[i].Xm;111 136 out[i].Nm = in[i].Nm; 112 137 out[i].Nn = in[i].Nn; … … 114 139 out[i].offset = in[i].offset; 115 140 out[i].missing = in[i].missing; 116 out[i].Xg = in[i].Xg; 141 142 out[i].M = primary[i].M * 1000.0; 143 out[i].dM = primary[i].dM * 1000.0; 144 out[i].Xm = primary[i].Xm; 145 // out[i].Xg = in[i].Xg; 117 146 } 118 147 return (out); … … 128 157 129 158 for (i = 0; i < Nvalues; i++) { 130 out[i].M_PS = in[i].M * 0.001; 131 out[i].dM_PS = in[i].dM * 0.001; 132 out[i].Xm = in[i].Xm; 159 out[i].M = in[i].M * 0.001; 160 out[i].dM = in[i].dM * 0.001; 161 out[i].Xm = in[i].Xm; 162 out[i].Ncode = 0; 163 out[i].Nused = 0; 133 164 } 134 165 return (out); … … 144 175 145 176 for (i = 0; i < Nvalues; i++) { 146 out[i].M = in[i].M _PS* 1000.0;147 out[i].dM = in[i].dM _PS* 1000.0;177 out[i].M = in[i].M * 1000.0; 178 out[i].dM = in[i].dM * 1000.0; 148 179 out[i].Xm = in[i].Xm; 149 180 } … … 166 197 out[i].tzero = in[i].tzero; 167 198 out[i].nstar = in[i].nstar; 168 out[i].secz _PS= in[i].secz * 0.001;199 out[i].secz = in[i].secz * 0.001; 169 200 out[i].NX = in[i].NX; 170 201 out[i].NY = in[i].NY; 171 out[i].apmifit _PS= in[i].apmifit * 0.001;172 out[i].dapmifit _PS= in[i].dapmifit * 0.001;173 out[i].Mcal _PS= in[i].Mcal * 0.001;174 out[i].dMcal _PS= in[i].dMcal * 0.001;202 out[i].apmifit = in[i].apmifit * 0.001; 203 out[i].dapmifit = in[i].dapmifit * 0.001; 204 out[i].Mcal = in[i].Mcal * 0.001; 205 out[i].dMcal = in[i].dMcal * 0.001; 175 206 out[i].Xm = in[i].Xm; 176 out[i]. source = in[i].source;207 out[i].photcode = in[i].source; 177 208 out[i].exptime = in[i].exptime; 178 209 out[i].detection_limit = in[i].detection_limit; … … 199 230 out[i].Mxyyy = in[i].Mxyyy; 200 231 out[i].Myyyy = in[i].Myyyy; 232 233 /* XXX add these later */ 234 out[i].imageID_hi = 0; 235 out[i].imageID_lo = 0; 201 236 } 202 237 return (out); … … 218 253 out[i].tzero = in[i].tzero; 219 254 out[i].nstar = in[i].nstar; 220 out[i].secz = in[i].secz _PS* 1000.0;255 out[i].secz = in[i].secz * 1000.0; 221 256 out[i].NX = in[i].NX; 222 257 out[i].NY = in[i].NY; 223 out[i].apmifit = in[i].apmifit _PS* 1000.0;224 out[i].dapmifit = in[i].dapmifit _PS* 1000.0;225 out[i].Mcal = in[i].Mcal _PS* 1000.0;226 out[i].dMcal = in[i].dMcal _PS* 1000.0;258 out[i].apmifit = in[i].apmifit * 1000.0; 259 out[i].dapmifit = in[i].dapmifit * 1000.0; 260 out[i].Mcal = in[i].Mcal * 1000.0; 261 out[i].dMcal = in[i].dMcal * 1000.0; 227 262 out[i].Xm = in[i].Xm; 228 out[i].source = in[i]. source;263 out[i].source = in[i].photcode; 229 264 out[i].exptime = in[i].exptime; 230 265 out[i].detection_limit = in[i].detection_limit; -
trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c
r6683 r12332 10 10 11 11 for (i = 0; i < Nvalues; i++) { 12 out[i].dR _PS= in[i].dR * 0.01;13 out[i].dD _PS= in[i].dD * 0.01;14 out[i].M _PS= in[i].M * 0.001;15 out[i].dM _PS= in[i].dM * 0.001;16 out[i].Mcal _PS= in[i].Mcal * 0.001;12 out[i].dR = in[i].dR * 0.01; 13 out[i].dD = in[i].dD * 0.01; 14 out[i].M = in[i].M * 0.001; 15 out[i].dM = in[i].dM * 0.001; 16 out[i].Mcal = in[i].Mcal * 0.001; 17 17 out[i].dophot = in[i].dophot; 18 out[i]. source = in[i].source;18 out[i].photcode = in[i].source; 19 19 out[i].t = in[i].t; 20 20 … … 24 24 25 25 /* these values don't exist in the Loneos format */ 26 out[i].Mgal _PS= in[i].M;27 out[i].dt _PS= 0;28 out[i].airmass _PS= 0;26 out[i].Mgal = in[i].M; 27 out[i].dt = 0; 28 out[i].airmass = 0; 29 29 out[i].FWx = 0; 30 30 out[i].FWy = 0; 31 31 out[i].theta = 0; 32 out[i].stargal = 0; 33 out[i].Sky = 0; 34 out[i].dSky = 0; 35 out[i].qPSF = 0; 36 37 /* these can be determined if needed / desired */ 38 out[i].Xccd = 0; 39 out[i].Yccd = 0; 40 out[i].dXccd = 0; 41 out[i].dYccd = 0; 42 43 /* XXX add these later */ 44 out[i].detID_hi = 0; 45 out[i].detID_lo = 0; 46 out[i].imageID_hi = 0; 47 out[i].imageID_lo = 0; 32 48 } 33 49 return (out); … … 43 59 44 60 for (i = 0; i < Nvalues; i++) { 45 out[i].dR = in[i].dR _PS* 100.0;46 out[i].dD = in[i].dD _PS* 100.0;47 out[i].M = in[i].M _PS* 1000.0;48 out[i].dM = in[i].dM _PS* 1000.0;49 out[i].Mcal = in[i].Mcal _PS* 1000.0;61 out[i].dR = in[i].dR * 100.0; 62 out[i].dD = in[i].dD * 100.0; 63 out[i].M = in[i].M * 1000.0; 64 out[i].dM = in[i].dM * 1000.0; 65 out[i].Mcal = in[i].Mcal * 1000.0; 50 66 out[i].dophot = in[i].dophot; 51 out[i].source = in[i]. source;67 out[i].source = in[i].photcode; 52 68 out[i].t = in[i].t; 53 69 … … 59 75 60 76 /* convert loneos-format averages to internal averages */ 61 Average *AverageLoneosToInternal (AverageLoneos *in, int Nvalues ) {77 Average *AverageLoneosToInternal (AverageLoneos *in, int Nvalues, SecFilt **primary) { 62 78 63 79 int i; … … 65 81 66 82 ALLOCATE (out, Average, Nvalues); 83 ALLOCATE (*primary, SecFilt, Nvalues); 67 84 68 85 for (i = 0; i < Nvalues; i++) { 69 86 out[i].R = in[i].R; 70 87 out[i].D = in[i].D; 71 out[i].M = in[i].M * 0.001;72 88 out[i].Xp = in[i].Xp; 73 out[i].Xm = in[i].Xm;74 89 out[i].Nm = in[i].Nm; 75 90 out[i].Nn = in[i].Nn; … … 87 102 out[i].P = 0; 88 103 out[i].dP = 0; 89 out[i].dM = 0xffff; 90 out[i].Xg = 0xffff; 104 105 /* XXX add these later */ 106 out[i].objID_hi = 0; 107 out[i].objID_lo = 0; 108 109 primary[0][i].M = in[i].M * 0.001; 110 primary[0][i].Xm = in[i].Xm; 111 primary[0][i].dM = 0xffff; 112 primary[0][i].Ncode = 0; 113 primary[0][i].Nused = 0; 114 115 // XXX drop this or keep this? 116 // primary[0][i].Xg = in[i].Xg; 91 117 } 92 118 return (out); … … 94 120 95 121 /* convert internal averages to loneos-format averages */ 96 AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues ) {122 AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues, SecFilt *primary) { 97 123 98 124 int i; … … 104 130 out[i].R = in[i].R; 105 131 out[i].D = in[i].D; 106 out[i].M = in[i].M * 1000.0;107 132 out[i].Xp = in[i].Xp; 108 out[i].Xm = in[i].Xm;109 133 out[i].Nm = in[i].Nm; 110 134 out[i].Nn = in[i].Nn; … … 112 136 out[i].offset = in[i].offset; 113 137 out[i].missing = in[i].missing; 138 139 out[i].M = primary[i].M * 1000.0; 140 out[i].Xm = primary[i].Xm; 114 141 } 115 142 return (out); … … 125 152 126 153 for (i = 0; i < Nvalues; i++) { 127 out[i].M_PS = in[i].M*0.001; 128 out[i].dM_PS = 0xffff; 154 out[i].M = in[i].M*0.001; 129 155 out[i].Xm = in[i].Xm; 156 out[i].dM = 0xffff; 157 out[i].Ncode = 0; 158 out[i].Nused = 0; 130 159 } 131 160 return (out); … … 141 170 142 171 for (i = 0; i < Nvalues; i++) { 143 out[i].M = in[i].M _PS*1000.0;172 out[i].M = in[i].M*1000.0; 144 173 out[i].Xm = in[i].Xm; 145 174 } … … 162 191 out[i].tzero = in[i].tzero; 163 192 out[i].nstar = in[i].nstar; 164 out[i].secz _PS= in[i].secz * 0.001;193 out[i].secz = in[i].secz * 0.001; 165 194 out[i].NX = in[i].NX; 166 195 out[i].NY = in[i].NY; 167 out[i].apmifit _PS= in[i].apmifit * 0.001;168 out[i].dapmifit _PS= in[i].dapmifit * 0.001;169 out[i].Mcal _PS= in[i].Mcal * 0.001;170 out[i].dMcal _PS= in[i].dMcal * 0.001;196 out[i].apmifit = in[i].apmifit * 0.001; 197 out[i].dapmifit = in[i].dapmifit * 0.001; 198 out[i].Mcal = in[i].Mcal * 0.001; 199 out[i].dMcal = in[i].dMcal * 0.001; 171 200 out[i].Xm = in[i].Xm; 172 out[i]. source = in[i].source;201 out[i].photcode = in[i].source; 173 202 out[i].exptime = in[i].exptime; 174 203 out[i].detection_limit = in[i].detection_limit; … … 195 224 out[i].Mxyyy = in[i].Mxyyy; 196 225 out[i].Myyyy = in[i].Myyyy; 226 227 /* XXX add these later */ 228 out[i].imageID_hi = 0; 229 out[i].imageID_lo = 0; 197 230 } 198 231 return (out); … … 214 247 out[i].tzero = in[i].tzero; 215 248 out[i].nstar = in[i].nstar; 216 out[i].secz = in[i].secz _PS* 1000.0;249 out[i].secz = in[i].secz * 1000.0; 217 250 out[i].NX = in[i].NX; 218 251 out[i].NY = in[i].NY; 219 out[i].apmifit = in[i].apmifit _PS* 1000.0;220 out[i].dapmifit = in[i].dapmifit _PS* 1000.0;221 out[i].Mcal = in[i].Mcal _PS* 1000.0;222 out[i].dMcal = in[i].dMcal _PS* 1000.0;252 out[i].apmifit = in[i].apmifit * 1000.0; 253 out[i].dapmifit = in[i].dapmifit * 1000.0; 254 out[i].Mcal = in[i].Mcal * 1000.0; 255 out[i].dMcal = in[i].dMcal * 1000.0; 223 256 out[i].Xm = in[i].Xm; 224 out[i].source = in[i]. source;257 out[i].source = in[i].photcode; 225 258 out[i].exptime = in[i].exptime; 226 259 out[i].detection_limit = in[i].detection_limit; -
trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs.c
r6683 r12332 1 1 # include <dvo.h> 2 2 3 /*** note that these structures are identical***/3 /*** XXX is this format actually used by anyone?? ***/ 4 4 5 5 /* convert panstarrs-format measures to internal measures */ … … 12 12 13 13 for (i = 0; i < Nvalues; i++) { 14 out[i].dR _PS= in[i].dR;15 out[i].dD _PS= in[i].dD;16 out[i].M _PS= in[i].M;17 out[i].dM _PS= in[i].dM;18 out[i].Mcal _PS= in[i].Mcal;19 out[i].Mgal _PS= in[i].Mgal;20 out[i].airmass _PS= in[i].airmass;21 out[i].dt _PS= in[i].dt;14 out[i].dR = in[i].dR; 15 out[i].dD = in[i].dD; 16 out[i].M = in[i].M; 17 out[i].dM = in[i].dM; 18 out[i].Mcal = in[i].Mcal; 19 out[i].Mgal = in[i].Mgal; 20 out[i].airmass = in[i].airmass; 21 out[i].dt = in[i].dt; 22 22 out[i].FWx = in[i].FWx; 23 23 out[i].FWy = in[i].FWy; 24 24 out[i].theta = in[i].theta; 25 25 out[i].dophot = in[i].dophot; 26 out[i]. source= in[i].source;26 out[i].photcode = in[i].source; 27 27 out[i].t = in[i].t; 28 28 out[i].averef = in[i].averef; 29 29 out[i].flags = in[i].flags; 30 31 /* these can be determined if needed / desired */ 32 out[i].Xccd = 0; 33 out[i].Yccd = 0; 34 out[i].dXccd = 0; 35 out[i].dYccd = 0; 36 37 /* these do not have a corresponding value */ 38 out[i].stargal = 0; 39 out[i].Sky = 0; 40 out[i].dSky = 0; 41 out[i].qPSF = 0; 42 43 /* XXX add these later */ 44 out[i].detID_hi = 0; 45 out[i].detID_lo = 0; 46 out[i].imageID_hi = 0; 47 out[i].imageID_lo = 0; 30 48 } 31 49 return (out); … … 41 59 42 60 for (i = 0; i < Nvalues; i++) { 43 out[i].dR = in[i].dR _PS;44 out[i].dD = in[i].dD _PS;45 out[i].M = in[i].M _PS;46 out[i].dM = in[i].dM _PS;47 out[i].Mcal = in[i].Mcal _PS;48 out[i].Mgal = in[i].Mgal _PS;49 out[i].airmass = in[i].airmass _PS;50 out[i].dt = in[i].dt _PS;61 out[i].dR = in[i].dR; 62 out[i].dD = in[i].dD; 63 out[i].M = in[i].M; 64 out[i].dM = in[i].dM; 65 out[i].Mcal = in[i].Mcal; 66 out[i].Mgal = in[i].Mgal; 67 out[i].airmass = in[i].airmass; 68 out[i].dt = in[i].dt; 51 69 out[i].FWx = in[i].FWx; 52 70 out[i].FWy = in[i].FWy; 53 71 out[i].theta = in[i].theta; 54 72 out[i].dophot = in[i].dophot; 55 out[i].source = in[i]. source;73 out[i].source = in[i].photcode; 56 74 out[i].t = in[i].t; 57 75 out[i].averef = in[i].averef; … … 92 110 out[i].P = 0; 93 111 out[i].dP = 0; 112 113 /* XXX add these later */ 114 out[i].objID_hi = 0; 115 out[i].objID_lo = 0; 94 116 } 95 117 return (out); … … 130 152 131 153 for (i = 0; i < Nvalues; i++) { 132 out[i].M_PS = in[i].M; 133 out[i].dM_PS = in[i].dM; 134 out[i].Xm = in[i].Xm; 135 } 154 out[i].M = in[i].M; 155 out[i].dM = in[i].dM; 156 out[i].Xm = in[i].Xm; 157 out[i].Ncode = 0; 158 out[i].Nused = 0; 159 } 136 160 return (out); 137 161 } … … 146 170 147 171 for (i = 0; i < Nvalues; i++) { 148 out[i].M = in[i].M _PS;149 out[i].dM = in[i].dM _PS;172 out[i].M = in[i].M; 173 out[i].dM = in[i].dM; 150 174 out[i].Xm = in[i].Xm; 151 175 } … … 168 192 out[i].tzero = in[i].tzero; 169 193 out[i].nstar = in[i].nstar; 170 out[i].secz _PS= in[i].secz;194 out[i].secz = in[i].secz; 171 195 out[i].NX = in[i].NX; 172 196 out[i].NY = in[i].NY; 173 out[i].apmifit _PS= in[i].apmifit;174 out[i].dapmifit _PS= in[i].dapmifit;175 out[i].Mcal _PS= in[i].Mcal;176 out[i].dMcal _PS= in[i].dMcal;197 out[i].apmifit = in[i].apmifit; 198 out[i].dapmifit = in[i].dapmifit; 199 out[i].Mcal = in[i].Mcal; 200 out[i].dMcal = in[i].dMcal; 177 201 out[i].Xm = in[i].Xm; 178 out[i]. source = in[i].source;202 out[i].photcode = in[i].source; 179 203 out[i].exptime = in[i].exptime; 180 204 out[i].detection_limit = in[i].detection_limit; … … 201 225 out[i].Mxyyy = in[i].Mxyyy; 202 226 out[i].Myyyy = in[i].Myyyy; 227 228 /* XXX add these later */ 229 out[i].imageID_hi = 0; 230 out[i].imageID_lo = 0; 203 231 } 204 232 return (out); … … 220 248 out[i].tzero = in[i].tzero; 221 249 out[i].nstar = in[i].nstar; 222 out[i].secz = in[i].secz _PS;250 out[i].secz = in[i].secz; 223 251 out[i].NX = in[i].NX; 224 252 out[i].NY = in[i].NY; 225 out[i].apmifit = in[i].apmifit _PS;226 out[i].dapmifit = in[i].dapmifit _PS;227 out[i].Mcal = in[i].Mcal _PS;228 out[i].dMcal = in[i].dMcal _PS;253 out[i].apmifit = in[i].apmifit; 254 out[i].dapmifit = in[i].dapmifit; 255 out[i].Mcal = in[i].Mcal; 256 out[i].dMcal = in[i].dMcal; 229 257 out[i].Xm = in[i].Xm; 230 out[i].source = in[i]. source;258 out[i].source = in[i].photcode; 231 259 out[i].exptime = in[i].exptime; 232 260 out[i].detection_limit = in[i].detection_limit; -
trunk/Ohana/src/libdvo/src/dvo_convert_pmtest.c
r6683 r12332 1 1 # include <dvo.h> 2 3 /* convert elixir-format measures to internal measures */ 4 Measure *MeasureElixirToInternal (MeasureElixir *in, int Nvalues) { 5 6 int i; 7 Measure *out; 8 9 ALLOCATE (out, Measure, Nvalues); 10 11 for (i = 0; i < Nvalues; i++) { 12 out[i].dR = in[i].dR; 13 out[i].dD = in[i].dD; 14 out[i].M = in[i].M; 15 out[i].dM = in[i].dM; 16 out[i].dt = in[i].dt; 17 out[i].Mcal = in[i].Mcal; 18 out[i].Mgal = in[i].Mgal; 19 out[i].airmass = in[i].airmass; 20 out[i].FWx = in[i].FWx; 21 out[i].FWy = in[i].FWy; 22 out[i].theta = in[i].theta; 23 out[i].dophot = in[i].dophot; 24 out[i].photcode = in[i].source; 25 out[i].t = in[i].t; 26 out[i].averef = in[i].averef; 27 out[i].flags = in[i].flags; 28 29 out[i].Xccd = in[i].Xccd; 30 out[i].Yccd = in[i].Yccd; 31 out[i].dXccd = in[i].dXccd; 32 out[i].dYccd = in[i].dYccd; 33 34 out[i].stargal = in[i].stargal; 35 out[i].Sky = in[i].Sky; 36 out[i].dSky = in[i].dSky; 37 out[i].qPSF = in[i].qPSF; 38 39 out[i].detID_hi = in[i].detID_hi; 40 out[i].detID_lo = in[i].detID_lo; 41 out[i].imageID_hi = in[i].imageID_hi; 42 out[i].imageID_lo = in[i].imageID_lo; 43 } 44 return (out); 45 } 46 47 /* convert internal measures to elixir-format measures */ 48 MeasureElixir *MeasureInternalToElixir (Measure *in, int Nvalues) { 49 50 int i; 51 MeasureElixir *out; 52 53 ALLOCATE (out, MeasureElixir, Nvalues); 54 55 for (i = 0; i < Nvalues; i++) { 56 out[i].dR = in[i].dR; 57 out[i].dD = in[i].dD; 58 out[i].M = in[i].M; 59 out[i].dM = in[i].dM; 60 out[i].dt = in[i].dt; 61 out[i].Mcal = in[i].Mcal; 62 out[i].Mgal = in[i].Mgal; 63 out[i].airmass = in[i].airmass; 64 out[i].FWx = in[i].FWx; 65 out[i].FWy = in[i].FWy; 66 out[i].theta = in[i].theta; 67 out[i].dophot = in[i].dophot; 68 out[i].photcode = in[i].source; 69 out[i].t = in[i].t; 70 out[i].averef = in[i].averef; 71 out[i].flags = in[i].flags; 72 73 out[i].Xccd = in[i].Xccd; 74 out[i].Yccd = in[i].Yccd; 75 out[i].dXccd = in[i].dXccd; 76 out[i].dYccd = in[i].dYccd; 77 78 out[i].stargal = in[i].stargal; 79 out[i].Sky = in[i].Sky; 80 out[i].dSky = in[i].dSky; 81 out[i].qPSF = in[i].qPSF; 82 83 out[i].detID_hi = in[i].detID_hi; 84 out[i].detID_lo = in[i].detID_lo; 85 out[i].imageID_hi = in[i].imageID_hi; 86 out[i].imageID_lo = in[i].imageID_lo; 87 } 88 return (out); 89 } 2 90 3 91 /* convert panstarrs-format averages to internal averages */ -
trunk/Ohana/src/libdvo/src/dvo_image.c
r9632 r12332 187 187 gfits_modify (&db[0].header, "ZERO_PT", "%lf", 1, ZeroPoint); 188 188 189 if (db[0].format == DVO_FORMAT_INTERNAL) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "INTERNAL"); 190 if (db[0].format == DVO_FORMAT_LONEOS) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "LONEOS"); 191 if (db[0].format == DVO_FORMAT_ELIXIR) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "ELIXIR"); 192 if (db[0].format == DVO_FORMAT_PANSTARRS) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS"); 193 if (db[0].format == DVO_FORMAT_PMTEST) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PMTEST"); 189 if (db[0].format == DVO_FORMAT_INTERNAL) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "INTERNAL"); 190 if (db[0].format == DVO_FORMAT_LONEOS) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "LONEOS"); 191 if (db[0].format == DVO_FORMAT_ELIXIR) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "ELIXIR"); 192 if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_0) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS_DEV_0"); 193 // if (db[0].format == DVO_FORMAT_PANSTARRS) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS"); 194 // if (db[0].format == DVO_FORMAT_PMTEST) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PMTEST"); 194 195 195 196 return; -
trunk/Ohana/src/libdvo/src/dvo_image_raw.c
r7080 r12332 20 20 db[0].format = DVO_FORMAT_UNDEF; 21 21 if (gfits_scan (&db[0].header, "FORMAT", "%s", 1, format)) { 22 if (!strcmp (format, "INTERNAL")) db[0].format = DVO_FORMAT_INTERNAL; 23 if (!strcmp (format, "LONEOS")) db[0].format = DVO_FORMAT_LONEOS; 24 if (!strcmp (format, "ELIXIR")) db[0].format = DVO_FORMAT_ELIXIR; 25 if (!strcmp (format, "PANSTARRS")) db[0].format = DVO_FORMAT_PANSTARRS; 26 if (!strcmp (format, "PMTEST")) db[0].format = DVO_FORMAT_PANSTARRS; 22 db[0].format = dvo_catalog_catformat (format); 27 23 if (db[0].format != DVO_FORMAT_UNDEF) goto got_format; 28 24 } 29 25 if (gfits_scan (&db[0].header, "TELESCOP", "%s", 1, telescope)) { 30 26 if (!strncmp (telescope, "LONEOS", strlen("LONEOS"))) { 31 db[0].format = DVO_FORMAT_LONEOS; 27 db[0].format = DVO_FORMAT_LONEOS; // special case for LONEOS 32 28 goto got_format; 33 29 } 34 30 if (!strncmp (telescope, "1.3m McGraw-Hill", strlen("1.3m McGraw-Hill"))) { 35 db[0].format = DVO_FORMAT_ELIXIR; 31 db[0].format = DVO_FORMAT_ELIXIR; // special case for ELIXIR 36 32 goto got_format; 37 33 } … … 51 47 /* get datatype size */ 52 48 ImageSize = 0; 53 if (db[0].format == DVO_FORMAT_INTERNAL) ImageSize = sizeof(Image); 54 if (db[0].format == DVO_FORMAT_LONEOS) ImageSize = sizeof(ImageLoneos); 55 if (db[0].format == DVO_FORMAT_ELIXIR) ImageSize = sizeof(ImageElixir); 56 if (db[0].format == DVO_FORMAT_PANSTARRS) ImageSize = sizeof(ImagePanstarrs); 49 if (db[0].format == DVO_FORMAT_INTERNAL) ImageSize = sizeof(Image); 50 if (db[0].format == DVO_FORMAT_LONEOS) ImageSize = sizeof(ImageLoneos); 51 if (db[0].format == DVO_FORMAT_ELIXIR) ImageSize = sizeof(ImageElixir); 52 if (db[0].format == DVO_FORMAT_PANSTARRS) ImageSize = sizeof(ImagePanstarrs); 53 if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_0) ImageSize = sizeof(ImagePanstarrs_DEV_0); 57 54 58 55 /* check that filesize makes sense */ … … 72 69 db[0].ftable.header = &db[0].theader; 73 70 74 if (db[0].format == DVO_FORMAT_INTERNAL) gfits_table_mkheader_Image (&db[0].theader); 75 if (db[0].format == DVO_FORMAT_LONEOS) gfits_table_mkheader_ImageLoneos (&db[0].theader); 76 if (db[0].format == DVO_FORMAT_ELIXIR) gfits_table_mkheader_ImageElixir (&db[0].theader); 77 if (db[0].format == DVO_FORMAT_PANSTARRS) gfits_table_mkheader_ImagePanstarrs (&db[0].theader); 71 if (db[0].format == DVO_FORMAT_INTERNAL) gfits_table_mkheader_Image (&db[0].theader); 72 if (db[0].format == DVO_FORMAT_LONEOS) gfits_table_mkheader_ImageLoneos (&db[0].theader); 73 if (db[0].format == DVO_FORMAT_ELIXIR) gfits_table_mkheader_ImageElixir (&db[0].theader); 74 if (db[0].format == DVO_FORMAT_PANSTARRS) gfits_table_mkheader_ImagePanstarrs (&db[0].theader); 75 if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_0) gfits_table_mkheader_ImagePanstarrs_DEV_0 (&db[0].theader); 78 76 79 77 /* read data from file */ -
trunk/Ohana/src/libdvo/src/photfits.c
r5241 r12332 61 61 switch (image[0].order) { 62 62 case 0: 63 c[0] = image[0].Mcal _PS;64 return; 65 case 1: 66 c[0] = image[0].Mcal _PS;63 c[0] = image[0].Mcal; 64 return; 65 case 1: 66 c[0] = image[0].Mcal; 67 67 c[1] = getMi (image[0].Mx); 68 68 c[2] = getMi (image[0].My); 69 69 return; 70 70 case 2: 71 c[0] = image[0].Mcal _PS;71 c[0] = image[0].Mcal; 72 72 c[1] = getMi (image[0].Mx); 73 73 c[2] = getMi (image[0].Mxx); … … 77 77 return; 78 78 case 3: 79 c[0] = image[0].Mcal _PS;79 c[0] = image[0].Mcal; 80 80 c[1] = getMi (image[0].Mx); 81 81 c[2] = getMi (image[0].Mxx); … … 89 89 return; 90 90 case 4: 91 c[0] = image[0].Mcal _PS;91 c[0] = image[0].Mcal; 92 92 c[1] = getMi (image[0].Mx); 93 93 c[2] = getMi (image[0].Mxx); … … 117 117 switch (order) { 118 118 case 0: 119 image[0].Mcal _PS= c[0];120 return; 121 case 1: 122 image[0].Mcal _PS= c[0];119 image[0].Mcal = c[0]; 120 return; 121 case 1: 122 image[0].Mcal = c[0]; 123 123 image[0].Mx = putMi(c[1]); 124 124 image[0].My = putMi(c[2]); 125 125 return; 126 126 case 2: 127 image[0].Mcal _PS= c[0];127 image[0].Mcal = c[0]; 128 128 image[0].Mx = putMi(c[1]); 129 129 image[0].Mxx = putMi(c[2]); … … 133 133 return; 134 134 case 3: 135 image[0].Mcal _PS= c[0];135 image[0].Mcal = c[0]; 136 136 image[0].Mx = putMi(c[1]); 137 137 image[0].Mxx = putMi(c[2]); … … 145 145 return; 146 146 case 4: 147 image[0].Mcal _PS= c[0];147 image[0].Mcal = c[0]; 148 148 image[0].Mx = putMi(c[1]); 149 149 image[0].Mxx = putMi(c[2]); … … 162 162 return; 163 163 default: 164 image[0].Mcal _PS= 0.0;164 image[0].Mcal = 0.0; 165 165 image[0].order = 0; 166 166 return; -
trunk/Ohana/src/libdvo/src/skyregion_gsc.c
r8386 r12332 209 209 SkyRegion *regions; 210 210 SkyRegion tempregion; 211 char * *filename;212 char * tempfile;211 char *tempfile = NULL; 212 char **filename = NULL; 213 213 214 214 N = table[0].Nregions;
Note:
See TracChangeset
for help on using the changeset viewer.
