Changeset 16810
- Timestamp:
- Mar 4, 2008, 12:39:41 PM (18 years ago)
- Location:
- trunk/Ohana/src
- Files:
-
- 16 added
- 2 deleted
- 136 edited
-
addstar/Makefile (modified) (6 diffs)
-
addstar/doc/2mass.txt (added)
-
addstar/doc/notes.txt (modified) (1 diff)
-
addstar/doc/sdss-tsObj.txt (added)
-
addstar/doc/sdss.txt (added)
-
addstar/include/2mass.h (modified) (1 diff)
-
addstar/include/addstar.h (modified) (4 diffs)
-
addstar/src/FilterStars.c (modified) (2 diffs)
-
addstar/src/GetFileMode.c (modified) (1 diff)
-
addstar/src/ImageOptions.c (modified) (4 diffs)
-
addstar/src/LoadData.c (added)
-
addstar/src/LoadDataSDSS.c (added)
-
addstar/src/LoadHeaders.c (added)
-
addstar/src/LoadStars.c (modified) (4 diffs)
-
addstar/src/MatchHeaders.c (added)
-
addstar/src/ReadImageHeader.c (modified) (3 diffs)
-
addstar/src/ReadSDSSHeader.c (added)
-
addstar/src/ReadStarsFITS.c (modified) (5 diffs)
-
addstar/src/ReadStarsSDSS.c (added)
-
addstar/src/ReadStarsTEXT.c (modified) (1 diff)
-
addstar/src/SEDfit.c (modified) (4 diffs)
-
addstar/src/UpdateImageIDs.c (added)
-
addstar/src/addstar.c (modified) (1 diff)
-
addstar/src/addstarc.c (modified) (1 diff)
-
addstar/src/args.c (modified) (1 diff)
-
addstar/src/build_links.c (modified) (11 diffs)
-
addstar/src/calibrate.c (modified) (1 diff)
-
addstar/src/fakeimage.c (modified) (2 diffs)
-
addstar/src/find_matches.c (modified) (10 diffs)
-
addstar/src/find_matches_closest.c (modified) (10 diffs)
-
addstar/src/find_matches_refstars.c (modified) (14 diffs)
-
addstar/src/get2mass_dr2.c (modified) (1 diff)
-
addstar/src/get2mass_full.c (added)
-
addstar/src/get2mass_ops.c (modified) (5 diffs)
-
addstar/src/getgsc.c (modified) (1 diff)
-
addstar/src/gettycho.c (modified) (1 diff)
-
addstar/src/getusno.c (modified) (1 diff)
-
addstar/src/getusnob.c (modified) (1 diff)
-
addstar/src/grefstars.c (modified) (1 diff)
-
addstar/src/load2mass_as_rawdata.c (modified) (2 diffs)
-
addstar/src/load2mass_catalog.c (modified) (2 diffs)
-
addstar/src/replace_match.c (modified) (2 diffs)
-
addstar/src/update_coords.c (modified) (2 diffs)
-
delstar/src/find_image_db.c (modified) (1 diff)
-
delstar/src/find_matches.c (modified) (7 diffs)
-
delstar/src/match_images.c (modified) (1 diff)
-
fixcat/src/match_images.c (modified) (1 diff)
-
gastro/src/getptolemy.c (modified) (1 diff)
-
gastro2/src/getptolemy.c (modified) (1 diff)
-
getstar/src/ReadImageHeader.c (modified) (1 diff)
-
getstar/src/select_by_region.c (modified) (3 diffs)
-
getstar/src/write_getstar_ps1_dev_0.c (modified) (3 diffs)
-
getstar/src/write_getstar_ps1_dev_1.c (modified) (3 diffs)
-
getstar/src/write_getstar_ps1_dev_2.c (modified) (3 diffs)
-
kapa2/include/buttons.h (modified) (1 diff)
-
kapa2/include/prototypes.h (modified) (1 diff)
-
kapa2/include/structures.h (modified) (1 diff)
-
kapa2/src/ButtonFunctions.c (modified) (10 diffs)
-
kapa2/src/CheckButtons.c (modified) (1 diff)
-
kapa2/src/CheckVisual.c (modified) (3 diffs)
-
kapa2/src/Image.c (modified) (2 diffs)
-
kapa2/src/SetImageSize.c (modified) (8 diffs)
-
libautocode/Makefile.Targets (modified) (8 diffs)
-
libautocode/def/AddstarClientOptions.d (modified) (1 diff)
-
libautocode/def/Stars.d (modified) (3 diffs)
-
libautocode/def/average-panstarrs-dev-0.d (modified) (1 diff)
-
libautocode/def/average-panstarrs-dev-1.d (modified) (1 diff)
-
libautocode/def/average-ps1-dev-1.d (modified) (1 diff)
-
libautocode/def/average-ps1-dev-2.d (modified) (2 diffs)
-
libautocode/def/average.d (modified) (2 diffs)
-
libautocode/def/extend-ps1-dev-2.d (modified) (2 diffs)
-
libautocode/def/extmodel-ps1-dev-2.d (added)
-
libautocode/def/image-ps1-dev-2.d (modified) (3 diffs)
-
libautocode/def/image.d (modified) (2 diffs)
-
libautocode/def/measure-ps1-dev-1.d (modified) (1 diff)
-
libautocode/def/measure-ps1-dev-2.d (modified) (4 diffs)
-
libautocode/def/measure.d (modified) (5 diffs)
-
libautocode/def/photcode-ps1-dev-1.d (modified) (1 diff)
-
libautocode/def/photcode-ps1-dev-2.d (modified) (1 diff)
-
libautocode/def/photcode.d (modified) (1 diff)
-
libautocode/def/ps1_dev_0.d (modified) (1 diff)
-
libautocode/def/ps1_dev_1.d (modified) (1 diff)
-
libautocode/def/secfilt-ps1-dev-2.d (modified) (1 diff)
-
libdvo/Makefile (modified) (3 diffs)
-
libdvo/include/dvo.h (modified) (3 diffs)
-
libdvo/include/ps1_dev_2_defs.h (added)
-
libdvo/src/LoadPhotcodesFITS.c (modified) (1 diff)
-
libdvo/src/LoadPhotcodesText.c (modified) (3 diffs)
-
libdvo/src/SavePhotcodesFITS.c (modified) (1 diff)
-
libdvo/src/dvo_catalog.c (modified) (1 diff)
-
libdvo/src/dvo_catalog_chipcoords.c (modified) (1 diff)
-
libdvo/src/dvo_catalog_raw.c (modified) (9 diffs)
-
libdvo/src/dvo_convert.c (modified) (9 diffs)
-
libdvo/src/dvo_convert_PS1_DEV_1.c (modified) (13 diffs)
-
libdvo/src/dvo_convert_PS1_DEV_2.c (added)
-
libdvo/src/dvo_convert_elixir.c (modified) (7 diffs)
-
libdvo/src/dvo_convert_loneos.c (modified) (4 diffs)
-
libdvo/src/dvo_convert_panstarrs_DEV_0.c (modified) (5 diffs)
-
libdvo/src/dvo_convert_panstarrs_DEV_1.c (modified) (5 diffs)
-
libdvo/src/dvo_image.c (modified) (1 diff)
-
libdvo/src/dvo_image_raw.c (modified) (2 diffs)
-
libdvo/src/dvo_photcode_convert_elixir.c (deleted)
-
libdvo/src/dvo_photcode_convert_ps1_dev_1.c (deleted)
-
libdvo/src/dvo_photcode_ops.c (modified) (4 diffs)
-
libfits/include/gfitsio.h (modified) (1 diff)
-
libfits/table/F_get_column.c (modified) (1 diff)
-
libkapa/src/KapaOpen.c (modified) (4 diffs)
-
markstar/src/match_images.c (modified) (1 diff)
-
mosastro/src/getptolemy.c (modified) (1 diff)
-
opihi/dvo/avextract.c (modified) (1 diff)
-
opihi/dvo/ccd.c (modified) (1 diff)
-
opihi/dvo/cmd.c (modified) (1 diff)
-
opihi/dvo/dbExtractAverages.c (modified) (2 diffs)
-
opihi/dvo/dbExtractMeasures.c (modified) (5 diffs)
-
opihi/dvo/dbFields.c (modified) (1 diff)
-
opihi/dvo/fitcolors.c (modified) (1 diff)
-
opihi/dvo/fitsed.c (modified) (1 diff)
-
opihi/dvo/gstar.c (modified) (5 diffs)
-
opihi/dvo/imextract.c (modified) (3 diffs)
-
opihi/dvo/lcurve.c (modified) (1 diff)
-
opihi/dvo/lightcurve.c (modified) (1 diff)
-
opihi/dvo/mextract.c (modified) (1 diff)
-
opihi/dvo/photometry.c (modified) (20 diffs)
-
opihi/dvo/pmeasure.c (modified) (1 diff)
-
opihi/dvo/subpix.c (modified) (1 diff)
-
opihi/include/dvoshell.h (modified) (1 diff)
-
opihi/pantasks/ipptool2book.c (modified) (1 diff)
-
relastro/Makefile (modified) (1 diff)
-
relastro/include/relastro.h (modified) (4 diffs)
-
relastro/src/FitChip.c (modified) (2 diffs)
-
relastro/src/FitMosaic.c (modified) (1 diff)
-
relastro/src/FitSimple.c (modified) (3 diffs)
-
relastro/src/GetAstromError.c (added)
-
relastro/src/ImageOps.c (modified) (7 diffs)
-
relastro/src/MosaicOps.c (modified) (2 diffs)
-
relastro/src/UpdateChips.c (modified) (1 diff)
-
relastro/src/UpdateMeasures.c (added)
-
relastro/src/UpdateObjects.c (modified) (5 diffs)
-
relastro/src/args.c (modified) (1 diff)
-
relastro/src/bcatalog.c (modified) (3 diffs)
-
relastro/src/fitpoly.c (modified) (7 diffs)
-
relastro/src/load_catalogs.c (modified) (1 diff)
-
relastro/src/mkpolyterm.c (modified) (3 diffs)
-
relastro/src/plot_scatter.c (modified) (2 diffs)
-
relastro/src/relastro.c (modified) (1 diff)
-
relastro/src/setExclusions.c (modified) (1 diff)
-
relphot/src/ImageOps.c (modified) (1 diff)
-
relphot/src/MosaicOps.c (modified) (1 diff)
-
relphot/src/StarOps.c (modified) (9 diffs)
-
relphot/src/bcatalog.c (modified) (3 diffs)
-
relphot/src/plot_scatter.c (modified) (2 diffs)
-
relphot/src/setExclusions.c (modified) (1 diff)
-
relphot/src/setMrelFinal.c (modified) (3 diffs)
-
uniphot/src/update_catalog.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/addstar/Makefile
r16040 r16810 13 13 14 14 # programs may add their own internal requirements here 15 FULL_CFLAGS = $(BASE_CFLAGS) 15 FULL_CFLAGS = $(BASE_CFLAGS) -Wall -Werror 16 16 FULL_CPPFLAGS = $(BASE_CPPFLAGS) 17 17 FULL_LDFLAGS = -lkapa -ldvo -lFITS -lohana $(BASE_LDFLAGS) … … 59 59 $(SRC)/grefstars.$(ARCH).o \ 60 60 $(SRC)/LoadStars.$(ARCH).o \ 61 $(SRC)/LoadHeaders.$(ARCH).o \ 62 $(SRC)/MatchHeaders.$(ARCH).o \ 63 $(SRC)/LoadData.$(ARCH).o \ 64 $(SRC)/LoadDataSDSS.$(ARCH).o \ 61 65 $(SRC)/in_image.$(ARCH).o \ 62 66 $(SRC)/load_subpix.$(ARCH).o \ … … 67 71 $(SRC)/ReadStarsFITS.$(ARCH).o \ 68 72 $(SRC)/ReadStarsTEXT.$(ARCH).o \ 73 $(SRC)/ReadStarsSDSS.$(ARCH).o \ 69 74 $(SRC)/FilterStars.$(ARCH).o \ 70 75 $(SRC)/ImageOptions.$(ARCH).o \ 71 76 $(SRC)/GetFileMode.$(ARCH).o \ 72 77 $(SRC)/ReadImageHeader.$(ARCH).o \ 78 $(SRC)/UpdateImageIDs.$(ARCH).o \ 73 79 $(SRC)/update_coords.$(ARCH).o 74 80 … … 165 171 $(SRC)/ConfigInit.$(ARCH).o \ 166 172 $(SRC)/LoadStars.$(ARCH).o \ 173 $(SRC)/LoadHeaders.$(ARCH).o \ 174 $(SRC)/MatchHeaders.$(ARCH).o \ 175 $(SRC)/LoadData.$(ARCH).o \ 176 $(SRC)/LoadDataSDSS.$(ARCH).o \ 167 177 $(SRC)/grefstars.$(ARCH).o \ 168 178 $(SRC)/load_subpix.$(ARCH).o \ … … 172 182 $(SRC)/ReadImageHeader.$(ARCH).o \ 173 183 $(SRC)/ReadStarsTEXT.$(ARCH).o \ 184 $(SRC)/ReadStarsSDSS.$(ARCH).o \ 185 $(SRC)/UpdateImageIDs.$(ARCH).o \ 174 186 $(SRC)/FilterStars.$(ARCH).o \ 175 187 $(SRC)/Shutdown.$(ARCH).o \ … … 189 201 $(SRC)/load2mass_catalog.$(ARCH).o \ 190 202 $(SRC)/get2mass_ops.$(ARCH).o \ 203 $(SRC)/get2mass_full.$(ARCH).o \ 191 204 $(SRC)/find_matches_refstars.$(ARCH).o \ 192 205 $(SRC)/args_load2mass.$(ARCH).o \ -
trunk/Ohana/src/addstar/doc/notes.txt
r16271 r16810 1 2 2008.02.23 3 4 features I need to add / finish in dvo: 5 6 * detID / objID / imageID 7 8 some questions: 9 10 db_id 11 table_id (chip / warp / stack / diff) 12 chip_id / warp_id / stack_id / diff_id 13 14 detections from stand-alone analysis would require an alternate sequence? 15 detections without an associated image get image_id = 0 16 17 * imageID : we will define a new, unique running ID within dvo 18 against which joins are performed. in addition, I will keep the 19 externally supplied ids as a reference (32bit id + 16bit source) 20 21 * detID : the detection (measure) should carry the imageID + detID as a 22 unique value. 23 24 * objID : objects will get a unique ID when they are created 25 (sequence in table + table ID? or use the same bits as Maria?) 26 27 * extended measurement tables 28 * SDSS ingest 29 * 2MASS flags 30 1 31 2 32 2008.01.31 -
trunk/Ohana/src/addstar/include/2mass.h
r8361 r16810 42 42 int get2mass_star (Stars *star, char *line, int Nmax); 43 43 int get2mass_3star (Stars *star, char *line, int Nmax); 44 45 int get2mass_3star_full (Stars *star, char *line, int Nmax); 46 char *next2MASSfield (char *line); 47 int set2MASS_ph_qual (Stars *star, char qual); 48 int set2MASS_rd_flag (Stars *star, char qual); 49 int set2MASS_cc_flag (Stars *star, char qual); 50 int set2MASS_bl_flag (Stars *star, char qual); 51 int set2MASS_gal_flag (Stars *star, char qual); 52 int set2MASS_mp_flag (Stars *star, char qual); 53 int set2MASS_dup_flag (Stars *star, char qual); 54 int set2MASS_use_flag (Stars *star, char qual); -
trunk/Ohana/src/addstar/include/addstar.h
r15210 r16810 51 51 52 52 enum {M_IMAGE, M_REFLIST, M_REFCAT, M_FAKEIMAGE, M_RESORT}; 53 enum {NONE, SIMPLE_CMP, SIMPLE_CMF, SIMPLE_MEF, MOSAIC_CMP, MOSAIC_CMF, MOSAIC_MEF, MOSAIC_PHU };53 enum {NONE, SIMPLE_CMP, SIMPLE_CMF, SIMPLE_MEF, MOSAIC_CMP, MOSAIC_CMF, MOSAIC_MEF, MOSAIC_PHU, SDSS_OBJ}; 54 54 /* note: MEF implies CMF */ 55 55 … … 163 163 Stars *grefstars PROTO((char *file, int photcode, int *Nstars)); 164 164 165 Stars *LoadStars PROTO((char *file, int *Nstars, Image **images, int *Nimages, int photcode));165 Stars *LoadStars PROTO((char *file, int *Nstars, Image **images, int *Nimages, AddstarClientOptions *options)); 166 166 Header **LoadHeaders PROTO((FILE *f, int *mode, int *Nheader)); 167 167 HeaderSet *MatchHeaders PROTO((int **extsize, int *nimage, int mode, Header **headers, int Nheaders)); … … 185 185 Stars *ReadStarsFITS PROTO((FILE *f, Header *header, Header *in_theader, unsigned int *nstars)); 186 186 Stars *ReadStarsTEXT PROTO((FILE *f, unsigned int *nstars)); 187 Stars *ReadStarsSDSS PROTO((FILE *f, char *name, Header *header, Header *in_theader, Image *images, int *nimages, unsigned int *nstars)); 187 188 int ReadImageHeader PROTO((Header *header, Image *image, int photcode)); 188 Stars *FilterStars PROTO((Stars *instars, Image *image ));189 Stars *FilterStars PROTO((Stars *instars, Image *image, unsigned int imageID)); 189 190 Stars *MergeStars PROTO((Stars *stars, int *Nstars, Stars *instars, int Ninstars)); 190 191 void save_pt_catalog PROTO((Catalog *catalog)); /*** choose new name ***/ … … 245 246 int args_skycells (int argc, char **argv); 246 247 int ConfigInit_skycells (int *argc, char **argv); 248 int UpdateImageIDs (Stars *stars, int Nstars, Image *images, int Nimages); 249 int LoadDataSDSS (FILE *f, char *file, Image **images, int *nvalid, Stars **stars, int *Nstars, Header **headers, int *extsize, HeaderSet *headerSets, int Nimages); 250 int altaz (double *alt, double *az, double ha, double dec, double latitude); 247 251 248 252 // this is a gnu extension?? caution! -
trunk/Ohana/src/addstar/src/FilterStars.c
r15514 r16810 1 1 # include "addstar.h" 2 2 3 Stars *FilterStars (Stars *instars, Image *image ) {3 Stars *FilterStars (Stars *instars, Image *image, unsigned int imageID) { 4 4 5 5 int j, N; … … 65 65 stars[N].M += MTIME - dMs; 66 66 } 67 if (!isnan(stars[N].Mgal)) {68 stars[N].Mgal += MTIME - dMs;69 }70 67 if (!isnan(stars[N].Map)) { 71 68 stars[N].Map += MTIME - dMs; 72 69 } 73 70 71 // XXX currently, this ID is internal only; 72 // should we use the psphot / other external ID, if available? 73 stars[N].detID = N; // sequence number within image 74 stars[N].imageID = imageID; // does this need to be updated? 75 74 76 N ++; 75 77 } -
trunk/Ohana/src/addstar/src/GetFileMode.c
r10937 r16810 16 16 gfits_scan (header, "EXTEND", "%t", 1, &extend); 17 17 18 { 19 int tmp, haveCAMCOL, haveSTRIPE; 20 21 // SDSS tsObj files have CAMCOL & STRIP keywords present in the header 22 haveCAMCOL = gfits_scan (header, "CAMCOL", "%d", 1, &tmp); 23 haveSTRIPE = gfits_scan (header, "STRIPE", "%d", 1, &tmp); 24 if (haveCAMCOL && haveSTRIPE) return SDSS_OBJ; 25 } 26 18 27 if ((Naxis == 2) || TEXTMODE || !simple) { 19 28 if (!strcmp (&ctype[4], "-WRP")) { -
trunk/Ohana/src/addstar/src/ImageOptions.c
r15038 r16810 4 4 int ImageOptions (AddstarClientOptions *options, Image *images, int Nimages) { 5 5 6 int i, equivPhotcode ;6 int i, equivPhotcode, consistent; 7 7 float maxError; 8 8 PhotCode *photcode; … … 18 18 19 19 // check that all images have the same equiv photcode and save it 20 // XXX this is only used to allow use to calculate an average mag 21 // if we have mis-matched photcodes, leave this as 0; 22 options[0].photcode = 0; 20 23 equivPhotcode = 0; 24 consistent = TRUE; 21 25 22 26 for (i = 0; i < Nimages; i++) { … … 28 32 if (equivPhotcode) { 29 33 if (equivPhotcode != photcode[0].equiv) { 30 fprintf (stderr, "ERROR: mismatch in equiv photcode values\n");31 exit (2);34 consistent = FALSE; 35 break; 32 36 } 33 37 } else { … … 35 39 } 36 40 } 37 options[0].photcode = equivPhotcode; 41 if (consistent) { 42 options[0].photcode = equivPhotcode; 43 } 38 44 39 45 options[0].imageID = 0; -
trunk/Ohana/src/addstar/src/LoadStars.c
r15487 r16810 1 1 # include "addstar.h" 2 2 3 Stars *LoadStars (char *filename, int *Nstars, Image **images, int *Nimages, int photcode) {3 Stars *LoadStars (char *filename, int *Nstars, Image **images, int *Nimages, AddstarClientOptions *options) { 4 4 5 int i, Nfile, N headers, NheaderSets, mode, *extsize;6 char **file ;5 int i, Nfile, NFILE, Nheaders, NheaderSets, mode, *extsize; 6 char **file, line[1024]; 7 7 FILE *f; 8 8 glob_t globList; … … 11 11 HeaderSet *headerSets; 12 12 13 // parse the filename as a glob 14 globList.gl_offs = 0; 15 glob (filename, 0, NULL, &globList); 13 if (options[0].filelist) { 14 // read the list of input files from the supplied file 15 f = fopen (filename, "r"); 16 if (f == NULL) { 17 fprintf (stderr, "can't read input list %s, giving up\n", filename); 18 exit (1); 19 } 16 20 17 // if the glob does not match, save the literal word: 18 // otherwise save all glob matches 19 if (globList.gl_pathc == 0) { 20 Nfile = 1; 21 ALLOCATE (file, char *, Nfile); 22 file[0] = strcreate (filename); 21 NFILE = 10; 22 ALLOCATE (file, char *, NFILE); 23 for (i = 0; (fscanf (f, "%s", line) != EOF); i++) { 24 // filename limited to 1024 chars 25 fprintf (stderr, "file: %s\n", line); 26 file[i] = strcreate (line); 27 if (i == NFILE - 1) { 28 NFILE += 10; 29 REALLOCATE (file, char *, NFILE); 30 } 31 } 32 Nfile = i; 23 33 } else { 24 Nfile = globList.gl_pathc; 25 ALLOCATE (file, char *, Nfile); 26 for (i = 0; i < Nfile; i++) { 27 file[i] = strcreate (globList.gl_pathv[i]); 34 // parse the filename as a glob 35 globList.gl_offs = 0; 36 glob (filename, 0, NULL, &globList); 37 38 // if the glob does not match, save the literal word: 39 // otherwise save all glob matches 40 if (globList.gl_pathc == 0) { 41 Nfile = 1; 42 ALLOCATE (file, char *, Nfile); 43 file[0] = strcreate (filename); 44 } else { 45 Nfile = globList.gl_pathc; 46 ALLOCATE (file, char *, Nfile); 47 for (i = 0; i < Nfile; i++) { 48 file[i] = strcreate (globList.gl_pathv[i]); 49 } 28 50 } 29 51 } … … 54 76 55 77 /* supplied photcode is incompatible with multi-chip images */ 56 if ((NheaderSets > 1) && photcode) {78 if ((NheaderSets > 1) && options[0].photcode) { 57 79 fprintf (stderr, "ERROR: photcode cannot be supplied to multi-chip images -- manually adjust the headers\n"); 58 80 exit (1); 59 81 } 60 82 83 if (headerSets[0].exttype && !strcmp (headerSets[0].exttype, "SDSS_OBJ")) { 84 LoadDataSDSS (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets); 85 continue; 86 } 87 61 88 LoadData (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets); 89 90 // XXX add a function to (optionally) load the extended source measurements 91 # if (0) 92 if (extSources) { 93 // not sure how to link the measurements here to the psf measurements above (though there is an ID in the det list) 94 LoadDataXSRC (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets); 95 } 96 if (extFits) { 97 LoadDataXFIT (f, file[i], images, Nimages, &stars, Nstars, headers, extsize, headerSets, NheaderSets); 98 } 99 # endif 100 62 101 } 63 102 … … 73 112 } 74 113 75 // load all of the headers, jump in file to skip data segments76 Header **LoadHeaders (FILE *f, int *mode, int *Nheaders) {77 78 int i, status, Nskip, NHEADERS;79 Header **headers;80 81 /* we need to examine the extensions to determine the headers and the data */82 NHEADERS = 10;83 ALLOCATE (headers, Header *, NHEADERS);84 85 // load all headers into memory86 for (i = 0;; i++) {87 ALLOCATE (headers[i], Header, 1);88 status = gfits_fread_header (f, headers[i]);89 if (!status) {90 *Nheaders = i;91 return (headers);92 }93 94 // check the mode for this file95 if (i == 0) {96 *mode = GetFileMode (headers[0]);97 if ((*mode == SIMPLE_CMP) || (*mode == MOSAIC_CMP)) {98 *Nheaders = i;99 return (headers);100 }101 }102 103 // advance to the next header104 Nskip = gfits_data_size (headers[i]);105 fseek (f, Nskip, SEEK_CUR);106 if (i == NHEADERS - 1) {107 NHEADERS += 10;108 REALLOCATE (headers, Header *, NHEADERS);109 }110 }111 }112 113 HeaderSet *MatchHeaders (int **extsize, int *nimage, int mode, Header **headers, int Nheaders) {114 115 int i, j, Nimage, NIMAGE;116 char extname[80], exttype[80], exthead[80];117 HeaderSet *headerSets;118 119 ALLOCATE (extsize[0], int, Nheaders);120 121 Nimage = 0;122 NIMAGE = 10;123 ALLOCATE (headerSets, HeaderSet, NIMAGE);124 125 // what is the mode of the first header (ie, do we have a PHU DIS image?)126 mode = GetFileMode (headers[0]);127 128 if (mode == MOSAIC_MEF) {129 headerSets[Nimage].exthead = strcreate ("PHU");130 headerSets[Nimage].extdata = strcreate ("NONE");131 headerSets[Nimage].extnum_data = -1;132 headerSets[Nimage].extnum_head = 0;133 Nimage ++;134 }135 136 // now examine the headers, count the table entries, find corresponding headers137 for (i = 0; i < Nheaders; i++) {138 if (mode == SIMPLE_CMP) {139 extsize[0][i] = headers[i][0].size;140 } else {141 extsize[0][i] = headers[i][0].size + gfits_data_size (headers[i]);142 }143 gfits_scan (headers[i], "EXTTYPE", "%s", 1, exttype);144 145 if (!strcmp (exttype, "SMPDATA")) goto keep;146 if (!strcmp (exttype, "PS1_DEV_0")) goto keep;147 if (!strcmp (exttype, "PS1_DEV_1")) goto keep;148 continue;149 150 keep:151 headerSets[Nimage].exttype = strcreate (exttype);152 153 gfits_scan (headers[i], ExtnameKeyword, "%s", 1, extname);154 gfits_scan (headers[i], "EXTHEAD", "%s", 1, exthead);155 156 headerSets[Nimage].extdata = strcreate (extname);157 headerSets[Nimage].exthead = strcreate (exthead);158 headerSets[Nimage].extnum_data = i;159 headerSets[Nimage].extnum_head = -1;160 161 // find the matching exthead entry162 for (j = 0; j < Nheaders; j++) {163 if (!gfits_scan (headers[j], ExtnameKeyword, "%s", 1, extname)) continue;164 if (strcmp (extname, headerSets[Nimage].exthead)) continue;165 headerSets[Nimage].extnum_head = j;166 break;167 }168 169 // skip or crash on table with missing matching header?170 if (headerSets[Nimage].extnum_head == -1) {171 return NULL;172 }173 Nimage ++;174 if (Nimage == NIMAGE) {175 NIMAGE += 10;176 REALLOCATE (headerSets, HeaderSet, NIMAGE);177 }178 }179 180 // some old format files did not write EXTTYPE. they have a single table in the first181 // extension matched to the header in the PHU182 if (Nimage == 0) {183 extsize[0][0] = headers[0][0].size + gfits_data_size (headers[0]);184 extsize[0][1] = headers[1][0].size + gfits_data_size (headers[1]);185 gfits_scan (headers[1], ExtnameKeyword, "%s", 1, extname);186 if (!strcmp (extname, "SMPFILE")) {187 headerSets[Nimage].extdata = strcreate (extname);188 headerSets[Nimage].exttype = strcreate ("SMPDATA");189 headerSets[Nimage].exthead = strcreate ("PHU");190 headerSets[Nimage].extnum_head = 0;191 headerSets[Nimage].extnum_data = 1;192 Nimage = 1;193 }194 }195 196 *nimage = Nimage;197 return (headerSets);198 }199 200 // examine the header sets and set the Image entries for the the valid images201 int LoadData (FILE *f, char *file, Image **images, int *nvalid, Stars **stars, int *Nstars, Header **headers, int *extsize, HeaderSet *headerSets, int Nimages) {202 203 char *name;204 int i, j, Nvalid, Nhead, Ndata, Nskip;205 Stars *inStars;206 207 if (images[0] == NULL) {208 Nvalid = 0;209 NVALID = 10;210 ALLOCATE (images[0], Image, NVALID);211 } else {212 Nvalid = *nvalid;213 NVALID = Nvalid + 10;214 REALLOCATE (images[0], Image, NVALID);215 }216 217 // find image rootname218 name = filebasename (file);219 220 // now run through the images, interpret the headers and read the stars221 for (i = 0; i < Nimages; i++) {222 Nhead = headerSets[i].extnum_head;223 224 if (VERBOSE) fprintf (stderr, "reading header for %s (%s)\n", headerSets[i].exthead, headerSets[i].extdata);225 if (!ReadImageHeader (headers[Nhead], &images[0][Nvalid], 0)) {226 fprintf (stderr, "skipping %s\n", headerSets[i].exthead);227 continue;228 }229 230 // XXX use something to set the chip name? EXTNAME?231 if (!strcmp(headerSets[i].exthead, "PHU") && (Nimages == 1)) {232 snprintf (images[0][Nvalid].name, 64, "%s", name);233 } else {234 snprintf (images[0][Nvalid].name, 64, "%s[%s]", name, headerSets[i].exthead);235 }236 237 // skip the table if there is no data segment (eg, mosaic WRP image)238 if (!strcmp(headerSets[i].extdata, "NONE")) {239 Nvalid++;240 if (Nvalid == NVALID) {241 NVALID += 10;242 REALLOCATE (images[0], Image, NVALID);243 }244 continue;245 }246 247 // advance the pointer to the start of the corresponding table block248 Ndata = headerSets[i].extnum_data;249 Nskip = 0;250 for (j = 0; j < Ndata; j++) {251 Nskip += extsize[j];252 }253 fseek (f, Nskip, SEEK_SET);254 255 inStars = ReadStarsFITS (f, headers[Nhead], headers[Ndata], &images[0][Nvalid].nstar);256 inStars = FilterStars (inStars, &images[0][Nvalid]);257 *stars = MergeStars (*stars, Nstars, inStars, images[0][Nvalid].nstar);258 Nvalid++;259 }260 free (name);261 *nvalid = Nvalid;262 return (TRUE);263 }264 -
trunk/Ohana/src/addstar/src/ReadImageHeader.c
r15514 r16810 8 8 double tmp, sec, Cerror, ZeroPt; 9 9 char *c, photname[64], line[80]; 10 11 // zero out the entire image structure 12 memset (image, 0, sizeof(Image)); 10 13 11 14 /* get astrometry information */ … … 132 135 133 136 tmp = 0; 134 gfits_scan (header, "TRATE", "%lf", 1, &tmp); 135 image[0].trate = 10000 * tmp; 137 if (gfits_scan (header, "TRATE", "%lf", 1, &tmp)) { 138 image[0].trate = 10000 * tmp; 139 } else { 140 image[0].trate = 0.0; 141 } 136 142 137 143 image[0].secz = NAN; … … 156 162 image[0].Xm = NAN_S_SHORT; 157 163 image[0].code = 0; 158 memset (image[0].dummy, 0, sizeof(image[0].dummy));159 164 160 165 /* find expected number of stars */ -
trunk/Ohana/src/addstar/src/ReadStarsFITS.c
r15514 r16810 72 72 if ((smpdata[i].M >= ZeroPt) || isnan(smpdata[i].M)) { 73 73 stars[i].M = NAN; 74 stars[i].Mgal = NAN;75 74 stars[i].Map = NAN; 76 75 } else { 77 76 stars[i].M = smpdata[i].M; 78 stars[i].Mgal = smpdata[i].M;79 77 stars[i].Map = smpdata[i].M; 80 78 } … … 122 120 stars[i].df = ps1data[i].df; 123 121 124 stars[i].psf Prob = ps1data[i].psfProb;125 stars[i].psfQual = ps1data[i].psfQual;122 stars[i].psfChisq = ps1data[i].psfChisq; 123 stars[i].psfQual = ps1data[i].psfQual; 126 124 127 125 stars[i].detID = ps1data[i].detID; … … 150 148 /* these are not used */ 151 149 stars[i].Map = NAN; 152 stars[i].Mgal = NAN;153 150 stars[i].dophot = 0; 154 151 } … … 190 187 stars[i].df = ps1data[i].df; 191 188 192 stars[i].psf Prob = ps1data[i].psfProb;189 stars[i].psfChisq = ps1data[i].psfChisq; 193 190 stars[i].psfQual = ps1data[i].psfQual; 194 191 stars[i].crNsigma = ps1data[i].crNsigma; … … 225 222 /* these are not used */ 226 223 stars[i].Map = NAN; 227 stars[i].Mgal = NAN;228 224 stars[i].dophot = 0; 229 225 } -
trunk/Ohana/src/addstar/src/ReadStarsTEXT.c
r15509 r16810 80 80 stars[N].dophot = tmp; 81 81 82 dparse (&stars[N].Mgal, 7, &buffer[j*BYTES_STAR]); 82 // XXX I've removed the Mgal field from the measure.d table, and am using Map 83 // instead. DVO has not to date been used to track and study objects which are 84 // extended, but it is about to. Related to this, I have created the concept of two 85 // extended source attribute tables, to carry the information being measured by the 86 // IPP. 87 88 // dparse (&stars[N].Mgal, 7, &buffer[j*BYTES_STAR]); 83 89 dparse (&stars[N].Map, 8, &buffer[j*BYTES_STAR]); 84 90 dparse (&stars[N].fx, 9, &buffer[j*BYTES_STAR]); -
trunk/Ohana/src/addstar/src/SEDfit.c
r15743 r16810 77 77 78 78 // load the measurements for this source 79 m = incat[0].average[i]. offset;79 m = incat[0].average[i].measureOffset; 80 80 Nphot = 0; 81 for (j = 0; j < incat[0].average[i].Nm ; j++) {81 for (j = 0; j < incat[0].average[i].Nmeasure; j++) { 82 82 idx = table[0].hashcode[incat[0].measure[m+j].photcode]; 83 83 if (idx == -1) continue; … … 159 159 160 160 // XXX for now, set the average mag data to NULL 161 outcat[0].average[Nave].Nm = 0;162 outcat[0].average[Nave].N n= 0;163 outcat[0].average[Nave].Xp = NAN_S_SHORT;164 outcat[0].average[Nave]. offset= Nmeas;165 outcat[0].average[Nave].missing = -1;166 outcat[0].average[Nave].code = 0;161 outcat[0].average[Nave].Nmeasure = 0; 162 outcat[0].average[Nave].Nmissing = 0; 163 outcat[0].average[Nave].Xp = NAN_S_SHORT; 164 outcat[0].average[Nave].measureOffset = Nmeas; 165 outcat[0].average[Nave].missingOffset = -1; 166 outcat[0].average[Nave].code = 0; 167 167 168 168 for (j = 0; j < Nsec; j++) { … … 193 193 outcat[0].measure[Nmeas].dt = 0xffff; 194 194 195 outcat[0].measure[Nmeas].Mgal = NAN;196 195 outcat[0].measure[Nmeas].airmass = 0; 197 196 outcat[0].measure[Nmeas].FWx = NAN_S_SHORT; … … 199 198 outcat[0].measure[Nmeas].theta = NAN_S_SHORT; 200 199 201 outcat[0].average[Nave].Nm ++;200 outcat[0].average[Nave].Nmeasure++; 202 201 Nmeas ++; 203 202 } -
trunk/Ohana/src/addstar/src/addstar.c
r15743 r16810 37 37 switch (options.mode) { 38 38 case M_IMAGE: 39 stars = LoadStars (argv[1], &Nstars, &images, &Nimages, options.photcode); 39 stars = LoadStars (argv[1], &Nstars, &images, &Nimages, &options); 40 41 // set and update the imageID sequence 42 UpdateImageIDs (stars, Nstars, images, Nimages); 43 40 44 if ((DUMP != NULL) && !strcmp (DUMP, "rawstars")) dump_rawstars (stars, Nstars); 41 45 for (i = 0; i < Nimages; i++) { -
trunk/Ohana/src/addstar/src/addstarc.c
r15036 r16810 21 21 case M_IMAGE: 22 22 /* load data */ 23 stars = LoadStars (argv[1], &Nstars, &images, &Nimages, options.photcode); 23 stars = LoadStars (argv[1], &Nstars, &images, &Nimages, &options); 24 25 // set and update the imageID sequence 26 UpdateImageIDs (stars, Nstars, images, Nimages); 24 27 25 28 /* send data to server */ -
trunk/Ohana/src/addstar/src/args.c
r14590 r16810 37 37 if ((N = get_argument (argc, argv, "-resort"))) { 38 38 options.mode = M_RESORT; 39 remove_argument (N, &argc, argv); 40 } 41 42 options.filelist = FALSE; 43 if ((N = get_argument (argc, argv, "-list"))) { 44 options.filelist = TRUE; 39 45 remove_argument (N, &argc, argv); 40 46 } -
trunk/Ohana/src/addstar/src/build_links.c
r5239 r16810 2 2 3 3 /* build the initial links assuming the table is sorted, 4 not partial, and has a correct set of average[]. offset,Nm values */4 not partial, and has a correct set of average[].measureOffset,Nm values */ 5 5 int *init_measure_links (Average *average, int Naverage, Measure *measure, int Nmeasure) { 6 6 … … 12 12 ALLOCATE (next, int, Nmeasure); 13 13 for (i = 0; i < Naverage; i++, N++) { 14 for (j = 0; j < average[i].Nm - 1; j++, N++) {14 for (j = 0; j < average[i].Nmeasure - 1; j++, N++) { 15 15 next[N] = N + 1; 16 16 if (N >= Nmeasure) { … … 41 41 ALLOCATE (next, int, Nmissing); 42 42 for (i = 0; i < Naverage; i++) { 43 for (j = 0; j < average[i].N n- 1; j++, N++) {43 for (j = 0; j < average[i].Nmissing - 1; j++, N++) { 44 44 next[N] = N + 1; 45 45 } 46 if (average[i].N n> 0) {46 if (average[i].Nmissing > 0) { 47 47 next[N] = -1; 48 48 if (N >= Nmissing) { … … 57 57 } 58 58 59 /* average[]. offset, average[].Nmare valid within an addstar run */59 /* average[].measureOffset, average[].Nmeasure are valid within an addstar run */ 60 60 int add_meas_link (Average *average, int *next, int Nmeasure, int NMEASURE) { 61 61 … … 63 63 64 64 /* if we have trouble, check validity of next[m] : m < Nmeasure */ 65 m = average[0]. offset;66 67 for (k = 0; k < average[0].Nm - 1; k++) {65 m = average[0].measureOffset; 66 67 for (k = 0; k < average[0].Nmeasure - 1; k++) { 68 68 m = next[m]; 69 69 if (m >= NMEASURE) { … … 79 79 80 80 if (m == -1) { 81 average[0]. offset = Nmeasure;81 average[0].measureOffset = Nmeasure; 82 82 } else { 83 83 next[m] = Nmeasure; … … 95 95 96 96 /* there may be 0 Nmiss; this is not true for Nmeas */ 97 if (average[0].N n< 1) {98 average[0].missing = Nmissing;97 if (average[0].Nmissing < 1) { 98 average[0].missingOffset = Nmissing; 99 99 next[Nmissing] = -1; 100 100 return (TRUE); 101 101 } 102 102 103 m = average[0].missing ;104 for (k = 0; k < average[0].N n- 1; k++) m = next[m];103 m = average[0].missingOffset; 104 for (k = 0; k < average[0].Nmissing - 1; k++) m = next[m]; 105 105 /* set up references */ 106 106 next[Nmissing] = -1; … … 125 125 /* reset the Nm, offset values for average */ 126 126 for (i = 0; i < Naverage; i++) { 127 average[i]. offset = -1;128 average[i].Nm = 0;127 average[i].measureOffset = -1; 128 average[i].Nmeasure = 0; 129 129 } 130 130 131 131 for (Nm = 0; Nm < Nmeasure; Nm++) { 132 132 averef = measure[Nm].averef; 133 m = average[averef]. offset;133 m = average[averef].measureOffset; 134 134 next[Nm] = -1; 135 135 136 136 if (m == -1) { /* no links yet for source */ 137 average[averef]. offset = Nm;138 average[averef].Nm = 1;137 average[averef].measureOffset = Nm; 138 average[averef].Nmeasure = 1; 139 139 continue; 140 140 } … … 147 147 } 148 148 149 average[averef].Nm = k + 2;149 average[averef].Nmeasure = k + 2; 150 150 next[m] = Nm; 151 151 if (m >= Nmeasure) { … … 168 168 ALLOCATE (tmpmeasure, Measure, Nmeasure); 169 169 for (i = 0; i < Naverage; i++) { 170 n = average[i]. offset;171 average[i]. offset = N;172 for (k = 0; k < average[i].Nm ; k++, N++) {170 n = average[i].measureOffset; 171 average[i].measureOffset = N; 172 for (k = 0; k < average[i].Nmeasure; k++, N++) { 173 173 tmpmeasure[N] = measure[n]; 174 174 tmpmeasure[N].averef = i; … … 189 189 ALLOCATE (tmpmissing, Missing, Nmissing); 190 190 for (i = 0; i < Naverage; i++) { 191 n = average[i].missing ;192 average[i].missing = N;193 for (k = 0; k < average[i].N n; k++, N++) {191 n = average[i].missingOffset; 192 average[i].missingOffset = N; 193 for (k = 0; k < average[i].Nmissing; k++, N++) { 194 194 tmpmissing[N] = missing[n]; 195 195 n = next[n]; -
trunk/Ohana/src/addstar/src/calibrate.c
r16040 r16810 97 97 } 98 98 99 m = average[0]. offset;100 for (i = 0; i < average[0].Nm ; i++) {99 m = average[0].measureOffset; 100 for (i = 0; i < average[0].Nmeasure; i++) { 101 101 if (measure[m].photcode == CalC0) { 102 102 found0 = TRUE; -
trunk/Ohana/src/addstar/src/fakeimage.c
r15509 r16810 130 130 image[i+1].Xm = NAN_S_SHORT; 131 131 image[i+1].code = 0; 132 memset (image[i+1].dummy, 0, sizeof(image[i+1].dummy));133 132 134 133 image[i+1].nstar = 0; … … 189 188 image[0].Xm = NAN_S_SHORT; 190 189 image[0].code = 0; 191 memset (image[0].dummy, 0, sizeof(image[0].dummy));192 190 image[0].nstar = 0; 193 191 image[0].Myyyy = 0; 192 193 // XXX need to set the imageID here 194 194 195 195 *Nimage = Nchips + 1; -
trunk/Ohana/src/addstar/src/find_matches.c
r16040 r16810 10 10 int Nave, NAVE, Nmeas, NMEAS, Nmatch; 11 11 int Nsecfilt, Nsec; 12 unsigned int objID, catID; 12 13 Coords tcoords; 13 14 … … 37 38 NMEAS = Nmeas = catalog[0].Nmeasure; 38 39 40 // current max obj ID for this catalog 41 objID = catalog[0].objID; 42 catID = catalog[0].catID; 43 39 44 /* project onto rectilinear grid with 1 arcsec pixels. the choice of ZEA projection has the 40 45 * advantage that every point in R,D has a mapping to a unique X,Y. However, note that not all … … 179 184 catalog[0].measure[Nmeas].photFlags = stars[N].flags; 180 185 catalog[0].measure[Nmeas].qPSF = stars[N].psfQual; 181 catalog[0].measure[Nmeas].psf Prob = stars[N].psfProb;186 catalog[0].measure[Nmeas].psfChisq = stars[N].psfChisq; 182 187 catalog[0].measure[Nmeas].crNsigma = stars[N].crNsigma; 183 188 catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma; … … 193 198 catalog[0].measure[Nmeas].dYccd = stars[N].dY; 194 199 195 catalog[0].measure[Nmeas].M gal = stars[N].Mgal;200 catalog[0].measure[Nmeas].Map = stars[N].Map; 196 201 catalog[0].measure[Nmeas].FWx = 100*stars[N].fx; 197 202 catalog[0].measure[Nmeas].FWy = 100*stars[N].fy; … … 233 238 /* Nm is updated, but not written out in -update mode (for existing entries) 234 239 Nm is recalculated in build_meas_links if loaded table is not sorted */ 235 catalog[0].average[n].Nm ++;240 catalog[0].average[n].Nmeasure ++; 236 241 Nmeas ++; 237 242 … … 263 268 if (!IN_REGION (stars[N].R, stars[N].D)) continue; 264 269 265 catalog[0].average[Nave].R = stars[N].R;266 catalog[0].average[Nave].D = stars[N].D;267 catalog[0].average[Nave].Xp = 0;268 catalog[0].average[Nave].Nm = 1;269 catalog[0].average[Nave].N n= 0;270 catalog[0].average[Nave]. offset= Nmeas;271 catalog[0].average[Nave].missing = -1;272 catalog[0].average[Nave].code = 0;270 catalog[0].average[Nave].R = stars[N].R; 271 catalog[0].average[Nave].D = stars[N].D; 272 catalog[0].average[Nave].Xp = 0; 273 catalog[0].average[Nave].Nmeasure = 1; 274 catalog[0].average[Nave].Nmissing = 0; 275 catalog[0].average[Nave].measureOffset = Nmeas; 276 catalog[0].average[Nave].missingOffset = -1; 277 catalog[0].average[Nave].code = 0; 273 278 274 279 catalog[0].average[Nave].dR = 0; … … 280 285 catalog[0].average[Nave].P = 0; 281 286 catalog[0].average[Nave].dP = 0; 287 288 catalog[0].average[Nave].objID = objID; 289 catalog[0].average[Nave].catID = catID; 290 objID ++; 282 291 283 292 for (j = 0; j < Nsecfilt; j++) { … … 305 314 catalog[0].measure[Nmeas].photFlags = stars[N].flags; 306 315 catalog[0].measure[Nmeas].qPSF = stars[N].psfQual; 307 catalog[0].measure[Nmeas].psf Prob = stars[N].psfProb;316 catalog[0].measure[Nmeas].psfChisq = stars[N].psfChisq; 308 317 catalog[0].measure[Nmeas].crNsigma = stars[N].crNsigma; 309 318 catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma; … … 314 323 315 324 catalog[0].measure[Nmeas].detID = stars[N].detID; 316 catalog[0].measure[Nmeas].imageID = options.imageID;325 catalog[0].measure[Nmeas].imageID = stars[N].imageID; 317 326 318 327 catalog[0].measure[Nmeas].dXccd = stars[N].dX; 319 328 catalog[0].measure[Nmeas].dYccd = stars[N].dY; 320 329 321 catalog[0].measure[Nmeas].M gal = stars[N].Mgal;330 catalog[0].measure[Nmeas].Map = stars[N].Map; 322 331 catalog[0].measure[Nmeas].FWx = 100*stars[N].fx; 323 332 catalog[0].measure[Nmeas].FWy = 100*stars[N].fy; … … 359 368 360 369 /* check if the catalog has changed? if no change, no need to write */ 370 catalog[0].objID = objID; // new max value, save on catalog close 361 371 catalog[0].Naverage = Nave; 362 372 catalog[0].Nmeasure = Nmeas; -
trunk/Ohana/src/addstar/src/find_matches_closest.c
r16040 r16810 9 9 int *N1, *N2, *next_meas, *next_miss; 10 10 int Nave, NAVE, Nmeas, NMEAS, Nmiss, NMISS, Nmatch; 11 int Nsecfilt, Nsec; 12 unsigned int objID, catID; 11 13 Coords tcoords; 12 int Nsecfilt, Nsec;13 14 14 15 /* photcode data - must by of type DEP; options.photcode is equiv photcode for all input … … 37 38 NMEAS = Nmeas = catalog[0].Nmeasure; 38 39 NMISS = Nmiss = catalog[0].Nmissing; 40 41 // current max obj ID for this catalog 42 objID = catalog[0].objID; 43 catID = catalog[0].catID; 39 44 40 45 /* project onto rectilinear grid with 1 arcsec pixels. the choice of ZEA projection has the … … 199 204 catalog[0].measure[Nmeas].photFlags = stars[N].flags; 200 205 catalog[0].measure[Nmeas].qPSF = stars[N].psfQual; 201 catalog[0].measure[Nmeas].psf Prob = stars[N].psfProb;206 catalog[0].measure[Nmeas].psfChisq = stars[N].psfChisq; 202 207 catalog[0].measure[Nmeas].crNsigma = stars[N].crNsigma; 203 208 catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma; … … 213 218 catalog[0].measure[Nmeas].dYccd = stars[N].dY; 214 219 215 catalog[0].measure[Nmeas].M gal = stars[N].Mgal;220 catalog[0].measure[Nmeas].Map = stars[N].Map; 216 221 217 222 // XXX saturate range for FWx, FWy, theta … … 241 246 stars[N].found = Nmeas; 242 247 catalog[0].found[n] = Nmeas; 243 catalog[0].average[n].Nm ++;248 catalog[0].average[n].Nmeasure ++; 244 249 Nmeas ++; 245 250 i++; … … 265 270 if (!IN_REGION (stars[N].R, stars[N].D)) continue; 266 271 267 catalog[0].average[Nave].R = stars[N].R;268 catalog[0].average[Nave].D = stars[N].D;269 catalog[0].average[Nave].Xp = 0;270 catalog[0].average[Nave].Nm = 1;271 catalog[0].average[Nave].N n= 0;272 catalog[0].average[Nave]. offset= Nmeas;273 catalog[0].average[Nave].missing = -1;274 catalog[0].average[Nave].code = 0;272 catalog[0].average[Nave].R = stars[N].R; 273 catalog[0].average[Nave].D = stars[N].D; 274 catalog[0].average[Nave].Xp = 0; 275 catalog[0].average[Nave].Nmeasure = 1; 276 catalog[0].average[Nave].Nmissing = 0; 277 catalog[0].average[Nave].measureOffset = Nmeas; 278 catalog[0].average[Nave].missingOffset = -1; 279 catalog[0].average[Nave].code = 0; 275 280 276 281 catalog[0].average[Nave].dR = 0; … … 282 287 catalog[0].average[Nave].P = 0; 283 288 catalog[0].average[Nave].dP = 0; 289 290 catalog[0].average[Nave].objID = objID; 291 catalog[0].average[Nave].catID = catID; 292 objID ++; 284 293 285 294 for (j = 0; j < Nsecfilt; j++) { … … 307 316 catalog[0].measure[Nmeas].photFlags = stars[N].flags; 308 317 catalog[0].measure[Nmeas].qPSF = stars[N].psfQual; 309 catalog[0].measure[Nmeas].psf Prob = stars[N].psfProb;318 catalog[0].measure[Nmeas].psfChisq = stars[N].psfChisq; 310 319 catalog[0].measure[Nmeas].crNsigma = stars[N].crNsigma; 311 320 catalog[0].measure[Nmeas].extNsigma = stars[N].extNsigma; … … 321 330 catalog[0].measure[Nmeas].dYccd = stars[N].dY; 322 331 323 catalog[0].measure[Nmeas].M gal = stars[N].Mgal;332 catalog[0].measure[Nmeas].Map = stars[N].Map; 324 333 catalog[0].measure[Nmeas].FWx = 100*stars[N].fx; 325 334 catalog[0].measure[Nmeas].FWy = 100*stars[N].fy; … … 360 369 361 370 /* check if the catalog has changed? if no change, no need to write */ 371 catalog[0].objID = objID; // new max value, save on catalog close 362 372 catalog[0].Naverage = Nave; 363 373 catalog[0].Nmeasure = Nmeas; -
trunk/Ohana/src/addstar/src/find_matches_refstars.c
r16040 r16810 9 9 int *N1, *N2, *next, *next_miss, last, last_miss; 10 10 int Nave, NAVE, Nmeas, NMEAS, Nmiss, NMISS, Nmatch; 11 unsigned int objID, catID; 11 12 Measure *tmpmeasure; 12 13 Missing *tmpmissing; … … 47 48 REALLOCATE (catalog[0].missing, Missing, NMISS); 48 49 50 // current max obj ID for this catalog 51 objID = catalog[0].objID; 52 catID = catalog[0].catID; 53 49 54 /* project onto rectilinear grid with 1 arcsec pixels, sort by X */ 50 55 /* reference for coords is catalog center */ … … 115 120 n = N2[J]; 116 121 N = N1[i]; 117 m = catalog[0].average[n]. offset;122 m = catalog[0].average[n].measureOffset; 118 123 119 124 /** in replace mode, search for entry and replace values M, dM, R, D */ … … 122 127 /** insert star in measurement list */ 123 128 /* find last measurement of this star */ 124 for (k = 0; k < catalog[0].average[n].Nm - 1; k++) m = next[m];129 for (k = 0; k < catalog[0].average[n].Nmeasure - 1; k++) m = next[m]; 125 130 /* set up references */ 126 131 next[Nmeas] = next[m]; … … 143 148 catalog[0].measure[Nmeas].dt = 0xffff; 144 149 145 catalog[0].measure[Nmeas].M gal= NAN;150 catalog[0].measure[Nmeas].Map = NAN; 146 151 catalog[0].measure[Nmeas].airmass = 0; 147 152 catalog[0].measure[Nmeas].FWx = NAN_S_SHORT; … … 151 156 catalog[0].measure[Nmeas].photFlags = 0; 152 157 catalog[0].measure[Nmeas].qPSF = 0; 153 catalog[0].measure[Nmeas].psf Prob= 0;158 catalog[0].measure[Nmeas].psfChisq = 0; 154 159 catalog[0].measure[Nmeas].crNsigma = 0; 155 160 catalog[0].measure[Nmeas].extNsigma = 0; … … 199 204 } 200 205 201 catalog[0].average[n].Nm ++;206 catalog[0].average[n].Nmeasure ++; 202 207 Nmeas ++; 203 208 if (Nmeas == NMEAS) { … … 224 229 if (stars[N][0].found >= 0) continue; 225 230 226 catalog[0].average[Nave].R = stars[N][0].R;227 catalog[0].average[Nave].D = stars[N][0].D;228 catalog[0].average[Nave].Xp = 0;229 catalog[0].average[Nave].Nm = 1;230 catalog[0].average[Nave].N n= 0;231 catalog[0].average[Nave]. offset= Nmeas;232 catalog[0].average[Nave].missing = -1;233 catalog[0].average[Nave].code = 0;231 catalog[0].average[Nave].R = stars[N][0].R; 232 catalog[0].average[Nave].D = stars[N][0].D; 233 catalog[0].average[Nave].Xp = 0; 234 catalog[0].average[Nave].Nmeasure = 1; 235 catalog[0].average[Nave].Nmissing = 0; 236 catalog[0].average[Nave].measureOffset = Nmeas; 237 catalog[0].average[Nave].missingOffset = -1; 238 catalog[0].average[Nave].code = 0; 234 239 235 240 if (ACCEPT_MOTION) { … … 253 258 } 254 259 260 catalog[0].average[Nave].objID = objID; 261 catalog[0].average[Nave].catID = catID; 262 objID ++; 263 255 264 for (j = 0; j < Nsecfilt; j++) { 256 265 catalog[0].secfilt[Nave*Nsecfilt+j].M = NAN; … … 273 282 catalog[0].measure[Nmeas].photFlags = 0; 274 283 catalog[0].measure[Nmeas].qPSF = 0; 275 catalog[0].measure[Nmeas].psf Prob= 0;284 catalog[0].measure[Nmeas].psfChisq = 0; 276 285 catalog[0].measure[Nmeas].crNsigma = 0; 277 286 catalog[0].measure[Nmeas].extNsigma = 0; … … 291 300 292 301 catalog[0].measure[Nmeas].airmass = 0; 293 catalog[0].measure[Nmeas].M gal= NAN;302 catalog[0].measure[Nmeas].Map = NAN; 294 303 catalog[0].measure[Nmeas].FWx = NAN_S_SHORT; 295 304 catalog[0].measure[Nmeas].FWy = NAN_S_SHORT; … … 324 333 ALLOCATE (tmpmeasure, Measure, Nmeas); 325 334 for (i = 0; i < Nave; i++) { 326 n = catalog[0].average[i]. offset;327 catalog[0].average[i]. offset = N;328 for (k = 0; k < catalog[0].average[i].Nm ; k++, N++) {335 n = catalog[0].average[i].measureOffset; 336 catalog[0].average[i].measureOffset = N; 337 for (k = 0; k < catalog[0].average[i].Nmeasure; k++, N++) { 329 338 tmpmeasure[N] = catalog[0].measure[n]; 330 339 tmpmeasure[N].averef = i; … … 339 348 ALLOCATE (tmpmissing, Missing, Nmiss); 340 349 for (i = 0; i < Nave; i++) { 341 if (catalog[0].average[i].N n> 0) {342 n = catalog[0].average[i].missing ;343 catalog[0].average[i].missing = N;344 for (k = 0; k < catalog[0].average[i].N n; k++, N++) {350 if (catalog[0].average[i].Nmissing > 0) { 351 n = catalog[0].average[i].missingOffset; 352 catalog[0].average[i].missingOffset = N; 353 for (k = 0; k < catalog[0].average[i].Nmissing; k++, N++) { 345 354 tmpmissing[N] = catalog[0].missing[n]; 346 355 n = next_miss[n]; … … 369 378 free (next_miss); 370 379 380 catalog[0].objID = objID; // new max value, save on catalog close 371 381 catalog[0].Naverage = Nave; 372 382 catalog[0].Nmeasure = Nmeas; -
trunk/Ohana/src/addstar/src/get2mass_dr2.c
r7394 r16810 62 62 stars[Nstars].t = short_date_to_sec (&buffer[NBYTE*i + 164]); 63 63 stars[Nstars].found = -1; 64 stars[Nstars].detID = 0; 65 stars[Nstars].imageID = 0; 64 66 65 67 if (photcode == TM_J) { -
trunk/Ohana/src/addstar/src/get2mass_ops.c
r14590 r16810 57 57 } 58 58 59 star[0].M = M; 60 star[0].dM = dM; 61 star[0].code = Photcode; 62 star[0].t = time; 63 star[0].found = -1; 59 star[0].M = M; 60 star[0].dM = dM; 61 star[0].code = Photcode; 62 star[0].t = time; 63 star[0].found = -1; 64 star[0].detID = 0; 65 star[0].imageID = 0; 64 66 65 67 return TRUE; … … 103 105 } 104 106 107 // how many bits are being used for the 2mass flags; can we just set photFlags based on them? 108 105 109 star[0].M = J; 106 110 star[0].dM = dJ; … … 108 112 star[0].t = time; 109 113 star[0].found = -1; 114 star[0].detID = 0; 115 star[0].imageID = 0; 110 116 111 117 star[1].M = H; … … 114 120 star[1].t = time; 115 121 star[1].found = -1; 122 star[1].detID = 0; 123 star[1].imageID = 0; 116 124 117 125 star[2].M = K; … … 120 128 star[2].t = time; 121 129 star[2].found = -1; 130 star[2].detID = 0; 131 star[2].imageID = 0; 122 132 123 133 return TRUE; -
trunk/Ohana/src/addstar/src/getgsc.c
r15514 r16810 75 75 stars[Nstars].code = GSC_M; 76 76 stars[Nstars].found = -1; 77 78 stars[Nstars].detID = 0; 79 stars[Nstars].imageID = 0; 80 77 81 Nstars ++; 78 82 CHECK_REALLOCATE (stars, Stars, NSTARS, Nstars, 1000); -
trunk/Ohana/src/addstar/src/gettycho.c
r14590 r16810 96 96 stars[Ntycho].dP = 0; 97 97 98 stars[Ntycho].detID = 0; 99 stars[Ntycho].imageID = 0; 100 98 101 /* Tycho uses J2000 equinox and 1991.25 epoch for coordinates */ 99 102 /* the magnitudes have no temporal information */ -
trunk/Ohana/src/addstar/src/getusno.c
r15514 r16810 117 117 stars[Nusno].found = -1; 118 118 119 stars[Nusno].detID = 0; 120 stars[Nusno].imageID = 0; 121 119 122 /* one pass of addstar does either r or b */ 120 123 if (photcode == USNO_RED) { -
trunk/Ohana/src/addstar/src/getusnob.c
r15036 r16810 141 141 stars[Nusno].found = -1; 142 142 143 stars[Nusno].detID = 0; 144 stars[Nusno].imageID = 0; 145 143 146 /* USNO-B uses J2000 equinox and 2000.0 epoch for coordinates */ 144 147 /* the magnitudes have no temporal information */ -
trunk/Ohana/src/addstar/src/grefstars.c
r8361 r16810 30 30 stars[N].code = photcode; 31 31 stars[N].found = FALSE; 32 stars[N].detID = 0; 33 stars[N].imageID = 0; 32 34 CHECK_REALLOCATE (stars, Stars, NSTARS, N+1, 100); 33 35 } -
trunk/Ohana/src/addstar/src/load2mass_as_rawdata.c
r14401 r16810 135 135 stars[Nstars+2].R = tstars[j].R; 136 136 stars[Nstars+2].D = tstars[j].D; 137 get2mass_3star (&stars[Nstars], &buffer[offset], Nbyte - offset);137 get2mass_3star_full (&stars[Nstars], &buffer[offset], Nbyte - offset); 138 138 // get2mass_star (&stars[Nstars], &buffer[offset], Nbyte - offset); 139 139 … … 165 165 166 166 // an error exit status here is a significant error 167 if (!dvo_catalog_open (&catalog, skylist[0].regions[ i], VERBOSE, "w")) {167 if (!dvo_catalog_open (&catalog, skylist[0].regions[0], VERBOSE, "w")) { 168 168 fprintf (stderr, "ERROR: failure to open/create catalog file %s\n", catalog.filename); 169 169 exit (2); -
trunk/Ohana/src/addstar/src/load2mass_catalog.c
r15743 r16810 32 32 33 33 // XXX for now, set the average mag data to NULL 34 catalog[0].average[Nave].Nm = 0;35 catalog[0].average[Nave].N n= 0;36 catalog[0].average[Nave].Xp = NAN_S_SHORT;37 catalog[0].average[Nave]. offset= Nmeas;38 catalog[0].average[Nave].missing = -1;39 catalog[0].average[Nave].code = 0;34 catalog[0].average[Nave].Nmeasure = 0; 35 catalog[0].average[Nave].Nmissing = 0; 36 catalog[0].average[Nave].Xp = NAN_S_SHORT; 37 catalog[0].average[Nave].measureOffset = Nmeas; 38 catalog[0].average[Nave].missingOffset = -1; 39 catalog[0].average[Nave].code = 0; 40 40 41 41 for (j = 0; j < Nsec; j++) { … … 47 47 // we now have the min chisq row. use this to supply the other filter values.... 48 48 for (j = 0; j < 3; j++) { 49 catalog[0].measure[Nmeas].dR = 0.0; 50 catalog[0].measure[Nmeas].dD = 0.0; 51 catalog[0].measure[Nmeas].M = stars[i+j].M; 52 catalog[0].measure[Nmeas].dM = stars[i+j].dM; 53 catalog[0].measure[Nmeas].Mcal = 0; 54 catalog[0].measure[Nmeas].t = stars[i+j].t; 55 catalog[0].measure[Nmeas].averef = Nave; 56 catalog[0].measure[Nmeas].photcode = stars[i+j].code; 57 catalog[0].measure[Nmeas].dophot = 0; 58 catalog[0].measure[Nmeas].dbFlags = 0; 59 catalog[0].measure[Nmeas].dt = 0xffff; 49 catalog[0].measure[Nmeas].dR = 0.0; 50 catalog[0].measure[Nmeas].dD = 0.0; 51 catalog[0].measure[Nmeas].Xccd = stars[i+j].X; 52 catalog[0].measure[Nmeas].Yccd = stars[i+j].Y; 53 catalog[0].measure[Nmeas].dXccd = 0.0; 54 catalog[0].measure[Nmeas].dYccd = 0.0; 55 catalog[0].measure[Nmeas].M = stars[i+j].M; 56 catalog[0].measure[Nmeas].dM = stars[i+j].dM; 57 catalog[0].measure[Nmeas].Mcal = 0; 58 catalog[0].measure[Nmeas].dMcal = stars[i+j].dMcal; 59 catalog[0].measure[Nmeas].t = stars[i+j].t; 60 catalog[0].measure[Nmeas].averef = Nave; 61 catalog[0].measure[Nmeas].photcode = stars[i+j].code; 62 catalog[0].measure[Nmeas].dophot = 0; 63 catalog[0].measure[Nmeas].photFlags = stars[i+j].flags; 64 catalog[0].measure[Nmeas].dbFlags = 0; 65 catalog[0].measure[Nmeas].dt = 0xffff; 66 67 catalog[0].measure[Nmeas].airmass = 0; 68 catalog[0].measure[Nmeas].FWx = stars[i+j].fx; 69 catalog[0].measure[Nmeas].FWy = stars[i+j].fy; 70 catalog[0].measure[Nmeas].theta = stars[i+j].df; 60 71 61 catalog[0].measure[Nmeas].Mgal = NAN; 62 catalog[0].measure[Nmeas].airmass = 0; 63 catalog[0].measure[Nmeas].FWx = NAN_S_SHORT; 64 catalog[0].measure[Nmeas].FWy = NAN_S_SHORT; 65 catalog[0].measure[Nmeas].theta = NAN_S_SHORT; 66 67 catalog[0].average[Nave].Nm++; 72 catalog[0].average[Nave].Nmeasure++; 68 73 Nmeas ++; 69 74 CHECK_REALLOCATE (catalog[0].measure, Measure, NMEAS, Nmeas, 100); -
trunk/Ohana/src/addstar/src/replace_match.c
r15509 r16810 6 6 7 7 /* search for entry and replace values M, dM, R, D */ 8 for (i = 0; i < average[0].Nm ; i++) {8 for (i = 0; i < average[0].Nmeasure; i++) { 9 9 if (measure[i].photcode != star[0].code) continue; 10 10 measure[i].dR = 3600.0*(average[0].R - star[0].R); … … 12 12 measure[i].M = star[0].M; 13 13 measure[i].dM = star[0].dM; 14 star[0].found = average[0]. offset + i;14 star[0].found = average[0].measureOffset + i; 15 15 return (TRUE); 16 16 } -
trunk/Ohana/src/addstar/src/update_coords.c
r12332 r16810 10 10 Npt = r = d = r2 = d2 = 0; 11 11 12 if (average[0].Nm < 2) return;12 if (average[0].Nmeasure < 2) return; 13 13 14 14 /* find the average & sum-square (does not use reference coordinates) */ 15 m = average[0]. offset; /* first measurement of this star */16 for (i = 0; i < average[0].Nm ; i++) {15 m = average[0].measureOffset; /* first measurement of this star */ 16 for (i = 0; i < average[0].Nmeasure; i++) { 17 17 if (measure[m].t == 0) { 18 18 m = next[m]; … … 35 35 average[0].R -= r / 3600.0; 36 36 average[0].D -= d / 3600.0; 37 m = average[0]. offset; /* first measurement of this star */38 for (i = 0; i < average[0].Nm ; i++) {37 m = average[0].measureOffset; /* first measurement of this star */ 38 for (i = 0; i < average[0].Nmeasure; i++) { 39 39 measure[m].dR -= r; 40 40 measure[m].dD -= d; -
trunk/Ohana/src/delstar/src/find_image_db.c
r12332 r16810 44 44 image = gfits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped); 45 45 46 start = timage[0].tzero - MAX(0.0 5*timage[0].trate*timage[0].NY, 1);47 stop = timage[0].tzero + MAX(1.0 5*timage[0].trate*timage[0].NY, 1);46 start = timage[0].tzero - MAX(0.01*timage[0].trate*timage[0].NY, 1); 47 stop = timage[0].tzero + MAX(1.01*timage[0].trate*timage[0].NY, 1); 48 48 code = timage[0].photcode; 49 49 -
trunk/Ohana/src/delstar/src/find_matches.c
r15743 r16810 37 37 /* set up references for missing to average */ 38 38 for (i = 0; i < Nave; i++) { 39 for (j = 0; j < catalog[0].average[i].N n; j++) {40 ave_miss[catalog[0].average[i].missing + j] = i;39 for (j = 0; j < catalog[0].average[i].Nmissing; j++) { 40 ave_miss[catalog[0].average[i].missingOffset + j] = i; 41 41 } 42 42 } … … 88 88 /*** fix the corresponding average entry ***/ 89 89 n = catalog[0].measure[i].averef; 90 if (catalog[0].average[n].Nm == 0) { /* this should never happen */90 if (catalog[0].average[n].Nmeasure == 0) { /* this should never happen */ 91 91 fprintf (stderr, "error? we deleted one too many objects?\n"); 92 92 exit (1); 93 93 } 94 catalog[0].average[n].Nm --;94 catalog[0].average[n].Nmeasure --; 95 95 /* this was only entry in list: will be deleted below. meanwhile, delete all missing entries*/ 96 if ((catalog[0].average[n].Nm < 1) && (catalog[0].average[n].Nn> 0)) {97 m = catalog[0].average[n].missing ;98 for (j = 0; j < catalog[0].average[n].N n; j++) {96 if ((catalog[0].average[n].Nmeasure < 1) && (catalog[0].average[n].Nmissing > 0)) { 97 m = catalog[0].average[n].missingOffset; 98 for (j = 0; j < catalog[0].average[n].Nmissing; j++) { 99 99 M = next_miss[m]; 100 100 next_miss[m] = -2; 101 101 m = M; 102 102 } 103 m = catalog[0].average[n].missing ;103 m = catalog[0].average[n].missingOffset; 104 104 /* fix the list links: connect the previous valid link to the next valid link */ 105 105 for (j = m; (j >= 0) && (next_miss[j] == -2); j--); /* find previous entry to fix link */ … … 119 119 } 120 120 /* this was first entry in list */ 121 if ((catalog[0].average[n]. offset == i) && (catalog[0].average[n].Nm> 0)) {122 m = catalog[0].average[n]. offset;121 if ((catalog[0].average[n].measureOffset == i) && (catalog[0].average[n].Nmeasure > 0)) { 122 m = catalog[0].average[n].measureOffset; 123 123 /* find next valid entry -- notice lack of error checking... */ 124 124 for (j = 0; (j < Nmeas) && (next[m+j] == -2); j++); 125 catalog[0].average[n]. offset = m + j;125 catalog[0].average[n].measureOffset = m + j; 126 126 } 127 127 } … … 154 154 /*** fix the corresponding average entry ***/ 155 155 n = ave_miss[i]; 156 if (catalog[0].average[n].N n== 0) { /* this should never happen */156 if (catalog[0].average[n].Nmissing == 0) { /* this should never happen */ 157 157 fprintf (stderr, "error? we deleted one too many missing?\n"); 158 158 exit (1); 159 159 } 160 catalog[0].average[n].N n--;160 catalog[0].average[n].Nmissing --; 161 161 /* this was first entry in list */ 162 if ((catalog[0].average[n].missing == i) && (catalog[0].average[n].Nn> 0)) {163 m = catalog[0].average[n].missing ;162 if ((catalog[0].average[n].missingOffset == i) && (catalog[0].average[n].Nmissing > 0)) { 163 m = catalog[0].average[n].missingOffset; 164 164 for (j = 0; (j < Nmiss) && (next_miss[m+j] == -2); j++); 165 catalog[0].average[n].missing = m + j;165 catalog[0].average[n].missingOffset = m + j; 166 166 } 167 167 } … … 172 172 /* fix Average list: delete entries with Nm == 0 */ 173 173 for (i = j = 0; (i < Nave) && (j < Nave); i++, j++) { 174 for (; (j < Nave) && (catalog[0].average[j].Nm == 0); j++);174 for (; (j < Nave) && (catalog[0].average[j].Nmeasure == 0); j++); 175 175 if ((i != j) && (j < Nave)) { 176 176 catalog[0].average[i] = catalog[0].average[j]; … … 189 189 ALLOCATE (tmpmeasure, Measure, Nmeas); 190 190 for (i = 0; i < Nave; i++) { 191 n = catalog[0].average[i]. offset;192 catalog[0].average[i]. offset = N;193 for (k = 0; k < catalog[0].average[i].Nm ; k++, N++) {191 n = catalog[0].average[i].measureOffset; 192 catalog[0].average[i].measureOffset = N; 193 for (k = 0; k < catalog[0].average[i].Nmeasure; k++, N++) { 194 194 if ((n == -1) || (n == -2)) { 195 195 fprintf (stderr, "error: linked list is confused\n"); … … 211 211 ALLOCATE (tmpmissing, Missing, Nmiss); 212 212 for (i = 0; i < Nave; i++) { 213 if (catalog[0].average[i].N n> 0) {214 n = catalog[0].average[i].missing ;215 catalog[0].average[i].missing = N;216 for (k = 0; k < catalog[0].average[i].N n; k++, N++) {213 if (catalog[0].average[i].Nmissing > 0) { 214 n = catalog[0].average[i].missingOffset; 215 catalog[0].average[i].missingOffset = N; 216 for (k = 0; k < catalog[0].average[i].Nmissing; k++, N++) { 217 217 if ((n == -1) || (n == -2)) { 218 218 fprintf (stderr, "error: linked list is confused\n"); -
trunk/Ohana/src/delstar/src/match_images.c
r4680 r16810 16 16 ALLOCATE (stop, unsigned int, Nimage); 17 17 for (j = 0; j < Nimage; j++) { 18 start[j] = image[j].tzero - MAX(0.0 5*image[j].trate*image[j].NY, 1);19 stop[j] = image[j].tzero + MAX(1.0 5*image[j].trate*image[j].NY, 1);18 start[j] = image[j].tzero - MAX(0.01*image[j].trate*image[j].NY, 1); 19 stop[j] = image[j].tzero + MAX(1.01*image[j].trate*image[j].NY, 1); 20 20 } 21 21 -
trunk/Ohana/src/fixcat/src/match_images.c
r2490 r16810 20 20 ALLOCATE (stop, unsigned int, Nimage); 21 21 for (j = 0; j < Nimage; j++) { 22 start[j] = image[j].tzero - MAX(0.0 5*image[j].trate*image[j].NY, 1);23 stop[j] = image[j].tzero + MAX(1.0 5*image[j].trate*image[j].NY, 1);22 start[j] = image[j].tzero - MAX(0.01*image[j].trate*image[j].NY, 1); 23 stop[j] = image[j].tzero + MAX(1.01*image[j].trate*image[j].NY, 1); 24 24 } 25 25 -
trunk/Ohana/src/gastro/src/getptolemy.c
r15743 r16810 50 50 stars[k].X = catalog.average[j].R; 51 51 stars[k].Y = catalog.average[j].D; 52 stars[k].mag = catalog.measure[catalog.average[j]. offset].M;52 stars[k].mag = catalog.measure[catalog.average[j].measureOffset].M; 53 53 } 54 54 dvo_catalog_free (&catalog); -
trunk/Ohana/src/gastro2/src/getptolemy.c
r15743 r16810 61 61 Ref[0].stars[k].R = catalog.average[j].R; 62 62 Ref[0].stars[k].D = catalog.average[j].D; 63 Ref[0].stars[k].M = catalog.measure[catalog.average[j]. offset].M;63 Ref[0].stars[k].M = catalog.measure[catalog.average[j].measureOffset].M; 64 64 } 65 65 dvo_catalog_free (&catalog); -
trunk/Ohana/src/getstar/src/ReadImageHeader.c
r15509 r16810 98 98 image[0].Xm = NAN_S_SHORT; 99 99 image[0].code = 0; 100 bzero (image[0].dummy, sizeof(image[0].dummy));101 100 102 101 return (TRUE); -
trunk/Ohana/src/getstar/src/select_by_region.c
r15743 r16810 54 54 mag = catalog[0].secfilt[i*Nsecfilt + Nsec].M; 55 55 } else { 56 offset = catalog[0].average[i]. offset;57 for (m = 0; m < catalog[0].average[i].Nm ; m++) {56 offset = catalog[0].average[i].measureOffset; 57 for (m = 0; m < catalog[0].average[i].Nmeasure; m++) { 58 58 if (catalog[0].measure[offset + m].photcode == code) { 59 59 mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]); … … 66 66 67 67 output[0].average[Nave] = catalog[0].average[i]; 68 output[0].average[Nave]. offset = Nmeas;68 output[0].average[Nave].measureOffset = Nmeas; 69 69 for (j = 0; j < Nsecfilt; j++) { 70 70 output[0].secfilt[Nsecfilt*Nave + j] = catalog[0].secfilt[Nsecfilt*i + j]; … … 72 72 73 73 Nm = 0; 74 offset = catalog[0].average[i]. offset;74 offset = catalog[0].average[i].measureOffset; 75 75 76 for (j = 0; j < catalog[0].average[i].Nm ; j++) {76 for (j = 0; j < catalog[0].average[i].Nmeasure; j++) { 77 77 output[0].measure[Nmeas] = catalog[0].measure[offset + j]; 78 78 output[0].measure[Nmeas].averef = Nave; -
trunk/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c
r15543 r16810 58 58 } else { 59 59 output[i].mag = NAN; 60 offset = average[i]. offset;61 for (m = 0; m < average[i].Nm ; m++) {60 offset = average[i].measureOffset; 61 for (m = 0; m < average[i].Nmeasure; m++) { 62 62 if (measure[offset + m].photcode == code_c0) { 63 63 output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); … … 72 72 } else { 73 73 output[i].c1 = NAN; 74 offset = average[i]. offset;75 for (m = 0; m < average[i].Nm ; m++) {74 offset = average[i].measureOffset; 75 for (m = 0; m < average[i].Nmeasure; m++) { 76 76 if (measure[offset + m].photcode == code_c1) { 77 77 output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); … … 86 86 } else { 87 87 output[i].c2 = NAN; 88 offset = average[i]. offset;89 for (m = 0; m < average[i].Nm ; m++) {88 offset = average[i].measureOffset; 89 for (m = 0; m < average[i].Nmeasure; m++) { 90 90 if (measure[offset + m].photcode == code_c2) { 91 91 output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); -
trunk/Ohana/src/getstar/src/write_getstar_ps1_dev_1.c
r15543 r16810 61 61 } else { 62 62 output[i].mag = NAN; 63 offset = average[i]. offset;64 for (m = 0; m < average[i].Nm ; m++) {63 offset = average[i].measureOffset; 64 for (m = 0; m < average[i].Nmeasure; m++) { 65 65 if (measure[offset + m].photcode == code_c0) { 66 66 output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); … … 75 75 } else { 76 76 output[i].c1 = NAN; 77 offset = average[i]. offset;78 for (m = 0; m < average[i].Nm ; m++) {77 offset = average[i].measureOffset; 78 for (m = 0; m < average[i].Nmeasure; m++) { 79 79 if (measure[offset + m].photcode == code_c1) { 80 80 output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); … … 89 89 } else { 90 90 output[i].c2 = NAN; 91 offset = average[i]. offset;92 for (m = 0; m < average[i].Nm ; m++) {91 offset = average[i].measureOffset; 92 for (m = 0; m < average[i].Nmeasure; m++) { 93 93 if (measure[offset + m].photcode == code_c2) { 94 94 output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); -
trunk/Ohana/src/getstar/src/write_getstar_ps1_dev_2.c
r15543 r16810 67 67 } else { 68 68 output[i].mag = NAN; 69 offset = average[i]. offset;70 for (m = 0; m < average[i].Nm ; m++) {69 offset = average[i].measureOffset; 70 for (m = 0; m < average[i].Nmeasure; m++) { 71 71 if (measure[offset + m].photcode == code_c0) { 72 72 output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); … … 81 81 } else { 82 82 output[i].c1 = NAN; 83 offset = average[i]. offset;84 for (m = 0; m < average[i].Nm ; m++) {83 offset = average[i].measureOffset; 84 for (m = 0; m < average[i].Nmeasure; m++) { 85 85 if (measure[offset + m].photcode == code_c1) { 86 86 output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); … … 95 95 } else { 96 96 output[i].c2 = NAN; 97 offset = average[i]. offset;98 for (m = 0; m < average[i].Nm ; m++) {97 offset = average[i].measureOffset; 98 for (m = 0; m < average[i].Nmeasure; m++) { 99 99 if (measure[offset + m].photcode == code_c2) { 100 100 output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]); -
trunk/Ohana/src/kapa2/include/buttons.h
r16011 r16810 119 119 0x42, 0x84, 0x84, 0x00, 0x42, 0x84, 0x84, 0x00, 0x62, 0xc4, 0xc4, 0x00, 120 120 0x5c, 0xb9, 0xb8, 0x00}; 121 #define flipx_width 25 122 #define flipx_height 25 123 static unsigned char flipx_bits[] = { 124 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 125 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x80, 0x10, 0x02, 0x00, 126 0x40, 0x00, 0x04, 0x00, 0x20, 0x10, 0x08, 0x00, 0x10, 0x10, 0x10, 0x00, 127 0x08, 0x00, 0x20, 0x00, 0x04, 0x10, 0x40, 0x00, 0x02, 0x10, 0x80, 0x00, 128 0x01, 0x00, 0x00, 0x01, 0x02, 0x10, 0x80, 0x00, 0x04, 0x10, 0x40, 0x00, 129 0x08, 0x00, 0x20, 0x00, 0x10, 0x10, 0x10, 0x00, 0x20, 0x10, 0x08, 0x00, 130 0x40, 0x00, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x00, 0x11, 0x01, 0x00, 131 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 132 0x00, 0x10, 0x00, 0x00 }; 133 #define flipy_width 25 134 #define flipy_height 25 135 static unsigned char flipy_bits[] = { 136 0x00, 0x10, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 137 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x80, 0x00, 0x02, 0x00, 138 0x40, 0x00, 0x04, 0x00, 0x20, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 140 0xb7, 0x6d, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 141 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x08, 0x00, 142 0x40, 0x00, 0x04, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 143 0x00, 0x82, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 144 0x00, 0x10, 0x00, 0x00 }; -
trunk/Ohana/src/kapa2/include/prototypes.h
r16270 r16810 195 195 int RecenterRescale PROTO((Graphic *graphic, KapaImageWidget *image)); 196 196 int ToggleDEG PROTO((Graphic *graphic, KapaImageWidget *image)); 197 int FlipImageX PROTO((Graphic *graphic, KapaImageWidget *image)); 198 int FlipImageY PROTO((Graphic *graphic, KapaImageWidget *image)); 197 199 int Overlay0 PROTO((Graphic *graphic, KapaImageWidget *image)); 198 200 int Overlay1 PROTO((Graphic *graphic, KapaImageWidget *image)); -
trunk/Ohana/src/kapa2/include/structures.h
r16270 r16810 180 180 Button heat_button; 181 181 Button overlay_button[NOVERLAYS]; 182 Button flipx_button; 183 Button flipy_button; 182 184 183 185 // location of the status box -
trunk/Ohana/src/kapa2/src/ButtonFunctions.c
r16270 r16810 17 17 CreateWide (graphic, image); 18 18 Refresh (); 19 XFlush (graphic[0].display);20 19 return (TRUE); 21 20 } … … 29 28 CreateWide (graphic, image); 30 29 Refresh (); 31 XFlush (graphic[0].display);32 30 return (TRUE); 33 31 } … … 41 39 CreateWide (graphic, image); 42 40 Refresh (); 43 XFlush (graphic[0].display);44 41 return (TRUE); 45 42 } … … 52 49 Remap (graphic, image); 53 50 Refresh (); 54 FlushDisplay (graphic[0].display);55 51 return (TRUE); 56 52 … … 62 58 Remap (graphic, image); 63 59 Refresh (); 64 FlushDisplay (graphic[0].display);65 60 return (TRUE); 66 61 … … 75 70 Remap (graphic, image); 76 71 Refresh (); 77 FlushDisplay (graphic[0].display);78 72 return (TRUE); 79 73 80 74 } 81 75 76 int FlipImageX (Graphic *graphic, KapaImageWidget *image) { 77 78 image[0].picture.flipx = !image[0].picture.flipx; 79 image[0].zoom.flipx = !image[0].zoom.flipx; 80 image[0].wide.flipx = !image[0].wide.flipx; 81 82 Remap (graphic, image); 83 CreateWide (graphic, image); 84 Refresh (); 85 return (TRUE); 86 } 87 88 int FlipImageY (Graphic *graphic, KapaImageWidget *image) { 89 90 image[0].picture.flipy = !image[0].picture.flipy; 91 image[0].zoom.flipy = !image[0].zoom.flipy; 92 image[0].wide.flipy = !image[0].wide.flipy; 93 94 Remap (graphic, image); 95 CreateWide (graphic, image); 96 Refresh (); 97 return (TRUE); 98 } 99 82 100 int ToggleDEG (Graphic *graphic, KapaImageWidget *image) { 83 101 84 image[0].picture.flipy = !image[0].picture.flipy;85 image[0].zoom.flipy = !image[0].zoom.flipy;86 image[0].wide.flipy = !image[0].wide.flipy;87 102 image[0].DecimalDegrees = image[0].DecimalDegrees ^ TRUE; 88 103 StatusBox (graphic, image); … … 97 112 image[0].overlay[0].active = image[0].overlay[0].active ^ TRUE; 98 113 Refresh (); 99 FlushDisplay (graphic[0].display);100 114 return (TRUE); 101 115 … … 106 120 image[0].overlay[1].active = image[0].overlay[1].active ^ TRUE; 107 121 Refresh (); 108 FlushDisplay (graphic[0].display);109 122 return (TRUE); 110 123 … … 115 128 image[0].overlay[2].active = image[0].overlay[2].active ^ TRUE; 116 129 Refresh (); 117 FlushDisplay (graphic[0].display);118 130 return (TRUE); 119 131 … … 124 136 image[0].overlay[3].active = image[0].overlay[3].active ^ TRUE; 125 137 Refresh (); 126 FlushDisplay (graphic[0].display);127 138 return (TRUE); 128 139 -
trunk/Ohana/src/kapa2/src/CheckButtons.c
r16011 r16810 26 26 button = &image[0].hms_button; 27 27 28 if (InButton (event, &image[0].flipx_button)) 29 button = &image[0].flipx_button; 30 31 if (InButton (event, &image[0].flipy_button)) 32 button = &image[0].flipy_button; 33 28 34 for (i = 0; i < NOVERLAYS; i++) { 29 35 if (InButton (event, &image[0].overlay_button[i])) -
trunk/Ohana/src/kapa2/src/CheckVisual.c
r16011 r16810 14 14 unsigned long planes[3]; 15 15 XPixmapFormatValues *pixmaps; 16 int Npixmaps ;16 int Npixmaps, Npixels; 17 17 18 18 if (DEBUG) { … … 127 127 128 128 if (isDynamic) { 129 Npixels = NPIXELS_DYNAMIC; 130 if ((N = get_argument (*argc, argv, "-ncolors"))) { 131 remove_argument(N, argc, argv); 132 Npixels = atoi (argv[N]); 133 remove_argument(N, argc, argv); 134 } 135 129 136 /* allocate color cells */ 130 ALLOCATE (graphic[0].pixels, unsigned long, N PIXELS_DYNAMIC);131 ALLOCATE (graphic[0].cmap, XColor, N PIXELS_DYNAMIC);132 for (graphic[0].Npixels = N PIXELS_DYNAMIC; graphic[0].Npixels >= 16; graphic[0].Npixels -= 4) {137 ALLOCATE (graphic[0].pixels, unsigned long, Npixels); 138 ALLOCATE (graphic[0].cmap, XColor, Npixels); 139 for (graphic[0].Npixels = Npixels; graphic[0].Npixels >= 16; graphic[0].Npixels -= 4) { 133 140 if (DEBUG) fprintf (stderr, "trying %d colors\n", (int) graphic[0].Npixels); 134 141 if (XAllocColorCells (graphic[0].display, graphic[0].colormap, FALSE, planes, 1, graphic[0].pixels, graphic[0].Npixels)) { … … 163 170 } 164 171 } else { 172 Npixels = NPIXELS_STATIC; 173 if ((N = get_argument (*argc, argv, "-ncolors"))) { 174 remove_argument(N, argc, argv); 175 Npixels = atoi (argv[N]); 176 remove_argument(N, argc, argv); 177 } 178 165 179 // XXX allocate the unsigned long *pixels here and above 166 ALLOCATE (graphic[0].pixels, unsigned long, N PIXELS_STATIC);167 ALLOCATE (graphic[0].cmap, XColor, N PIXELS_STATIC);168 graphic[0].Npixels = N PIXELS_STATIC;180 ALLOCATE (graphic[0].pixels, unsigned long, Npixels); 181 ALLOCATE (graphic[0].cmap, XColor, Npixels); 182 graphic[0].Npixels = Npixels; 169 183 } 170 184 -
trunk/Ohana/src/kapa2/src/Image.c
r16270 r16810 106 106 InitButtonSize (&image[0].hms_button, hms_width, hms_height, hms_bits); 107 107 InitButtonFunc (&image[0].hms_button, ToggleDEG); 108 109 InitButtonSize (&image[0].flipx_button, flipx_width, flipx_height, flipx_bits); 110 InitButtonFunc (&image[0].flipx_button, FlipImageX); 111 112 InitButtonSize (&image[0].flipy_button, flipy_width, flipy_height, flipy_bits); 113 InitButtonFunc (&image[0].flipy_button, FlipImageY); 108 114 109 115 return (image); … … 175 181 DrawButton (graphic, &image[0].hms_button); 176 182 183 DrawButton (graphic, &image[0].flipx_button); 184 DrawButton (graphic, &image[0].flipy_button); 185 177 186 for (i = 0; i < NOVERLAYS; i++) { 178 187 DrawButton (graphic, &image[0].overlay_button[i]); -
trunk/Ohana/src/kapa2/src/SetImageSize.c
r16270 r16810 26 26 dY = graphic[0].dy * section[0].dy; 27 27 28 textpad = USE_XWINDOW ? graphic[0].font[0].ascent : 10; 29 textdY = 6*textpad + 7*PAD1; 30 WdY = MAX (ZOOM_Y, textdY + 2*BUTTON_HEIGHT + PAD1); 31 28 32 switch (image[0].location) { 29 case 0: 33 34 case 0: // no zoom / status / wide 30 35 if (section->graph) { 31 36 image[0].picture.x = graph[0].axis[0].fx; … … 43 48 return; 44 49 45 case 1: 46 textpad = USE_XWINDOW ? graphic[0].font[0].ascent : 10; 47 textdY = 6*textpad + 7*PAD1; 48 WdY = MAX (ZOOM_Y, textdY + 2*BUTTON_HEIGHT + PAD1); 50 case 1: // zoom / status / wide on bottom 49 51 50 52 if (section->graph) { … … 110 112 image[0].recenter_button.y = image[0].PS_button.y; 111 113 114 // add just below 115 image[0].flipx_button.x = image[0].recenter_button.x + image[0].recenter_button.dx + PAD1; 116 image[0].flipx_button.y = image[0].recenter_button.y; 117 118 image[0].flipy_button.x = image[0].hms_button.x + image[0].hms_button.dx + PAD1; 119 image[0].flipy_button.y = image[0].hms_button.y; 120 112 121 // XXX zoom should scale somewhat with the image? (with a min and a max) 113 122 // XXX actually, it is limited by the buttons and status region 114 123 image[0].wide.dx = ZOOM_X; 115 124 image[0].wide.dy = ZOOM_Y; 116 image[0].wide.x = image[0].recenter_button.x + image[0].recenter_button.dx + PAD1; 117 image[0].wide.y = image[0].PS_button.y; 118 break; 119 120 case 3: 121 textpad = USE_XWINDOW ? graphic[0].font[0].ascent : 10; 122 textdY = 6*textpad + 7*PAD1; 123 WdY = MAX (ZOOM_Y, textdY + 2*BUTTON_HEIGHT + PAD1); 125 image[0].wide.x = image[0].flipx_button.x + image[0].flipx_button.dx + PAD1; 126 image[0].wide.y = image[0].zoom.y; 127 break; 128 129 case 3: // zoom / status / wide on top 124 130 125 131 if (section->graph) { … … 185 191 image[0].recenter_button.y = image[0].PS_button.y; 186 192 193 // add just below 194 image[0].flipx_button.x = image[0].recenter_button.x + image[0].recenter_button.dx + PAD1; 195 image[0].flipx_button.y = image[0].recenter_button.y; 196 197 image[0].flipy_button.x = image[0].hms_button.x + image[0].hms_button.dx + PAD1; 198 image[0].flipy_button.y = image[0].hms_button.y; 199 187 200 // XXX zoom should scale somewhat with the image? (with a min and a max) 188 201 // XXX actually, it is limited by the buttons and status region 189 202 image[0].wide.dx = ZOOM_X; 190 203 image[0].wide.dy = ZOOM_Y; 191 image[0].wide.x = image[0]. PS_button.x;192 image[0].wide.y = image[0]. PS_button.y + BUTTON_HEIGHT + PAD1;193 break; 194 195 case 2: 204 image[0].wide.x = image[0].flipx_button.x + image[0].flipx_button.dx + PAD1; 205 image[0].wide.y = image[0].zoom.y; 206 break; 207 208 case 2: // zoom / status / wide on left 196 209 197 210 if (section->graph) { … … 220 233 221 234 /** everything below is tied in x-dir to the zoom box **/ 222 textpad = USE_XWINDOW ? graphic[0].font[0].ascent : 10;223 235 image[0].text_x = image[0].zoom.x; 224 236 image[0].text_y = image[0].zoom.y + image[0].zoom.dy + PAD1; … … 258 270 image[0].recenter_button.y = image[0].PS_button.y; 259 271 272 // add just below 273 image[0].flipx_button.x = image[0].PS_button.x; 274 image[0].flipx_button.y = image[0].PS_button.y + BUTTON_HEIGHT + PAD1; 275 276 image[0].flipy_button.x = image[0].flipx_button.x + image[0].flipx_button.dx + PAD1; 277 image[0].flipy_button.y = image[0].flipx_button.y; 278 260 279 // XXX zoom should scale somewhat with the image? (with a min and a max) 261 280 // XXX actually, it is limited by the buttons and status region 262 281 image[0].wide.dx = ZOOM_X; 263 282 image[0].wide.dy = ZOOM_Y; 264 image[0].wide.x = image[0]. recenter_button.x + image[0].recenter_button.dx + PAD1;265 image[0].wide.y = image[0]. PS_button.y;266 break; 267 268 case 4: 283 image[0].wide.x = image[0].flipx_button.x; 284 image[0].wide.y = image[0].flipx_button.y + BUTTON_HEIGHT + PAD1; 285 break; 286 287 case 4: // zoom / status / wide on right 269 288 270 289 if (section->graph) { … … 293 312 294 313 /** everything below is tied in x-dir to the zoom box **/ 295 textpad = USE_XWINDOW ? graphic[0].font[0].ascent : 10;296 314 image[0].text_x = image[0].zoom.x; 297 315 image[0].text_y = image[0].zoom.y + image[0].zoom.dy + PAD1; … … 331 349 image[0].recenter_button.y = image[0].PS_button.y; 332 350 351 // add just below 352 image[0].flipx_button.x = image[0].zoom.x; 353 image[0].flipx_button.y = image[0].PS_button.y + BUTTON_HEIGHT + PAD1; 354 355 image[0].flipy_button.x = image[0].flipx_button.x + image[0].flipx_button.dx + PAD1; 356 image[0].flipy_button.y = image[0].flipx_button.y; 357 333 358 // XXX zoom should scale somewhat with the image? (with a min and a max) 334 359 // XXX actually, it is limited by the buttons and status region 335 360 image[0].wide.dx = ZOOM_X; 336 361 image[0].wide.dy = ZOOM_Y; 337 image[0].wide.x = image[0]. PS_button.x;338 image[0].wide.y = image[0]. PS_button.y + BUTTON_HEIGHT + PAD1;362 image[0].wide.x = image[0].flipx_button.x; 363 image[0].wide.y = image[0].flipx_button.y + BUTTON_HEIGHT + PAD1; 339 364 break; 340 365 -
trunk/Ohana/src/libautocode/Makefile.Targets
r15694 r16810 8 8 $(ASRC)/average-panstarrs-dev-1.$(ARCH).o \ 9 9 $(ASRC)/average-ps1-dev-1.$(ARCH).o \ 10 $(ASRC)/average-ps1-dev-2.$(ARCH).o \ 10 11 $(ASRC)/secfilt.$(ARCH).o \ 11 12 $(ASRC)/secfilt-loneos.$(ARCH).o \ … … 14 15 $(ASRC)/secfilt-panstarrs-dev-1.$(ARCH).o \ 15 16 $(ASRC)/secfilt-ps1-dev-1.$(ARCH).o \ 17 $(ASRC)/secfilt-ps1-dev-2.$(ARCH).o \ 16 18 $(ASRC)/measure.$(ARCH).o \ 17 19 $(ASRC)/measure-loneos.$(ARCH).o \ … … 20 22 $(ASRC)/measure-panstarrs-dev-1.$(ARCH).o \ 21 23 $(ASRC)/measure-ps1-dev-1.$(ARCH).o \ 24 $(ASRC)/measure-ps1-dev-2.$(ARCH).o \ 22 25 $(ASRC)/missing.$(ARCH).o \ 23 26 $(ASRC)/photcode.$(ARCH).o \ 24 27 $(ASRC)/photcode-elixir.$(ARCH).o \ 25 28 $(ASRC)/photcode-ps1-dev-1.$(ARCH).o \ 29 $(ASRC)/photcode-ps1-dev-2.$(ARCH).o \ 26 30 $(ASRC)/image.$(ARCH).o \ 27 31 $(ASRC)/image-loneos.$(ARCH).o \ … … 30 34 $(ASRC)/image-panstarrs-dev-1.$(ARCH).o \ 31 35 $(ASRC)/image-ps1-dev-1.$(ARCH).o \ 36 $(ASRC)/image-ps1-dev-2.$(ARCH).o \ 32 37 $(ASRC)/regimage.$(ARCH).o \ 33 38 $(ASRC)/detreg.$(ARCH).o \ … … 55 60 $(AINC)/average-panstarrs-dev-1.h \ 56 61 $(AINC)/average-ps1-dev-1.h \ 62 $(AINC)/average-ps1-dev-2.h \ 57 63 $(AINC)/secfilt.h \ 58 64 $(AINC)/secfilt-loneos.h \ … … 61 67 $(AINC)/secfilt-panstarrs-dev-1.h \ 62 68 $(AINC)/secfilt-ps1-dev-1.h \ 69 $(AINC)/secfilt-ps1-dev-2.h \ 63 70 $(AINC)/measure.h \ 64 71 $(AINC)/measure-loneos.h \ … … 67 74 $(AINC)/measure-panstarrs-dev-1.h \ 68 75 $(AINC)/measure-ps1-dev-1.h \ 76 $(AINC)/measure-ps1-dev-2.h \ 69 77 $(AINC)/missing.h \ 70 78 $(AINC)/photcode.h \ 71 79 $(AINC)/photcode-elixir.h \ 72 80 $(AINC)/photcode-ps1-dev-1.h \ 81 $(AINC)/photcode-ps1-dev-2.h \ 73 82 $(AINC)/image.h \ 74 83 $(AINC)/image-loneos.h \ … … 77 86 $(AINC)/image-panstarrs-dev-1.h \ 78 87 $(AINC)/image-ps1-dev-1.h \ 88 $(AINC)/image-ps1-dev-2.h \ 79 89 $(AINC)/regimage.h \ 80 90 $(AINC)/detreg.h \ -
trunk/Ohana/src/libautocode/def/AddstarClientOptions.d
r15038 r16810 2 2 EXTNAME OPTIONS 3 3 TYPE BINTABLE 4 SIZE 764 SIZE 80 5 5 6 6 FIELD Nsigma, NSIGMA, double, match radius in terms of astrometric error 7 7 FIELD radius, RADIUS, double, match radius in arcsec (default) 8 8 FIELD mode, MODE, int, data source mode 9 FIELD filelist, FILELIST, int, if true file is a list of input files 9 10 FIELD existing_regions, EXISTING_REGIONS, int, use only existing regions 10 11 FIELD only_match, ONLY_MATCH, int, only update matched stars -
trunk/Ohana/src/libautocode/def/Stars.d
r15038 r16810 2 2 EXTNAME STARS 3 3 TYPE BINTABLE 4 SIZE 24 44 SIZE 248 5 5 6 6 FIELD X, X, double, x coordinate on image, pixels … … 20 20 FIELD M, M, double, instrumental mag 21 21 FIELD dM, DM, double, error on mag 22 FIELD dMcal, DMCAL, double, systematic error on mag 22 23 FIELD sky, SKY, double, local sky counts 23 24 FIELD dsky, dSKY, double, local sky error counts … … 25 26 FIELD fy, FY, double, object FWHM y-dir, pixels? 26 27 FIELD df, DF, double, object position angle, degrees 27 FIELD Mgal, MGAL, double, alternative (galaxy) magnitude28 # FIELD Mgal, MGAL, double, alternative (galaxy) magnitude 28 29 FIELD Map, MAP, double, alternative (aperture) magnitude 29 30 FIELD Mpeak, MPEAK, double, alternative (peak) magnitude 30 31 FIELD detID, ID, int, detection identifier 32 FIELD imageID, IMAGE_ID, int, image identifier 31 33 FIELD found, FOUND, int, found in database catalog? 32 34 FIELD t, T, e_time, date/time of exposure (UNIX) 33 35 FIELD dt, EXPTIME, float, exposure time, 2.5*log(exptime) 34 FIELD psf Prob, PSF_PROB,float36 FIELD psfChisq, PSF_CHISQ, float 35 37 FIELD crNsigma, CR_NSIGMA, float 36 38 FIELD extNsigma, EXT_NSIGMA, float -
trunk/Ohana/src/libautocode/def/average-panstarrs-dev-0.d
r15511 r16810 27 27 28 28 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 29 FIELD objID _hi, OBJ_ID_HI,unsigned int, ID upper bytes30 FIELD objID_lo, OBJ_ID_LO,unsigned int, ID lower bytes29 FIELD objID, OBJ_ID, unsigned int, ID upper bytes 30 FIELD catID, CAT_ID, unsigned int, ID lower bytes 31 31 32 32 # this structure should only be used for internal representations -
trunk/Ohana/src/libautocode/def/average-panstarrs-dev-1.d
r15511 r16810 27 27 28 28 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 29 FIELD objID _hi, OBJ_ID_HI,unsigned int, ID upper bytes30 FIELD objID_lo, OBJ_ID_LO,unsigned int, ID lower bytes29 FIELD objID, OBJ_ID, unsigned int, ID upper bytes 30 FIELD catID, CAT_ID, unsigned int, ID lower bytes 31 31 32 32 # this structure should only be used for internal representations -
trunk/Ohana/src/libautocode/def/average-ps1-dev-1.d
r15511 r16810 27 27 28 28 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 29 FIELD objID _hi, OBJ_ID_HI,unsigned int, ID upper bytes30 FIELD objID_lo, OBJ_ID_LO,unsigned int, ID lower bytes29 FIELD objID, OBJ_ID, unsigned int, ID upper bytes 30 FIELD catID, CAT_ID, unsigned int, ID lower bytes 31 31 32 32 # this structure should only be used for internal representations -
trunk/Ohana/src/libautocode/def/average-ps1-dev-2.d
r16266 r16810 2 2 EXTNAME DVO_AVERAGE_PS1_DEV_2 3 3 TYPE BINTABLE 4 SIZE 724 SIZE 80 5 5 DESCRIPTION DVO Average Object Table 6 6 … … 19 19 FIELD dP, PAR_ERR, float, parallax error, arcsec 20 20 21 FIELD Xp, SIGMA_POS, short, position scatter, 1/100 arcsec22 FIELD N psf, NPSF, unsigned short,number of psf measurements23 FIELD N ext, NEXT, unsigned short, number of extended measurements24 FIELD N miss, NMISS, unsigned short, number of missings25 FIELD psfOffset, OFF_PSF, int, offset to firstmeasurement26 FIELD extOffset, OFF_EXT, int, offset to first measurement27 FIELD missOffset, OFF_MISS, int, offset to first missing obs21 FIELD Xp, SIGMA_POS, short, position scatter, 1/100 arcsec 22 FIELD Nmeasure, NMEASURE, unsigned short, number of psf measurements 23 FIELD Nmissing, NMISSING, unsigned short, number of missings 24 FIELD Nextend, NEXTEND, unsigned short, number of extended measurements 25 FIELD measureOffset, OFF_MEASURE, int, offset to first psf measurement 26 FIELD missingOffset, OFF_MISSING, int, offset to first missing obs 27 FIELD extendOffset, OFF_EXTEND, int, offset to first extended measurement 28 28 29 29 FIELD code, code, unsigned short, ID code (star; ghost; etc) 30 FIELD dummy, DUMMY, char[2], padding 30 31 31 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 32 FIELD objID_hi, OBJ_ID_HI, unsigned int, ID upper bytes 33 FIELD objID_lo, OBJ_ID_LO, unsigned int, ID lower bytes 32 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints 33 # for C89 compatibility. The objID is constructed based on the 34 # position of first instatiation. this is actually quite expensive 35 # because we need to include the uniqueness test to construct this, 36 # which requires a select for each new object. Therefore, I will use 37 # a table based ID (table ID + object ID), and we will have to 38 # re-number the object IDs if we change the table density, OR treat 39 # all subdivisions as entries which are from a foreign table. 40 41 FIELD objID, OBJ_ID, unsigned int, unique ID for object in table 42 FIELD catID, CAT_ID, unsigned int, unique ID for table in which object was first realized 34 43 35 44 # this structure should only be used for internal representations -
trunk/Ohana/src/libautocode/def/average.d
r15511 r16810 2 2 EXTNAME DVO_AVERAGE 3 3 TYPE BINTABLE 4 SIZE 724 SIZE 80 5 5 DESCRIPTION DVO Average Object Table 6 6 … … 19 19 FIELD dP, PAR_ERR, float, parallax error, arcsec 20 20 21 FIELD Xp, SIGMA_POS, short, position scatter, 1/100 arcsec 22 FIELD Nm, NMEAS, unsigned short, number of measures 23 FIELD Nn, NMISS, unsigned short, number of missings 21 FIELD Xp, SIGMA_POS, short, position scatter, 1/100 arcsec 22 FIELD Nmeasure, NMEASURE, unsigned short, number of psf measurements 23 FIELD Nmissing, NMISSING, unsigned short, number of missings 24 FIELD Nextend, NEXTEND, unsigned short, number of extended measurements 25 FIELD measureOffset, OFF_MEASURE, int, offset to first psf measurement 26 FIELD missingOffset, OFF_MISSING, int, offset to first missing obs 27 FIELD extendOffset, OFF_EXTEND, int, offset to first extended measurement 28 24 29 FIELD code, code, unsigned short, ID code (star; ghost; etc) 25 FIELD offset, offset, int, offset to first measurement 26 FIELD missing, missing, int, offset to first missing obs 30 FIELD dummy, DUMMY, char[2], padding 27 31 28 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 29 FIELD objID_hi, OBJ_ID_HI, unsigned int, ID upper bytes 30 FIELD objID_lo, OBJ_ID_LO, unsigned int, ID lower bytes 32 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints 33 # for C89 compatibility. The objID is constructed based on the 34 # position of first instatiation. this is actually quite expensive 35 # because we need to include the uniqueness test to construct this, 36 # which requires a select for each new object. Therefore, I will use 37 # a table based ID (table ID + object ID), and we will have to 38 # re-number the object IDs if we change the table density, OR treat 39 # all subdivisions as entries which are from a foreign table. 40 41 FIELD objID, OBJ_ID, unsigned int, unique ID for object in table 42 FIELD catID, CAT_ID, unsigned int, unique ID for table in which object was first realized 31 43 32 44 # this structure should only be used for internal representations -
trunk/Ohana/src/libautocode/def/extend-ps1-dev-2.d
r16266 r16810 1 STRUCT Extend_PS1_DEV_ 12 EXTNAME DVO_EXTEND_PS1_DEV_ 11 STRUCT Extend_PS1_DEV_2 2 EXTNAME DVO_EXTEND_PS1_DEV_2 3 3 TYPE BINTABLE 4 SIZE 1 044 SIZE 160 5 5 DESCRIPTION DVO Detection Extended Source Parameters Table 6 6 … … 15 15 FIELD imageID, IMAGE_ID, unsigned int, reference to image 16 16 FIELD photcode, PHOTCODE, unsigned short, photcode 17 FIELD padding, PADDING, unsigned short, padding 17 18 18 19 FIELD FWx, EXT_MAJOR, float, object fwhm major axis -
trunk/Ohana/src/libautocode/def/image-ps1-dev-2.d
r16266 r16810 1 STRUCT Image_PS1_DEV_ 12 EXTNAME DVO_IMAGE_PS1_DEV_ 11 STRUCT Image_PS1_DEV_2 2 EXTNAME DVO_IMAGE_PS1_DEV_2 3 3 TYPE BINTABLE 4 SIZE 28 84 SIZE 280 5 5 DESCRIPTION DVO Image Table 6 6 … … 26 26 FIELD nstar, NSTAR, unsigned int, number of stars on image 27 27 FIELD secz, SECZ, float, airmass, mag 28 FIELD NX, NX, short,image width29 FIELD NY, NY, short,image height28 FIELD NX, NX, unsigned short, image width 29 FIELD NY, NY, unsigned short, image height 30 30 FIELD apmifit, APMIFIT, float, aperture correction, mag 31 31 FIELD dapmifit, DAPMIFIT, float, apmifit error, mag … … 48 48 FIELD code, CODE, char, image quality flag 49 49 FIELD ccdnum, CCDNUM, unsigned char, CCD ID number 50 FIELD imageID, IMAGE_ID, unsigned int, image ID 51 # 44 bytes 50 FIELD imageID, IMAGE_ID, unsigned int, internal image ID 51 FIELD externID, EXTERN_ID, unsigned int, external image ID 52 FIELD sourceID, SOURCE_ID, unsigned short, analysis source ID 53 # 48 bytes 52 54 53 FIELD dummy, DUMMY, char[14], unused54 55 FIELD order, ORDER, short, Mrel 2D polynomical order 55 56 FIELD Mx, MX, short, Mrel polyterm -
trunk/Ohana/src/libautocode/def/image.d
r15038 r16810 2 2 EXTNAME DVO_IMAGE 3 3 TYPE BINTABLE 4 SIZE 28 84 SIZE 280 5 5 DESCRIPTION DVO Image Table 6 6 … … 48 48 FIELD code, CODE, char, image quality flag 49 49 FIELD ccdnum, CCDNUM, unsigned char, CCD ID number 50 FIELD imageID, IMAGE_ID, unsigned int, image ID 50 FIELD imageID, IMAGE_ID, unsigned int, internal image ID 51 FIELD externID, EXTERN_ID, unsigned int, external image ID 52 FIELD sourceID, SOURCE_ID, unsigned short, analysis source ID 51 53 # 48 bytes 52 54 53 FIELD dummy, DUMMY, char[14], unused54 55 FIELD order, ORDER, short, Mrel 2D polynomical order 55 56 FIELD Mx, MX, short, Mrel polyterm -
trunk/Ohana/src/libautocode/def/measure-ps1-dev-1.d
r15511 r16810 34 34 # do we need more resolution than a short? should this be a log? 35 35 FIELD qPSF, PSF_QF, float, psf coverage/quality factor 36 FIELD psf Prob, PSF_PROB,float, psf coverage/quality factor36 FIELD psfChisq, PSF_CHISQ, float, psf coverage/quality factor 37 37 FIELD crNsigma, CR_NSIGMA, float, psf coverage/quality factor 38 38 FIELD extNsigma, EXT_NSIGMA, float, psf coverage/quality factor -
trunk/Ohana/src/libautocode/def/measure-ps1-dev-2.d
r16266 r16810 1 STRUCT Measure_PS1_DEV_ 12 EXTNAME DVO_MEASURE_PS1_DEV_ 11 STRUCT Measure_PS1_DEV_2 2 EXTNAME DVO_MEASURE_PS1_DEV_2 3 3 TYPE BINTABLE 4 SIZE 1 044 SIZE 112 5 5 DESCRIPTION DVO Detection Measurement Table 6 6 … … 9 9 FIELD M, MAG, float, catalog mag, mag 10 10 FIELD Mcal, M_CAL, float, image cal mag, mag 11 FIELD M gal, M_GAL, float, galaxy mag,mag11 FIELD Map, M_APER, float, aperture mag, mag 12 12 FIELD dM, MAG_ERR, float, mag error, mag 13 FIELD dMcal, MAG_CAL_ERR, float, systematic calibration error, mag 13 14 FIELD dt, M_TIME, float, exposure time, 2.5*log(exptime) 14 15 … … 30 31 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 31 32 FIELD detID, DET_ID, unsigned int, detection ID 32 FIELD imageID, IMAGE_ID, unsigned int, reference to image33 FIELD imageID, IMAGE_ID, unsigned int, reference to DVO image ID 33 34 34 35 # do we need more resolution than a short? should this be a log? 35 36 FIELD qPSF, PSF_QF, float, psf coverage/quality factor 36 FIELD psf Prob, PSF_PROB, float, psf coverage/quality factor37 FIELD crNsigma, CR_NSIGMA, float, psf coverage/quality factor38 FIELD extNsigma, EXT_NSIGMA, float, psf coverage/quality factor37 FIELD psfChisq, PSF_CHISQ, float, psf fit chisq 38 FIELD crNsigma, CR_NSIGMA, float, Nsigma deviation towards CR 39 FIELD extNsigma, EXT_NSIGMA, float, Nsigma deviation towards EXT 39 40 40 41 FIELD FWx, FWHM_MAJOR, short, object fwhm major axis, 1/100 of arcsec … … 54 55 FIELD dophot, DOPHOT, char, dophot type 55 56 56 FIELD dummy, DUMMY, char[ 2], padding57 FIELD dummy, DUMMY, char[6], padding -
trunk/Ohana/src/libautocode/def/measure.d
r15511 r16810 2 2 EXTNAME DVO_MEASURE 3 3 TYPE BINTABLE 4 SIZE 1 044 SIZE 112 5 5 DESCRIPTION DVO Detection Measurement Table 6 6 … … 9 9 FIELD M, MAG, float, catalog mag, mag 10 10 FIELD Mcal, M_CAL, float, image cal mag, mag 11 FIELD M gal, M_GAL, float, galaxy mag,mag11 FIELD Map, M_APER, float, aperture mag, mag 12 12 FIELD dM, MAG_ERR, float, mag error, mag 13 FIELD dMcal, MAG_CAL_ERR, float, systematic calibration error, mag 13 14 FIELD dt, M_TIME, float, exposure time, 2.5*log(exptime) 14 15 … … 30 31 # Pan-STARRS uses a 64-bit detection ID. keep this in two 32 bit ints for backwards compatibility? 31 32 FIELD detID, DET_ID, unsigned int, detection ID 32 FIELD imageID, IMAGE_ID, unsigned int, reference to image33 FIELD imageID, IMAGE_ID, unsigned int, reference to DVO image ID 33 34 34 35 # do we need more resolution than a short? should this be a log? 35 36 FIELD qPSF, PSF_QF, float, psf coverage/quality factor 36 FIELD psf Prob, PSF_PROB, float, psf coverage/quality factor37 FIELD crNsigma, CR_NSIGMA, float, psf coverage/quality factor38 FIELD extNsigma, EXT_NSIGMA, float, psf coverage/quality factor37 FIELD psfChisq, PSF_CHISQ, float, psf fit chisq 38 FIELD crNsigma, CR_NSIGMA, float, Nsigma deviation towards CR 39 FIELD extNsigma, EXT_NSIGMA, float, Nsigma deviation towards EXT 39 40 40 41 FIELD FWx, FWHM_MAJOR, short, object fwhm major axis, 1/100 of arcsec … … 43 44 FIELD photcode, PHOTCODE, unsigned short, photcode 44 45 46 # convert this to error in arcsec on load? 45 47 FIELD dXccd, X_CCD_ERR, short, X coord error on chip, pixels 46 48 FIELD dYccd, Y_CCD_ERR, short, Y coord error on chip, pixels … … 54 56 FIELD dophot, DOPHOT, char, dophot type 55 57 56 FIELD dummy, DUMMY, char[ 2], padding58 FIELD dummy, DUMMY, char[6], padding -
trunk/Ohana/src/libautocode/def/photcode-ps1-dev-1.d
r15694 r16810 6 6 7 7 # elements of data structure / FITS table 8 FIELD code, CODE,unsigned short, code number (stored in Measure.source)9 FIELD name, NAME,char[32], name for filter combination10 FIELD type, TYPE,char, PRI/SEC/DEP/REF11 FIELD dummy, DUMMY,char[3], padding12 FIELD C, C_LAM,short, primary phot calibration terms (millimags)13 FIELD dC, C_LAM_ERR,short, primary phot calibration terms (millimags)14 FIELD dX, X_ERR,short, primary phot calibration terms (millimags)15 FIELD K, K,float, secondary phot calibration terms (millimags)16 FIELD c1, C1,int, color is average.M[c1] - average.M[c2]17 FIELD c2, C2,int, color is average.M[c1] - average.M[c2]18 FIELD equiv, EQUIV,int, this dependent filter is equivalent to equiv PRI/SEC19 FIELD Nc, NC,int, number of color terms20 FIELD X, X,float[4], color terms $X[0]*mc + X[1]*mc^2 + X[2]*mc^3$, etc21 FIELD astrom Scale, ASTROM_SCALE, float, astrom error = mag error * astromScale22 FIELD phot SysErr, PHOT_SYS_ERR,float, systematic photometric error23 FIELD padding, PADDING,float[4], placeholder8 FIELD code, CODE, unsigned short, code number (stored in Measure.source) 9 FIELD name, NAME, char[32], name for filter combination 10 FIELD type, TYPE, char, PRI/SEC/DEP/REF 11 FIELD dummy, DUMMY, char[3], padding 12 FIELD C, C_LAM, short, primary phot calibration terms (millimags) 13 FIELD dC, C_LAM_ERR, short, primary phot calibration terms (millimags) 14 FIELD dX, X_ERR, short, primary phot calibration terms (millimags) 15 FIELD K, K, float, secondary phot calibration terms (millimags) 16 FIELD c1, C1, int, color is average.M[c1] - average.M[c2] 17 FIELD c2, C2, int, color is average.M[c1] - average.M[c2] 18 FIELD equiv, EQUIV, int, this dependent filter is equivalent to equiv PRI/SEC 19 FIELD Nc, NC, int, number of color terms 20 FIELD X, X, float[4], color terms $X[0]*mc + X[1]*mc^2 + X[2]*mc^3$, etc 21 FIELD astromErrMagScale, ASTROM_ERR_MAG_SCALE, float, astrometric error / mag error scale 22 FIELD photomErrSys, PHOTOM_ERR_SYS, float, systematic photometric error 23 FIELD padding, PADDING, float[4], placeholder -
trunk/Ohana/src/libautocode/def/photcode-ps1-dev-2.d
r16266 r16810 1 STRUCT PhotCode_PS1_DEV_ 12 EXTNAME DVO_PHOTCODE_PS1_DEV_ 11 STRUCT PhotCode_PS1_DEV_2 2 EXTNAME DVO_PHOTCODE_PS1_DEV_2 3 3 TYPE BINTABLE 4 SIZE 1044 SIZE 96 5 5 DESCRIPTION DVO Photcode Description Table 6 6 7 7 # elements of data structure / FITS table 8 FIELD code, CODE, unsigned short, code number (stored in Measure.source) 9 FIELD name, NAME, char[32], name for filter combination 10 FIELD type, TYPE, char, PRI/SEC/DEP/REF 11 FIELD dummy, DUMMY, char[3], padding 12 FIELD C, C_LAM, short, primary phot calibration terms (millimags) 13 FIELD dC, C_LAM_ERR, short, primary phot calibration terms (millimags) 14 FIELD dX, X_ERR, short, primary phot calibration terms (millimags) 15 FIELD K, K, float, secondary phot calibration terms (millimags) 16 FIELD c1, C1, int, color is average.M[c1] - average.M[c2] 17 FIELD c2, C2, int, color is average.M[c1] - average.M[c2] 18 FIELD equiv, EQUIV, int, this dependent filter is equivalent to equiv PRI/SEC 19 FIELD Nc, NC, int, number of color terms 20 FIELD X, X, float[4], color terms $X[0]*mc + X[1]*mc^2 + X[2]*mc^3$, etc 21 FIELD astromScale, ASTROM_SCALE, float, astrom error = mag error * astromScale 22 FIELD photSysErr, PHOT_SYS_ERR, float, systematic photometric error 23 FIELD padding, PADDING, float[4], placeholder 8 FIELD code, CODE, unsigned short, code number (stored in Measure.source) 9 FIELD name, NAME, char[32], name for filter combination 10 FIELD type, TYPE, char, PRI/SEC/DEP/REF 11 FIELD dummy, DUMMY, char[3], padding 12 FIELD C, C_LAM, short, primary phot calibration terms (millimags) 13 FIELD dC, C_LAM_ERR, short, primary phot calibration terms (millimags) 14 FIELD dX, X_ERR, short, primary phot calibration terms (millimags) 15 FIELD K, K, float, secondary phot calibration terms (millimags) 16 FIELD c1, C1, int, color is average.M[c1] - average.M[c2] 17 FIELD c2, C2, int, color is average.M[c1] - average.M[c2] 18 FIELD equiv, EQUIV, int, this dependent filter is equivalent to equiv PRI/SEC 19 FIELD Nc, NC, int, number of color terms 20 FIELD X, X, float[4], color terms $X[0]*mc + X[1]*mc^2 + X[2]*mc^3$, etc 21 FIELD astromErrSys, ASTROM_ERR_SYS, float, systematic astrometry error (arcsec) 22 FIELD astromErrScale, ASTROM_ERR_SCALE, float, astrometric error scale 23 FIELD astromErrMagScale, ASTROM_ERR_MAG_SCALE, float, astrometric error / mag error scale 24 FIELD photomErrSys, PHOTOM_ERR_SYS, float, systematic photometric error 25 26 # dR_total^2 = dR_sys^2 + AS * dR_obs^2 + MS * dM_obs^2 27 # dR_sys : systematicAstrometryError 28 # AS : astrometryErrorScale 29 # MS : astrometryErrorMagScale -
trunk/Ohana/src/libautocode/def/photcode.d
r15694 r16810 2 2 EXTNAME DVO_PHOTCODE_RAW 3 3 TYPE BINTABLE 4 SIZE 1044 SIZE 96 5 5 DESCRIPTION DVO Photcode Description Table 6 6 7 7 # elements of data structure / FITS table 8 FIELD code, CODE, unsigned short, code number (stored in Measure.source) 9 FIELD name, NAME, char[32], name for filter combination 10 FIELD type, TYPE, char, PRI/SEC/DEP/REF 11 FIELD dummy, DUMMY, char[3], padding 12 FIELD C, C_LAM, short, primary phot calibration terms (millimags) 13 FIELD dC, C_LAM_ERR, short, primary phot calibration terms (millimags) 14 FIELD dX, X_ERR, short, primary phot calibration terms (millimags) 15 FIELD K, K, float, secondary phot calibration terms (millimags) 16 FIELD c1, C1, int, color is average.M[c1] - average.M[c2] 17 FIELD c2, C2, int, color is average.M[c1] - average.M[c2] 18 FIELD equiv, EQUIV, int, this dependent filter is equivalent to equiv PRI/SEC 19 FIELD Nc, NC, int, number of color terms 20 FIELD X, X, float[4], color terms $X[0]*mc + X[1]*mc^2 + X[2]*mc^3$, etc 21 FIELD astromScale, ASTROM_SCALE, float, astrom error = mag error * astromScale 22 FIELD photSysErr, PHOT_SYS_ERR, float, systematic photometric error 23 FIELD padding, PADDING, float[4], placeholder 8 FIELD code, CODE, unsigned short, code number (stored in Measure.source) 9 FIELD name, NAME, char[32], name for filter combination 10 FIELD type, TYPE, char, PRI/SEC/DEP/REF 11 FIELD dummy, DUMMY, char[3], padding 12 FIELD C, C_LAM, short, primary phot calibration terms (millimags) 13 FIELD dC, C_LAM_ERR, short, primary phot calibration terms (millimags) 14 FIELD dX, X_ERR, short, primary phot calibration terms (millimags) 15 FIELD K, K, float, secondary phot calibration terms (millimags) 16 FIELD c1, C1, int, color is average.M[c1] - average.M[c2] 17 FIELD c2, C2, int, color is average.M[c1] - average.M[c2] 18 FIELD equiv, EQUIV, int, this dependent filter is equivalent to equiv PRI/SEC 19 FIELD Nc, NC, int, number of color terms 20 FIELD X, X, float[4], color terms $X[0]*mc + X[1]*mc^2 + X[2]*mc^3$, etc 21 FIELD astromErrSys, ASTROM_ERR_SYS, float, systematic astrometry error (arcsec) 22 FIELD astromErrScale, ASTROM_ERR_SCALE, float, astrometric error scale 23 FIELD astromErrMagScale, ASTROM_ERR_MAG_SCALE, float, astrometric error / mag error scale 24 FIELD photomErrSys, PHOTOM_ERR_SYS, float, systematic photometric error 25 26 # dR_total^2 = dR_sys^2 + AS * dR_obs^2 + MS * dM_obs^2 27 # dR_sys : systematicAstrometryError 28 # AS : astrometryErrorScale 29 # MS : astrometryErrorMagScale -
trunk/Ohana/src/libautocode/def/ps1_dev_0.d
r12461 r16810 16 16 FIELD sky, SKY, float, sky flux, cnts/sec 17 17 FIELD dSky, SKY_SIG, float, sky flux errorf cnts/sec 18 FIELD psf Prob, PSF_PROBABILITY, float, psf probability18 FIELD psfChisq, PSF_CHISQ, float, psf fit chisq 19 19 FIELD fx, PSF_WIDTH_X, float, semi-major, pixels 20 20 FIELD fy, PSF_WIDTH_Y, float, semi-minor, pixels -
trunk/Ohana/src/libautocode/def/ps1_dev_1.d
r15038 r16810 16 16 FIELD sky, SKY, float, sky flux, cnts/sec 17 17 FIELD dSky, SKY_SIG, float, sky flux errorf cnts/sec 18 FIELD psf Prob, PSF_PROBABILITY, float, psf probability18 FIELD psfChisq, PSF_CHISQ, float, psf fit chisq 19 19 FIELD crNsigma, CR_NSIGMA, float, Nsigma deviations from PSF to CF 20 20 FIELD extNsigma, EXT_NSIGMA, float, Nsigma deviations from PSF to EXT -
trunk/Ohana/src/libautocode/def/secfilt-ps1-dev-2.d
r16266 r16810 1 STRUCT SecFilt_PS1_DEV_ 12 EXTNAME DVO_SECFILT_PS1_DEV_ 11 STRUCT SecFilt_PS1_DEV_2 2 EXTNAME DVO_SECFILT_PS1_DEV_2 3 3 TYPE BINTABLE 4 4 SIZE 16 -
trunk/Ohana/src/libdvo/Makefile
r16139 r16810 29 29 $(DESTINC)/panstarrs_dev_0_defs.h \ 30 30 $(DESTINC)/panstarrs_dev_1_defs.h \ 31 $(DESTINC)/ps1_dev_1_defs.h 31 $(DESTINC)/ps1_dev_1_defs.h \ 32 $(DESTINC)/ps1_dev_2_defs.h 32 33 33 34 INCS = $(DEFS) $(DESTINC)/dvo.h $(DESTINC)/autocode.h … … 37 38 $(SRC)/coordops.$(ARCH).o \ 38 39 $(SRC)/dvosorts.$(ARCH).o \ 39 $(SRC)/dvo_photcode_ops.$(ARCH).o \40 $(SRC)/dvo_photcode_convert_elixir.$(ARCH).o \41 $(SRC)/dvo_photcode_convert_ps1_dev_1.$(ARCH).o \42 40 $(SRC)/dvo_photcode_ops.$(ARCH).o \ 43 41 $(SRC)/LoadPhotcodes.$(ARCH).o \ … … 64 62 $(SRC)/dvo_convert_panstarrs_DEV_1.$(ARCH).o \ 65 63 $(SRC)/dvo_convert_PS1_DEV_1.$(ARCH).o \ 64 $(SRC)/dvo_convert_PS1_DEV_2.$(ARCH).o \ 66 65 $(SRC)/skyregion_io.$(ARCH).o \ 67 66 $(SRC)/skyregion_gsc.$(ARCH).o \ -
trunk/Ohana/src/libdvo/include/dvo.h
r16057 r16810 16 16 DVO_FORMAT_PANSTARRS_DEV_0, 17 17 DVO_FORMAT_PANSTARRS_DEV_1, 18 DVO_FORMAT_PS1_DEV_1 18 DVO_FORMAT_PS1_DEV_1, 19 DVO_FORMAT_PS1_DEV_2 19 20 } DVOTableFormat; 20 21 … … 215 216 struct Catalog *secfilt_catalog; /* secfilt catalog data (split) */ 216 217 218 unsigned int objID; 219 unsigned int catID; 220 217 221 /* extra catalog information */ 218 222 int lockmode; … … 383 387 # include "panstarrs_dev_1_defs.h" 384 388 # include "ps1_dev_1_defs.h" 389 # include "ps1_dev_2_defs.h" 385 390 386 391 /*** DVO image db I/O Functions ***/ -
trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c
r15694 r16810 50 50 photcode = PhotCode_PS1_DEV_1_To_Internal (photcode_ps1_dev_1, Ncode); 51 51 free (photcode_ps1_dev_1); 52 } 53 54 if (!strcmp (extname, "DVO_PHOTCODE_PS1_DEV_2")) { 55 PhotCode_PS1_DEV_2 *photcode_ps1_dev_2 = gfits_table_get_PhotCode_PS1_DEV_2 (&db.ftable, &Ncode, &db.swapped); 56 photcode = PhotCode_PS1_DEV_2_To_Internal (photcode_ps1_dev_2, Ncode); 57 free (photcode_ps1_dev_2); 52 58 } 53 59 -
trunk/Ohana/src/libdvo/src/LoadPhotcodesText.c
r15694 r16810 27 27 char *c; 28 28 char line[256], **c1_names, **c2_names, **eq_names; 29 char name[32], type[32], Zero[32], Airmass[32], Offset[32], 30 C1[32], C2[32], Slope[32], Color[32], Primary[32]; 29 char name[32], type[32], Zero[32], Airmass[32], Offset[32]; 30 char C1[32], C2[32], Slope[32], Color[32], Primary[32]; 31 char astromErrSys[32], astromErrScale[32], astromErrMagScale[32], photomErrSys[32]; 31 32 32 33 table = GetPhotcodeTable (); … … 60 61 for (c = line; isspace (*c); c++); 61 62 if (*c == '#') continue; 62 Nfield = sscanf (c, "%d %s %s %s %s %s %s %s %s %s %s", 63 &code, name, type, Zero, Airmass, Offset, C1, C2, Slope, Color, Primary); 64 65 // XXX to add the AstromError (and PhotError) terms, we need to add them to the photcode structure, and 66 // define methods to read (at least) the old and the new photcode versions. 67 68 if (Nfield != 11) { continue; } 69 63 Nfield = sscanf (c, "%d %s %s %s %s %s %s %s %s %s %s %s %s %s %s", 64 &code, name, type, Zero, Airmass, Offset, C1, C2, Slope, Color, Primary, astromErrSys, astromErrScale, astromErrMagScale, photomErrSys); 65 66 switch (Nfield) { 67 case 11: 68 // minimum number of fields : original elixir layout 69 strcpy (astromErrSys, "0.0"); 70 strcpy (astromErrScale, "0.0"); 71 strcpy (astromErrMagScale, "0.0"); 72 strcpy (photomErrSys, "0.0"); 73 break; 74 case 14: 75 // allow only astrom elements 76 strcpy (photomErrSys, "0.0"); 77 break; 78 case 15: 79 // all fields defined 80 break; 81 default: 82 // skip unknown layouts 83 continue; 84 } 85 70 86 if (!code) { 71 87 fprintf (stderr, "photcode values may not be 0: fix %s\n", name); … … 95 111 photcode[Ncode].type = PHOT_ALT; 96 112 } 113 114 photcode[Ncode].astromErrSys = atof (astromErrSys); 115 photcode[Ncode].astromErrScale = atof (astromErrScale); 116 photcode[Ncode].astromErrMagScale = atof (astromErrMagScale); 117 photcode[Ncode].photomErrSys = atof (photomErrSys); 97 118 98 119 switch (photcode[Ncode].type) { -
trunk/Ohana/src/libdvo/src/SavePhotcodesFITS.c
r15694 r16810 29 29 // for the moment, we simply support the latest photcode format for output 30 30 // XXX update this as needed as new formats are defined 31 PhotCode_PS1_DEV_ 1 *photcode_output = PhotCode_Internal_To_PS1_DEV_1(table[0].code, table[0].Ncode);31 PhotCode_PS1_DEV_2 *photcode_output = PhotCode_Internal_To_PS1_DEV_2 (table[0].code, table[0].Ncode); 32 32 33 33 /* convert FITS format data to internal format (byteswaps & EXTNAME) */ 34 34 gfits_db_create (&db); 35 gfits_table_set_PhotCode_PS1_DEV_ 1(&db.ftable, photcode_output, table[0].Ncode);35 gfits_table_set_PhotCode_PS1_DEV_2 (&db.ftable, photcode_output, table[0].Ncode); 36 36 gfits_db_save (&db); 37 37 gfits_db_close (&db); -
trunk/Ohana/src/libdvo/src/dvo_catalog.c
r16057 r16810 51 51 if (!strcasecmp (catformat, "PANSTARRS_DEV_1")) return (DVO_FORMAT_PANSTARRS_DEV_1); 52 52 if (!strcasecmp (catformat, "PS1_DEV_1")) return (DVO_FORMAT_PS1_DEV_1); 53 if (!strcasecmp (catformat, "PS1_DEV_2")) return (DVO_FORMAT_PS1_DEV_2); 53 54 return (DVO_FORMAT_UNDEF); 54 55 } -
trunk/Ohana/src/libdvo/src/dvo_catalog_chipcoords.c
r12332 r16810 54 54 55 55 for (i = 0; i < catalog[0].Naverage; i++) { 56 m = average[i]. offset;57 for (j = 0; j < average[i].Nm ; j++, m++) {56 m = average[i].measureOffset; 57 for (j = 0; j < average[i].Nmeasure; j++, m++) { 58 58 ra = average[i].R - measure[m].dR / 3600.0; 59 59 dec = average[i].D - measure[m].dD / 3600.0; -
trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
r15743 r16810 73 73 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 74 74 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 75 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 75 76 76 77 default: … … 188 189 if (catalog[0].catflags & LOAD_AVES) { 189 190 for (i = Nmeas = Nmiss = 0; i < catalog[0].Naverage; i++) { 190 Nmeas += catalog[0].average[i].Nm ;191 Nmiss += catalog[0].average[i].N n;191 Nmeas += catalog[0].average[i].Nmeasure; 192 Nmiss += catalog[0].average[i].Nmissing; 192 193 } 193 194 if ((Nmeas != catalog[0].Nmeasure) || (Nmiss != catalog[0].Nmissing)) { … … 256 257 if (catalog[0].catformat == DVO_FORMAT_PANSTARRS_DEV_1) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS_DEV_1"); 257 258 if (catalog[0].catformat == DVO_FORMAT_PS1_DEV_1) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_DEV_1"); 259 if (catalog[0].catformat == DVO_FORMAT_PS1_DEV_2) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_DEV_2"); 258 260 259 261 /* rewind file pointers and truncate file */ … … 350 352 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 351 353 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 354 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 352 355 353 356 default: … … 395 398 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 396 399 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 400 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 397 401 398 402 default: … … 444 448 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 445 449 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 450 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 446 451 447 452 default: … … 489 494 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 490 495 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 496 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 491 497 492 498 default: … … 538 544 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 539 545 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 546 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 540 547 541 548 default: … … 583 590 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 584 591 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 592 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 585 593 586 594 default: -
trunk/Ohana/src/libdvo/src/dvo_convert.c
r15487 r16810 48 48 CONVERT_FORMAT ("DVO_AVERAGE_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1); 49 49 CONVERT_FORMAT ("DVO_AVERAGE_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1); 50 CONVERT_FORMAT ("DVO_AVERAGE_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2); 50 51 # undef CONVERT_FORMAT 51 52 … … 77 78 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 78 79 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 80 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 79 81 # undef FORMAT_CASE 80 82 … … 119 121 CONVERT_FORMAT ("DVO_MEASURE_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1); 120 122 CONVERT_FORMAT ("DVO_MEASURE_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1); 123 CONVERT_FORMAT ("DVO_MEASURE_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2); 121 124 # undef CONVERT_FORMAT 122 125 … … 148 151 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 149 152 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 153 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 150 154 # undef FORMAT_CASE 151 155 … … 190 194 CONVERT_FORMAT ("DVO_SECFILT_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1); 191 195 CONVERT_FORMAT ("DVO_SECFILT_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1); 196 CONVERT_FORMAT ("DVO_SECFILT_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2); 192 197 # undef CONVERT_FORMAT 193 198 … … 219 224 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 220 225 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 226 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 221 227 # undef FORMAT_CASE 222 228 … … 281 287 CONVERT_FORMAT ("DVO_IMAGE_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1); 282 288 CONVERT_FORMAT ("DVO_IMAGE_PS1_DEV_1", PS1_DEV_1, PS1_DEV_1); 289 CONVERT_FORMAT ("DVO_IMAGE_PS1_DEV_2", PS1_DEV_2, PS1_DEV_2); 283 290 # undef CONVERT_FORMAT 284 291 … … 313 320 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 314 321 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 322 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 315 323 # undef FORMAT_CASE 316 324 … … 361 369 FORMAT_CASE (PANSTARRS_DEV_1, Panstarrs_DEV_1); 362 370 FORMAT_CASE (PS1_DEV_1, PS1_DEV_1); 371 FORMAT_CASE (PS1_DEV_2, PS1_DEV_2); 363 372 # undef FORMAT_CASE 364 373 -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
r15038 r16810 1 1 # include <dvo.h> 2 2 3 // XXX these functions ahve to be adjusted to agree with the new definition of PS1_DEV_1 4 5 /* convert panstarrs-format measures to internal measures */ 3 /* convert PS1_DEV_1 formats to internal formats */ 4 6 5 Measure *Measure_PS1_DEV_1_ToInternal (Measure_PS1_DEV_1 *in, int Nvalues) { 7 6 … … 16 15 out[i].M = in[i].M; 17 16 out[i].Mcal = in[i].Mcal; 18 out[i].M gal= in[i].Mgal;17 out[i].Map = in[i].Mgal; 19 18 out[i].dM = in[i].dM; 20 19 out[i].dt = in[i].dt; … … 30 29 out[i].imageID = in[i].imageID; 31 30 out[i].qPSF = in[i].qPSF; 32 out[i].psf Prob = in[i].psfProb;31 out[i].psfChisq = in[i].psfChisq; 33 32 out[i].crNsigma = in[i].crNsigma; 34 33 out[i].extNsigma = in[i].extNsigma; … … 47 46 } 48 47 49 /* convert internal measures to panstarrs-format measures */50 48 Measure_PS1_DEV_1 *MeasureInternalTo_PS1_DEV_1 (Measure *in, int Nvalues) { 51 49 … … 60 58 out[i].M = in[i].M; 61 59 out[i].Mcal = in[i].Mcal; 62 out[i].Mgal = in[i].M gal;60 out[i].Mgal = in[i].Map; 63 61 out[i].dM = in[i].dM; 64 62 out[i].dt = in[i].dt; … … 74 72 out[i].imageID = in[i].imageID; 75 73 out[i].qPSF = in[i].qPSF; 76 out[i].psf Prob = in[i].psfProb;74 out[i].psfChisq = in[i].psfChisq; 77 75 out[i].crNsigma = in[i].crNsigma; 78 76 out[i].extNsigma = in[i].extNsigma; … … 91 89 } 92 90 93 /* convert panstarrs-format averages to internal averages */ 94 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used 91 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used 95 92 Average *Average_PS1_DEV_1_ToInternal (Average_PS1_DEV_1 *in, int Nvalues, SecFilt **primary) { 96 93 … … 99 96 100 97 ALLOCATE (out, Average, Nvalues); 98 99 for (i = 0; i < Nvalues; i++) { 100 out[i].R = in[i].R; 101 out[i].D = in[i].D; 102 out[i].Xp = in[i].Xp; 103 out[i].Nmeasure = in[i].Nm; 104 out[i].Nmissing = in[i].Nn; 105 out[i].code = in[i].code; 106 out[i].measureOffset = in[i].offset; 107 out[i].missingOffset = in[i].missing; 108 out[i].dR = in[i].dR; 109 out[i].dD = in[i].dD; 110 out[i].uR = in[i].uR; 111 out[i].uD = in[i].uD; 112 out[i].duR = in[i].duR; 113 out[i].duD = in[i].duD; 114 out[i].P = in[i].P; 115 out[i].dP = in[i].dP; 116 out[i].objID = in[i].objID; 117 out[i].catID = in[i].catID; 118 } 119 return (out); 120 } 121 122 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used 123 Average_PS1_DEV_1 *AverageInternalTo_PS1_DEV_1 (Average *in, int Nvalues, SecFilt *primary) { 124 125 int i; 126 Average_PS1_DEV_1 *out; 127 128 ALLOCATE (out, Average_PS1_DEV_1, Nvalues); 101 129 102 130 for (i = 0; i < Nvalues; i++) { … … 104 132 out[i].D = in[i].D; 105 133 out[i].Xp = in[i].Xp; 106 out[i].Nm = in[i].Nm ;107 out[i].Nn = in[i].N n;134 out[i].Nm = in[i].Nmeasure; 135 out[i].Nn = in[i].Nmissing; 108 136 out[i].code = in[i].code; 109 out[i].offset = in[i]. offset;110 out[i].missing = in[i].missing ;137 out[i].offset = in[i].measureOffset; 138 out[i].missing = in[i].missingOffset; 111 139 out[i].dR = in[i].dR; 112 140 out[i].dD = in[i].dD; … … 117 145 out[i].P = in[i].P; 118 146 out[i].dP = in[i].dP; 119 out[i].objID_hi = in[i].objID_hi; 120 out[i].objID_lo = in[i].objID_lo; 121 } 122 return (out); 123 } 124 125 /* convert internal averages to panstarrs-format averages */ 126 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used 127 Average_PS1_DEV_1 *AverageInternalTo_PS1_DEV_1 (Average *in, int Nvalues, SecFilt *primary) { 128 129 int i; 130 Average_PS1_DEV_1 *out; 131 132 ALLOCATE (out, Average_PS1_DEV_1, Nvalues); 133 134 for (i = 0; i < Nvalues; i++) { 135 out[i].R = in[i].R; 136 out[i].D = in[i].D; 137 out[i].Xp = in[i].Xp; 138 out[i].Nm = in[i].Nm; 139 out[i].Nn = in[i].Nn; 140 out[i].code = in[i].code; 141 out[i].offset = in[i].offset; 142 out[i].missing = in[i].missing; 143 out[i].dR = in[i].dR; 144 out[i].dD = in[i].dD; 145 out[i].uR = in[i].uR; 146 out[i].uD = in[i].uD; 147 out[i].duR = in[i].duR; 148 out[i].duD = in[i].duD; 149 out[i].P = in[i].P; 150 out[i].dP = in[i].dP; 151 out[i].objID_hi = in[i].objID_hi; 152 out[i].objID_lo = in[i].objID_lo; 153 } 154 return (out); 155 } 156 157 /* convert panstarrs-format secfilts to internal secfilts */ 147 out[i].objID = in[i].objID; 148 out[i].catID = in[i].catID; 149 } 150 return (out); 151 } 152 158 153 SecFilt *SecFilt_PS1_DEV_1_ToInternal (SecFilt_PS1_DEV_1 *in, int Nvalues) { 159 154 … … 173 168 } 174 169 175 /* convert internal secfilts to panstarrs-format secfilts */176 170 SecFilt_PS1_DEV_1 *SecFiltInternalTo_PS1_DEV_1 (SecFilt *in, int Nvalues) { 177 171 … … 191 185 } 192 186 193 /* convert panstarrs-format images to internal images */194 187 Image *Image_PS1_DEV_1_ToInternal (Image_PS1_DEV_1 *in, int Nvalues) { 195 188 … … 300 293 return (out); 301 294 } 295 296 PhotCode_PS1_DEV_1 *PhotCode_Internal_To_PS1_DEV_1 (PhotCode *in, int Nvalues) { 297 298 int i; 299 PhotCode_PS1_DEV_1 *out; 300 301 ALLOCATE (out, PhotCode_PS1_DEV_1, Nvalues); 302 303 for (i = 0; i < Nvalues; i++) { 304 strncpy (out[i].name, in[i].name, 31); // out[32], in[32] 305 out[i].name[31] = 0; // force termination 306 307 out[i].code = in[i].code; 308 out[i].type = in[i].type; 309 out[i].C = in[i].C; 310 out[i].dC = in[i].dC; 311 out[i].dX = in[i].dX; 312 out[i].K = in[i].K; 313 out[i].c1 = in[i].c1; 314 out[i].c2 = in[i].c2; 315 out[i].equiv = in[i].equiv; 316 out[i].Nc = in[i].Nc; 317 memcpy (out[i].X, in[i].X, 4*sizeof(float)); 318 319 out[i].astromErrMagScale = out[i].astromErrMagScale; 320 out[i].photomErrSys = out[i].photomErrSys; 321 322 } 323 return (out); 324 } 325 326 PhotCode *PhotCode_PS1_DEV_1_To_Internal (PhotCode_PS1_DEV_1 *in, int Nvalues) { 327 328 int i; 329 PhotCode *out; 330 331 ALLOCATE (out, PhotCode, Nvalues); 332 333 for (i = 0; i < Nvalues; i++) { 334 strncpy (out[i].name, in[i].name, 31); // out[32], in[32] 335 out[i].name[31] = 0; // force termination 336 337 out[i].code = in[i].code; 338 out[i].type = in[i].type; 339 out[i].C = in[i].C; 340 out[i].dC = in[i].dC; 341 out[i].dX = in[i].dX; 342 out[i].K = in[i].K; 343 out[i].c1 = in[i].c1; 344 out[i].c2 = in[i].c2; 345 out[i].equiv = in[i].equiv; 346 out[i].Nc = in[i].Nc; 347 348 // not defined in PS1_DEV_1 349 out[i].astromErrSys = 0.0; 350 out[i].astromErrScale = 0.0; 351 out[i].astromErrMagScale = in[i].astromErrMagScale; 352 out[i].photomErrSys = in[i].photomErrSys; 353 354 memcpy (out[i].X, in[i].X, 4*sizeof(float)); 355 356 } 357 return (out); 358 } -
trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c
r15511 r16810 16 16 out[i].dt = (in[i].dt == NAN_S_SHORT) ? NAN : in[i].dt * 0.001; 17 17 out[i].Mcal = (in[i].Mcal == NAN_S_SHORT) ? NAN : in[i].Mcal * 0.001; 18 out[i].Mgal = (in[i].Mgal == NAN_S_SHORT) ? NAN : in[i].Mgal * 0.001; 18 19 // 2008.02.26 : I've renamed Mgal to Map, and intend it to be used per aperture 20 // magnitudes. Most uses of Mgal in the past were actually aperture (isophotal) mags 21 out[i].Map = (in[i].Mgal == NAN_S_SHORT) ? NAN : in[i].Mgal * 0.001; 19 22 out[i].airmass = (in[i].airmass == NAN_S_SHORT) ? NAN : in[i].airmass* 0.001; 20 23 out[i].FWx = in[i].FWx; … … 39 42 out[i].dSky = 0; 40 43 out[i].qPSF = 0; 41 out[i].psf Prob= 0;44 out[i].psfChisq = 0; 42 45 out[i].crNsigma = 0; 43 46 out[i].extNsigma = 0; … … 66 69 out[i].dt = isnan(in[i].dt ) ? NAN_S_SHORT : in[i].dt * 1000.0; 67 70 out[i].Mcal = isnan(in[i].Mcal ) ? NAN_S_SHORT : in[i].Mcal * 1000.0; 68 out[i].Mgal = isnan(in[i].M gal ) ? NAN_S_SHORT : in[i].Mgal* 1000.0;71 out[i].Mgal = isnan(in[i].Map ) ? NAN_S_SHORT : in[i].Map * 1000.0; 69 72 out[i].airmass = isnan(in[i].airmass) ? NAN_S_SHORT : in[i].airmass * 1000.0; 70 73 … … 95 98 96 99 for (i = 0; i < Nvalues; i++) { 97 out[i].R = in[i].R;98 out[i].D = in[i].D;99 out[i].Xp = in[i].Xp;100 out[i].Nm = in[i].Nm;101 out[i].N n= in[i].Nn;102 out[i].code = in[i].code;103 out[i]. offset= in[i].offset;104 out[i].missing = in[i].missing;100 out[i].R = in[i].R; 101 out[i].D = in[i].D; 102 out[i].Xp = in[i].Xp; 103 out[i].Nmeasure = in[i].Nm; 104 out[i].Nmissing = in[i].Nn; 105 out[i].code = in[i].code; 106 out[i].measureOffset = in[i].offset; 107 out[i].missingOffset = in[i].missing; 105 108 106 109 /* these don't exist in Elixir */ … … 115 118 116 119 /* XXX add these later */ 117 out[i].objID _hi= 0;118 out[i]. objID_lo= 0;120 out[i].objID = 0; 121 out[i].catID = 0; 119 122 120 123 primary[0][i].M = (in[i].M == NAN_S_SHORT) ? NAN : in[i].M * 0.001; … … 139 142 out[i].D = in[i].D; 140 143 out[i].Xp = in[i].Xp; 141 out[i].Nm = in[i].Nm ;142 out[i].Nn = in[i].N n;144 out[i].Nm = in[i].Nmeasure; 145 out[i].Nn = in[i].Nmissing; 143 146 out[i].code = in[i].code; 144 out[i].offset = in[i]. offset;145 out[i].missing = in[i].missing ;147 out[i].offset = in[i].measureOffset; 148 out[i].missing = in[i].missingOffset; 146 149 147 150 out[i].M = isnan(primary[i].M) ? NAN_S_SHORT : primary[i].M * 1000.0; … … 297 300 return (out); 298 301 } 302 303 PhotCode_Elixir *PhotCode_Internal_To_Elixir (PhotCode *in, int Nvalues) { 304 305 int i; 306 PhotCode_Elixir *out; 307 308 ALLOCATE (out, PhotCode_Elixir, Nvalues); 309 310 for (i = 0; i < Nvalues; i++) { 311 strncpy (out[i].name, in[i].name, 31); // out[32], in[32] 312 out[i].name[31] = 0; // force termination 313 314 out[i].code = in[i].code; 315 out[i].type = in[i].type; 316 out[i].C = in[i].C; 317 out[i].dC = in[i].dC; 318 out[i].dX = in[i].dX; 319 out[i].K = in[i].K; 320 out[i].c1 = in[i].c1; 321 out[i].c2 = in[i].c2; 322 out[i].equiv = in[i].equiv; 323 out[i].Nc = in[i].Nc; 324 memcpy (out[i].X, in[i].X, 4*sizeof(float)); 325 } 326 return (out); 327 } 328 329 PhotCode *PhotCode_Elixir_To_Internal (PhotCode_Elixir *in, int Nvalues) { 330 331 int i; 332 PhotCode *out; 333 334 ALLOCATE (out, PhotCode, Nvalues); 335 336 for (i = 0; i < Nvalues; i++) { 337 strncpy (out[i].name, in[i].name, 31); // out[32], in[32] 338 out[i].name[31] = 0; // force termination 339 340 out[i].code = in[i].code; 341 out[i].type = in[i].type; 342 out[i].C = in[i].C; 343 out[i].dC = in[i].dC; 344 out[i].dX = in[i].dX; 345 out[i].K = in[i].K; 346 out[i].c1 = in[i].c1; 347 out[i].c2 = in[i].c2; 348 out[i].equiv = in[i].equiv; 349 out[i].Nc = in[i].Nc; 350 memcpy (out[i].X, in[i].X, 4*sizeof(float)); 351 352 // not defined in Elixir: 353 out[i].astromErrSys = 0.0; 354 out[i].astromErrScale = 0.0; 355 out[i].astromErrMagScale = 0.0; 356 out[i].photomErrSys = 0.0; 357 } 358 return (out); 359 } -
trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c
r15511 r16810 24 24 25 25 /* these values don't exist in the Loneos format */ 26 out[i].Mgal = out[i].M; 27 out[i].dt = 0; 28 out[i].airmass = 0; 29 out[i].az = 0; 30 out[i].FWx = 0; 31 out[i].FWy = 0; 32 out[i].theta = 0; 33 out[i].stargal = 0; 34 out[i].Sky = 0; 35 out[i].dSky = 0; 36 out[i].qPSF = 0; 37 out[i].psfProb = 0; 26 27 // 2008.02.26 : I've renamed Mgal to Map, and intend it to be used per aperture 28 // magnitudes. Most uses of Mgal in the past were actually aperture (isophotal) mags 29 out[i].Map = out[i].M; 30 out[i].dt = 0; 31 out[i].airmass = 0; 32 out[i].az = 0; 33 out[i].FWx = 0; 34 out[i].FWy = 0; 35 out[i].theta = 0; 36 out[i].stargal = 0; 37 out[i].Sky = 0; 38 out[i].dSky = 0; 39 out[i].qPSF = 0; 40 out[i].psfChisq = 0; 38 41 out[i].crNsigma = 0; 39 42 out[i].extNsigma = 0; … … 87 90 88 91 for (i = 0; i < Nvalues; i++) { 89 out[i].R = in[i].R;90 out[i].D = in[i].D;91 out[i].Xp = in[i].Xp;92 out[i].Nm = in[i].Nm;93 out[i].N n= in[i].Nn;94 out[i].code = in[i].code;95 out[i]. offset= in[i].offset;96 out[i].missing = in[i].missing;92 out[i].R = in[i].R; 93 out[i].D = in[i].D; 94 out[i].Xp = in[i].Xp; 95 out[i].Nmeasure = in[i].Nm; 96 out[i].Nmissing = in[i].Nn; 97 out[i].code = in[i].code; 98 out[i].measureOffset = in[i].offset; 99 out[i].missingOffset = in[i].missing; 97 100 98 101 /* these don't exist in Loneos */ … … 107 110 108 111 /* XXX add these later */ 109 out[i].objID _hi= 0;110 out[i]. objID_lo= 0;112 out[i].objID = 0; 113 out[i].catID = 0; 111 114 112 115 primary[0][i].M = (in[i].M == NAN_S_SHORT) ? NAN : in[i].M * 0.001; … … 131 134 out[i].D = in[i].D; 132 135 out[i].Xp = in[i].Xp; 133 out[i].Nm = in[i].Nm ;134 out[i].Nn = in[i].N n;136 out[i].Nm = in[i].Nmeasure; 137 out[i].Nn = in[i].Nmissing; 135 138 out[i].code = in[i].code; 136 out[i].offset = in[i]. offset;137 out[i].missing = in[i].missing ;139 out[i].offset = in[i].measureOffset; 140 out[i].missing = in[i].missingOffset; 138 141 139 142 out[i].M = isnan(primary[i].M) ? NAN_S_SHORT : primary[i].M * 1000.0; -
trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
r15511 r16810 15 15 out[i].dM = in[i].dM; 16 16 out[i].Mcal = in[i].Mcal; 17 out[i].Mgal = in[i].Mgal; 17 18 // 2008.02.26 : I've renamed Mgal to Map, and intend it to be used per aperture 19 // magnitudes. Most uses of Mgal in the past were actually aperture (isophotal) mags 20 out[i].Map = in[i].Mgal; 18 21 out[i].airmass = in[i].airmass; 19 22 out[i].az = in[i].az; … … 39 42 40 43 // these don't have a correspondence 41 out[i].psf Prob= 0;44 out[i].psfChisq = 0; 42 45 out[i].crNsigma = 0; 43 46 out[i].extNsigma = 0; … … 61 64 out[i].dM = in[i].dM; 62 65 out[i].Mcal = in[i].Mcal; 63 out[i].Mgal = in[i].M gal;66 out[i].Mgal = in[i].Map; 64 67 out[i].airmass = in[i].airmass; 65 68 out[i].az = in[i].az; … … 99 102 100 103 for (i = 0; i < Nvalues; i++) { 104 out[i].R = in[i].R; 105 out[i].D = in[i].D; 106 out[i].Xp = in[i].Xp; 107 out[i].Nmeasure = in[i].Nm; 108 out[i].Nmissing = in[i].Nn; 109 out[i].code = in[i].code; 110 out[i].measureOffset = in[i].offset; 111 out[i].missingOffset = in[i].missing; 112 out[i].dR = in[i].dR; 113 out[i].dD = in[i].dD; 114 out[i].uR = in[i].uR; 115 out[i].uD = in[i].uD; 116 out[i].duR = in[i].duR; 117 out[i].duD = in[i].duD; 118 out[i].P = in[i].P; 119 out[i].dP = in[i].dP; 120 out[i].objID = in[i].objID; 121 out[i].catID = in[i].catID; 122 } 123 return (out); 124 } 125 126 /* convert internal averages to panstarrs-format averages */ 127 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used 128 Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, int Nvalues, SecFilt *primary) { 129 130 int i; 131 Average_Panstarrs_DEV_0 *out; 132 133 ALLOCATE (out, Average_Panstarrs_DEV_0, Nvalues); 134 135 for (i = 0; i < Nvalues; i++) { 101 136 out[i].R = in[i].R; 102 137 out[i].D = in[i].D; 103 138 out[i].Xp = in[i].Xp; 104 out[i].Nm = in[i].Nm ;105 out[i].Nn = in[i].N n;139 out[i].Nm = in[i].Nmeasure; 140 out[i].Nn = in[i].Nmissing; 106 141 out[i].code = in[i].code; 107 out[i].offset = in[i]. offset;108 out[i].missing = in[i].missing ;142 out[i].offset = in[i].measureOffset; 143 out[i].missing = in[i].missingOffset; 109 144 out[i].dR = in[i].dR; 110 145 out[i].dD = in[i].dD; … … 115 150 out[i].P = in[i].P; 116 151 out[i].dP = in[i].dP; 117 out[i].objID_hi = in[i].objID_hi; 118 out[i].objID_lo = in[i].objID_lo; 119 } 120 return (out); 121 } 122 123 /* convert internal averages to panstarrs-format averages */ 124 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used 125 Average_Panstarrs_DEV_0 *AverageInternalTo_Panstarrs_DEV_0 (Average *in, int Nvalues, SecFilt *primary) { 126 127 int i; 128 Average_Panstarrs_DEV_0 *out; 129 130 ALLOCATE (out, Average_Panstarrs_DEV_0, Nvalues); 131 132 for (i = 0; i < Nvalues; i++) { 133 out[i].R = in[i].R; 134 out[i].D = in[i].D; 135 out[i].Xp = in[i].Xp; 136 out[i].Nm = in[i].Nm; 137 out[i].Nn = in[i].Nn; 138 out[i].code = in[i].code; 139 out[i].offset = in[i].offset; 140 out[i].missing = in[i].missing; 141 out[i].dR = in[i].dR; 142 out[i].dD = in[i].dD; 143 out[i].uR = in[i].uR; 144 out[i].uD = in[i].uD; 145 out[i].duR = in[i].duR; 146 out[i].duD = in[i].duD; 147 out[i].P = in[i].P; 148 out[i].dP = in[i].dP; 149 out[i].objID_hi = in[i].objID_hi; 150 out[i].objID_lo = in[i].objID_lo; 152 out[i].objID = in[i].objID; 153 out[i].catID = in[i].catID; 151 154 } 152 155 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
r15511 r16810 15 15 out[i].dM = in[i].dM; 16 16 out[i].Mcal = in[i].Mcal; 17 out[i].Mgal = in[i].Mgal; 17 18 // 2008.02.26 : I've renamed Mgal to Map, and intend it to be used per aperture 19 // magnitudes. Most uses of Mgal in the past were actually aperture (isophotal) mags 20 out[i].Map = in[i].Mgal; 18 21 out[i].airmass = in[i].airmass; 19 22 out[i].az = in[i].az; … … 39 42 40 43 // these don't have a correspondence 41 out[i].psf Prob= 0;44 out[i].psfChisq = 0; 42 45 out[i].crNsigma = 0; 43 46 out[i].extNsigma = 0; … … 61 64 out[i].dM = in[i].dM; 62 65 out[i].Mcal = in[i].Mcal; 63 out[i].Mgal = in[i].M gal;66 out[i].Mgal = in[i].Map; 64 67 out[i].airmass = in[i].airmass; 65 68 out[i].az = in[i].az; … … 99 102 100 103 for (i = 0; i < Nvalues; i++) { 104 out[i].R = in[i].R; 105 out[i].D = in[i].D; 106 out[i].Xp = in[i].Xp; 107 out[i].Nmeasure = in[i].Nm; 108 out[i].Nmissing = in[i].Nn; 109 out[i].code = in[i].code; 110 out[i].measureOffset = in[i].offset; 111 out[i].missingOffset = in[i].missing; 112 out[i].dR = in[i].dR; 113 out[i].dD = in[i].dD; 114 out[i].uR = in[i].uR; 115 out[i].uD = in[i].uD; 116 out[i].duR = in[i].duR; 117 out[i].duD = in[i].duD; 118 out[i].P = in[i].P; 119 out[i].dP = in[i].dP; 120 out[i].objID = in[i].objID; 121 out[i].catID = in[i].catID; 122 } 123 return (out); 124 } 125 126 /* convert internal averages to panstarrs-format averages */ 127 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used 128 Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, int Nvalues, SecFilt *primary) { 129 130 int i; 131 Average_Panstarrs_DEV_1 *out; 132 133 ALLOCATE (out, Average_Panstarrs_DEV_1, Nvalues); 134 135 for (i = 0; i < Nvalues; i++) { 101 136 out[i].R = in[i].R; 102 137 out[i].D = in[i].D; 103 138 out[i].Xp = in[i].Xp; 104 out[i].Nm = in[i].Nm ;105 out[i].Nn = in[i].N n;139 out[i].Nm = in[i].Nmeasure; 140 out[i].Nn = in[i].Nmissing; 106 141 out[i].code = in[i].code; 107 out[i].offset = in[i]. offset;108 out[i].missing = in[i].missing ;142 out[i].offset = in[i].measureOffset; 143 out[i].missing = in[i].missingOffset; 109 144 out[i].dR = in[i].dR; 110 145 out[i].dD = in[i].dD; … … 115 150 out[i].P = in[i].P; 116 151 out[i].dP = in[i].dP; 117 out[i].objID_hi = in[i].objID_hi; 118 out[i].objID_lo = in[i].objID_lo; 119 } 120 return (out); 121 } 122 123 /* convert internal averages to panstarrs-format averages */ 124 // 'primary is needed to conform with the API for Loneos and Elixir, but is not used 125 Average_Panstarrs_DEV_1 *AverageInternalTo_Panstarrs_DEV_1 (Average *in, int Nvalues, SecFilt *primary) { 126 127 int i; 128 Average_Panstarrs_DEV_1 *out; 129 130 ALLOCATE (out, Average_Panstarrs_DEV_1, Nvalues); 131 132 for (i = 0; i < Nvalues; i++) { 133 out[i].R = in[i].R; 134 out[i].D = in[i].D; 135 out[i].Xp = in[i].Xp; 136 out[i].Nm = in[i].Nm; 137 out[i].Nn = in[i].Nn; 138 out[i].code = in[i].code; 139 out[i].offset = in[i].offset; 140 out[i].missing = in[i].missing; 141 out[i].dR = in[i].dR; 142 out[i].dD = in[i].dD; 143 out[i].uR = in[i].uR; 144 out[i].uD = in[i].uD; 145 out[i].duR = in[i].duR; 146 out[i].duD = in[i].duD; 147 out[i].P = in[i].P; 148 out[i].dP = in[i].dP; 149 out[i].objID_hi = in[i].objID_hi; 150 out[i].objID_lo = in[i].objID_lo; 152 out[i].objID = in[i].objID; 153 out[i].catID = in[i].catID; 151 154 } 152 155 return (out); -
trunk/Ohana/src/libdvo/src/dvo_image.c
r15749 r16810 194 194 if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_1) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PANSTARRS_DEV_1"); 195 195 if (db[0].format == DVO_FORMAT_PS1_DEV_1) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_DEV_1"); 196 if (db[0].format == DVO_FORMAT_PS1_DEV_2) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_DEV_2"); 196 197 197 198 return; -
trunk/Ohana/src/libdvo/src/dvo_image_raw.c
r15487 r16810 53 53 if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_1) ImageSize = sizeof(Image_Panstarrs_DEV_1); 54 54 if (db[0].format == DVO_FORMAT_PS1_DEV_1) ImageSize = sizeof(Image_PS1_DEV_1); 55 if (db[0].format == DVO_FORMAT_PS1_DEV_2) ImageSize = sizeof(Image_PS1_DEV_2); 55 56 56 57 /* check that filesize makes sense */ … … 76 77 if (db[0].format == DVO_FORMAT_PANSTARRS_DEV_1) gfits_table_mkheader_Image_Panstarrs_DEV_1 (&db[0].theader); 77 78 if (db[0].format == DVO_FORMAT_PS1_DEV_1) gfits_table_mkheader_Image_PS1_DEV_1 (&db[0].theader); 79 if (db[0].format == DVO_FORMAT_PS1_DEV_2) gfits_table_mkheader_Image_PS1_DEV_2 (&db[0].theader); 78 80 79 81 /* read data from file */ -
trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
r15514 r16810 370 370 if (color == NULL) return (NAN); 371 371 if (color[0].type == PHOT_REF) { 372 for (i = 0; (i < average[0].Nm ) && (isnan(m1)); i++) {372 for (i = 0; (i < average[0].Nmeasure) && (isnan(m1)); i++) { 373 373 if (measure[i].photcode == color[0].code) { 374 374 m1 = measure[i].M; … … 384 384 if (color == NULL) return (NAN); 385 385 if (color[0].type == PHOT_REF) { 386 for (i = 0; (i < average[0].Nm ) && (isnan(m2)); i++) {386 for (i = 0; (i < average[0].Nmeasure) && (isnan(m2)); i++) { 387 387 if (measure[i].photcode == color[0].code) { 388 388 m2 = measure[i].M; … … 466 466 if (code == NULL) return (FALSE); 467 467 if (code[0].type == PHOT_REF) { 468 for (i = 0; i < average[0].Nm ; i++) {468 for (i = 0; i < average[0].Nmeasure; i++) { 469 469 if (measure[i].photcode == c1) { 470 470 M1 = measure[i].M; … … 482 482 if (code == NULL) return (FALSE); 483 483 if (code[0].type == PHOT_REF) { 484 for (i = 0; i < average[0].Nm ; i++) {484 for (i = 0; i < average[0].Nmeasure; i++) { 485 485 if (measure[i].photcode == c2) { 486 486 M2 = measure[i].M; -
trunk/Ohana/src/libfits/include/gfitsio.h
r15751 r16810 184 184 int gfits_get_bintable_column PROTO((Header *header, FTable *table, char *label, void **data)); 185 185 int gfits_get_bintable_column_type PROTO((Header *header, char *label, char *type, int *Nval)); 186 void *gfits_get_bintable_column_data PROTO((Header *header, FTable *table, char *label, char *type, int *Nrow, int *Ncol)); 186 187 int gfits_get_table_column PROTO((Header *header, FTable *table, char *label, void **data)); 187 188 int gfits_get_table_column_type PROTO((Header *header, char *label, char *type)); -
trunk/Ohana/src/libfits/table/F_get_column.c
r16139 r16810 14 14 tmp = Pin[2]; Pin[2] = Pin[5]; Pin[5] = tmp; \ 15 15 tmp = Pin[3]; Pin[3] = Pin[4]; Pin[4] = tmp; } 16 17 void *gfits_get_bintable_column_data (Header *header, FTable *table, char *label, char *type, int *Nrow, int *Ncol) { 18 19 int i, N, Nfields, Nval, Nbytes, Nx, Ny, Nstart, Nv, Nb; 20 char tlabel[80], field[80], format[80], tmpline[16]; 21 char *Pin, *Pout, *array; 22 double Bscale, Bzero; 23 24 if (label == (char *) NULL) return (NULL); 25 if (label[0] == 0) return (NULL); 26 27 /* find label in header */ 28 tlabel[0] = 0; 29 if (!gfits_scan (header, "TFIELDS", "%d", 1, &Nfields)) return (NULL); 30 for (i = 1; strcmp (label, tlabel) && (i < Nfields + 1); i++) { 31 sprintf (field, "TTYPE%d", i); 32 gfits_scan (header, field, "%s", 1, tlabel); 33 } 34 if (strcmp (label, tlabel)) return (NULL); 35 N = i - 1; 36 37 Bscale = 1; 38 Bzero = 0; 39 40 /* interpret format */ 41 sprintf (field, "TSCAL%d", N); 42 gfits_scan (header, field, "%lf", 1, &Bscale); 43 sprintf (field, "TZERO%d", N); 44 gfits_scan (header, field, "%lf", 1, &Bzero); 45 sprintf (field, "TFORM%d", N); 46 gfits_scan (header, field, "%s", 1, format); 47 48 if (!gfits_bintable_format (format, type, &Nval, &Nbytes)) return (NULL); 49 50 /* check existing table dimensions */ 51 gfits_scan (header, "NAXIS1", "%d", 1, &Nx); 52 gfits_scan (header, "NAXIS2", "%d", 1, &Ny); 53 54 /* scan columns to find insert point */ 55 Nstart = 0; 56 for (i = 1; i < N; i++) { 57 sprintf (field, "TFORM%d", i); 58 gfits_scan (header, field, "%s", 1, format); 59 gfits_bintable_format (format, tmpline, &Nv, &Nb); 60 Nstart += Nv*Nb; 61 } 62 63 /* extract bytes from table into array */ 64 ALLOCATE (array, char, Nbytes*Nval*Ny); 65 Pin = table[0].buffer + Nstart; 66 Pout = array; 67 for (i = 0; i < Ny; i++, Pin += Nx, Pout += Nval*Nbytes) { 68 memcpy (Pout, Pin, Nval*Nbytes); 69 } 70 71 /* convert data in-situ with correct type, byte swap and Bzero/Bscale */ 72 Pin = array; 73 Pout = array; 74 if (!strcmp (type, "char")) { 75 for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) { 76 *(char *)Pout = *(char *)Pin*Bscale + Bzero; 77 } 78 } 79 if (!strcmp (type, "short")) { 80 for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) { 81 # ifdef BYTE_SWAP 82 SWAP_BYTE; 83 # endif 84 *(short *)Pout = *(short *)Pin*Bscale + Bzero; 85 } 86 } 87 if (!strcmp (type, "int")) { 88 for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) { 89 # ifdef BYTE_SWAP 90 SWAP_WORD; 91 # endif 92 *(int *)Pout = *(int *)Pin*Bscale + Bzero; 93 } 94 } 95 if (!strcmp (type, "float")) { 96 for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) { 97 # ifdef BYTE_SWAP 98 SWAP_WORD; 99 # endif 100 *(float *)Pout = *(float *)Pin*Bscale + Bzero; 101 } 102 } 103 if (!strcmp (type, "double")) { 104 for (i = 0; i < Nval*Ny; i++, Pin+=Nbytes, Pout+=Nbytes) { 105 # ifdef BYTE_SWAP 106 SWAP_DBLE; 107 # endif 108 *(double *)Pout = *(double *)Pin*Bscale + Bzero; 109 } 110 } 111 112 *Ncol = Nval; 113 *Nrow = Ny; 114 return (array); 115 } 16 116 17 117 /***********************/ -
trunk/Ohana/src/libkapa/src/KapaOpen.c
r14590 r16810 2 2 3 3 # define MY_PORT 2500 4 # define MY_PORT_MAX 2520 4 5 # define MY_WAIT 100000 5 6 # define DEBUG 0 … … 26 27 } 27 28 28 if (DEBUG) fprintf (stderr, "init sock: %d, len: %d \n", InitSocket, length);29 if (DEBUG) fprintf (stderr, "init sock: %d, len: %d, port %d\n", InitSocket, length, Address[0].sin_port); 29 30 status = bind (InitSocket, (struct sockaddr *) Address, length); 30 31 if (status == -1) { … … 32 33 close (InitSocket); 33 34 Address[0].sin_port ++; 34 if (Address[0].sin_port > MY_PORT + 10) exit (2);35 if (Address[0].sin_port > MY_PORT_MAX) exit (2); 35 36 goto retry_server; 36 37 } … … 193 194 close (InitSocket); 194 195 Address.sin_port ++; 195 if (Address.sin_port > MY_PORT + 10) return (-1);196 if (Address.sin_port > MY_PORT_MAX) return (-1); 196 197 goto retry_client; 197 198 } -
trunk/Ohana/src/markstar/src/match_images.c
r12332 r16810 22 22 ALLOCATE (source, short int, Nimage); 23 23 for (j = 0; j < Nimage; j++) { 24 start[j] = image[j].tzero - MAX(0.0 5*image[j].trate*image[j].NY, 1);25 stop[j] = image[j].tzero + MAX(1.0 5*image[j].trate*image[j].NY, 1);24 start[j] = image[j].tzero - MAX(0.01*image[j].trate*image[j].NY, 1); 25 stop[j] = image[j].tzero + MAX(1.01*image[j].trate*image[j].NY, 1); 26 26 source[j] = image[j].photcode; 27 27 } -
trunk/Ohana/src/mosastro/src/getptolemy.c
r15743 r16810 50 50 stars[k].R = catalog.average[j].R; 51 51 stars[k].D = catalog.average[j].D; 52 stars[k].M = catalog.measure[catalog.average[j]. offset].M;52 stars[k].M = catalog.measure[catalog.average[j].measureOffset].M; 53 53 } 54 54 dvo_catalog_free (&catalog); -
trunk/Ohana/src/opihi/dvo/avextract.c
r15716 r16810 100 100 101 101 for (j = 0; (j < catalog.Naverage) && !interrupt; j++) { 102 m = catalog.average[j]. offset;102 m = catalog.average[j].measureOffset; 103 103 // extract the relevant values 104 104 // XXX for measure values, this could be optimized for one loop over measures... -
trunk/Ohana/src/opihi/dvo/ccd.c
r15509 r16810 72 72 for (i = 0; i < catalog.Naverage; i++) { 73 73 M1 = M2 = NULL; 74 m = catalog.average[i]. offset;74 m = catalog.average[i].measureOffset; 75 75 76 76 SetSelectionParam (0); -
trunk/Ohana/src/opihi/dvo/cmd.c
r15509 r16810 70 70 for (i = 0; i < catalog.Naverage; i++) { 71 71 M1 = M3 = NULL; 72 m = catalog.average[i]. offset;72 m = catalog.average[i].measureOffset; 73 73 74 74 SetSelectionParam (0); -
trunk/Ohana/src/opihi/dvo/dbExtractAverages.c
r15509 r16810 45 45 46 46 case AVE_NMEAS: 47 value = average[0].Nm ;47 value = average[0].Nmeasure; 48 48 break; 49 49 case AVE_NMISS: 50 value = average[0].N n;50 value = average[0].Nmissing; 51 51 break; 52 52 case AVE_Xp: … … 72 72 // XXX need to code this correctly: this returns just the first matching value 73 73 value = NAN; 74 for (i = 0; i < average[0].Nm ; i++) {74 for (i = 0; i < average[0].Nmeasure; i++) { 75 75 if (field->photcode->code != measure[i].photcode) continue; 76 76 value = measure[i].M; -
trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c
r15509 r16810 1 1 # include "dvoshell.h" 2 3 // to add a new field to the extractions: 4 // 1) add the selection for the field below 5 // 2) add the field to the ParseMeasureField in dbFields.c 6 // 3) add the field to the measure enum list in dvoshell.h 2 7 3 8 /* time concepts */ … … 111 116 break; 112 117 case MEAS_NMEAS: /* OK */ 113 value = average[0].Nm ;118 value = average[0].Nmeasure; 114 119 break; 115 120 case MEAS_NMISS: /* OK */ 116 value = average[0].N n;121 value = average[0].Nmissing; 117 122 break; 118 123 case MEAS_OBJFLAGS: /* OK */ … … 171 176 case MEAS_XCCD: /* OK */ 172 177 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */ 173 # if 0178 # if 1 174 179 value = measure[0].Xccd; 175 180 # else … … 184 189 case MEAS_YCCD: /* OK */ 185 190 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */ 186 # if 0191 # if 1 187 192 value = measure[0].Yccd; 188 193 # else … … 230 235 value = measure[0].qPSF; 231 236 break; 232 case MEAS_PSF_ PROB: /* OK */233 value = measure[0].psf Prob;237 case MEAS_PSF_CHISQ: /* OK */ 238 value = measure[0].psfChisq; 234 239 break; 235 240 case MEAS_CR_NSIGMA: /* OK */ -
trunk/Ohana/src/opihi/dvo/dbFields.c
r15208 r16810 148 148 if (!strcasecmp (fieldName, "IMAGEID")) ESCAPE (MEAS_IMAGE_ID, MAG_NONE); 149 149 if (!strcasecmp (fieldName, "PSF_QF")) ESCAPE (MEAS_PSF_QF, MAG_NONE); 150 if (!strcasecmp (fieldName, "PSF_ PROB")) ESCAPE (MEAS_PSF_PROB,MAG_NONE);150 if (!strcasecmp (fieldName, "PSF_CHISQ")) ESCAPE (MEAS_PSF_CHISQ, MAG_NONE); 151 151 if (!strcasecmp (fieldName, "CR_NSIGMA")) ESCAPE (MEAS_CR_NSIGMA, MAG_NONE); 152 152 if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA, MAG_NONE); -
trunk/Ohana/src/opihi/dvo/fitcolors.c
r14401 r16810 216 216 217 217 M1 = M2 = NULL; 218 m = catalog[k].average[i]. offset;218 m = catalog[k].average[i].measureOffset; 219 219 220 220 SetSelectionParam (0); -
trunk/Ohana/src/opihi/dvo/fitsed.c
r16040 r16810 207 207 208 208 // load the measurements for this source 209 m = catalog.average[i]. offset;210 for (j = 0; j < catalog.average[i].Nm ; j++) {209 m = catalog.average[i].measureOffset; 210 for (j = 0; j < catalog.average[i].Nmeasure; j++) { 211 211 idx = hashcode[catalog.measure[m+j].photcode]; 212 212 if (idx == -1) continue; -
trunk/Ohana/src/opihi/dvo/gstar.c
r16040 r16810 151 151 gprint (GP_LOG, "%11.7f ", catalog.average[k].R); 152 152 gprint (GP_LOG, "%11.7f ", catalog.average[k].D); 153 gprint (GP_LOG, "%3d ", catalog.average[k].Nm );153 gprint (GP_LOG, "%3d ", catalog.average[k].Nmeasure); 154 154 gprint (GP_LOG, "%4.1f ", 0.01*catalog.average[k].Xp); 155 155 gprint (GP_LOG, "%5d", catalog.average[k].code); … … 164 164 gprint (GP_LOG, "%f", catalog.average[k].P); 165 165 gprint (GP_LOG, "%f", catalog.average[k].dP); 166 gprint (GP_LOG, "%x", catalog.average[k].objID _hi);167 gprint (GP_LOG, "%x", catalog.average[k]. objID_lo);166 gprint (GP_LOG, "%x", catalog.average[k].objID); 167 gprint (GP_LOG, "%x", catalog.average[k].catID); 168 168 } 169 169 … … 188 188 189 189 if (GetMeasures || SaveVectors) { 190 m = catalog.average[k]. offset;191 for (j = 0; j < catalog.average[k].Nm ; j++, m++) {190 m = catalog.average[k].measureOffset; 191 for (j = 0; j < catalog.average[k].Nmeasure; j++, m++) { 192 192 193 193 Mcat = PhotCat (&catalog.measure[m]); … … 209 209 if (FULL_OUTPUT) { 210 210 gprint (GP_LOG, "%f", catalog.measure[m].Mcal); 211 gprint (GP_LOG, "%f", catalog.measure[m].M gal);211 gprint (GP_LOG, "%f", catalog.measure[m].Map); 212 212 gprint (GP_LOG, "%f", pow(10.0, 0.4*catalog.measure[m].dt)); 213 213 gprint (GP_LOG, "%f", 1.0 + catalog.measure[m].airmass); … … 223 223 gprint (GP_LOG, "%d", catalog.measure[m].imageID); 224 224 gprint (GP_LOG, "%f", catalog.measure[m].qPSF); 225 gprint (GP_LOG, "%f", catalog.measure[m].psf Prob);225 gprint (GP_LOG, "%f", catalog.measure[m].psfChisq); 226 226 gprint (GP_LOG, "%f", catalog.measure[m].crNsigma); 227 227 gprint (GP_LOG, "%f", catalog.measure[m].extNsigma); -
trunk/Ohana/src/opihi/dvo/imextract.c
r14590 r16810 1 1 # include "dvoshell.h" 2 2 3 enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG, NX_PIX, NY_PIX, THETA, SKEW, SCALE, DSCALE}; 3 // need to upgrade this to support multiple fields and WHERE clauses 4 5 enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG, NX_PIX, NY_PIX, THETA, SKEW, SCALE, DSCALE, IMAGE_ID}; 4 6 5 7 int imextract (int argc, char **argv) { … … 94 96 if (!strcasecmp (argv[1], "scale")) mode = SCALE; 95 97 if (!strcasecmp (argv[1], "dscale")) mode = DSCALE; 98 if (!strcasecmp (argv[1], "imageID")) mode = IMAGE_ID; 96 99 if (mode == ZERO) { 97 100 gprint (GP_ERR, "value may be one of the following:\n"); … … 181 184 vec[0].elements[N] = image[j].NY; 182 185 break; 186 case IMAGE_ID: 187 vec[0].elements[N] = image[j].imageID; 188 break; 183 189 case THETA: { 184 190 double theta1, theta2, s1, s2; -
trunk/Ohana/src/opihi/dvo/lcurve.c
r16040 r16810 122 122 if (r < Radius2) { 123 123 /* found star, extract measurements */ 124 m = catalog.average[N1[i]]. offset;125 for (j = 0; j < catalog.average[N1[i]].Nm ; j++, m++) {124 m = catalog.average[N1[i]].measureOffset; 125 for (j = 0; j < catalog.average[N1[i]].Nmeasure; j++, m++) { 126 126 if (ErrorBars) dYvec.elements[N] = catalog.measure[m].dM; 127 127 Xvec.elements[N] = TimeValue (catalog.measure[m].t, TimeReference, TimeFormat); -
trunk/Ohana/src/opihi/dvo/lightcurve.c
r16040 r16810 105 105 k = N1[i]; 106 106 /* found star, extract measurements */ 107 m = catalog.average[k]. offset;108 for (j = 0; j < catalog.average[k].Nm ; j++, m++) {107 m = catalog.average[k].measureOffset; 108 for (j = 0; j < catalog.average[k].Nmeasure; j++, m++) { 109 109 110 110 if (PhotCodeSelect) { -
trunk/Ohana/src/opihi/dvo/mextract.c
r15716 r16810 120 120 121 121 for (j = 0; (j < catalog.Naverage) && !interrupt; j++) { 122 m = catalog.average[j]. offset;123 for (k = 0; (k < catalog.average[j].Nm ); k++, m++) {122 m = catalog.average[j].measureOffset; 123 for (k = 0; (k < catalog.average[j].Nmeasure); k++, m++) { 124 124 125 125 // extract the relevant values for this measurement -
trunk/Ohana/src/opihi/dvo/photometry.c
r15509 r16810 562 562 *nlist = 0; 563 563 Nlist = 0; 564 NLIST = MAX (1, average[0].Nm );564 NLIST = MAX (1, average[0].Nmeasure); 565 565 ALLOCATE (list, double, NLIST); 566 566 … … 569 569 570 570 /* look for measures */ 571 for (i = 0; i < average[0].Nm ; i++) {571 for (i = 0; i < average[0].Nmeasure; i++) { 572 572 TESTCODE (code, measure[i]); /* skip measurements not matching photcode */ 573 573 TESTMEASURE (measure[i]); /* exclusions based on measure.params */ … … 633 633 634 634 case AVE_NMEAS: 635 value = average[0].Nm ;635 value = average[0].Nmeasure; 636 636 break; 637 637 case AVE_NMISS: 638 value = average[0].N n;638 value = average[0].Nmissing; 639 639 break; 640 640 case AVE_Xp: … … 658 658 case MAG_CAL: 659 659 value = NAN; 660 for (i = 0; i < average[0].Nm ; i++) {660 for (i = 0; i < average[0].Nmeasure; i++) { 661 661 if (code[0].code != measure[i].photcode) continue; 662 662 value = measure[i].M; … … 679 679 case AVE_NCODE: 680 680 value = 0; 681 for (i = 0; i < average[0].Nm ; i++) {681 for (i = 0; i < average[0].Nmeasure; i++) { 682 682 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue; 683 683 value ++; … … 686 686 case AVE_NPHOT: 687 687 value = 0; 688 for (i = 0; i < average[0].Nm ; i++) {688 for (i = 0; i < average[0].Nmeasure; i++) { 689 689 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue; 690 690 if (measure[i].dbFlags & (ID_MEAS_POOR | ID_MEAS_SKIP)) continue; … … 695 695 case AVE_NCRIT: 696 696 value = 0; 697 for (i = 0; i < average[0].Nm ; i++) {697 for (i = 0; i < average[0].Nmeasure; i++) { 698 698 if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode))) continue; 699 699 if (ErrSelect && (measure[i].dM > ErrValue)) continue; … … 716 716 717 717 Nt = Nc = 0; 718 for (k = 0; k < average[0].Nm ; k++) {718 for (k = 0; k < average[0].Nmeasure; k++) { 719 719 if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[k].photcode))) continue; 720 720 Nc ++; … … 732 732 733 733 Nt[0] = Nt[1] = Nt[2] = 0; 734 for (k = 0; k < average[0].Nm ; k++) {734 for (k = 0; k < average[0].Nmeasure; k++) { 735 735 if (code != GetPhotcodeEquivCodebyCode (measure[k].photcode)) continue; 736 736 N = GetMeasureTypeCode (&measure[k]); … … 793 793 if ((code != NULL) && (code[0].type == PHOT_REF)) { 794 794 Nm = 0; 795 for (i = 0; i < average[0].Nm ; i++) {795 for (i = 0; i < average[0].Nmeasure; i++) { 796 796 TESTCODE (code, measure[i]); 797 797 Nm++; … … 805 805 if (FWHMSelect) { 806 806 Nm = 0; 807 for (i = 0; i < average[0].Nm ; i++) {807 for (i = 0; i < average[0].Nmeasure; i++) { 808 808 fwhm = measure[i].FWx / 100.0; 809 809 switch (FWHMsign) { … … 820 820 Nm++; 821 821 } 822 if (average[0].Nm * FWHMfrac > Nm) return (FALSE);822 if (average[0].Nmeasure * FWHMfrac > Nm) return (FALSE); 823 823 } 824 824 … … 833 833 if (NcodeSelect) { 834 834 Nm = 0; 835 for (i = 0; i < average[0].Nm ; i++) {835 for (i = 0; i < average[0].Nmeasure; i++) { 836 836 TESTCODE (code, measure[i]); 837 837 Nm++; … … 872 872 if (NphotSelect) { 873 873 Nm = 0; 874 for (i = 0; i < average[0].Nm ; i++) {874 for (i = 0; i < average[0].Nmeasure; i++) { 875 875 TESTCODE (code, measure[i]); 876 876 if (measure[i].dbFlags && ID_MEAS_SKIP) continue; … … 931 931 Ns - secfilt entry (-1 for PRI) 932 932 &catalog.average[i], 933 &catalog.measure[catalog.average[i]. offset],933 &catalog.measure[catalog.average[i].measureOffset], 934 934 &catalog.secfilt[i*Nsec] 935 935 */ … … 974 974 *nlist = 0; 975 975 Nlist = 0; 976 NLIST = MAX (1, average[0].Nm *average[0].Nm);976 NLIST = MAX (1, average[0].Nmeasure*average[0].Nmeasure); 977 977 ALLOCATE (list, double, NLIST); 978 978 M1 = M2 = NULL; … … 1015 1015 *nlist = 0; 1016 1016 Nlist = 0; 1017 NLIST = MAX (1, average[0].Nm *average[0].Nm);1017 NLIST = MAX (1, average[0].Nmeasure*average[0].Nmeasure); 1018 1018 ALLOCATE (list, double, NLIST); 1019 1019 … … 1031 1031 1032 1032 /* loop twice over all measures */ 1033 for (i = 0; i < average[0].Nm ; i++) {1033 for (i = 0; i < average[0].Nmeasure; i++) { 1034 1034 SetSelectionParam (Np0); 1035 1035 TESTCODE (code[0], measure[i]); 1036 1036 TESTMEASURE (measure[i]); 1037 1037 SETMAG(M1, measure[i], mode[0]); 1038 for (j = 0; j < average[0].Nm ; j++) {1038 for (j = 0; j < average[0].Nmeasure; j++) { 1039 1039 if (i == j) continue; 1040 1040 SetSelectionParam (Np1); … … 1086 1086 *nlist = 0; 1087 1087 Nlist = 0; 1088 NLIST = MAX (1, average[0].Nm *average[0].Nm);1088 NLIST = MAX (1, average[0].Nmeasure*average[0].Nmeasure); 1089 1089 ALLOCATE (list, double, NLIST); 1090 1090 … … 1099 1099 1100 1100 /* loop twice over all measures */ 1101 for (i = 0; i < average[0].Nm ; i++) {1101 for (i = 0; i < average[0].Nmeasure; i++) { 1102 1102 TESTCODE (code[0], measure[i]); 1103 1103 TESTMEASURE (measure[i]); 1104 1104 SETMAG(M1, measure[i], mode[0]); 1105 for (j = 0; j < average[0].Nm ; j++) {1105 for (j = 0; j < average[0].Nmeasure; j++) { 1106 1106 if (i == j) continue; 1107 1107 TESTCODE (code[1], measure[j]); -
trunk/Ohana/src/opihi/dvo/pmeasure.c
r15038 r16810 111 111 while (catalog.average[i].R < Rmin) catalog.average[i].R += 360.0; 112 112 while (catalog.average[i].R > Rmax) catalog.average[i].R -= 360.0; 113 m = catalog.average[i]. offset;114 for (k = 0; k < catalog.average[i].Nm ; k++) {113 m = catalog.average[i].measureOffset; 114 for (k = 0; k < catalog.average[i].Nmeasure; k++) { 115 115 if (FlagClip) { 116 116 flags = catalog.measure[m+k].dbFlags; -
trunk/Ohana/src/opihi/dvo/subpix.c
r16040 r16810 130 130 131 131 /* only print the entries for existing measurements of this star */ 132 measure = &catalog.measure[catalog.average[Nentry]. offset];133 Nmeasure = catalog.average[Nentry].Nm ;132 measure = &catalog.measure[catalog.average[Nentry].measureOffset]; 133 Nmeasure = catalog.average[Nentry].Nmeasure; 134 134 for (i = 0; i < Nsub; i++) { 135 135 I = index[i]; -
trunk/Ohana/src/opihi/include/dvoshell.h
r16004 r16810 72 72 MEAS_IMAGE_ID, 73 73 MEAS_PSF_QF, 74 MEAS_PSF_ PROB,74 MEAS_PSF_CHISQ, 75 75 MEAS_CR_NSIGMA, 76 76 MEAS_EXT_NSIGMA, -
trunk/Ohana/src/opihi/pantasks/ipptool2book.c
r16567 r16810 108 108 FREEKEYS; 109 109 return FALSE; 110 }111 if (strcmp(bookName, argv[2])) {112 gprint (GP_ERR, "WARNING: metadata output name %s does not match expected bookname %s\n", bookName, argv[2]);113 110 } 114 111 free (line); -
trunk/Ohana/src/relastro/Makefile
r16040 r16810 37 37 $(SRC)/UpdateObjects.$(ARCH).o \ 38 38 $(SRC)/UpdateSimple.$(ARCH).o \ 39 $(SRC)/UpdateMeasures.$(ARCH).o \ 40 $(SRC)/GetAstromError.$(ARCH).o \ 39 41 $(SRC)/args.$(ARCH).o \ 40 42 $(SRC)/bcatalog.$(ARCH).o \ -
trunk/Ohana/src/relastro/include/relastro.h
r16060 r16810 10 10 } CoordMode; 11 11 12 typedef enum {ERROR_MODE_RA, ERROR_MODE_DEC, ERROR_MODE_POS} ErrorMode; 13 12 14 typedef struct { 13 15 double R, D; /* Sky Coords - degrees */ … … 15 17 double L, M; /* Focal Plane - pixels */ 16 18 double X, Y; /* Chip Coords - pixels */ 17 double Mag, dMag; 19 double Mag; 20 double dMag; 21 double dPos; 18 22 int mask; 19 23 } StarData; … … 263 267 void fit_add (CoordFit *fit, double x1, double y1, double x2, double y2, double wt); 264 268 void fit_eval (CoordFit *fit); 269 void fit_apply (CoordFit *fit, double *x2, double *y2, double x1, double y1); 265 270 double **poly2d_dx (double **poly, int Nx, int Ny); 266 271 double **poly2d_dy (double **poly, int Nx, int Ny); 267 272 double **poly2d_copy (double **poly, int Nx, int Ny); 268 273 double poly2d_eval (double **poly, int Nx, int Ny, double x, double y); 269 voidfit_apply_coords (CoordFit *fit, Coords *coords);274 CoordFit *fit_apply_coords (CoordFit *fit, Coords *coords); 270 275 int CoordsGetCenter (CoordFit *fit, double tol, double *xo, double *yo); 271 276 CoordFit *CoordsSetCenter (CoordFit *input, double Xo, double Yo); … … 278 283 int UpdateChips (Catalog *catalog, int Ncatalog); 279 284 int UpdateMosaic (Catalog *catalog, int Ncatalog); 285 int UpdateMeasures (Catalog *catalog, int Ncatalog); 286 void fixImageRaw (Catalog *catalog, int Ncatalog, int im); 287 280 288 int sun_ecliptic (double jd, double *lambda, double *beta, double *epsilon); 281 289 int ParFactor (double *pR, double *pD, double R, double D, time_t T); -
trunk/Ohana/src/relastro/src/FitChip.c
r15600 r16810 1 1 # include "relastro.h" 2 # define SCATTER_MAX_ERROR 0.05 2 3 3 4 void FitChip (StarData *raw, StarData *ref, int Nmatch, Coords *coords) { 4 5 5 int i ;6 int i, Nscatter, Niter; 6 7 CoordFit *fit; 8 double dL, dM, dR, dRmax, *values; 7 9 8 fit = fit_init (coords[0].Npolyterms); 9 for (i = 0; i < Nmatch; i++) { 10 if (raw[i].mask) continue; 11 fit_add (fit, raw[i].X, raw[i].Y, ref[i].L, ref[i].M, 1.0); 12 } 13 fit_eval (fit); 14 fit_apply_coords (fit, coords); 15 fit_free (fit); 10 ALLOCATE (values, double, Nmatch); 16 11 17 // apply new coords to raw (X,Y -> L,M) 18 for (i = 0; i < Nmatch; i++) { 19 XY_to_LM (&raw[i].L, &raw[i].M, raw[i].X, raw[i].Y, coords); 12 for (Niter = 0; Niter < 3; Niter ++) { 13 // measure the scatter distribution (use only the bright end detections) 14 for (i = Nscatter = 0; i < Nmatch; i++) { 15 if (raw[i].mask) continue; 16 if (raw[i].dMag > SCATTER_MAX_ERROR) continue; 17 18 dL = raw[i].L - ref[i].L; 19 dM = raw[i].M - ref[i].M; 20 dR = hypot (dL, dM); 21 22 values[Nscatter] = dR; 23 Nscatter++; 24 } 25 26 // for a 2D Gaussian, 40% of the points are within 1 sigma; dRmax is ~ 3 sigma 27 dsort (values, Nscatter); 28 dRmax = 3.0*values[(int)(0.40*Nscatter)]; 29 30 fit = fit_init (coords[0].Npolyterms); 31 32 for (i = 0; i < Nmatch; i++) { 33 if (raw[i].mask) continue; 34 35 // require radius of XXX arcsec 36 dL = raw[i].L - ref[i].L; 37 dM = raw[i].M - ref[i].M; 38 dR = hypot (dL, dM); 39 40 if (dR > dRmax) { 41 continue; 42 raw[i].mask = TRUE; 43 } 44 45 fit_add (fit, raw[i].X, raw[i].Y, ref[i].L, ref[i].M, raw[i].dPos); 46 } 47 fprintf (stderr, "scatter limit: %f based on %d detections; using %d of %d for fit\n", 48 dRmax, Nscatter, fit[0].Npts, Nmatch); 49 50 if (fit[0].Npts < 25) { 51 fit_free (fit); 52 free (values); 53 return; 54 } 55 fit_eval (fit); 56 fit_apply_coords (fit, coords); 57 fit_free (fit); 58 59 for (i = 0; i < Nmatch; i++) { 60 XY_to_LM (&raw[i].L, &raw[i].M, raw[i].X, raw[i].Y, coords); 61 } 20 62 } 21 63 22 fit_free (fit); 64 free (values); 65 return; 23 66 } 24 67 … … 34 77 */ 35 78 36 /* XXX I'm not using the errors at all : this could at least be done with the dMag values */ 79 /* example using fit_apply() : 80 81 f = fopen ("test3.dat", "w"); 82 83 // apply new coords to raw (X,Y -> L,M) 84 for (i = 0; i < Nmatch; i++) { 85 fprintf (f, "%f %f %f %f ", raw[i].X, raw[i].Y, raw[i].L, raw[i].M); 86 fit_apply (newfit, &L1, &M1, raw[i].X - coords[0].crpix1, raw[i].Y - coords[0].crpix2); 87 fprintf (f, "%f %f\n", L1, M1); 88 } 89 fclose (f); 90 */ 91 92 /*** XXX this function can be improved in 4 important ways: 93 94 1) the initial value of the clipping radius could be set based on the distribution of the 95 value (eg, inner 50%) (better to use dL, dM rather than dP, dQ) 96 97 2) multiple clipping passes could be performed 98 99 3) the per-star astrometric errors could be included in the fit (non-systematic terms at 100 least, or scaled values of the mag error, or simply the mag error itself) 101 102 4) we could ignore input detections on the basis of the photFlags 103 104 */ -
trunk/Ohana/src/relastro/src/FitMosaic.c
r15238 r16810 5 5 int i; 6 6 CoordFit *fit; 7 double dP, dQ, dR; 7 8 8 9 fit = fit_init (coords[0].Npolyterms); 9 10 for (i = 0; i < Nmatch; i++) { 10 11 if (raw[i].mask) continue; 12 13 // require radius of XXX arcsec 14 dP = raw[i].P - ref[i].P; 15 dQ = raw[i].Q - ref[i].Q; 16 dR = 3600.0 * hypot (dP, dQ); 17 18 // XXX the value needs to be set in a more intelligent way 19 if (dR > 0.15) continue; 20 11 21 fit_add (fit, raw[i].L, raw[i].M, ref[i].P, ref[i].Q, 1.0); 22 } 23 if (fit[0].Npts == 0) { 24 fit_free (fit); 25 return; 12 26 } 13 27 fit_eval (fit); -
trunk/Ohana/src/relastro/src/FitSimple.c
r15600 r16810 5 5 int i; 6 6 CoordFit *fit; 7 double dP, dQ, dR; 7 8 8 9 fit = fit_init (coords[0].Npolyterms); 9 10 for (i = 0; i < Nmatch; i++) { 10 11 if (raw[i].mask) continue; 12 13 // require radius of XXX arcsec 14 dP = raw[i].P - ref[i].P; 15 dQ = raw[i].Q - ref[i].Q; 16 dR = 3600.0 * hypot (dP, dQ); 17 18 // XXX the value needs to be set in a more intelligent way 19 if (dR > 0.15) continue; 20 11 21 fit_add (fit, raw[i].X, raw[i].Y, ref[i].P, ref[i].Q, 1.0); 22 } 23 if (fit[0].Npts == 0) { 24 fit_free (fit); 25 return; 12 26 } 13 27 fit_eval (fit); … … 21 35 raw[i].Q = raw[i].M; 22 36 } 23 24 fit_free (fit);25 37 } 26 38 … … 37 49 38 50 /* XXX I'm not using the errors at all : this could at least be done with the dMag values */ 51 52 /* XXX See notes in FitChips.c */ -
trunk/Ohana/src/relastro/src/ImageOps.c
r16060 r16810 33 33 34 34 for (i = 0; i < Nimage; i++) { 35 start[i] = image[i].tzero - MAX(0.0 5*image[i].trate*image[i].NY, 1);36 stop[i] = image[i].tzero + MAX(1.0 5*image[i].trate*image[i].NY, 1);35 start[i] = image[i].tzero - MAX(0.01*image[i].trate*image[i].NY, 1); 36 stop[i] = image[i].tzero + MAX(1.01*image[i].trate*image[i].NY, 1); 37 37 } 38 38 } … … 81 81 82 82 int i, j; 83 char *name; 83 84 84 85 for (i = 0; i < Ncatalog; i++) { … … 87 88 } 88 89 } 90 91 for (i = 0; VERBOSE && (i < Nimage); i++) { 92 name = GetPhotcodeNamebyCode (image[i].photcode); 93 fprintf (stderr, "image %d has %d measures (%s, %s)\n", i, Nlist[i], 94 ohana_sec_to_date(image[i].tzero), name); 95 } 89 96 } 90 97 … … 182 189 // return StarData values for detections in the specified image, converting coordinates from the 183 190 // chip positions: X,Y -> L,M -> P,Q -> R,D 191 void fixImageRaw (Catalog *catalog, int Ncatalog, int im) { 192 193 int i, m, c, n; 194 double X, Y, L, M, P, Q, R, D, dR, dD; 195 196 Mosaic *mosaic; 197 Coords *moscoords, *imcoords; 198 199 moscoords = NULL; 200 mosaic = getMosaicForImage (im); 201 if (mosaic != NULL) { 202 moscoords = &mosaic[0].coords; 203 } 204 imcoords = &image[im].coords; 205 206 for (i = 0; i < Nlist[im]; i++) { 207 m = mlist[im][i]; 208 c = clist[im][i]; 209 210 X = catalog[c].measure[m].Xccd; 211 Y = catalog[c].measure[m].Yccd; 212 n = catalog[c].measure[m].averef; 213 214 if (moscoords == NULL) { 215 // this is a Simple image (not a mosaic) 216 // note that for a Simple image, L,M = P,Q 217 XY_to_LM (&L, &M, X, Y, imcoords); 218 LM_to_RD (&R, &D, L, M, imcoords); 219 } else { 220 XY_to_LM (&L, &M, X, Y, imcoords); 221 XY_to_LM (&P, &Q, L, M, moscoords); 222 LM_to_RD (&R, &D, P, Q, moscoords); 223 } 224 225 // new dR, dD : test 226 dR = 3600.0*(catalog[c].average[n].R - R); 227 dD = 3600.0*(catalog[c].average[n].D - D); 228 229 if (fabs(catalog[c].measure[m].dR - dR) > 10.0) { 230 // XXXXX running into this still for last megacam exposure: wrong mosaic? 231 // ???? inconsistently hitting this???? 232 fprintf (stderr, "!"); 233 abort (); 234 } 235 if (fabs(catalog[c].measure[m].dD - dD) > 10.0) { 236 fprintf (stderr, "*"); 237 abort (); 238 } 239 240 catalog[c].measure[m].dR = dR; 241 catalog[c].measure[m].dD = dD; 242 243 if (catalog[c].measure[m].dR > +180.0*3600.0) { 244 // average on high end of boundary, move star up 245 R += 360.0; 246 catalog[c].measure[m].dR = 3600.0*(catalog[c].average[n].R - R); 247 } 248 if (catalog[c].measure[m].dR < -180.0*3600.0) { 249 // average on low end of boundary, move star down 250 R -= 360.0; 251 catalog[c].measure[m].dR = 3600.0*(catalog[c].average[n].R - R); 252 } 253 } 254 return; 255 } 256 257 // return StarData values for detections in the specified image, converting coordinates from the 258 // chip positions: X,Y -> L,M -> P,Q -> R,D 184 259 StarData *getImageRaw (Catalog *catalog, int Ncatalog, int im, int *Nstars, CoordMode mode) { 185 260 186 int i, m, c ;261 int i, m, c, n; 187 262 188 263 Mosaic *mosaic; … … 213 288 raw[i].Mag = catalog[c].measure[m].M; 214 289 raw[i].dMag = catalog[c].measure[m].dM; 290 raw[i].dPos = GetAstromError (&catalog[c].measure[m], ERROR_MODE_POS); 291 292 n = catalog[c].measure[m].averef; 215 293 216 294 raw[i].mask = FALSE; 295 if (catalog[c].average[n].Nmeasure < 2) { 296 raw[i].mask = TRUE; 297 } 217 298 218 299 switch (mode) { … … 273 354 ref[i].Mag = catalog[c].measure[m].M; 274 355 ref[i].dMag = catalog[c].measure[m].dM; 356 ref[i].dPos = GetAstromError (&catalog[c].measure[m], ERROR_MODE_POS); 275 357 276 358 ref[i].mask = FALSE; … … 286 368 case MODE_MOSAIC: 287 369 RD_to_LM (&ref[i].P, &ref[i].Q, ref[i].R, ref[i].D, moscoords); 288 LM_to_XY (&ref[i]. M, &ref[i].L, ref[i].P, ref[i].Q, moscoords);370 LM_to_XY (&ref[i].L, &ref[i].M, ref[i].P, ref[i].Q, moscoords); 289 371 LM_to_XY (&ref[i].X, &ref[i].Y, ref[i].L, ref[i].M, &image[im].coords); 290 372 break; -
trunk/Ohana/src/relastro/src/MosaicOps.c
r16060 r16810 38 38 39 39 /* set image time range */ 40 start = image[i].tzero - MAX(0.0 5*image[i].trate*image[i].NY, 1);41 stop = image[i].tzero + MAX(1.0 5*image[i].trate*image[i].NY, 1);40 start = image[i].tzero - MAX(0.01*image[i].trate*image[i].NY, 1); 41 stop = image[i].tzero + MAX(1.01*image[i].trate*image[i].NY, 1); 42 42 43 43 /* a new mosaic, define ranges */ … … 77 77 78 78 /* set image time range */ 79 start = image[i].tzero - MAX(0.0 5*image[i].trate*image[i].NY, 1);80 stop = image[i].tzero + MAX(1.0 5*image[i].trate*image[i].NY, 1);79 start = image[i].tzero - MAX(0.01*image[i].trate*image[i].NY, 1); 80 stop = image[i].tzero + MAX(1.01*image[i].trate*image[i].NY, 1); 81 81 82 82 /* find existing mosaic with this time range */ -
trunk/Ohana/src/relastro/src/UpdateChips.c
r15600 r16810 21 21 ref = getImageRef (catalog, Ncatalog, i, &Nstars, MODE_MOSAIC); 22 22 23 fprintf (stderr, "image %d : Nstars: %d\n", i, Nstars); 23 24 FitChip (raw, ref, Nstars, &image[i].coords); 24 25 -
trunk/Ohana/src/relastro/src/UpdateObjects.c
r16060 r16810 18 18 for (i = 0; i < Ncatalog; i++) { 19 19 for (j = 0; j < catalog[i].Naverage; j++) { 20 Nmax = MAX (Nmax, catalog[i].average[j].Nm );20 Nmax = MAX (Nmax, catalog[i].average[j].Nmeasure); 21 21 } 22 22 } … … 48 48 double Tmin, Tmax; 49 49 float errorScale; 50 PhotCode *code;51 50 52 51 initObjectData (catalog, Ncatalog); … … 81 80 82 81 N = 0; 83 m = catalog[i].average[j]. offset;82 m = catalog[i].average[j].measureOffset; 84 83 85 84 Tmin = Tmax = (catalog[i].measure[m].t - To) / (86400*365.25); 86 85 mode = FIT_MODE; 87 86 88 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {87 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 89 88 if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; 90 89 … … 96 95 Tmax = MAX(Tmax, T[N]); 97 96 98 /* the astrometric errors are not being carried yet (but should be!) */ 99 /* we use the photometric mag error as a weighting term */ 100 101 code = GetPhotcodebyCode (catalog[0].measure[m].photcode); 102 errorScale = code[0].astromScale; 103 dR[N] = MAX (catalog[i].measure[m].dM, MIN_ERROR) * errorScale; 104 dD[N] = MAX (catalog[i].measure[m].dM, MIN_ERROR) * errorScale; 97 dR[N] = GetAstromError (&catalog[i].measure[m], ERROR_MODE_RA); 98 dD[N] = GetAstromError (&catalog[i].measure[m], ERROR_MODE_DEC); 105 99 dT[N] = catalog[i].measure[m].dt; 106 100 … … 193 187 194 188 // the measure fields must be updated before the average fields 195 m = catalog[i].average[j]. offset;196 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {189 m = catalog[i].average[j].measureOffset; 190 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 197 191 if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; 198 192 setMeanR (fit.Ro, &catalog[i].measure[m], &catalog[i].average[j], &catalog[i].secfilt[j*PhotNsec]); -
trunk/Ohana/src/relastro/src/args.c
r15600 r16810 202 202 fprintf (stderr, "ERROR: USAGE: relastro -region RA RA DEC DEC\n"); 203 203 fprintf (stderr, " working options: \n"); 204 fprintf (stderr, " -time (start) (stop)\n"); 205 fprintf (stderr, " -v\n"); 204 fprintf (stderr, " -update-objects\n"); 205 fprintf (stderr, " -pm\n"); 206 fprintf (stderr, " -par\n"); 207 fprintf (stderr, " -pmpar\n"); 208 fprintf (stderr, " -update-simple\n"); 209 fprintf (stderr, " -update-chips\n"); 210 fprintf (stderr, " -update-mosaics\n"); 211 fprintf (stderr, " -time (start)(stop)\n"); 212 fprintf (stderr, " -photcode (code)[,code,code...]\n"); 206 213 fprintf (stderr, " -plot\n"); 207 214 fprintf (stderr, " -plotdelay (seconds)\n"); 208 fprintf (stderr, " -update\n"); 215 fprintf (stderr, " -statmode (mode)\n"); 216 fprintf (stderr, " -reset"); 217 fprintf (stderr, " -update : apply new fit to database\n"); 209 218 fprintf (stderr, " -params\n"); 210 fprintf (stderr, " -reset\n"); 219 fprintf (stderr, " -plrange\n"); 220 fprintf (stderr, " -minerror\n"); 221 fprintf (stderr, " -area\n"); 211 222 fprintf (stderr, " -area Xmin Xmax Ymin Ymax\n"); 212 223 fprintf (stderr, " -instmag min max\n\n"); 213 fprintf (stderr, " planned options: \n"); 214 fprintf (stderr, " -photcode code[,code,code,..]\n"); 224 fprintf (stderr, " -v\n"); 215 225 fprintf (stderr, " \n"); 216 226 exit (2); 217 227 } 228 -
trunk/Ohana/src/relastro/src/bcatalog.c
r15743 r16810 22 22 /* exclude stars not in range or with too few measurements */ 23 23 for (i = 0; i < catalog[0].Naverage; i++) { 24 if (catalog[0].average[i].Nm < 2) continue;24 if (catalog[0].average[i].Nmeasure < 2) continue; 25 25 26 26 /* start with all stars good */ 27 27 subcatalog[0].average[Naverage] = catalog[0].average[i]; 28 subcatalog[0].average[Naverage]. offset = Nmeasure;28 subcatalog[0].average[Naverage].measureOffset = Nmeasure; 29 29 for (j = 0; j < PhotNsec; j++) { 30 30 subcatalog[0].secfilt[PhotNsec*Naverage+j] = catalog[0].secfilt[PhotNsec*i+j]; … … 38 38 39 39 Nm = 0; 40 for (j = 0; j < catalog[0].average[i].Nm ; j++) {40 for (j = 0; j < catalog[0].average[i].Nmeasure; j++) { 41 41 42 offset = catalog[0].average[i]. offset + j;42 offset = catalog[0].average[i].measureOffset + j; 43 43 44 44 /* select measurements by photcode, if specified */ … … 95 95 continue; 96 96 } 97 subcatalog[0].average[Naverage].Nm = Nm;97 subcatalog[0].average[Naverage].Nmeasure = Nm; 98 98 Naverage ++; 99 99 if (Naverage == NAVERAGE) { -
trunk/Ohana/src/relastro/src/fitpoly.c
r16060 r16810 128 128 matrix[i][j] = fit[0].sum[ix+jx][iy+jy]; 129 129 } 130 131 // mask the terms not represented by the Coords terms 132 if (ix + iy > fit[0].Norder) { 133 for (j = 0; j < fit[0].Nelems; j++) { 134 matrix[i][j] = 0.0; 135 } 136 vector[i][0] = 0.0; 137 vector[i][1] = 0.0; 138 matrix[i][i] = 1.0; 139 } 130 140 } 131 141 … … 133 143 ix = i % fit[0].Nterms; 134 144 iy = i / fit[0].Nterms; 135 fprintf (stderr, "x2 : x^%dy^%d: %10.4g y2 : x^%dy^%d: %10.4g \n",136 ix, iy, vector[i][0], ix, iy, vector[i][1]);145 // fprintf (stderr, "x2 : x^%dy^%d: %10.4g y2 : x^%dy^%d: %10.4g \n", 146 // ix, iy, vector[i][0], ix, iy, vector[i][1]); 137 147 } 138 148 … … 142 152 ix = i % fit[0].Nterms; 143 153 iy = i / fit[0].Nterms; 144 fprintf (stderr, "x2 : x^%dy^%d: %10.4g y2 : x^%dy^%d: %10.4g \n",145 ix, iy, vector[i][0], ix, iy, vector[i][1]);154 // fprintf (stderr, "x2 : x^%dy^%d: %10.4g y2 : x^%dy^%d: %10.4g \n", 155 // ix, iy, vector[i][0], ix, iy, vector[i][1]); 146 156 } 147 157 … … 158 168 } 159 169 170 void fit_apply (CoordFit *fit, double *x2, double *y2, double x1, double y1) { 171 172 int ix, iy; 173 double xterm, yterm, term; 174 double x, y; 175 176 x = 0.0; 177 y = 0.0; 178 179 xterm = 1; 180 for (ix = 0; ix < fit[0].Nterms; ix++) { 181 yterm = 1; 182 for (iy = 0; iy < fit[0].Nterms; iy++) { 183 term = xterm*yterm; 184 x += fit[0].xfit[ix][iy]*term; 185 y += fit[0].yfit[ix][iy]*term; 186 yterm *= y1; 187 } 188 xterm *= x1; 189 } 190 *x2 = x; 191 *y2 = y; 192 } 193 160 194 // Nx, Ny is the number of terms in x and in y 161 195 double **poly2d_dx (double **poly, int Nx, int Ny) { … … 209 243 for (i = 0; i < Nx; i++) { 210 244 for (j = 0; j < Ny; j++) { 211 out[i][j] = poly[i][j +1];245 out[i][j] = poly[i][j]; 212 246 } 213 247 } … … 237 271 /* this should only apply to the polynomial, not the projection terms */ 238 272 /* compare with psastro supporting code */ 239 voidfit_apply_coords (CoordFit *fit, Coords *coords) {273 CoordFit *fit_apply_coords (CoordFit *fit, Coords *coords) { 240 274 241 275 double c11, c12; 242 276 double c21, c22; 243 double Xo, Yo, R ;277 double Xo, Yo, R1, R2; 244 278 CoordFit *modfit; 245 279 … … 256 290 modfit = CoordsSetCenter (fit, Xo, Yo); 257 291 292 /* we do not modify crval1,2: these are kept at the default values */ 293 294 // set cdelt1, cdelt2 295 coords[0].cdelt1 = hypot (modfit[0].xfit[1][0], modfit[0].xfit[0][1]); 296 coords[0].cdelt2 = hypot (modfit[0].yfit[1][0], modfit[0].yfit[0][1]); 297 R1 = 1 / coords[0].cdelt1; 298 R2 = 1 / coords[0].cdelt2; 299 258 300 // set pc1_1, pc1_2, pc2_1, pc2_2 (cd1,cd2 = 1.0) 259 coords[0].pc1_1 = modfit[0].xfit[1][0] ;260 coords[0].pc1_2 = modfit[0].xfit[0][1] ;261 coords[0].pc2_1 = modfit[0].yfit[1][0] ;262 coords[0].pc2_2 = modfit[0].yfit[0][1] ;301 coords[0].pc1_1 = modfit[0].xfit[1][0] * R1; 302 coords[0].pc1_2 = modfit[0].xfit[0][1] * R2; 303 coords[0].pc2_1 = modfit[0].yfit[1][0] * R1; 304 coords[0].pc2_2 = modfit[0].yfit[0][1] * R2; 263 305 264 306 // set the polyterm elements 265 307 if (coords->Npolyterms > 1) { 266 coords[0].polyterms[0][0] = modfit[0].xfit[2][0] ;267 coords[0].polyterms[1][0] = modfit[0].xfit[1][1] ;268 coords[0].polyterms[2][0] = modfit[0].xfit[0][2] ;269 270 coords[0].polyterms[0][1] = modfit[0].yfit[2][0] ;271 coords[0].polyterms[1][1] = modfit[0].yfit[1][1] ;272 coords[0].polyterms[2][1] = modfit[0].yfit[0][2] ;308 coords[0].polyterms[0][0] = modfit[0].xfit[2][0]*R1*R1; 309 coords[0].polyterms[1][0] = modfit[0].xfit[1][1]*R1*R2; 310 coords[0].polyterms[2][0] = modfit[0].xfit[0][2]*R2*R2; 311 312 coords[0].polyterms[0][1] = modfit[0].yfit[2][0]*R1*R1; 313 coords[0].polyterms[1][1] = modfit[0].yfit[1][1]*R1*R2; 314 coords[0].polyterms[2][1] = modfit[0].yfit[0][2]*R2*R2; 273 315 } 274 316 275 317 // I need to validate Norder 276 318 if (coords->Npolyterms > 2) { 277 coords[0].polyterms[3][0] = modfit[0].xfit[3][0]; 278 coords[0].polyterms[4][0] = modfit[0].xfit[2][1]; 279 coords[0].polyterms[5][0] = modfit[0].xfit[1][2]; 280 coords[0].polyterms[6][0] = modfit[0].xfit[0][3]; 281 282 coords[0].polyterms[3][1] = modfit[0].yfit[3][0]; 283 coords[0].polyterms[4][1] = modfit[0].yfit[2][1]; 284 coords[0].polyterms[5][1] = modfit[0].yfit[1][2]; 285 coords[0].polyterms[6][1] = modfit[0].yfit[0][3]; 286 } 287 288 /* we do not modify crval1,2: these are kept at the default values */ 289 290 /* normalize pc11,etc */ 291 c11 = coords[0].pc1_1; 292 c21 = coords[0].pc1_1; 293 c12 = coords[0].pc1_1; 294 c22 = coords[0].pc1_1; 295 coords[0].cdelt1 = coords[0].cdelt2 = sqrt(fabs(c11*c22 - c12*c21)); 296 R = 1 / coords[0].cdelt1; 297 298 coords[0].pc1_1 = c11*R; 299 coords[0].pc2_1 = c21*R; 300 coords[0].pc1_2 = c12*R; 301 coords[0].pc2_2 = c22*R; 319 coords[0].polyterms[3][0] = modfit[0].xfit[3][0]*R1*R1*R1; 320 coords[0].polyterms[4][0] = modfit[0].xfit[2][1]*R1*R1*R2; 321 coords[0].polyterms[5][0] = modfit[0].xfit[1][2]*R1*R2*R2; 322 coords[0].polyterms[6][0] = modfit[0].xfit[0][3]*R2*R2*R2; 323 324 coords[0].polyterms[3][1] = modfit[0].yfit[3][0]*R1*R1*R1; 325 coords[0].polyterms[4][1] = modfit[0].yfit[2][1]*R1*R1*R2; 326 coords[0].polyterms[5][1] = modfit[0].yfit[1][2]*R1*R2*R2; 327 coords[0].polyterms[6][1] = modfit[0].yfit[0][3]*R2*R2*R2; 328 } 302 329 303 330 fit_free (modfit); -
trunk/Ohana/src/relastro/src/load_catalogs.c
r15743 r16810 39 39 for (j = 0; j < catalog[i].Naverage; j++) { 40 40 catalog[i].average[j].code = 0; 41 m = catalog[i].average[j]. offset;42 for (k = 0; k < catalog[i].average[j].Nm ; k++) {41 m = catalog[i].average[j].measureOffset; 42 for (k = 0; k < catalog[i].average[j].Nmeasure; k++) { 43 43 catalog[i].measure[m+k].dbFlags = 0; 44 44 } -
trunk/Ohana/src/relastro/src/mkpolyterm.c
r16060 r16810 20 20 21 21 int i, Nx, Ny; 22 double R, Xo, Yo, dPos ;22 double R, Xo, Yo, dPos, dPosRef; 23 23 double **XdX, **XdY, **YdX, **YdY, **alpha, **beta; 24 24 double **xfit, **yfit; … … 51 51 */ 52 52 dPos = tol + 1; 53 dPosRef = dPos; 53 54 for (i = 0; (dPos > tol) && (i < 20); i++) { 54 55 // NOTE: order for alpha is: [y][x] … … 66 67 Yo -= beta[1][0]; 67 68 dPos = hypot(beta[0][0], beta[1][0]); 69 if (i == 0) { 70 dPosRef = dPos; 71 } 72 } 73 if (dPos > dPosRef) { 74 fprintf (stderr, "*** warning : non-convergence in model conversion (mkpolyterm.c;73) *** \n"); 68 75 } 69 76 array_free (alpha, 2); -
trunk/Ohana/src/relastro/src/plot_scatter.c
r12332 r16810 12 12 for (i = 0; i < Ncatalog; i++) { 13 13 for (j = 0; j < catalog[i].Naverage; j++) { 14 Ntot += catalog[i].average[j].Nm ;14 Ntot += catalog[i].average[j].Nmeasure; 15 15 } 16 16 } … … 25 25 /* calculate the average value for a single star */ 26 26 if (catalog[i].average[j].code & STAR_BAD) continue; 27 m = catalog[i].average[j]. offset;27 m = catalog[i].average[j].measureOffset; 28 28 29 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {29 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 30 30 if (catalog[i].measure[m].flags & MEAS_BAD) continue; 31 31 -
trunk/Ohana/src/relastro/src/relastro.c
r16060 r16810 64 64 save_catalogs (catalog, Ncatalog); 65 65 } else { 66 // XXX for now, reload all catalogs at once; as memory use gets large, reload one-at-a-time 67 68 // load catalog data from region files : do not subselect 69 catalog = load_catalogs (skylist, &Ncatalog, FALSE); 70 71 // match measurements with images 72 initImageBins (catalog, Ncatalog); 73 findImages (catalog, Ncatalog); 74 75 // update the detection coordinates using the new image parameters 76 UpdateMeasures (catalog, Ncatalog); 77 78 // write the updated detections to disk 79 save_catalogs (catalog, Ncatalog); 80 81 // save the updated image parameters 66 82 dvo_image_update (&db, VERBOSE); 67 83 dvo_image_unlock (&db); -
trunk/Ohana/src/relastro/src/setExclusions.c
r15130 r16810 11 11 for (i = 0; i < Ncatalog; i++) { 12 12 for (j = 0; j < catalog[i].Naverage; j++) { 13 m = catalog[i].average[j]. offset;14 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {13 m = catalog[i].average[j].measureOffset; 14 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 15 15 16 16 /* select measurements by photcode */ -
trunk/Ohana/src/relphot/src/ImageOps.c
r15509 r16810 24 24 25 25 for (i = 0; i < Nimage; i++) { 26 start[i] = image[i].tzero - MAX(0.0 5*image[i].trate*image[i].NY, 1);27 stop[i] = image[i].tzero + MAX(1.0 5*image[i].trate*image[i].NY, 1);26 start[i] = image[i].tzero - MAX(0.01*image[i].trate*image[i].NY, 1); 27 stop[i] = image[i].tzero + MAX(1.01*image[i].trate*image[i].NY, 1); 28 28 } 29 29 } -
trunk/Ohana/src/relphot/src/MosaicOps.c
r15514 r16810 41 41 42 42 /* set image time range */ 43 start = image[i].tzero - MAX(0.0 5*image[i].trate*image[i].NY, 1);44 stop = image[i].tzero + MAX(1.0 5*image[i].trate*image[i].NY, 1);43 start = image[i].tzero - MAX(0.01*image[i].trate*image[i].NY, 1); 44 stop = image[i].tzero + MAX(1.01*image[i].trate*image[i].NY, 1); 45 45 46 46 /* find existing mosaic with this time range */ -
trunk/Ohana/src/relphot/src/StarOps.c
r15514 r16810 12 12 for (i = 0; i < Ncatalog; i++) { 13 13 for (j = 0; j < catalog[i].Naverage; j++) { 14 Nmax = MAX (Nmax, catalog[i].average[j].Nm );14 Nmax = MAX (Nmax, catalog[i].average[j].Nmeasure); 15 15 } 16 16 } … … 43 43 /* calculate the average value for a single star */ 44 44 if (catalog[i].average[j].code & STAR_BAD) continue; 45 m = catalog[i].average[j]. offset;45 m = catalog[i].average[j].measureOffset; 46 46 47 47 N = 0; 48 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {48 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 49 49 if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; 50 50 // XXX allow REF stars (no Image Entry) to be included in the calculation this … … 94 94 for (i = 0; i < Ncatalog; i++) { 95 95 for (j = 0; j < catalog[i].Naverage; j++) { 96 Nmax = MAX (Nmax, catalog[i].average[j].Nm );96 Nmax = MAX (Nmax, catalog[i].average[j].Nmeasure); 97 97 } 98 98 } … … 107 107 108 108 N = 0; 109 m = catalog[i].average[j]. offset;110 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {109 m = catalog[i].average[j].measureOffset; 110 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 111 111 if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; 112 112 // XXX allow REF stars (no Image Entry) to be included in the calculation this … … 158 158 for (j = 0; j < catalog[i].Naverage; j++) { 159 159 160 m = catalog[i].average[j]. offset;161 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {160 m = catalog[i].average[j].measureOffset; 161 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 162 162 if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; 163 163 Mcal = getMcal (m, i); … … 247 247 for (i = 0; i < Ncatalog; i++) { 248 248 for (j = 0; j < catalog[i].Naverage; j++) { 249 Nmax = MAX (Nmax, catalog[i].average[j].Nm );249 Nmax = MAX (Nmax, catalog[i].average[j].Nmeasure); 250 250 } 251 251 } … … 270 270 271 271 /* accumulate list of valid measurements */ 272 m = catalog[i].average[j]. offset;272 m = catalog[i].average[j].measureOffset; 273 273 N = 0; 274 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {274 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 275 275 /* if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; */ 276 276 Mcal = getMcal (m, i); … … 305 305 image_bad = IMAGE_BAD; 306 306 IMAGE_BAD = ID_IMAGE_NOCAL; 307 m = catalog[i].average[j]. offset;307 m = catalog[i].average[j].measureOffset; 308 308 N = 0; 309 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {309 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 310 310 /* if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; */ 311 311 Mcal = getMcal (m, i); … … 362 362 /* calculate the average value for a single star */ 363 363 if (catalog[i].average[j].code & STAR_BAD) continue; 364 m = catalog[i].average[j]. offset;364 m = catalog[i].average[j].measureOffset; 365 365 366 366 N = 0; 367 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {367 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 368 368 Mcal = getMcal (m, i); 369 369 if (isnan(Mcal)) continue; -
trunk/Ohana/src/relphot/src/bcatalog.c
r15743 r16810 22 22 /* exclude stars not in range or with too few measurements */ 23 23 for (i = 0; i < catalog[0].Naverage; i++) { 24 // if (catalog[0].average[i].Nm < 2) continue;24 // if (catalog[0].average[i].Nmeasure < 2) continue; 25 25 26 26 /* start with all stars good */ 27 27 subcatalog[0].average[Naverage] = catalog[0].average[i]; 28 subcatalog[0].average[Naverage]. offset = Nmeasure;28 subcatalog[0].average[Naverage].measureOffset = Nmeasure; 29 29 for (j = 0; j < PhotNsec; j++) { 30 30 subcatalog[0].secfilt[PhotNsec*Naverage+j] = catalog[0].secfilt[PhotNsec*i+j]; … … 39 39 40 40 Nm = 0; 41 for (j = 0; j < catalog[0].average[i].Nm ; j++) {41 for (j = 0; j < catalog[0].average[i].Nmeasure; j++) { 42 42 43 offset = catalog[0].average[i]. offset + j;43 offset = catalog[0].average[i].measureOffset + j; 44 44 45 45 /* select measurements by photcode */ … … 96 96 } 97 97 # endif 98 subcatalog[0].average[Naverage].Nm = Nm;98 subcatalog[0].average[Naverage].Nmeasure = Nm; 99 99 Naverage ++; 100 100 if (Naverage == NAVERAGE) { -
trunk/Ohana/src/relphot/src/plot_scatter.c
r15509 r16810 11 11 for (i = 0; i < Ncatalog; i++) { 12 12 for (j = 0; j < catalog[i].Naverage; j++) { 13 Ntot += catalog[i].average[j].Nm ;13 Ntot += catalog[i].average[j].Nmeasure; 14 14 } 15 15 } … … 24 24 /* calculate the average value for a single star */ 25 25 if (catalog[i].average[j].code & STAR_BAD) continue; 26 m = catalog[i].average[j]. offset;26 m = catalog[i].average[j].measureOffset; 27 27 28 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {28 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 29 29 if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; 30 30 Mcal = getMcal (m, i); -
trunk/Ohana/src/relphot/src/setExclusions.c
r15038 r16810 10 10 for (i = 0; i < Ncatalog; i++) { 11 11 for (j = 0; j < catalog[i].Naverage; j++) { 12 m = catalog[i].average[j]. offset;13 for (k = 0; k < catalog[i].average[j].Nm ; k++, m++) {12 m = catalog[i].average[j].measureOffset; 13 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 14 14 15 15 /* select measurements by photcode */ -
trunk/Ohana/src/relphot/src/setMrelFinal.c
r15509 r16810 13 13 catalog[0].secfilt[PhotNsec*i+PhotSec].Xm = NAN_S_SHORT; 14 14 15 m = catalog[0].average[i]. offset;16 for (j = 0; j < catalog[0].average[i].Nm ; j++, m++) {15 m = catalog[0].average[i].measureOffset; 16 for (j = 0; j < catalog[0].average[i].Nmeasure; j++, m++) { 17 17 18 18 /* select measurements by photcode */ … … 56 56 catalog[0].average[i].code &= ~ID_STAR_FEW; 57 57 catalog[0].average[i].code &= ~ID_STAR_POOR; 58 m = catalog[0].average[i]. offset;59 for (j = 0; j < catalog[0].average[i].Nm ; j++, m++) {58 m = catalog[0].average[i].measureOffset; 59 for (j = 0; j < catalog[0].average[i].Nmeasure; j++, m++) { 60 60 catalog[0].measure[m].dbFlags &= ~ID_MEAS_NOCAL; 61 61 } … … 80 80 /* mark measures which should be ignored on second pass */ 81 81 for (i = 0; i < catalog[0].Naverage; i++) { 82 Ntot += catalog[0].average[i].Nm ;82 Ntot += catalog[0].average[i].Nmeasure; 83 83 if (catalog[0].found[i]) continue; 84 84 85 m = catalog[0].average[i]. offset;86 for (k = 0; k < catalog[0].average[i].Nm ; k++, m++) {85 m = catalog[0].average[i].measureOffset; 86 for (k = 0; k < catalog[0].average[i].Nmeasure; k++, m++) { 87 87 Ntry++; 88 88 -
trunk/Ohana/src/uniphot/src/update_catalog.c
r15509 r16810 17 17 } 18 18 19 m = catalog[0].average[i]. offset;20 for (j = 0; j < catalog[0].average[i].Nm ; j++, m++) {19 m = catalog[0].average[i].measureOffset; 20 for (j = 0; j < catalog[0].average[i].Nmeasure; j++, m++) { 21 21 code = GetPhotcodebyCode (catalog[0].measure[m].photcode); 22 22 if (code == NULL) continue;
Note:
See TracChangeset
for help on using the changeset viewer.
