Changeset 34260
- Timestamp:
- Jul 31, 2012, 4:02:00 PM (14 years ago)
- Location:
- trunk/Ohana/src
- Files:
-
- 71 edited
- 17 copied
-
addstar/Makefile (modified) (4 diffs)
-
addstar/doc/tamas_rings.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/addstar/doc/tamas_rings.c )
-
addstar/include/addstar.h (modified) (1 diff)
-
addstar/include/skycells.h (modified) (3 diffs)
-
addstar/src/BoundaryTreeIO.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/addstar/src/BoundaryTreeIO.c )
-
addstar/src/FilterStars.c (modified) (2 diffs)
-
addstar/src/ReadStarsFITS.c (modified) (20 diffs)
-
addstar/src/StarOps.c (modified) (1 diff)
-
addstar/src/args_skycells.c (modified) (2 diffs)
-
addstar/src/find_matches.c (modified) (2 diffs)
-
addstar/src/find_matches_closest.c (modified) (2 diffs)
-
addstar/src/find_matches_closest_refstars.c (modified) (3 diffs)
-
addstar/src/find_matches_refstars.c (modified) (2 diffs)
-
addstar/src/findskycell.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/addstar/src/findskycell.c )
-
addstar/src/mkcmf.c (modified) (3 diffs)
-
addstar/src/psps_ids.c (modified) (1 diff)
-
addstar/src/sky_tessalation.c (modified) (5 diffs)
-
addstar/test/simple.dvo (modified) (10 diffs)
-
dvomerge/Makefile (modified) (6 diffs)
-
dvomerge/include/dvomerge.h (modified) (2 diffs)
-
dvomerge/include/dvoverify.h (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/dvomerge/include/dvoverify.h )
-
dvomerge/src/args.c (modified) (1 diff)
-
dvomerge/src/dvomergeContinue.c (modified) (1 diff)
-
dvomerge/src/dvomergeContinue_threaded.c (modified) (1 diff)
-
dvomerge/src/dvomergeUpdate_catalogs.c (modified) (4 diffs)
-
dvomerge/src/dvoverify.c (modified) (6 diffs)
-
dvomerge/src/dvoverify_args.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/dvomerge/src/dvoverify_args.c )
-
dvomerge/src/dvoverify_catalogs.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/dvomerge/src/dvoverify_catalogs.c )
-
dvomerge/src/dvoverify_client.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/dvomerge/src/dvoverify_client.c )
-
dvomerge/src/dvoverify_utils.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/dvomerge/src/dvoverify_utils.c )
-
dvomerge/test (modified) (1 prop)
-
libautocode/Makefile.Targets (modified) (10 diffs)
-
libautocode/def/average-ps1-v4.d (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/average-ps1-v4.d )
-
libautocode/def/cmf-ps1-sv1.d (modified) (1 diff)
-
libautocode/def/cmf-ps1-v1.d (modified) (1 diff)
-
libautocode/def/cmf-ps1-v2.d (modified) (1 diff)
-
libautocode/def/cmf-ps1-v3.d (modified) (1 diff)
-
libautocode/def/image-ps1-v4.d (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/image-ps1-v4.d )
-
libautocode/def/measure-ps1-v3.d (modified) (3 diffs)
-
libautocode/def/measure-ps1-v4.d (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/measure-ps1-v4.d )
-
libautocode/def/measure.d (modified) (2 diffs)
-
libautocode/def/photcode-ps1-v4.d (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/photcode-ps1-v4.d )
-
libautocode/def/secfilt-ps1-v4.d (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/secfilt-ps1-v4.d )
-
libautocode/def/secfilt.d (modified) (1 diff)
-
libdvo/Makefile (modified) (3 diffs)
-
libdvo/doc/notes.txt (modified) (2 diffs)
-
libdvo/include/dvo.h (modified) (6 diffs)
-
libdvo/include/dvodb.h (modified) (3 diffs)
-
libdvo/include/ps1_v4_defs.h (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libdvo/include/ps1_v4_defs.h )
-
libdvo/src/BoundaryTree.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/BoundaryTree.c )
-
libdvo/src/LoadPhotcodesFITS.c (modified) (1 diff)
-
libdvo/src/SavePhotcodesFITS.c (modified) (2 diffs)
-
libdvo/src/dbExtractAverages.c (modified) (2 diffs)
-
libdvo/src/dbExtractMeasures.c (modified) (3 diffs)
-
libdvo/src/dbFields.c (modified) (4 diffs)
-
libdvo/src/dvo_catalog.c (modified) (3 diffs)
-
libdvo/src/dvo_catalog_raw.c (modified) (8 diffs)
-
libdvo/src/dvo_convert.c (modified) (10 diffs)
-
libdvo/src/dvo_convert_PS1_DEV_1.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_PS1_DEV_2.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_PS1_REF.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_PS1_V1.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_PS1_V2.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_PS1_V3.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_PS1_V4.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c )
-
libdvo/src/dvo_convert_elixir.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_loneos.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_panstarrs_DEV_0.c (modified) (2 diffs)
-
libdvo/src/dvo_convert_panstarrs_DEV_1.c (modified) (2 diffs)
-
libdvo/src/dvo_image.c (modified) (1 diff)
-
libdvo/src/dvo_image_raw.c (modified) (2 diffs)
-
libdvo/src/dvo_photcode_ops.c (modified) (4 diffs)
-
libohana/include/ohana.h (modified) (1 diff)
-
opihi/cmd.astro (modified) (1 prop)
-
opihi/dvo/dvo_host_utils.c (modified) (3 diffs)
-
opihi/dvo/gimages.c (modified) (1 diff)
-
opihi/dvo/hosts.c (modified) (7 diffs)
-
opihi/dvo/mextract.c (modified) (1 diff)
-
opihi/lib.shell/check_stack.c (modified) (2 diffs)
-
relastro/src/relastro_objects.c (modified) (1 diff)
-
relphot/Makefile (modified) (2 diffs)
-
relphot/include/relphot.h (modified) (3 diffs)
-
relphot/src/BoundaryTreeOps.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/relphot/src/BoundaryTreeOps.c )
-
relphot/src/ImageOps.c (modified) (1 diff)
-
relphot/src/StarOps.c (modified) (10 diffs)
-
relphot/src/args.c (modified) (1 diff)
-
tools/src/ftable.c (modified) (1 diff)
-
tools/src/glockfile.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/addstar/Makefile
r34088 r34260 17 17 FULL_LDFLAGS = -lkapa -ldvo -lFITS -lohana $(BASE_LDFLAGS) 18 18 19 addstar : $(BIN)/addstar.$(ARCH) 20 addstard : $(BIN)/addstard.$(ARCH) 21 addstart : $(BIN)/addstart.$(ARCH) 22 addstarc : $(BIN)/addstarc.$(ARCH) 23 mkacc-2mass : $(BIN)/mkacc-2mass.$(ARCH) 24 sedstar : $(BIN)/sedstar.$(ARCH) 25 load2mass : $(BIN)/load2mass.$(ARCH) 26 loadwise : $(BIN)/loadwise.$(ARCH) 27 loadsupercos: $(BIN)/loadsupercos.$(ARCH) 28 gztest : $(BIN)/gztest.$(ARCH) 29 mkcmf : $(BIN)/mkcmf.$(ARCH) 19 addstar : $(BIN)/addstar.$(ARCH) 20 addstard : $(BIN)/addstard.$(ARCH) 21 addstart : $(BIN)/addstart.$(ARCH) 22 addstarc : $(BIN)/addstarc.$(ARCH) 23 mkacc-2mass : $(BIN)/mkacc-2mass.$(ARCH) 24 sedstar : $(BIN)/sedstar.$(ARCH) 25 load2mass : $(BIN)/load2mass.$(ARCH) 26 loadwise : $(BIN)/loadwise.$(ARCH) 27 dumpskycells : $(BIN)/dumpskycells.$(ARCH) 28 findskycell : $(BIN)/findskycell.$(ARCH) 29 loadsupercos : $(BIN)/loadsupercos.$(ARCH) 30 gztest : $(BIN)/gztest.$(ARCH) 31 mkcmf : $(BIN)/mkcmf.$(ARCH) 30 32 31 33 all: addstar addstar_client sedstar load2mass skycells mkcmf loadwise loadsupercos dumpskycells 32 34 33 INSTALL = addstar addstar_client sedstar load2mass skycells mkcmf loadwise loadsupercos dumpskycells 35 INSTALL = addstar addstar_client sedstar load2mass skycells mkcmf loadwise loadsupercos dumpskycells findskycell 34 36 35 37 # I need to fix the client/server version of addstar now that I have dropped Stars … … 299 301 $(SRC)/SetSignals.$(ARCH).o \ 300 302 303 FINDSKYCELL = \ 304 $(SRC)/findskycell.$(ARCH).o \ 305 $(SRC)/Shutdown.$(ARCH).o 306 301 307 $(ADDSTARC) : $(INC)/addstar.h 302 308 $(ADDSTARD) : $(INC)/addstar.h … … 306 312 $(SKYCELLS) : $(INC)/addstar.h 307 313 $(DUMPSKYCELLS) : $(INC)/addstar.h 314 $(FINDSKYCELL) : $(INC)/addstar.h 308 315 $(LOAD-2MASS) : $(INC)/addstar.h $(INC)/2mass.h 309 316 $(LOAD-WISE) : $(INC)/addstar.h $(INC)/WISE.h … … 322 329 $(BIN)/skycells.$(ARCH) : $(SKYCELLS) 323 330 $(BIN)/dumpskycells.$(ARCH) : $(DUMPSKYCELLS) 331 $(BIN)/findskycell.$(ARCH) : $(FINDSKYCELL) 324 332 $(BIN)/mkcmf.$(ARCH) : $(MKCMF) 325 333 -
trunk/Ohana/src/addstar/include/addstar.h
r33963 r34260 297 297 uint64_t CreatePSPSDetectionID(double tobs, int ccdid, int detID); 298 298 uint64_t CreatePSPSObjectID(double ra, double dec); 299 uint64_t CreatePSPSStackDetectionID(int sourceID, int imageID, int detID); 299 300 300 301 int altaz (double *alt, double *az, double ha, double dec, double latitude); -
trunk/Ohana/src/addstar/include/skycells.h
r33719 r34260 12 12 # include <glob.h> 13 13 14 enum {SQUARES, TRIANGLES, LOCAL, RINGS };14 enum {SQUARES, TRIANGLES, LOCAL, RINGS, TAMAS}; 15 15 enum {TETRAHEDRON, CUBE, OCTOHEDRON, DODECAHEDRON, ICOSAHEDRON}; 16 16 … … 95 95 int sky_tessellation_squares PROTO((FITS_DB *db, int level, int Nmax)); 96 96 int sky_tessellation_rings PROTO((FITS_DB *db, int level, int Nmax)); 97 int sky_tessellation_tamas PROTO((FITS_DB *db, int level, int Nmax)); 97 98 98 99 int sky_triangle_to_image PROTO((Image *image, SkyTriangle *triangle)); … … 104 105 105 106 SkyRectangle *sky_rectangle_ring PROTO((float dec, float dDEC, int *nring, char *format)); 107 SkyRectangle *sky_rectangle_tamas PROTO((double *Dec, double dm, double halfa, double halftheta, int *nring, char *format)); 106 108 107 109 SkyTriangle *sky_divide_triangles PROTO((SkyTriangle *in, int *ntriangles)); -
trunk/Ohana/src/addstar/src/FilterStars.c
r29001 r34260 84 84 stars[N].measure.Map += MTIME - dMs; 85 85 } 86 if (!isnan(stars[N].measure.Mkron)) { 87 stars[N].measure.Mkron += MTIME - dMs; 88 } 89 if (!isnan(stars[N].measure.FluxPSF)) { 90 stars[N].measure.FluxPSF /= image[0].exptime; 91 } 92 if (!isnan(stars[N].measure.dFluxPSF)) { 93 stars[N].measure.dFluxPSF /= image[0].exptime; 94 } 95 if (!isnan(stars[N].measure.FluxKron)) { 96 stars[N].measure.FluxKron /= image[0].exptime; 97 } 98 if (!isnan(stars[N].measure.dFluxKron)) { 99 stars[N].measure.dFluxKron /= image[0].exptime; 100 } 86 101 87 102 // the external ID is supplied, but do we trust it? … … 93 108 double mjd; 94 109 mjd = ohana_sec_to_mjd (image[0].tzero); 95 stars[N].measure.extID = CreatePSPSDetectionID(mjd, image[0].ccdnum, stars[N].measure.detID); 110 int isStack = ((image[0].photcode >= 11000) && (image[0].photcode <= 11400)); 111 112 if (isStack) { 113 stars[N].measure.extID = CreatePSPSStackDetectionID(image[0].sourceID, image[0].externID, stars[N].measure.detID); 114 } else { 115 stars[N].measure.extID = CreatePSPSDetectionID(mjd, image[0].ccdnum, stars[N].measure.detID); 116 } 96 117 } else { 97 118 stars[N].measure.extID = 0; -
trunk/Ohana/src/addstar/src/ReadStarsFITS.c
r31160 r34260 10 10 Header theader; 11 11 FTable table; 12 Stars *stars; 12 Stars *stars; // Stars contains Average and Measure 13 13 14 14 if (in_theader == NULL) { … … 89 89 InitStar (&stars[i]); 90 90 91 stars[i].measure.Xccd = smpdata[i].X; 92 stars[i].measure.Yccd = smpdata[i].Y; 91 stars[i].measure.Xccd = smpdata[i].X; 92 stars[i].measure.Yccd = smpdata[i].Y; 93 stars[i].measure.dXccd = NAN_S_SHORT; // not provided by SMPDATA: 94 stars[i].measure.dYccd = NAN_S_SHORT; // not provided by SMPDATA: 95 96 stars[i].measure.posangle = NAN_S_SHORT; // not provided by SMPDATA: 97 stars[i].measure.pltscale = NAN; // not provided by SMPDATA: 93 98 94 99 if ((smpdata[i].M >= ZeroPt) || isnan(smpdata[i].M)) { 95 stars[i].measure.M = NAN; 96 stars[i].measure.Map = NAN; 97 } else { 98 stars[i].measure.M = smpdata[i].M; 99 stars[i].measure.Map = smpdata[i].M; 100 } 101 102 stars[i].measure.dM = smpdata[i].dM*0.001; 103 100 stars[i].measure.M = NAN; 101 stars[i].measure.Map = NAN; 102 stars[i].measure.FluxPSF = NAN; 103 stars[i].measure.dFluxPSF = NAN; 104 } else { 105 stars[i].measure.M = smpdata[i].M; 106 stars[i].measure.Map = smpdata[i].M; 107 stars[i].measure.FluxPSF = pow(10.0, -0.4*smpdata[i].M); 108 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * smpdata[i].dM; 109 } 110 stars[i].measure.dM = smpdata[i].dM*0.001; 111 stars[i].measure.dMcal = NAN; // not provided by SMPDATA: 112 113 stars[i].measure.Mkron = NAN; // not provided by SMPDATA: 114 stars[i].measure.dMkron = NAN; // not provided by SMPDATA: 115 stars[i].measure.FluxKron = NAN; // not provided by SMPDATA: 116 stars[i].measure.dFluxKron = NAN; // not provided by SMPDATA: 117 118 stars[i].measure.Sky = NAN; // not provided by SMPDATA: 119 stars[i].measure.dSky = NAN; // not provided by SMPDATA: 120 121 stars[i].measure.psfChisq = NAN; // not provided by SMPDATA: 122 stars[i].measure.psfQual = NAN; // not provided by SMPDATA: 123 stars[i].measure.psfNdof = NAN_S_INT; // not provided by SMPDATA: 124 stars[i].measure.psfNpix = NAN_S_INT; // not provided by SMPDATA: 125 stars[i].measure.crNsigma = NAN; // not provided by SMPDATA: 126 stars[i].measure.extNsigma = NAN; // not provided by SMPDATA: 127 128 stars[i].measure.FWx = ToShortPixels (smpdata[i].fx); 129 stars[i].measure.FWy = ToShortPixels (smpdata[i].fy); 130 stars[i].measure.theta = ToShortDegrees (smpdata[i].df); 131 132 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by SMPDATA: 133 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by SMPDATA: 134 stars[i].measure.Myy = NAN_S_SHORT; // not provided by SMPDATA: 135 104 136 // the dophot type information gets pushed into the upper 2 bytes of photFlags 105 stars[i].measure.photFlags = (smpdata[i].dophot << 16); 106 107 stars[i].measure.FWx = ToShortPixels (smpdata[i].fx); 108 stars[i].measure.FWy = ToShortPixels (smpdata[i].fy); 109 stars[i].measure.theta = ToShortDegrees (smpdata[i].df); 137 stars[i].measure.photFlags = (smpdata[i].dophot << 16); 110 138 } 111 139 *nstars = Nstars; … … 131 159 for (i = 0; i < Nstars; i++) { 132 160 InitStar (&stars[i]); 133 stars[i].measure.Xccd = ps1data[i].X; 134 stars[i].measure.Yccd = ps1data[i].Y; 135 136 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 137 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 161 stars[i].measure.Xccd = ps1data[i].X; 162 stars[i].measure.Yccd = ps1data[i].Y; 163 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 164 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 138 165 166 stars[i].measure.posangle = NAN_S_SHORT; // not provided by PS1_DEV_0: 167 stars[i].measure.pltscale = NAN; // not provided by PS1_DEV_0: 168 139 169 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 140 stars[i].measure.M = NAN; 141 } else { 142 stars[i].measure.M = ps1data[i].M + ZeroPt; 143 } 144 stars[i].measure.Map = NAN; 145 stars[i].measure.dM = ps1data[i].dM; 146 stars[i].measure.Sky = ps1data[i].sky; 147 stars[i].measure.dSky = ps1data[i].dSky; 148 149 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 150 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 151 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 152 153 stars[i].measure.psfChisq = ps1data[i].psfChisq; 154 stars[i].measure.psfQual = ps1data[i].psfQual; 155 156 stars[i].measure.detID = ps1data[i].detID; 170 stars[i].measure.M = NAN; 171 stars[i].measure.FluxPSF = NAN; 172 stars[i].measure.dFluxPSF = NAN; 173 } else { 174 stars[i].measure.M = ps1data[i].M + ZeroPt; 175 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 176 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 177 } 178 stars[i].measure.dM = ps1data[i].dM; 179 stars[i].measure.dMcal = NAN; // not provided by PS1_DEV_0: 180 stars[i].measure.Map = NAN; // not provided by PS1_DEV_0: 181 182 stars[i].measure.Mkron = NAN; // not provided by PS1_DEV_0: 183 stars[i].measure.dMkron = NAN; // not provided by PS1_DEV_0: 184 stars[i].measure.FluxKron = NAN; // not provided by PS1_DEV_0: 185 stars[i].measure.dFluxKron = NAN; // not provided by PS1_DEV_0: 186 187 stars[i].measure.Sky = ps1data[i].sky; 188 stars[i].measure.dSky = ps1data[i].dSky; 189 190 stars[i].measure.psfChisq = ps1data[i].psfChisq; 191 stars[i].measure.psfQual = ps1data[i].psfQual; 192 stars[i].measure.psfNdof = NAN_S_INT; // not provided by PS1_DEV_0: 193 stars[i].measure.psfNpix = NAN_S_INT; // not provided by PS1_DEV_0: 194 stars[i].measure.crNsigma = NAN; // not provided by PS1_DEV_0: 195 stars[i].measure.extNsigma = NAN; // not provided by PS1_DEV_0: 196 197 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 198 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 199 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 200 201 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by PS1_DEV_0: 202 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by PS1_DEV_0: 203 stars[i].measure.Myy = NAN_S_SHORT; // not provided by PS1_DEV_0: 204 205 stars[i].measure.photFlags = 0; // not provided by PS1_DEV_0: 206 207 stars[i].measure.detID = ps1data[i].detID; 157 208 } 158 209 *nstars = Nstars; … … 182 233 stars[i].measure.Xccd = ps1data[i].X; 183 234 stars[i].measure.Yccd = ps1data[i].Y; 184 185 235 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 186 236 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 187 237 238 stars[i].measure.posangle = NAN_S_SHORT; // not provided by PS1_DEV_1: 239 stars[i].measure.pltscale = NAN; // not provided by PS1_DEV_1: 240 188 241 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 189 stars[i].measure.M = NAN; 190 } else { 191 stars[i].measure.M = ps1data[i].M + ZeroPt; 192 } 193 stars[i].measure.Map = NAN; 242 stars[i].measure.M = NAN; 243 stars[i].measure.FluxPSF = NAN; 244 stars[i].measure.dFluxPSF = NAN; 245 } else { 246 stars[i].measure.M = ps1data[i].M + ZeroPt; 247 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 248 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 249 } 194 250 stars[i].measure.dM = ps1data[i].dM; 251 stars[i].measure.dMcal = NAN; // not provided by PS1_DEV_1: 252 stars[i].measure.Map = NAN; // not provided by PS1_DEV_1: 253 254 stars[i].measure.Mkron = NAN; // not provided by PS1_DEV_1: 255 stars[i].measure.dMkron = NAN; // not provided by PS1_DEV_1: 256 stars[i].measure.FluxKron = NAN; // not provided by PS1_DEV_1: 257 stars[i].measure.dFluxKron = NAN; // not provided by PS1_DEV_1: 258 195 259 stars[i].measure.Sky = ps1data[i].sky; 196 260 stars[i].measure.dSky = ps1data[i].dSky; 261 262 stars[i].measure.psfChisq = ps1data[i].psfChisq; 263 stars[i].measure.psfQual = ps1data[i].psfQual; 264 stars[i].measure.psfNdof = NAN_S_INT; // not provided by PS1_DEV_1: 265 stars[i].measure.psfNpix = NAN_S_INT; // not provided by PS1_DEV_1: 266 stars[i].measure.crNsigma = ps1data[i].crNsigma; 267 stars[i].measure.extNsigma = ps1data[i].extNsigma; 197 268 198 269 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); … … 200 271 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 201 272 202 stars[i].measure.psfChisq = ps1data[i].psfChisq; 203 stars[i].measure.psfQual = ps1data[i].psfQual; 204 stars[i].measure.crNsigma = ps1data[i].crNsigma; 205 stars[i].measure.extNsigma = ps1data[i].extNsigma; 206 207 stars[i].measure.detID = ps1data[i].detID; 273 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by PS1_DEV_1: 274 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by PS1_DEV_1: 275 stars[i].measure.Myy = NAN_S_SHORT; // not provided by PS1_DEV_1: 276 208 277 stars[i].measure.photFlags = ps1data[i].flags; 278 279 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 280 stars[i].measure.detID = ps1data[i].detID; 209 281 } 210 282 *nstars = Nstars; … … 229 301 230 302 if (table[0].header[0].Naxis[0] == 136) { 231 stars = Convert_PS1_V1_Alt (table, nstars);232 return (stars);303 stars = Convert_PS1_V1_Alt (table, nstars); 304 return (stars); 233 305 } 234 306 … … 252 324 253 325 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 254 stars[i].measure.M = NAN; 255 } else { 256 stars[i].measure.M = ps1data[i].M + ZeroPt; 326 stars[i].measure.M = NAN; 327 stars[i].measure.FluxPSF = NAN; 328 stars[i].measure.dFluxPSF = NAN; 329 } else { 330 stars[i].measure.M = ps1data[i].M + ZeroPt; 331 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 332 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 257 333 } 258 334 stars[i].measure.dM = ps1data[i].dM; 259 335 stars[i].measure.dMcal = ps1data[i].dMcal; 260 336 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 261 337 338 stars[i].measure.Mkron = NAN; // not provided by PS1_V1: 339 stars[i].measure.dMkron = NAN; // not provided by PS1_V1: 340 stars[i].measure.FluxKron = NAN; // not provided by PS1_V1: 341 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V1: 342 262 343 stars[i].measure.Sky = ps1data[i].sky; 263 344 stars[i].measure.dSky = ps1data[i].dSky; 264 345 265 346 stars[i].measure.psfChisq = ps1data[i].psfChisq; 266 347 stars[i].measure.psfQual = ps1data[i].psfQual; … … 277 358 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 278 359 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 279 360 280 361 stars[i].measure.photFlags = ps1data[i].flags; 281 362 … … 328 409 329 410 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 330 stars[i].measure.M = NAN; 331 } else { 332 stars[i].measure.M = ps1data[i].M + ZeroPt; 411 stars[i].measure.M = NAN; 412 stars[i].measure.FluxPSF = NAN; 413 stars[i].measure.dFluxPSF = NAN; 414 } else { 415 stars[i].measure.M = ps1data[i].M + ZeroPt; 416 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 417 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 333 418 } 334 419 stars[i].measure.dM = ps1data[i].dM; 335 420 stars[i].measure.dMcal = ps1data[i].dMcal; 336 421 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 337 422 423 stars[i].measure.Mkron = NAN; // not provided by PS1_V1_Alt: 424 stars[i].measure.dMkron = NAN; // not provided by PS1_V1_Alt: 425 stars[i].measure.FluxKron = NAN; // not provided by PS1_V1_Alt: 426 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V1_Alt: 427 338 428 stars[i].measure.Sky = ps1data[i].sky; 339 429 stars[i].measure.dSky = ps1data[i].dSky; 340 430 341 431 stars[i].measure.psfChisq = ps1data[i].psfChisq; 342 432 stars[i].measure.psfQual = ps1data[i].psfQual; … … 353 443 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 354 444 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 355 445 356 446 stars[i].measure.photFlags = ps1data[i].flags; 357 447 … … 396 486 397 487 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 398 stars[i].measure.M = NAN; 399 } else { 400 stars[i].measure.M = ps1data[i].M + ZeroPt; 488 stars[i].measure.M = NAN; 489 stars[i].measure.FluxPSF = NAN; 490 stars[i].measure.dFluxPSF = NAN; 491 } else { 492 stars[i].measure.M = ps1data[i].M + ZeroPt; 493 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 494 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 401 495 } 402 496 stars[i].measure.dM = ps1data[i].dM; 403 497 stars[i].measure.dMcal = ps1data[i].dMcal; 404 498 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 405 499 500 stars[i].measure.Mkron = NAN; // not provided by PS1_V2: 501 stars[i].measure.dMkron = NAN; // not provided by PS1_V2: 502 stars[i].measure.FluxKron = NAN; // not provided by PS1_V2: 503 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V2: 504 406 505 stars[i].measure.Sky = ps1data[i].sky; 407 506 stars[i].measure.dSky = ps1data[i].dSky; 408 507 409 508 stars[i].measure.psfChisq = ps1data[i].psfChisq; 410 509 stars[i].measure.psfQual = ps1data[i].psfQual; … … 421 520 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 422 521 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 423 522 424 523 stars[i].measure.photFlags = ps1data[i].flags; 425 524 … … 464 563 465 564 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 466 stars[i].measure.M = NAN;467 } else { 468 stars[i].measure.M = ps1data[i].M + ZeroPt;565 stars[i].measure.M = NAN; 566 } else { 567 stars[i].measure.M = ps1data[i].M + ZeroPt; 469 568 } 470 569 stars[i].measure.dM = ps1data[i].dM; 471 570 stars[i].measure.dMcal = ps1data[i].dMcal; 472 571 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 473 572 573 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 574 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 575 576 // these fluxes are converted from counts to counts/sec in FilterStars.c 577 stars[i].measure.FluxPSF = ps1data[i].Flux; 578 stars[i].measure.dFluxPSF = ps1data[i].dFlux; 579 stars[i].measure.FluxKron = ps1data[i].kronFlux; 580 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 581 474 582 stars[i].measure.Sky = ps1data[i].sky; 475 583 stars[i].measure.dSky = ps1data[i].dSky; 476 584 477 585 stars[i].measure.psfChisq = ps1data[i].psfChisq; 478 586 stars[i].measure.psfQual = ps1data[i].psfQual; … … 489 597 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 490 598 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 491 599 492 600 stars[i].measure.photFlags = ps1data[i].flags; 493 601 … … 496 604 497 605 // the Average fields and the following Measure fields are set in FilterStars after 498 // the image metadata is in hand: dR, dD, Mcal, dt, airmass, az, t, imageID, extID, 499 // averef is set in find_matches, dbFlags is zero on ingest. 606 // the image metadata is in hand: dR, dD, Mcal, dt, airmass, az, t, imageID, extID. 607 608 // averef is set in find_matches 609 610 // dbFlags is zero on ingest. 500 611 501 612 // the following fields are currently not being set anywhere: t_msec … … 514 625 515 626 if (table[0].header[0].Naxis[0] == 196) { 516 stars = Convert_PS1_SV1_Alt (table, nstars);517 return (stars);627 stars = Convert_PS1_SV1_Alt (table, nstars); 628 return (stars); 518 629 } 519 630 … … 537 648 538 649 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 539 stars[i].measure.M = NAN;540 } else { 541 stars[i].measure.M = ps1data[i].M + ZeroPt;650 stars[i].measure.M = NAN; 651 } else { 652 stars[i].measure.M = ps1data[i].M + ZeroPt; 542 653 } 543 654 stars[i].measure.dM = ps1data[i].dM; 544 655 stars[i].measure.dMcal = ps1data[i].dMcal; 545 656 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 546 657 658 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 659 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 660 661 // these fluxes are converted from counts to counts/sec in FilterStars.c 662 stars[i].measure.FluxPSF = ps1data[i].Flux; 663 stars[i].measure.dFluxPSF = ps1data[i].dFlux; 664 stars[i].measure.FluxKron = ps1data[i].kronFlux; 665 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 666 547 667 stars[i].measure.Sky = ps1data[i].sky; 548 668 stars[i].measure.dSky = ps1data[i].dSky; 549 669 550 670 stars[i].measure.psfChisq = ps1data[i].psfChisq; 551 671 stars[i].measure.psfQual = ps1data[i].psfQual; … … 562 682 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 563 683 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 564 684 565 685 stars[i].measure.photFlags = ps1data[i].flags; 566 686 … … 607 727 608 728 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 609 stars[i].measure.M = NAN;610 } else { 611 stars[i].measure.M = ps1data[i].M + ZeroPt;729 stars[i].measure.M = NAN; 730 } else { 731 stars[i].measure.M = ps1data[i].M + ZeroPt; 612 732 } 613 733 stars[i].measure.dM = ps1data[i].dM; 614 734 stars[i].measure.dMcal = ps1data[i].dMcal; 615 735 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 616 736 737 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 738 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 739 740 // these fluxes are converted from counts to counts/sec in FilterStars.c 741 stars[i].measure.FluxPSF = ps1data[i].Flux; 742 stars[i].measure.dFluxPSF = ps1data[i].dFlux; 743 stars[i].measure.FluxKron = ps1data[i].kronFlux; 744 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 745 617 746 stars[i].measure.Sky = ps1data[i].sky; 618 747 stars[i].measure.dSky = ps1data[i].dSky; 619 748 620 749 stars[i].measure.psfChisq = ps1data[i].psfChisq; 621 750 stars[i].measure.psfQual = ps1data[i].psfQual; … … 632 761 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 633 762 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 634 763 635 764 stars[i].measure.photFlags = ps1data[i].flags; 636 765 -
trunk/Ohana/src/addstar/src/StarOps.c
r30613 r34260 3 3 int InitStar (Stars *star) { 4 4 5 memset (&star[0].average, 0, sizeof(Average)); 6 memset (&star[0].measure, 0, sizeof(Measure)); 5 6 dvo_measure_init (&star[0].measure); 7 dvo_average_init (&star[0].average); 7 8 star[0].found = -1; // found == -1 -> not yet found (use enums?) 8 9 -
trunk/Ohana/src/addstar/src/args_skycells.c
r31239 r34260 37 37 if (!strcasecmp (argv[N], "rings")) { 38 38 MODE = RINGS; 39 } 40 if (!strcasecmp (argv[N], "tamas")) { 41 MODE = TAMAS; 39 42 } 40 43 remove_argument (N, &argc, argv); … … 179 182 } 180 183 remove_argument (N, &argc, argv); 184 } 185 if (MODE == TAMAS) { 186 CELLSIZE = 3.955; 187 if ((N = get_argument (argc, argv, "-cellsize"))) { 188 remove_argument (N, &argc, argv); 189 CELLSIZE = strtod (argv[N], &ptr); 190 if ((*ptr != 0) || (CELLSIZE < 0.0)) { 191 fprintf (stderr, "-cellsize requires a floating-point argument\n"); 192 help (); 193 } 194 remove_argument (N, &argc, argv); 195 } 181 196 } 182 197 -
trunk/Ohana/src/addstar/src/find_matches.c
r33963 r34260 250 250 if (!IN_REGION (stars[i].average.R, stars[i].average.D)) continue; 251 251 252 dvo_average_init (&catalog[0].average[Nave]); 252 253 catalog[0].average[Nave].R = stars[i].average.R; 253 254 catalog[0].average[Nave].D = stars[i].average.D; 254 catalog[0].average[Nave].dR = 0;255 catalog[0].average[Nave].dD = 0;256 255 257 256 catalog[0].average[Nave].Nmeasure = NSTAR_GROUP; 258 catalog[0].average[Nave].Nmissing = 0;259 catalog[0].average[Nave].Nextend = 0;260 261 257 catalog[0].average[Nave].measureOffset = Nmeas; 262 catalog[0].average[Nave].missingOffset = -1;263 catalog[0].average[Nave].extendOffset = -1;264 265 catalog[0].average[Nave].uR = 0;266 catalog[0].average[Nave].uD = 0;267 catalog[0].average[Nave].duR = 0;268 catalog[0].average[Nave].duD = 0;269 catalog[0].average[Nave].P = 0;270 catalog[0].average[Nave].dP = 0;271 272 catalog[0].average[Nave].Xp = 0;273 catalog[0].average[Nave].ChiSqAve = 0.0;274 catalog[0].average[Nave].ChiSqPM = 0.0;275 catalog[0].average[Nave].ChiSqPar = 0.0;276 catalog[0].average[Nave].Tmean = 0;277 catalog[0].average[Nave].Trange = 0;278 catalog[0].average[Nave].Npos = 0;279 280 258 catalog[0].average[Nave].objID = objID; 281 259 catalog[0].average[Nave].catID = catID; 282 catalog[0].average[Nave].flags = 0; 260 283 261 if (PSPS_ID) { 284 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, 285 catalog[0].average[Nave].D); 286 } else { 287 catalog[0].average[Nave].extID = 0; 262 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, catalog[0].average[Nave].D); 288 263 } 289 264 … … 291 266 292 267 for (j = 0; j < Nsecfilt; j++) { 293 catalog[0].secfilt[Nave*Nsecfilt+j].M = NAN; 294 catalog[0].secfilt[Nave*Nsecfilt+j].Map = NAN; 295 catalog[0].secfilt[Nave*Nsecfilt+j].dM = NAN; 296 catalog[0].secfilt[Nave*Nsecfilt+j].Mstdev = NAN_S_SHORT; 297 catalog[0].secfilt[Nave*Nsecfilt+j].Xm = NAN_S_SHORT; 298 catalog[0].secfilt[Nave*Nsecfilt+j].M_20 = NAN_S_SHORT; 299 catalog[0].secfilt[Nave*Nsecfilt+j].M_80 = NAN_S_SHORT; 300 catalog[0].secfilt[Nave*Nsecfilt+j].Ncode = 0; 301 catalog[0].secfilt[Nave*Nsecfilt+j].Nused = 0; 302 catalog[0].secfilt[Nave*Nsecfilt+j].ubercalDist = 1000; 303 catalog[0].secfilt[Nave*Nsecfilt+j].flags = 0; 268 dvo_secfilt_init (&catalog[0].secfilt[Nave*Nsecfilt+j]); 304 269 } 305 270 -
trunk/Ohana/src/addstar/src/find_matches_closest.c
r33963 r34260 252 252 if (!IN_REGION (stars[i].average.R, stars[i].average.D)) continue; 253 253 254 dvo_average_init (&catalog[0].average[Nave]); 254 255 catalog[0].average[Nave].R = stars[i].average.R; 255 256 catalog[0].average[Nave].D = stars[i].average.D; 256 catalog[0].average[Nave].dR = 0;257 catalog[0].average[Nave].dD = 0;258 257 259 258 catalog[0].average[Nave].Nmeasure = NSTAR_GROUP; 260 catalog[0].average[Nave].Nmissing = 0;261 catalog[0].average[Nave].Nextend = 0;262 263 259 catalog[0].average[Nave].measureOffset = Nmeas; 264 catalog[0].average[Nave].missingOffset = -1;265 catalog[0].average[Nave].extendOffset = -1;266 267 catalog[0].average[Nave].uR = 0;268 catalog[0].average[Nave].uD = 0;269 catalog[0].average[Nave].duR = 0;270 catalog[0].average[Nave].duD = 0;271 catalog[0].average[Nave].P = 0;272 catalog[0].average[Nave].dP = 0;273 274 catalog[0].average[Nave].Xp = 0;275 catalog[0].average[Nave].ChiSqAve = 0.0;276 catalog[0].average[Nave].ChiSqPM = 0.0;277 catalog[0].average[Nave].ChiSqPar = 0.0;278 catalog[0].average[Nave].Tmean = 0;279 catalog[0].average[Nave].Trange = 0;280 catalog[0].average[Nave].Npos = 0;281 282 260 catalog[0].average[Nave].objID = objID; 283 261 catalog[0].average[Nave].catID = catID; 284 catalog[0].average[Nave].flags = 0; 262 285 263 if (PSPS_ID) { 286 264 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, catalog[0].average[Nave].D); 287 } else {288 catalog[0].average[Nave].extID = 0;289 265 } 290 266 … … 292 268 293 269 for (j = 0; j < Nsecfilt; j++) { 294 catalog[0].secfilt[Nave*Nsecfilt+j].M = NAN; 295 catalog[0].secfilt[Nave*Nsecfilt+j].Map = NAN; 296 catalog[0].secfilt[Nave*Nsecfilt+j].dM = NAN; 297 catalog[0].secfilt[Nave*Nsecfilt+j].Mstdev = NAN_S_SHORT; 298 catalog[0].secfilt[Nave*Nsecfilt+j].Xm = NAN_S_SHORT; 299 catalog[0].secfilt[Nave*Nsecfilt+j].M_20 = NAN_S_SHORT; 300 catalog[0].secfilt[Nave*Nsecfilt+j].M_80 = NAN_S_SHORT; 301 catalog[0].secfilt[Nave*Nsecfilt+j].Ncode = 0; 302 catalog[0].secfilt[Nave*Nsecfilt+j].Nused = 0; 303 catalog[0].secfilt[Nave*Nsecfilt+j].ubercalDist = 1000; 304 catalog[0].secfilt[Nave*Nsecfilt+j].flags = 0; 270 dvo_secfilt_init (&catalog[0].secfilt[Nave*Nsecfilt+j]); 305 271 } 306 272 -
trunk/Ohana/src/addstar/src/find_matches_closest_refstars.c
r28241 r34260 255 255 if (!IN_REGION (stars[N][0].average.R, stars[N][0].average.D)) continue; 256 256 257 dvo_average_init (&catalog[0].average[Nave]); 257 258 catalog[0].average[Nave].R = stars[N][0].average.R; 258 259 catalog[0].average[Nave].D = stars[N][0].average.D; 259 260 260 261 catalog[0].average[Nave].Nmeasure = NREFSTAR_GROUP; 261 catalog[0].average[Nave].Nmissing = 0;262 catalog[0].average[Nave].Nextend = 0;263 264 262 catalog[0].average[Nave].measureOffset = Nmeas; 265 catalog[0].average[Nave].missingOffset = -1; 266 catalog[0].average[Nave].extendOffset = -1; 263 catalog[0].average[Nave].objID = objID; 264 catalog[0].average[Nave].catID = catID; 265 266 if (PSPS_ID) { 267 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, catalog[0].average[Nave].D); 268 } 267 269 268 270 if (ACCEPT_MOTION) { … … 275 277 catalog[0].average[Nave].P = stars[N][0].average.P; 276 278 catalog[0].average[Nave].dP = stars[N][0].average.dP; 277 } else {278 catalog[0].average[Nave].dR = 0;279 catalog[0].average[Nave].dD = 0;280 catalog[0].average[Nave].uR = 0;281 catalog[0].average[Nave].uD = 0;282 catalog[0].average[Nave].duR = 0;283 catalog[0].average[Nave].duD = 0;284 catalog[0].average[Nave].P = 0;285 catalog[0].average[Nave].dP = 0;286 catalog[0].average[Nave].Xp = 0;287 }288 289 catalog[0].average[Nave].Xp = 0;290 catalog[0].average[Nave].ChiSqAve = 0.0;291 catalog[0].average[Nave].ChiSqPM = 0.0;292 catalog[0].average[Nave].ChiSqPar = 0.0;293 catalog[0].average[Nave].Tmean = 0;294 catalog[0].average[Nave].Trange = 0;295 catalog[0].average[Nave].Npos = 0;296 297 catalog[0].average[Nave].objID = objID;298 catalog[0].average[Nave].catID = catID;299 catalog[0].average[Nave].flags = 0;300 if (PSPS_ID) {301 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R,302 catalog[0].average[Nave].D);303 } else {304 catalog[0].average[Nave].extID = 0;305 279 } 306 280 … … 308 282 309 283 for (j = 0; j < Nsecfilt; j++) { 310 catalog[0].secfilt[Nave*Nsecfilt+j].M = NAN; 311 catalog[0].secfilt[Nave*Nsecfilt+j].dM = NAN; 312 catalog[0].secfilt[Nave*Nsecfilt+j].Xm = NAN_S_SHORT; 313 catalog[0].secfilt[Nave*Nsecfilt+j].M_20 = NAN_S_SHORT; 314 catalog[0].secfilt[Nave*Nsecfilt+j].M_80 = NAN_S_SHORT; 315 catalog[0].secfilt[Nave*Nsecfilt+j].Ncode = 0; 316 catalog[0].secfilt[Nave*Nsecfilt+j].Nused = 0; 284 dvo_secfilt_init (&catalog[0].secfilt[Nave*Nsecfilt+j]); 317 285 } 318 286 -
trunk/Ohana/src/addstar/src/find_matches_refstars.c
r33653 r34260 227 227 if (!IN_REGION (stars[N][0].average.R, stars[N][0].average.D)) continue; 228 228 229 dvo_average_init (&catalog[0].average[Nave]); 229 230 catalog[0].average[Nave].R = stars[N][0].average.R; 230 231 catalog[0].average[Nave].D = stars[N][0].average.D; 231 232 232 233 catalog[0].average[Nave].Nmeasure = NREFSTAR_GROUP; 233 catalog[0].average[Nave].Nmissing = 0;234 catalog[0].average[Nave].Nextend = 0;235 236 234 catalog[0].average[Nave].measureOffset = Nmeas; 237 catalog[0].average[Nave].missingOffset = -1; 238 catalog[0].average[Nave].extendOffset = -1; 235 catalog[0].average[Nave].objID = objID; 236 catalog[0].average[Nave].catID = catID; 237 238 if (PSPS_ID) { 239 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, catalog[0].average[Nave].D); 240 } 239 241 240 242 if (ACCEPT_MOTION) { … … 247 249 catalog[0].average[Nave].P = stars[N][0].average.P; 248 250 catalog[0].average[Nave].dP = stars[N][0].average.dP; 249 } else { 250 catalog[0].average[Nave].dR = 0; 251 catalog[0].average[Nave].dD = 0; 252 catalog[0].average[Nave].uR = 0; 253 catalog[0].average[Nave].uD = 0; 254 catalog[0].average[Nave].duR = 0; 255 catalog[0].average[Nave].duD = 0; 256 catalog[0].average[Nave].P = 0; 257 catalog[0].average[Nave].dP = 0; 258 catalog[0].average[Nave].Xp = 0; 259 } 260 261 catalog[0].average[Nave].Xp = 0; 262 catalog[0].average[Nave].ChiSqAve = 0.0; 263 catalog[0].average[Nave].ChiSqPM = 0.0; 264 catalog[0].average[Nave].ChiSqPar = 0.0; 265 catalog[0].average[Nave].Tmean = 0; 266 catalog[0].average[Nave].Trange = 0; 267 catalog[0].average[Nave].Npos = 0; 268 269 catalog[0].average[Nave].objID = objID; 270 catalog[0].average[Nave].catID = catID; 271 catalog[0].average[Nave].flags = 0; 272 if (PSPS_ID) { 273 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, 274 catalog[0].average[Nave].D); 275 } else { 276 catalog[0].average[Nave].extID = 0; 277 } 278 251 } 279 252 280 253 objID ++; 281 254 282 255 for (j = 0; j < Nsecfilt; j++) { 283 catalog[0].secfilt[Nave*Nsecfilt+j].M = NAN; 284 catalog[0].secfilt[Nave*Nsecfilt+j].dM = NAN; 285 catalog[0].secfilt[Nave*Nsecfilt+j].Xm = NAN_S_SHORT; 286 catalog[0].secfilt[Nave*Nsecfilt+j].M_20 = NAN_S_SHORT; 287 catalog[0].secfilt[Nave*Nsecfilt+j].M_80 = NAN_S_SHORT; 288 catalog[0].secfilt[Nave*Nsecfilt+j].Ncode = 0; 289 catalog[0].secfilt[Nave*Nsecfilt+j].Nused = 0; 256 dvo_secfilt_init (&catalog[0].secfilt[Nave*Nsecfilt+j]); 290 257 } 291 258 -
trunk/Ohana/src/addstar/src/mkcmf.c
r33653 r34260 14 14 void gauss_init (int Nbin); 15 15 double rnd_gauss (double mean, double sigma); 16 void writeStars_PS1_V3 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars); 16 17 void writeStars_PS1_V2 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars); 17 18 void writeStars_PS1_V1 (FTable *ftable, double *X, double *Y, double *M, int Nstars); … … 276 277 if (!strcmp(type, "PS1_V2")) { 277 278 writeStars_PS1_V2 (&ftable, X, Y, M, Flag, Nstars); 279 found = TRUE; 280 } 281 if (!strcmp(type, "PS1_V3")) { 282 writeStars_PS1_V3 (&ftable, X, Y, M, Flag, Nstars); 278 283 found = TRUE; 279 284 } … … 572 577 } 573 578 579 void writeStars_PS1_V3 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) { 580 581 int i; 582 CMF_PS1_V3 *stars; 583 float flux, fSN; 584 585 // XXX add gaussian-distributed noise based on counts 586 // this needs to make different output 'stars' entries depending on the desired type 587 ALLOCATE (stars, CMF_PS1_V3, Nstars); 588 gauss_init (2048); 589 for (i = 0; i < Nstars; i++) { 590 stars[i].detID = i; 591 592 flux = pow (10.0, -0.4*M[i]); 593 fSN = 1.0 / sqrt(flux); 594 595 stars[i].X = X[i]; 596 stars[i].Y = Y[i]; 597 stars[i].M = M[i]; 598 stars[i].Map = M[i] - 0.05; 599 600 if (ADDNOISE) { 601 stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0); 602 stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0); 603 stars[i].M += fSN*rnd_gauss(0.0, 1.0); 604 } 605 606 // randomly give poor PSFQF values 607 if ((BAD_PSFQF_FRAC > 0.0) && (drand48() < BAD_PSFQF_FRAC)) { 608 stars[i].psfQual = 0.25; 609 } else { 610 stars[i].psfQual = PSFQUAL; 611 } 612 613 stars[i].dX = FX * fSN; 614 stars[i].dY = FY * fSN; 615 stars[i].dM = fSN; 616 617 stars[i].Mpeak = M[i] + 1.0; 618 stars[i].sky = SKY; 619 stars[i].dSky = DSKY; 620 stars[i].psfChisq = PSFCHI; 621 stars[i].crNsigma = CRN; 622 stars[i].extNsigma = EXTN; 623 stars[i].fx = FX; 624 stars[i].fy = FY; 625 stars[i].df = DF; 626 stars[i].nFrames = 1; 627 stars[i].flags = Flag[i]; 628 629 stars[i].kronFlux = flux * 1.25; 630 stars[i].kronFluxErr = fSN * flux * 1.25; 631 } 632 633 gfits_table_set_CMF_PS1_V3 (ftable, stars, Nstars); 634 gfits_modify (ftable->header, "EXTTYPE", "%s", 1, "PS1_V3"); 635 } 636 -
trunk/Ohana/src/addstar/src/psps_ids.c
r27527 r34260 19 19 20 20 uint64_t 21 CreatePSPSStackDetectionID(int sourceID, int imageID, int detID) 22 { 23 // sourceID : ID of database + table that tracked the image (< 0x100 = 256) 24 // imageID : external ID of the image which provided the detections (< 0x1000.0000 ~ 2.7e8) 25 // detID : detection sequence in image (< 0x1000.0000 ~ 2.7e8) 26 27 assert (detID < 0x10000000); 28 assert (imageID < 0x10000000); 29 assert (sourceID < 0x100); 30 31 uint64_t detectid = ((uint64_t)sourceID << 56) + ((uint64_t)imageID << 28) + (uint64_t)detID; 32 return detectid; 33 } 34 35 uint64_t 21 36 CreatePSPSObjectID(double ra, double dec) 22 37 { -
trunk/Ohana/src/addstar/src/sky_tessalation.c
r34088 r34260 23 23 sky_tessellation_rings (db, level, Nmax); 24 24 return TRUE; 25 case TAMAS: 26 sky_tessellation_tamas (db, level, Nmax); 27 return TRUE; 25 28 default: 26 29 break; … … 284 287 free (ring); 285 288 free (image); 289 } 290 return (TRUE); 291 } 292 293 // the RINGS tessellation uses the declination zones proposed by Tamas Budavari, 294 // based on code supplied by Tamas 2012.07.23 295 int sky_tessellation_tamas (FITS_DB *db, int level, int Nmax) { 296 297 int j, nDEC, Nimage, Nring, Ntotal, Ndigit; 298 double dec, dDEC; 299 SkyRectangle *ring; 300 Image *image; 301 char format[16]; 302 303 // The tessellation has one input parameter: the approximate cell size. Starting with 304 // the cell size, determine the optimal projection cell height (dDEC) that results in an 305 // integer number of dec zones between -90 and +90 306 307 // in fact, we place a single image on each pole, so the real range of dec is 180.0 - CELLSIZE: 308 309 nDEC = (180.0 - CELLSIZE) / CELLSIZE; 310 dDEC = (180.0 - CELLSIZE) / nDEC; 311 nDEC += 2; 312 313 // how many total projection cells for this realization? divide sky area by cell area: 314 // this is used to set the number of digits, so it does not need to be very accurate... 315 Ntotal = 41254.2 / (dDEC*dDEC); 316 Ndigit = (int)(log10(Ntotal)) + 1 ; 317 snprintf (format, 16, "skycell.%%0%dd", Ndigit); 318 319 double d2r = M_PI / 180; // is RAD_DEG 320 321 // parameter 'a' is the cell size in degrees 322 double adeg = 3.955; 323 324 // half of 'a' in radians and its atan 325 double halfa = adeg / 2 * d2r; 326 double halftheta = atan(halfa); 327 328 // loop init 329 dec = 0; // starting Decl. - could change this... 330 331 while (dec < M_PI / 2 - halftheta) { 332 double dm = dec - halftheta; // eq.5 333 if (dec == 0) dm = 0; // initial 334 335 // dec is modified by the call below 336 ring = sky_rectangle_tamas (&dec, dm, halfa, halftheta, &Nring, format); 337 if (!ring) continue; 338 339 // subdivide each image (Nx x Ny subcells) 340 Nimage = NX_SUB*NY_SUB*Nring; 341 ALLOCATE (image, Image, Nimage); 342 for (j = 0; j < Nring; j++) { 343 // convert the SkyRectangles to Images for output 344 sky_subdivide_image (&image[j*NX_SUB*NY_SUB], &ring[j], NX_SUB, NY_SUB); 345 // printf("%s %8.2f %8.2f\n", ring[j].name, ring[j].coords.crval1, ring[j].coords.crval2); 346 } 347 348 /* add the new images and save */ 349 dvo_image_addrows (db, image, Nimage); 350 SetProtect (TRUE); 351 dvo_image_update (db, VERBOSE); 352 SetProtect (FALSE); 353 dvo_image_clear_vtable (db); 354 355 free (ring); 356 free (image); 286 357 } 287 358 return (TRUE); … … 666 737 } 667 738 739 // define the parameters of a projection centers for this ring 740 // dec : ~ center of ring in Dec 741 // dDEC : approximate height 742 // nring : number of cells generated for this ring 743 // format : guide to generate the filenames (c-type string format) 744 SkyRectangle *sky_rectangle_tamas (double *Dec, double dm, double halfa, double halftheta, int *nring, char *format) { 745 746 static int Nname = 0; 747 int i, j, NX, NY; 748 SkyRectangle *ring; 749 750 double d2r = M_PI / 180; // is RAD_DEG 751 double dec = *Dec; 752 753 int nRA = (int)ceil(M_PI * cos(dm) / halftheta); // eq.6 754 double dRA = 2 * M_PI / nRA; // eq.7 755 double dp = atan(tan(dec + halftheta) * cos(dRA / 2)); // eq.9 756 757 if (dec == 0.0) { 758 ALLOCATE (ring, SkyRectangle, nRA); 759 } else { 760 ALLOCATE (ring, SkyRectangle, 2*nRA); 761 } 762 763 for (i = 0; i < nRA; i++) { 764 // R.A. can use different phase per ring 765 double ra = i * dRA; // + phase (watch wraparound) 766 767 int npass = (dec == 0.0) ? 1 : 2; 768 for (j = 0; j < npass; j++) { 769 770 int N = j*nRA + i; 771 772 memset (&ring[N], 0, sizeof(SkyRectangle)); 773 memset (&ring[N].coords, 0, sizeof(Coords)); 774 775 ring[N].coords.crval1 = ra / d2r; 776 ring[N].coords.crval2 = (j == 0) ? dec / d2r : -dec / d2r; 777 778 printf(" \t %d %25.20f %25.20f\n", i, ring[N].coords.crval2, ring[N].coords.crval1); 779 780 ring[N].coords.pc1_1 = +1.0 * X_PARITY; 781 ring[N].coords.pc1_2 = +0.0; 782 ring[N].coords.pc2_1 = -0.0; 783 ring[N].coords.pc2_2 = +1.0; 784 785 // range values are in projected degrees 786 NX = cos(dec - halftheta) * dRA * 3600.0 / SCALE / d2r; 787 NY = 2 * halftheta * 3600.0 / SCALE / d2r; 788 789 // crpix1,crpix2 is the projection center 790 ring[N].coords.crpix1 = 0.5*NX; 791 ring[N].coords.crpix2 = 0.5*NY; 792 793 ring[N].coords.cdelt1 = SCALE / 3600.0; 794 ring[N].coords.cdelt2 = SCALE / 3600.0; 795 796 strcpy (ring[N].coords.ctype, "DEC--TAN"); 797 798 ring[N].NX = NX*(1.0 + PADDING); 799 ring[N].NY = NY*(1.0 + PADDING); 800 ring[N].photcode = 1; // this needs to be set more sensibly 801 802 snprintf (ring[N].name, DVO_IMAGE_NAME_LEN, format, Nname); 803 Nname++; 804 } 805 } 806 807 // advance to next ring 808 *Dec = halftheta + dp; 809 810 *nring = (dec == 0.0) ? nRA : 2*nRA; 811 return ring; 812 } 813 668 814 // an allocated image set is supplied, we fill in the values 669 815 int sky_subdivide_image (Image *output, SkyRectangle *input, int Nx, int Ny) { … … 682 828 } 683 829 684 Ndigit = (int)(log10(Nx*Ny)) + 1 ; 685 snprintf (format, 24, "%s.%%0%dd", input[0].name, Ndigit); 830 if (Nx * Ny > 1) { 831 Ndigit = (int)(log10(Nx*Ny)) + 1 ; 832 snprintf (format, 24, "%s.%%0%dd", input[0].name, Ndigit); 833 } else { 834 snprintf (format, 24, "%s", input[0].name); 835 } 686 836 687 837 // if requested extend, the skycell boundaries so that skycells overlap … … 696 846 memcpy (&output[N].coords, &input[0].coords, sizeof(Coords)); 697 847 698 snprintf (output[N].name, DVO_IMAGE_NAME_LEN, format, N); 848 if (Nx + Ny > 1) { 849 snprintf (output[N].name, DVO_IMAGE_NAME_LEN, format, N); 850 } else { 851 snprintf (output[N].name, DVO_IMAGE_NAME_LEN, "%s", format); 852 } 853 699 854 output[N].NX = NX + 2 * pad_x; 700 855 output[N].NY = NY + 2 * pad_y; -
trunk/Ohana/src/addstar/test/simple.dvo
r33653 r34260 21 21 test.fields PS1_V2 PS1_V3 22 22 test.fields PS1_V3 PS1_V3 23 24 test.fields PS1_DEV_0 PS1_V4 25 test.fields PS1_DEV_1 PS1_V4 26 test.fields PS1_V1 PS1_V4 27 test.fields PS1_V2 PS1_V4 28 test.fields PS1_V3 PS1_V4 23 29 end 24 30 … … 83 89 sort id1 v1 84 90 sort id2 v2 91 92 # some fields require arithmetic manipulations 93 if ("$name:0" == "KRON_FLUX") 94 set v1 = -2.5*log(v1) 95 end 96 if ("$name:0" == "KRON_FLUX_ERR") 97 set v1 = KRON_FLUX_ERR / KRON_FLUX 98 end 99 85 100 set d = v1 - v2 86 101 vstat -q d … … 88 103 #echo tapOK fabs($MEAN) < 0.001 "$name:0 vs $name:2 (MEAN)" 89 104 #echo tapOK fabs($SIGMA) < 0.001 "$name:0 vs $name:2 (SIGMA)" 105 106 # THETA is stored to only (360/65536) deg accuracy 107 if ("$name:0" == "PSF_THETA") 108 echo $MEAN 109 tapOK {abs($MEAN) < 0.006} "$name:0 vs $name:2 (MEAN)" 110 tapOK {abs($SIGMA) < 0.001} "$name:0 vs $name:2 (SIGMA)" 111 continue 112 end 90 113 91 114 tapOK {abs($MEAN) < 0.001} "$name:0 vs $name:2 (MEAN)" … … 111 134 output stdout 112 135 end 136 137 # the following lists define fields in the cmf files which can be compared to their equivalents in DVO 138 # the left column is the cmf field name, the right column is the dvo field name 113 139 114 140 # list of cmf fields to test matched to mextract fields … … 122 148 PSF_INST_MAG : mag:inst 123 149 PSF_INST_MAG_SIG : mag:err 124 PEAK_FLUX_AS_MAG : SKIP 150 PEAK_FLUX_AS_MAG : SKIP # not ingested into DVO 125 151 SKY : sky 126 152 SKY_SIG : sky_err … … 130 156 PSF_THETA : THETA 131 157 PSF_QF : PSF_QF 132 N_FRAMES : SKIP 158 N_FRAMES : SKIP # not ingested into DVO 133 159 end 134 160 … … 143 169 PSF_INST_MAG : mag:inst 144 170 PSF_INST_MAG_SIG : mag:err 145 PEAK_FLUX_AS_MAG : SKIP 171 PEAK_FLUX_AS_MAG : SKIP # not ingested into DVO 146 172 SKY : sky 147 173 SKY_SIG : sky_err … … 153 179 PSF_THETA : THETA 154 180 PSF_QF : PSF_QF 155 N_FRAMES : SKIP 181 N_FRAMES : SKIP # not ingested into DVO 156 182 FLAGS : phot_flags 157 183 end … … 236 262 X_PSF_SIG : xccd:err # FAIL 237 263 Y_PSF_SIG : yccd:err # FAIL 238 RA_PSF : SKIP # astrometry is not calibrated in the cmf239 DEC_PSF : SKIP # astrometry is not calibrated in the cmf240 264 POSANGLE : SKIP # astrometry is not calibrated in the cmf 241 265 PLTSCALE : SKIP # astrometry is not calibrated in the cmf 242 266 PSF_INST_MAG : mag:inst 243 267 PSF_INST_MAG_SIG : mag:err 244 AP_MAG_STANDARD : mag:ap # FAIL 245 AP_MAG_RADIUS : SKIP # no accessor 246 PEAK_FLUX_AS_MAG : SKIP # no accessor 268 PSF_INST_FLUX : SKIP # not ingested into DVO 269 PSF_INST_FLUX_SIG : SKIP # not ingested into DVO 270 AP_MAG_STANDARD : mag:aperinst # FAIL 271 AP_MAG_RAW : SKIP # not ingested into DVO 272 AP_MAG_RADIUS : SKIP # not ingested into DVO 247 273 CAL_PSF_MAG : SKIP # photometry is not calibrated in the cmf 248 274 CAL_PSF_MAG_SIG : SKIP # photometry is not calibrated in the cmf 275 RA_PSF : SKIP # astrometry is not calibrated in the cmf 276 DEC_PSF : SKIP # astrometry is not calibrated in the cmf 277 PEAK_FLUX_AS_MAG : SKIP # not ingested into DVO 249 278 SKY : sky 250 279 SKY_SIG : sky_err … … 256 285 PSF_THETA : THETA # FAIL 257 286 PSF_QF : PSF_QF 258 PSF_NDOF : SKIP # no accessor 259 PSF_NPIX : SKIP # no accessor 260 MOMENTS_XX : SKIP # no accessor 261 MOMENTS_XY : SKIP # no accessor 262 MOMENTS_YY : SKIP # no accessor 287 PSF_QF_PERFECT : SKIP # not ingested into DVO 288 PSF_NDOF : PSF_NDOF 289 PSF_NPIX : PSF_NPIX 290 MOMENTS_XX : MXX 291 MOMENTS_XY : MXY 292 MOMENTS_YY : MYY 293 MOMENTS_M3C : SKIP # not ingested into DVO 294 MOMENTS_M3S : SKIP # not ingested into DVO 295 MOMENTS_M4C : SKIP # not ingested into DVO 296 MOMENTS_M4S : SKIP # not ingested into DVO 297 MOMENTS_R1 : SKIP # not ingested into DVO 298 MOMENTS_RH : SKIP # not ingested into DVO 299 KRON_FLUX : mag:kroninst 300 KRON_FLUX_ERR : mag:kronerr 301 KRON_FLUX_INNER : SKIP # not ingested into DVO 302 KRON_FLUX_OUTER : SKIP # not ingested into DVO 263 303 FLAGS : phot_flags 264 N_FRAMES : SKIP # no accessor265 end 304 N_FRAMES : SKIP # not ingested into DVO 305 end -
trunk/Ohana/src/dvomerge/Makefile
r33963 r34260 20 20 dvomerge_client : $(BIN)/dvomerge_client.$(ARCH) 21 21 dvoconvert : $(BIN)/dvoconvert.$(ARCH) 22 dvoverify : $(BIN)/dvoverify.$(ARCH) 23 dvoverify_client : $(BIN)/dvoverify_client.$(ARCH) 22 24 23 all: dvomerge dvomerge_client dvoconvert dvosecfilt 25 all: dvomerge dvomerge_client dvoconvert dvosecfilt dvoverify dvoverify_client 24 26 25 27 # $(SRC)/dvomergeContinue.$(ARCH).o … … 49 51 50 52 $(DVOMERGE) : $(INC)/dvomerge.h 51 52 53 $(BIN)/dvomerge.$(ARCH) : $(DVOMERGE) 53 54 … … 72 73 73 74 $(DVOMERGE_CLIENT) : $(INC)/dvomerge.h 74 75 75 $(BIN)/dvomerge_client.$(ARCH) : $(DVOMERGE_CLIENT) 76 76 … … 87 87 88 88 $(DVOCONVERT) : $(INC)/dvomerge.h 89 90 89 $(BIN)/dvoconvert.$(ARCH) : $(DVOCONVERT) 91 90 … … 99 98 100 99 $(DVOSECFILT) : $(INC)/dvomerge.h 101 102 100 $(BIN)/dvosecfilt.$(ARCH) : $(DVOSECFILT) 103 101 … … 116 114 117 115 $(DVOREPAIR) : $(INC)/dvomerge.h 118 119 116 $(BIN)/dvorepair.$(ARCH) : $(DVOREPAIR) 120 117 121 118 DVOVERIFY = \ 122 $(SRC)/dvoverify.$(ARCH).o 119 $(SRC)/dvoverify.$(ARCH).o \ 120 $(SRC)/dvoverify_args.$(ARCH).o \ 121 $(SRC)/dvoverify_catalogs.$(ARCH).o \ 122 $(SRC)/dvoverify_utils.$(ARCH).o 123 123 124 $(DVOVERIFY) : $(INC)/dvomerge.h 125 124 $(DVOVERIFY) : $(INC)/dvoverify.h 126 125 $(BIN)/dvoverify.$(ARCH) : $(DVOVERIFY) 127 126 128 INSTALL = dvomerge dvomerge_client dvoconvert dvosecfilt dvorepair dvoverify 127 DVOVERIFY_CLIENT = \ 128 $(SRC)/dvoverify_client.$(ARCH).o \ 129 $(SRC)/dvoverify_args.$(ARCH).o \ 130 $(SRC)/dvoverify_catalogs.$(ARCH).o \ 131 $(SRC)/dvoverify_utils.$(ARCH).o 132 133 $(DVOVERIFY_CLIENT) : $(INC)/dvoverify.h 134 $(BIN)/dvoverify_client.$(ARCH) : $(DVOVERIFY_CLIENT) 135 136 INSTALL = dvomerge dvomerge_client dvoconvert dvosecfilt dvorepair dvoverify dvoverify_client 129 137 130 138 # dependancy rules for binary code ######################### -
trunk/Ohana/src/dvomerge/include/dvomerge.h
r33963 r34260 17 17 # include <glob.h> 18 18 19 # define DVO_MAX_PATH 102420 21 19 int PARALLEL; 22 20 int PARALLEL_MANUAL; … … 25 23 int HOST_ID; 26 24 char *HOSTDIR; 27 28 25 29 26 int VERBOSE; -
trunk/Ohana/src/dvomerge/src/args.c
r33963 r34260 50 50 } 51 51 52 // XXX for the moment, make this selection manual. it needs to be automatic53 // based on the state of the SkyTable54 52 PARALLEL = FALSE; 55 53 if ((N = get_argument (*argc, argv, "-parallel"))) { -
trunk/Ohana/src/dvomerge/src/dvomergeContinue.c
r33657 r34260 1 NOTE: 2 /// this is now not used; it has been merged with dvomergeUpdate 3 1 4 # include "dvomerge.h" 2 5 -
trunk/Ohana/src/dvomerge/src/dvomergeContinue_threaded.c
r33657 r34260 1 NOTE: 2 /// this is now not used; it has been merged with dvomergeUpdate 3 1 4 # include "dvomerge.h" 2 5 # include <pthread.h> -
trunk/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c
r33963 r34260 94 94 fclose (fout); 95 95 96 // update header of output catalog 96 // XXX note that we are hardwired to v 2 97 // check the header of output catalog for an existing merge 97 98 long long last_size; 98 99 char last_moddate[80]; 99 gfits_scan (&outheader, "LMRG_SZ ", "%lld", 1, &last_size);100 gfits_scan (&outheader, "LMRG_DT ", "%s", 1, last_moddate);100 gfits_scan (&outheader, "LMRG_SZ2", "%lld", 1, &last_size); 101 gfits_scan (&outheader, "LMRG_DT2", "%s", 1, last_moddate); 101 102 102 103 time_t last_mod = ohana_date_to_sec (last_moddate); … … 150 151 outcatalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF; 151 152 152 // update header of output catalog 153 # if (0) 154 // get the LMRG data from the previous pass 153 155 long long last_size; 154 156 char last_moddate[80]; … … 156 158 int status_date = gfits_scan (&outcatalog.header, "LMRG_DT", "%s", 1, last_moddate); 157 159 158 // save the previous size of merged entry160 // save the LMRG data from the previous pass 159 161 if (status_size && status_date) { 160 162 gfits_modify (&outcatalog.header, "LMRG_SZ1", "%lld", 1, (long long) last_size); … … 165 167 gfits_modify (&outcatalog.header, "LMRG_SZ", "%lld", 1, (long long) instats.st_size); 166 168 gfits_modify (&outcatalog.header, "LMRG_DT", "%s", 1, moddate); 169 # endif 170 171 // update header of output catalog 172 // XXX note that we are hardwired to v 2 173 gfits_modify (&outcatalog.header, "LMRG_SZ2", "%lld", 1, (long long) instats.st_size); 174 gfits_modify (&outcatalog.header, "LMRG_DT2", "%s", 1, moddate); 167 175 168 176 if (!dvo_catalog_backup (&outcatalog, TRUE)) { -
trunk/Ohana/src/dvomerge/src/dvoverify.c
r33963 r34260 1 # include "dvo merge.h"1 # include "dvoverify.h" 2 2 3 3 /* things we can verify easily: … … 8 8 */ 9 9 10 int VerifyTableFile (char *filename);11 int CheckCatalogIndexes (char *catdir, char *filename, SkyRegion *region);12 13 # define DEBUG 014 15 int VERBOSE = FALSE;16 int NNotSorted = 0;17 18 10 int main (int argc, char **argv) { 19 11 20 char filename[1024]; 12 SkyTable *sky; 13 SkyList *skylist; 21 14 22 int N, Nbad; 23 off_t i; 24 SkyTable *insky; 25 SkyList *inlist; 26 SkyRegion UserPatch; 27 // Catalog catalog; 15 // check various options 16 dvoverify_args (&argc, argv); 17 CATDIR = argv[1]; 28 18 29 int CHECKSORTED; 30 31 if ((N = get_argument (argc, argv, "-v"))) { 32 VERBOSE = TRUE; 33 remove_argument (N, &argc, argv); 34 } 35 if ((N = get_argument (argc, argv, "-verbose"))) { 36 VERBOSE = TRUE; 37 remove_argument (N, &argc, argv); 38 } 39 if ((N = get_argument (argc, argv, "-s"))) { 40 CHECKSORTED = TRUE; 41 remove_argument (N, &argc, argv); 42 } 43 if ((N = get_argument (argc, argv, "-sorted"))) { 44 CHECKSORTED = TRUE; 45 remove_argument (N, &argc, argv); 46 } 47 48 if ((N = get_argument (argc, argv, "-cpt"))) { 49 remove_argument (N, &argc, argv); 50 char *filename = strcreate (argv[N]); 51 remove_argument (N, &argc, argv); 52 53 int isBad = FALSE; 54 55 if (!VerifyTableFile (filename)) { 56 fprintf (stderr, "bad average table %s\n", filename); 57 isBad = TRUE; 58 } 59 60 // change last 't' to 's': 61 int Nlast; 62 Nlast = strlen(filename) - 1; 63 filename[Nlast] = 's'; 64 if (!VerifyTableFile (filename)) { 65 fprintf (stderr, "bad secfilt table %s\n", filename); 66 isBad = TRUE; 67 } 68 69 // change last 't' to 's': 70 Nlast = strlen(filename) - 1; 71 filename[Nlast] = 'm'; 72 if (!VerifyTableFile (filename)) { 73 fprintf (stderr, "bad measure table %s\n", filename); 74 isBad = TRUE; 75 } 76 77 if (isBad) exit (1); 78 exit (0); 79 } 80 81 // restrict to a portion of the sky 82 UserPatch.Rmin = 0; 83 UserPatch.Rmax = 360; 84 UserPatch.Dmin = -90; 85 UserPatch.Dmax = +90; 86 if ((N = get_argument (argc, argv, "-region"))) { 87 remove_argument (N, &argc, argv); 88 UserPatch.Rmin = atof (argv[N]); 89 remove_argument (N, &argc, argv); 90 UserPatch.Rmax = atof (argv[N]); 91 remove_argument (N, &argc, argv); 92 UserPatch.Dmin = atof (argv[N]); 93 remove_argument (N, &argc, argv); 94 UserPatch.Dmax = atof (argv[N]); 95 remove_argument (N, &argc, argv); 96 } 97 98 if (argc != 2) { 99 fprintf (stderr, "USAGE: dvoverify (catdir) [-region Rmin Rmax Dmin Dmax] [-v] [-s]\n\n"); 100 fprintf (stderr, " -v : VERBOSE\n"); 101 fprintf (stderr, " -s : checks if sorted, return error if not\n"); 102 fprintf (stderr, " (catdir) : database of interest\n"); 103 exit (2); 104 } 105 106 char *catdir = argv[1]; 107 108 Nbad = 0; 19 int Nbad = 0; 109 20 110 21 // XXX make this step optional 111 if (1) { 22 if (CHECK_TOPLEVEL) { 23 char filename[DVO_MAX_PATH]; 24 112 25 // check the photcode table 113 sprintf (filename, "%s/Photcodes.dat", catdir);26 sprintf (filename, "%s/Photcodes.dat", CATDIR); 114 27 if (!VerifyTableFile (filename)) { 115 28 Nbad ++; … … 117 30 118 31 // check the skytable 119 char *skyfile = SkyTableFilename ( catdir);32 char *skyfile = SkyTableFilename (CATDIR); 120 33 if (!VerifyTableFile (skyfile)) { 121 34 Nbad ++; … … 123 36 124 37 // check the image table 125 sprintf (filename, "%s/Images.dat", catdir);38 sprintf (filename, "%s/Images.dat", CATDIR); 126 39 if (!VerifyTableFile (filename)) { 127 40 Nbad ++; … … 130 43 131 44 // load the sky table for the existing database 132 insky = SkyTableLoadOptimal (catdir, NULL, NULL, FALSE, SKY_DEPTH_HST, VERBOSE);133 myAssert( insky, "can't read SkyTable");134 SkyTableSetFilenames ( insky, catdir, "cpt");135 inlist = SkyListByPatch (insky, -1, &UserPatch);45 sky = SkyTableLoadOptimal (CATDIR, NULL, NULL, FALSE, SKY_DEPTH_HST, VERBOSE); 46 myAssert(sky, "can't read SkyTable"); 47 SkyTableSetFilenames (sky, CATDIR, "cpt"); 48 skylist = SkyListByPatch (sky, -1, &UserPatch); 136 49 137 // loop over all catalogs, save to output catalogs 138 for (i = 0; i < inlist[0].Nregions; i++) { 139 if (!inlist[0].regions[i][0].table) continue; 140 if (i % 1000 == 0) fprintf (stderr, "."); 50 dvoverify_catalogs (skylist, &Nbad); 141 51 142 // sprintf (filename, "%s/%s.cpt", catdir, inlist[0].regions[i][0].name); 143 if (!VerifyTableFile (inlist[0].filename[i])) { 144 Nbad ++; 145 } 52 int i, Nfailures; 53 char **failures = GetFailures (&Nfailures); 146 54 147 sprintf (filename, "%s/%s.cps", catdir, inlist[0].regions[i][0].name); 148 if (!VerifyTableFile (filename)) { 149 Nbad ++; 150 } 151 152 sprintf (filename, "%s/%s.cpm", catdir, inlist[0].regions[i][0].name); 153 if (!VerifyTableFile (filename)) { 154 Nbad ++; 155 } 156 157 if (!CheckCatalogIndexes(catdir, inlist[0].filename[i], inlist[0].regions[i])){ 158 Nbad ++; 159 } 160 161 // exit immediately if any file are unsorted and we require sorted tables 162 if (CHECKSORTED && NNotSorted) { 163 fprintf (stderr, "ERROR: files are not sorted\n"); 164 exit (1); 165 } 55 fprintf (stderr, "---- files with errors ---- \n"); 56 for (i = 0; i < Nfailures; i++) { 57 fprintf (stderr, "%s\n", failures[i]); 166 58 } 167 59 … … 178 70 } 179 71 180 // is this file a consistent FITS file?181 int VerifyTableFile (char *filename) {182 183 int status, Next;184 off_t Nbytes;185 Header header;186 187 struct stat fileStats;188 FILE *file;189 190 // does the file exist?191 status = stat (filename, &fileStats);192 if (status) {193 // some error accessing the file. there is only one acceptable error: file not found194 switch (errno) {195 case ENOENT:196 if (DEBUG) fprintf (stderr, "file does not exist, skipping %s\n", filename);197 return TRUE;198 case ENOMEM:199 fprintf (stderr, "Out of memory: %s\n", filename);200 return TRUE;201 case EACCES:202 fprintf (stderr, "Permission error on %s\n", filename);203 return FALSE;204 case EFAULT:205 fprintf (stderr, "Bad address: %s\n", filename);206 return FALSE;207 case ELOOP:208 fprintf (stderr, "Too many symbolic links encountered while traversing the path: %s\n", filename);209 return FALSE;210 case ENAMETOOLONG:211 fprintf (stderr, "File name too long: %s\n", filename);212 return FALSE;213 case ENOTDIR:214 fprintf (stderr, "A component of the path is not a directory: %s\n", filename);215 return FALSE;216 case EOVERFLOW:217 fprintf (stderr, "file too large for program version: %s\n", filename);218 return FALSE;219 default:220 fprintf (stderr, "unknown error: %s\n", filename);221 return FALSE;222 }223 }224 225 // does it have any data?226 if (fileStats.st_size == 0) {227 fprintf (stderr, "file is empty: %s\n", filename);228 return FALSE;229 }230 231 // can we open it?232 file = fopen(filename, "r");233 if (!file) {234 fprintf (stderr, "unable to open valid file: %s\n", filename);235 return FALSE;236 }237 238 // scan all extentions239 Nbytes = 0;240 Next = -1;241 if (DEBUG) fprintf (stderr, "sizes: ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nbytes, fileStats.st_size);242 while (Nbytes < fileStats.st_size) {243 244 // Check on the PHU245 if (!gfits_fread_header (file, &header)) {246 if (Next == -1) {247 fprintf (stderr, "unable to read PHU header for %s\n", filename);248 } else {249 fprintf (stderr, "unable to read header for %s, extension %d (or file has excess bytes)\n", filename, Next);250 }251 fclose(file);252 return (FALSE);253 }254 255 // move to TBL header256 Nbytes += header.datasize + gfits_data_size (&header);257 if (DEBUG) fprintf (stderr, "sizes: ("OFF_T_FMT" vs "OFF_T_FMT")\n", Nbytes, fileStats.st_size);258 if (Nbytes > fileStats.st_size) {259 fprintf (stderr, "file is short ("OFF_T_FMT" vs "OFF_T_FMT"): %s\n", Nbytes, fileStats.st_size, filename);260 gfits_free_header(&header);261 fclose (file);262 return FALSE;263 }264 gfits_free_header(&header);265 266 status = fseeko (file, Nbytes, SEEK_SET);267 if (status) {268 switch (errno) {269 case EBADF:270 fprintf (stderr, "something wrong with file handle: %s\n", filename);271 fclose (file);272 return FALSE;273 case EINVAL:274 fprintf (stderr, "invalid offset: %s\n", filename);275 fclose (file);276 return FALSE;277 default:278 fprintf (stderr, "other error in fseeko: %s\n", filename);279 fclose (file);280 return FALSE;281 }282 }283 Next ++;284 }285 if (DEBUG) fprintf (stderr, "file is good: %s\n", filename);286 fclose (file);287 return TRUE;288 }289 290 // CheckCatalogIndexes(catdir, inlist[0].regions[i][0].name);291 292 int CheckCatalogIndexes (char *catdir, char *filename, SkyRegion *region) {293 294 Catalog catalog;295 int i, j, m, status;296 297 status = TRUE;298 299 // set the parameters which guide catalog open/load/create300 catalog.filename = filename;301 catalog.catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data302 catalog.catmode = dvo_catalog_catmode (CATMODE); // set the default catmode from config data303 catalog.catflags = LOAD_AVES | LOAD_MEAS;304 catalog.Nsecfilt = 0;305 306 // an error exit status here is a significant error (disk I/O or file access)307 if (!dvo_catalog_open (&catalog, region, VERBOSE, "r")) {308 fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);309 return FALSE;310 }311 312 // Naves_disk == 0 implies an empty catalog file, skip empty catalogs313 if (catalog.Naves_disk == 0) {314 dvo_catalog_unlock (&catalog);315 dvo_catalog_free (&catalog);316 return TRUE;317 }318 319 // if the table is SORTED, then the following can be checked320 // check the following:321 // measure[j].averef -> average[averef]322 // measure[j].objID = average[averef].objID323 // measure[j].catID = average[averef].catID324 // measure[j].measureOffset < Nmeasure325 // \sum average[].Nmeasure = Nmeasure326 327 // if the table is NOT SORTED, we have a subset of checks we can make328 if (!catalog.sorted) {329 fprintf (stderr, "!");330 dvo_catalog_unlock (&catalog);331 dvo_catalog_free (&catalog);332 NNotSorted++;333 if (VERBOSE) fprintf (stderr, "file is not sorted: %s\n", filename);334 return TRUE;335 }336 337 int NmeasureTotal = 0;338 int measureOffsetOK = TRUE;339 for (i = 0; i < catalog.Naverage; i++) {340 NmeasureTotal += catalog.average[i].Nmeasure;341 if (VERBOSE && !(NmeasureTotal <= catalog.Nmeasure)) {342 fprintf (stderr, "NmeasureTotal > catalog.Nmeasure: %d %d %d\n", i, catalog.average[i].Nmeasure, (int) catalog.Nmeasure);343 }344 measureOffsetOK &= (catalog.average[i].measureOffset < catalog.Nmeasure);345 if (VERBOSE && !(catalog.average[i].measureOffset < catalog.Nmeasure)) {346 fprintf (stderr, "measureOffset >= catalog.Nmeasure: %d %d %d\n", i, catalog.average[i].measureOffset, (int) catalog.Nmeasure);347 }348 measureOffsetOK &= (catalog.average[i].measureOffset + catalog.average[i].Nmeasure <= catalog.Nmeasure);349 if (VERBOSE && !(catalog.average[i].measureOffset + catalog.average[i].Nmeasure <= catalog.Nmeasure)) {350 fprintf (stderr, "measureOffset + Nmeasure > catalog.Nmeasure : %d %d %d\n", i, catalog.average[i].Nmeasure, (int) catalog.Nmeasure);351 }352 }353 354 if (!measureOffsetOK) {355 fprintf (stderr, "ERROR: catalog %s has an invalid measureOffset\n", catalog.filename);356 status = FALSE;357 }358 359 if (NmeasureTotal != catalog.Nmeasure) {360 fprintf (stderr, "ERROR: catalog %s has an invalid Nmeasure\n", catalog.filename);361 status = FALSE;362 }363 364 if (!status) {365 dvo_catalog_unlock (&catalog);366 dvo_catalog_free (&catalog);367 return (status);368 }369 370 int objIDsOK = TRUE;371 int catIDsOK = TRUE;372 int averefOK = TRUE;373 374 for (i = 0; i < catalog.Naverage; i++) {375 m = catalog.average[i].measureOffset;376 for (j = 0; j < catalog.average[i].Nmeasure; j++) {377 objIDsOK &= (catalog.average[i].objID == catalog.measure[m+j].objID);378 catIDsOK &= (catalog.average[i].catID == catalog.measure[m+j].catID);379 averefOK &= (catalog.measure[m+j].averef == i);380 }381 }382 383 if (!objIDsOK) {384 fprintf (stderr, "ERROR: catalog %s has invalid obj IDs\n", catalog.filename);385 status = FALSE;386 }387 if (!catIDsOK) {388 fprintf (stderr, "ERROR: catalog %s has invalid cat IDs\n", catalog.filename);389 status = FALSE;390 }391 if (!averefOK) {392 fprintf (stderr, "ERROR: catalog %s has invalid averef values\n", catalog.filename);393 status = FALSE;394 }395 396 // for (i = 0; i < catalog.Naverage; i++) {397 // m = catalog.average[i].measureOffset;398 // for (j = 0; i < catalog.Nmeasure; i++) {399 // objIDsOK &= (catalog.average[i].objID == catalog.measure[m+j].objID);400 // catIDsOK &= (catalog.average[i].catID == catalog.measure[m+j].catID);401 // averefOK &= (catalog.measure[m+j].averef = i);402 // }403 // }404 405 dvo_catalog_unlock (&catalog);406 dvo_catalog_free (&catalog);407 408 return status;409 }410 411 // gfits_scan(&cpmHeaderTBL, "NAXIS1", "%d", 1, &NbytesPerRow);412 // gfits_scan(&cpmHeaderTBL, "NAXIS2", "%d", 1, &Nrows);413 414 -
trunk/Ohana/src/dvomerge/test
- Property svn:ignore
-
old new 1 1 catdir.test 2 catdir.merge 3 catdir.merge.p1 4 catdir.merge.p2 5 catdir.merge.p3
-
- Property svn:ignore
-
trunk/Ohana/src/libautocode/Makefile.Targets
r33647 r34260 11 11 $(ASRC)/average-ps1-v2.$(ARCH).o \ 12 12 $(ASRC)/average-ps1-v3.$(ARCH).o \ 13 $(ASRC)/average-ps1-v4.$(ARCH).o \ 13 14 $(ASRC)/average-ps1-ref.$(ARCH).o \ 14 15 $(ASRC)/secfilt.$(ARCH).o \ … … 22 23 $(ASRC)/secfilt-ps1-v2.$(ARCH).o \ 23 24 $(ASRC)/secfilt-ps1-v3.$(ARCH).o \ 25 $(ASRC)/secfilt-ps1-v4.$(ARCH).o \ 24 26 $(ASRC)/secfilt-ps1-ref.$(ARCH).o \ 25 27 $(ASRC)/measure.$(ARCH).o \ … … 33 35 $(ASRC)/measure-ps1-v2.$(ARCH).o \ 34 36 $(ASRC)/measure-ps1-v3.$(ARCH).o \ 37 $(ASRC)/measure-ps1-v4.$(ARCH).o \ 35 38 $(ASRC)/measure-ps1-ref.$(ARCH).o \ 36 39 $(ASRC)/missing.$(ARCH).o \ … … 43 46 $(ASRC)/photcode-ps1-v2.$(ARCH).o \ 44 47 $(ASRC)/photcode-ps1-v3.$(ARCH).o \ 48 $(ASRC)/photcode-ps1-v4.$(ARCH).o \ 45 49 $(ASRC)/photcode-ps1-ref.$(ARCH).o \ 46 50 $(ASRC)/image.$(ARCH).o \ … … 55 59 $(ASRC)/image-ps1-v2.$(ARCH).o \ 56 60 $(ASRC)/image-ps1-v3.$(ARCH).o \ 61 $(ASRC)/image-ps1-v4.$(ARCH).o \ 57 62 $(ASRC)/image-ps1-ref.$(ARCH).o \ 58 63 $(ASRC)/regimage.$(ARCH).o \ … … 90 95 $(AINC)/average-ps1-v2.h \ 91 96 $(AINC)/average-ps1-v3.h \ 97 $(AINC)/average-ps1-v4.h \ 92 98 $(AINC)/average-ps1-ref.h \ 93 99 $(AINC)/secfilt.h \ … … 101 107 $(AINC)/secfilt-ps1-v2.h \ 102 108 $(AINC)/secfilt-ps1-v3.h \ 109 $(AINC)/secfilt-ps1-v4.h \ 103 110 $(AINC)/secfilt-ps1-ref.h \ 104 111 $(AINC)/measure.h \ … … 112 119 $(AINC)/measure-ps1-v2.h \ 113 120 $(AINC)/measure-ps1-v3.h \ 121 $(AINC)/measure-ps1-v4.h \ 114 122 $(AINC)/measure-ps1-ref.h \ 115 123 $(AINC)/missing.h \ … … 122 130 $(AINC)/photcode-ps1-v2.h \ 123 131 $(AINC)/photcode-ps1-v3.h \ 132 $(AINC)/photcode-ps1-v4.h \ 124 133 $(AINC)/photcode-ps1-ref.h \ 125 134 $(AINC)/image.h \ … … 134 143 $(AINC)/image-ps1-v2.h \ 135 144 $(AINC)/image-ps1-v3.h \ 145 $(AINC)/image-ps1-v4.h \ 136 146 $(AINC)/image-ps1-ref.h \ 137 147 $(AINC)/regimage.h \ -
trunk/Ohana/src/libautocode/def/cmf-ps1-sv1.d
r31160 r34260 4 4 TYPE BINTABLE 5 5 SIZE 200 6 7 ## note that this definition is inconsistent with the definition in 8 ## pmModules/src/objects/pmSourceIO_CMF.c.in. The version in 9 ## pmSourceIO*.c creates a table with data not properly aligned with 10 ## the 8-byte boundaries. The structure defined by libautocode does 11 ## this, but has a different order of elements (and adds padding2 to 12 ## fix things). We have generated may files with PS1_SV1 as is, so 13 ## I'll leave it. But in future a PS1_SV2 should be forced to match 14 ## libautocode. Note that addstar knows to detect the alternate 15 ## version of PS1_SV1 and correctly interpret its fields. 6 16 7 17 # elements of data structure / FITS table -
trunk/Ohana/src/libautocode/def/cmf-ps1-v1.d
r24400 r34260 44 44 # model shape parameters: F_major, F_minor, F_theta 45 45 # centroid errors: sigma_X, sigma_Y, sigma_XY 46 47 # IPP_IDET 1J IPP_IDET, unsigned i48 # X_PSF 1E X_PSF, float,49 # Y_PSF 1E Y_PSF, float,50 # X_PSF_SIG 1E X_PSF_SIG, float,51 # Y_PSF_SIG 1E Y_PSF_SIG, float,52 # RA_PSF 1E RA_PSF, float,53 # DEC_PSF 1E DEC_PSF, float,54 # POSANGLE 1E POSANGLE, float,55 # PLTSCALE 1E PLTSCALE, float,56 # PSF_INST_MAG 1E PSF_INST_MAG, float,57 # PSF_INST_MAG_SIG 1E PSF_INST_MAG_SIG, float,58 # AP_MAG_STANDARD 1E AP_MAG_STANDARD, float,59 # AP_MAG_RADIUS 1E60 # PEAK_FLUX_AS_MAG 1E PEAK_FLUX_AS_MAG, float,61 # CAL_PSF_MAG 1E CAL_PSF_MAG, float,62 # CAL_PSF_MAG_SIG 1E CAL_PSF_MAG_SIG, float,63 # SKY 1E SKY, float,64 # SKY_SIGMA 1E SKY_SIG, float,65 # PSF_CHISQ 1E PSF_CHISQ, float,66 # CR_NSIGMA 1E CR_NSIGMA, float,67 # EXT_NSIGMA 1E EXT_NSIGMA, float,68 # PSF_MAJOR 1E PSF_MAJOR, float,69 # PSF_MINOR 1E PSF_MINOR, float,70 # PSF_THETA 1E PSF_THETA, float,71 # PSF_QF 1E PSF_QF, float,72 # PSF_NDOF 1J PSF_NDOF, int,73 # PSF_NPIX 1J PSF_NPIX, int,74 # MOMENTS_XX 1E MOMENTS_XX, float,75 # MOMENTS_XY 1E MOMENTS_XY, float,76 # MOMENTS_YY 1E MOMENTS_YY, float,77 # N_FRAMES 1I N_FRAMES, short,78 # FLAGS 1J FLAGS, int, -
trunk/Ohana/src/libautocode/def/cmf-ps1-v2.d
r24400 r34260 40 40 FIELD padding, PADDING, short, padding for 8byte records 41 41 42 # for an object in an image, we have three triplets that tell us about the shape: 43 # second moments: Mxx, Mxy, Myy 44 # model shape parameters: F_major, F_minor, F_theta 45 # centroid errors: sigma_X, sigma_Y, sigma_XY 46 47 # IPP_IDET 1J IPP_IDET, unsigned i 48 # X_PSF 1E X_PSF, float, 49 # Y_PSF 1E Y_PSF, float, 50 # X_PSF_SIG 1E X_PSF_SIG, float, 51 # Y_PSF_SIG 1E Y_PSF_SIG, float, 52 # RA_PSF 1E RA_PSF, float, 53 # DEC_PSF 1E DEC_PSF, float, 54 # POSANGLE 1E POSANGLE, float, 55 # PLTSCALE 1E PLTSCALE, float, 56 # PSF_INST_MAG 1E PSF_INST_MAG, float, 57 # PSF_INST_MAG_SIG 1E PSF_INST_MAG_SIG, float, 58 # AP_MAG_STANDARD 1E AP_MAG_STANDARD, float, 59 # AP_MAG_RADIUS 1E 60 # PEAK_FLUX_AS_MAG 1E PEAK_FLUX_AS_MAG, float, 61 # CAL_PSF_MAG 1E CAL_PSF_MAG, float, 62 # CAL_PSF_MAG_SIG 1E CAL_PSF_MAG_SIG, float, 63 # SKY 1E SKY, float, 64 # SKY_SIGMA 1E SKY_SIG, float, 65 # PSF_CHISQ 1E PSF_CHISQ, float, 66 # CR_NSIGMA 1E CR_NSIGMA, float, 67 # EXT_NSIGMA 1E EXT_NSIGMA, float, 68 # PSF_MAJOR 1E PSF_MAJOR, float, 69 # PSF_MINOR 1E PSF_MINOR, float, 70 # PSF_THETA 1E PSF_THETA, float, 71 # PSF_QF 1E PSF_QF, float, 72 # PSF_NDOF 1J PSF_NDOF, int, 73 # PSF_NPIX 1J PSF_NPIX, int, 74 # MOMENTS_XX 1E MOMENTS_XX, float, 75 # MOMENTS_XY 1E MOMENTS_XY, float, 76 # MOMENTS_YY 1E MOMENTS_YY, float, 77 # N_FRAMES 1I N_FRAMES, short, 78 # FLAGS 1J FLAGS, int, 42 # fields added since PS1_V1: 43 # RA & DEC promoted to double -
trunk/Ohana/src/libautocode/def/cmf-ps1-v3.d
r29537 r34260 64 64 # centroid errors: sigma_X, sigma_Y, sigma_XY 65 65 66 # # elements of data structure / FITS table 67 # FIELD detID, IPP_IDET, IPP_IDET 1J unsigned int, detection ID 68 # FIELD X, X_PSF, X_PSF 1E float, x coord, pixels 69 # FIELD Y, Y_PSF, Y_PSF 1E float, y coord, pixels 70 # FIELD dX, X_PSF_SIG, X_PSF_SIG 1E float, x coord error, pixels 71 # FIELD dY, Y_PSF_SIG, Y_PSF_SIG 1E float, y coord error, pixels 72 # FIELD posangle, POSANGLE, POSANGLE 1E float, Posangle at source, degrees 73 # FIELD pltscale, PLTSCALE, PLTSCALE 1E float, Plate Scale at source, arcsec/pixel 74 # FIELD M, PSF_INST_MAG, PSF_INST_MAG 1E float, inst mags, mags 75 # FIELD dM, PSF_INST_MAG_SIG, PSF_INST_MAG_SIG 1E float, inst mag error, mags 76 # FIELD flux, PSF_INST_FLUX, PSF_INST_FLUX 1E float, psf flux, counts 77 # FIELD flux, PSF_INST_FLUX_SIG, PSF_INST_FLUX_SIG 1E float, psf flux error, counts 78 # FIELD Map, AP_MAG_STANDARD, AP_MAG 1E float, standard aperture mag, mags 79 # FIELD Map, AP_MAG_RAW, AP_MAG_RAW 1E float, raw aperture mag, mags 80 # FIELD apRadius, AP_MAG_RADIUS, AP_MAG_RADIUS 1E float, radius used for fit, pixels 81 # FIELD Mpeak, PEAK_FLUX_AS_MAG, PEAK_FLUX_AS_MAG 1E float, peak flux as a mag, mags 82 # FIELD Mcalib, CAL_PSF_MAG, CAL_PSF_MAG 1E float, calibrated psf mag, mags 83 # FIELD dMcal, CAL_PSF_MAG_SIG, CAL_PSF_MAG_SIG 1E float, zero point scatter, mags 84 # FIELD RA, RA_PSF, RA_PSF 1D double, PSF RA coord, degrees 85 # FIELD DEC, DEC_PSF, DEC_PSF 1D double, PSF DEC coord, degrees 86 # FIELD sky, SKY, SKY 1E float, sky flux, cnts/sec 87 # FIELD dSky, SKY_SIG, SKY_SIGMA 1E float, sky flux error, cnts/sec 88 # FIELD psfChisq, PSF_CHISQ, PSF_CHISQ 1E float, psf fit chisq 89 # FIELD crNsigma, CR_NSIGMA, CR_NSIGMA 1E float, Nsigma deviations from PSF to CF 90 # FIELD extNsigma, EXT_NSIGMA, EXT_NSIGMA 1E float, Nsigma deviations from PSF to EXT 91 # FIELD fx, PSF_MAJOR, PSF_MAJOR 1E float, psf fit major axis, pixels 92 # FIELD fy, PSF_MINOR, PSF_MINOR 1E float, psf fit minor axis, pixels 93 # FIELD df, PSF_THETA, PSF_THETA 1E float, ellipse angle, degrees 94 # FIELD psfQual, PSF_QF, PSF_QF 1E float, quality factor 95 # FIELD psfQualPerfect, PSF_QF_PERFECT, PSF_QF_PERFECT 1E float, quality factor perfect 96 # FIELD psfNdof, PSF_NDOF, PSF_NDOF 1J int, psf degrees of freedom 97 # FIELD psfNpix, PSF_NPIX, PSF_NPIX 1J int, psf number of pixels 98 # FIELD Mxx, MOMENTS_XX, MOMENTS_XX 1E float, second moment X, pixels^2 99 # FIELD Mxy, MOMENTS_XY, MOMENTS_XY 1E float, second moment Y, pixels^2 100 # FIELD Myy, MOMENTS_YY, MOMENTS_YY 1E float, second moment XY, pixels^2 101 # FIELD M3c, MOMENTS_M3C, MOMENTS_M3C 1E float, third moment cos(t), pixels^3 102 # FIELD M3s, MOMENTS_M3S, MOMENTS_M3S 1E float, third moment sin(t), pixels^3 103 # FIELD M4c, MOMENTS_M4C, MOMENTS_M4C 1E float, fourth moment cos(t), pixels^4 104 # FIELD M4s, MOMENTS_M4S, MOMENTS_M4S 1E float, fourth moment sin(t), pixels^4 105 # FIELD Mr1, MOMENTS_R1, MOMENTS_R1 1E float, first radial moment, pixels 106 # FIELD Mrh, MOMENTS_RH, MOMENTS_RH 1E float, half radial moment, pixels^1/2 107 # FIELD kronFlux, KRON_FLUX, KRON_FLUX 1E float, kron flux, counts 108 # FIELD kronFluxErr, KRON_FLUX_ERR, KRON_FLUX_ERR 1E float, kron flux error, counts 109 # FIELD kronInner, KRON_FLUX_INNER, KRON_FLUX_INNER 1E float, kron flux 1<R<2.5, counts 110 # FIELD kronOuter, KRON_FLUX_OUTER, KRON_FLUX_OUTER 1E float, kron flux 2.5<R<4, counts 111 # FIELD flags, FLAGS, FLAGS 1J int, analysis flags 112 # FIELD flags2, FLAGS, FLAGS2 1J int, analysis flags (2) 113 # FIELD nFrames, N_FRAMES, N_FRAMES 1I short, images overlapping peak 114 # FIELD padding, PADDING, PADDING 1I short, padding for 8byte records 115 116 117 66 # fields added since PS1_V2: 67 # FIELD Flux, PSF_INST_FLUX, float, psf flux, counts 68 # FIELD dFlux, PSF_INST_FLUX_SIG, float, psf flux error, counts 69 # FIELD MapRaw, AP_MAG_RAW, float, raw aperture mag, mags 70 # FIELD psfQualPerfect, PSF_QF_PERFECT, float, quality factor perfect 71 # FIELD M3c, MOMENTS_M3C, float, third moment cos(t), pixels^3 72 # FIELD M3s, MOMENTS_M3S, float, third moment sin(t), pixels^3 73 # FIELD M4c, MOMENTS_M4C, float, fourth moment cos(t), pixels^4 74 # FIELD M4s, MOMENTS_M4S, float, fourth moment sin(t), pixels^4 75 # FIELD Mr1, MOMENTS_R1, float, first radial moment, pixels 76 # FIELD Mrh, MOMENTS_RH, float, half radial moment, pixels^1/2 77 # FIELD kronFlux, KRON_FLUX, float, kron flux, counts 78 # FIELD kronFluxErr, KRON_FLUX_ERR, float, kron flux error, counts 79 # FIELD kronInner, KRON_FLUX_INNER, float, kron flux 1<R<2.5, counts 80 # FIELD kronOuter, KRON_FLUX_OUTER, float, kron flux 2.5<R<4, counts 81 # FIELD flags2, FLAGS, int, analysis flags (2) -
trunk/Ohana/src/libautocode/def/measure-ps1-v3.d
r33647 r34260 5 5 DESCRIPTION DVO Detection Measurement Table 6 6 7 FIELD dR, D_RA, float, RA offset, arcsec8 FIELD dD, D_DEC, float, DEC offset, arcsec9 FIELD M, MAG, float, catalog mag, mag10 FIELD Mcal, M_CAL, float, image cal mag, mag11 FIELD Map, M_APER, float, aperture mag, mag7 FIELD dR, D_RA, float, RA offset, arcsec 8 FIELD dD, D_DEC, float, DEC offset, arcsec 9 FIELD M, MAG, float, catalog mag, mag 10 FIELD Mcal, M_CAL, float, image cal mag, mag 11 FIELD Map, M_APER, float, aperture mag, mag 12 12 FIELD dM, MAG_ERR, float, mag error, mag 13 13 FIELD dMcal, MAG_CAL_ERR, float, systematic calibration error, mag … … 15 15 16 16 # note that with airmass = 1.0 / cos(90 - alt), we have full alt/az representation 17 FIELD airmass, AIRMASS, float, (airmass - 1), airmass17 FIELD airmass, AIRMASS, float, (airmass - 1), airmass 18 18 FIELD az, AZ, float, telescope azimuth 19 19 … … 26 26 FIELD dSky, SKY_FLUX_ERR, float, local estimate of sky flux, counts/sec 27 27 28 FIELD t, TIME, int, time in seconds (UNIX)28 FIELD t, TIME, int, time in seconds (UNIX) 29 29 FIELD averef, AVE_REF, unsigned int, reference to average entry 30 30 -
trunk/Ohana/src/libautocode/def/measure.d
r30604 r34260 2 2 EXTNAME DVO_MEASURE 3 3 TYPE BINTABLE 4 SIZE 1 484 SIZE 172 5 5 DESCRIPTION DVO Detection Measurement Table 6 6 7 FIELD dR, D_RA, float, RA offset, arcsec 8 FIELD dD, D_DEC, float, DEC offset, arcsec 9 FIELD M, MAG, float, catalog mag, mag 10 FIELD Mcal, M_CAL, float, image cal mag, mag 11 FIELD Map, M_APER, float, aperture mag, mag 7 FIELD dR, D_RA, float, RA offset, arcsec 8 FIELD dD, D_DEC, float, DEC offset, arcsec 9 FIELD M, MAG, float, catalog mag, mag 10 FIELD Mcal, M_CAL, float, image cal mag, mag 11 FIELD Map, M_APER, float, aperture mag, mag 12 FIELD Mkron, M_KRON, float, kron magnitude, mag 13 FIELD dMkron, M_KRON_ERR, float, kron magnitude error, mag 12 14 FIELD dM, MAG_ERR, float, mag error, mag 13 15 FIELD dMcal, MAG_CAL_ERR, float, systematic calibration error, mag 14 16 FIELD dt, M_TIME, float, exposure time, 2.5*log(exptime) 15 17 18 # for stacks only? 19 FIELD FluxPSF, FLUX_PSF, float, flux from psf fit, counts/sec? 20 FIELD dFluxPSF, FLUX_PSF_ERR, float, error on psf flux, counts/sec? 21 FIELD FluxKron, FLUX_KRON, float, flux from kron ap, counts/sec? 22 FIELD dFluxKron, FLUX_KRON_ERR, float, error on kron flux, counts/sec? 23 16 24 # note that with airmass = 1.0 / cos(90 - alt), we have full alt/az representation 17 FIELD airmass, AIRMASS, float, (airmass - 1), airmass25 FIELD airmass, AIRMASS, float, (airmass - 1), airmass 18 26 FIELD az, AZ, float, telescope azimuth 19 27 … … 26 34 FIELD dSky, SKY_FLUX_ERR, float, local estimate of sky flux, counts/sec 27 35 28 FIELD t, TIME, int, time in seconds (UNIX)36 FIELD t, TIME, int, time in seconds (UNIX) 29 37 FIELD t_msec, TIME_MSEC, unsigned short, time fraction of second, milliseconds 30 38 FIELD averef, AVE_REF, unsigned int, reference to average entry -
trunk/Ohana/src/libautocode/def/secfilt.d
r33963 r34260 2 2 EXTNAME DVO_SECFILT 3 3 TYPE BINTABLE 4 SIZE 324 SIZE 64 5 5 DESCRIPTION DVO SecFilt : Secondary Filter Data 6 6 7 7 # elements of data structure / FITS table 8 FIELD M, MAG, float, average mag in this band, mags 9 FIELD Map, MAG, float, average mag in this band, mags 10 FIELD dM, MAG_ERR, float, formal error on average mag, mags 11 FIELD Xm, MAG_CHI, float, chisq on average mag, [100*log(value)] 12 FIELD flags, FLAGS, uint32_t, photometry flags 13 FIELD Ncode, NCODE, short, number of detections in band 14 FIELD Nused, NUSED, short, number of detections used in average 15 FIELD M_20, MAG_20, short, lower 20percent mag, millimags 16 FIELD M_80, MAG_80, short, upper 20percent mag, millimags 17 FIELD ubercalDist, UBERCAL_DIST, short, number of images from an ubercal-image 18 FIELD Mstdev, MAG_STDEV, short, standard deviation of measurements, millimags 8 FIELD M, MAG, float, average mag in this band, mags 9 FIELD Map, MAG, float, average mag in this band, mags 10 FIELD Mkron, MAG_KRON, float, ave kron mag in this band, mags 11 FIELD dMkron, MAG_KRON_ERR, float, formal error on average kron mag, mags 12 FIELD dM, MAG_ERR, float, formal error on average mag, mags 13 FIELD Xm, MAG_CHI, float, chisq on average mag, [100*log(value)] 14 FIELD FluxPSF, FLUX_PSF, float, mean flux psf fit (PS1: stack) 15 FIELD dFluxPSF, FLUX_PSF_ERR, float, mean flux psf error 16 FIELD FluxKron, FLUX_KRON, float, mean flux kron ap (PS1: stack) 17 FIELD dFluxKron, FLUX_KRON_ERR, float, mean flux kron err 18 FIELD flags, FLAGS, uint32_t, photometry flags 19 FIELD Ncode, NCODE, short, number of detections in band 20 FIELD Nused, NUSED, short, number of detections used in average 21 FIELD M_20, MAG_20, short, lower 20percent mag, millimags 22 FIELD M_80, MAG_80, short, upper 20percent mag, millimags 23 FIELD ubercalDist, UBERCAL_DIST, short, number of images from an ubercal-image 24 FIELD Mstdev, MAG_STDEV, short, standard deviation of measurements, millimags 25 FIELD stackID, STACK_ID, uint32_t, image ID of stack used for fluxes (if any) 26 FIELD dummy, DUMMY, uint32_t, padding 19 27 20 28 # *** 20090206 : new fields : M_20, M_80; dropped dummy 21 # *** 20120302 : new fields : ubercalDist, Map, dummy[2byte] 29 # *** 20120302 : new fields : ubercalDist, Map, Mstdev 30 # *** 20120710 : new fields : Mkron, dMkron, FluxPSF, dFluxPSF, FluxKron, dFluxKron, stackID -
trunk/Ohana/src/libdvo/Makefile
r33649 r34260 35 35 $(DESTINC)/ps1_v2_defs.h \ 36 36 $(DESTINC)/ps1_v3_defs.h \ 37 $(DESTINC)/ps1_v4_defs.h \ 37 38 $(DESTINC)/ps1_ref_defs.h 38 39 … … 73 74 $(SRC)/dvo_convert_PS1_V2.$(ARCH).o \ 74 75 $(SRC)/dvo_convert_PS1_V3.$(ARCH).o \ 76 $(SRC)/dvo_convert_PS1_V4.$(ARCH).o \ 75 77 $(SRC)/dvo_convert_PS1_REF.$(ARCH).o \ 76 78 $(SRC)/flatcorr_io.$(ARCH).o \ … … 100 102 $(SRC)/db_utils.$(ARCH).o \ 101 103 $(SRC)/convert.$(ARCH).o \ 102 $(SRC)/HostTable.$(ARCH).o 104 $(SRC)/HostTable.$(ARCH).o \ 105 $(SRC)/BoundaryTree.$(ARCH).o 103 106 104 107 -
trunk/Ohana/src/libdvo/doc/notes.txt
r21508 r34260 25 25 include the new STRUCT name. 26 26 27 7) create a new conversion file dvo_convert_foo.c and define the27 7) create a new conversion file libdvo/src/dvo_convert_foo.c and define the 28 28 internal to Foo conversions. 29 29 30 8) add the new format to the list of FORMAT conversion in dvo_convert.c. 30 8a) add the new dvo_convert_foo.c to libdvo/Makefile 31 32 8b) add the new format to the list of FORMAT conversion in dvo_convert.c. 31 33 32 34 9) any changes to the internal format need to be reflected in the … … 44 46 45 47 13) Add the conversion functions to the header file libdvo/include/foo_defs.h 48 49 14) Add the above foo_defs.h to libdvo/include/dvo.h 50 51 14) Add the above foo_defs.h to libdvo/Makefile 46 52 47 53 * Note some esoteric format issues: -
trunk/Ohana/src/libdvo/include/dvo.h
r33963 r34260 27 27 DVO_FORMAT_PS1_V2, 28 28 DVO_FORMAT_PS1_V3, 29 DVO_FORMAT_PS1_V4, 29 30 } DVOTableFormat; 30 31 … … 292 293 } DVOTinyValueMode; 293 294 295 # define BOUNDARY_TREE_NAME_LENGTH 128 296 297 typedef struct { 298 int FixedGridDEC; // is the DEC sequence linear? 299 int FixedGridRA; // in the RA sequence in a zone linear? 300 301 double DEC_origin; 302 double DEC_offset; 303 304 int Nzone; 305 double *RA_origin; 306 double *RA_offset; 307 308 int *Nband; 309 int *NBAND; 310 311 double **ra; 312 double **dec; 313 int **cell; 314 char ***name; 315 } BoundaryTree; 316 294 317 // XXX DROP? // a reduced-subset structure for relastro 295 318 // XXX DROP? typedef struct { … … 448 471 float PhotCat (Measure *measure); 449 472 float PhotAper (Measure *measure); 473 float PhotKron (Measure *measure); 450 474 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt); 451 475 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt); … … 456 480 float PhotdM (PhotCode *code, Average *average, SecFilt *secfilt); 457 481 482 float PhotAperInst (Measure *measure); 483 float PhotKronInst (Measure *measure); 484 float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt); 485 486 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt); 487 float PhotAveFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt); 488 float PhotAvedFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt); 489 float PhotAveFluxKron (PhotCode *code, Average *average, SecFilt *secfilt); 490 float PhotAvedFluxKron (PhotCode *code, Average *average, SecFilt *secfilt); 491 458 492 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt); 459 493 float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt); 460 494 float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt); 461 495 float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt); 496 unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt); 462 497 463 498 float PhotColorForCode (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); … … 571 606 # include "ps1_v2_defs.h" 572 607 # include "ps1_v3_defs.h" 608 # include "ps1_v4_defs.h" 573 609 # include "ps1_ref_defs.h" 574 610 … … 648 684 int free_tiny_values (Catalog *catalog); 649 685 686 int BoundaryTreeCellCoords (BoundaryTree *tree, int *zone, int *band, double ra, double dec); 687 int BoundaryTreeSave(char *filename, BoundaryTree *tree); 688 BoundaryTree *BoundaryTreeLoad(char *filename); 689 690 void dvo_average_init (Average *average); 691 void dvo_secfilt_init (SecFilt *secfilt); 692 void dvo_measure_init (Measure *measure); 693 650 694 # endif // DVO_H 651 -
trunk/Ohana/src/libdvo/include/dvodb.h
r33963 r34260 26 26 MAG_CAT, 27 27 MAG_APER, 28 MAG_APER_INST, 29 MAG_KRON, 30 MAG_KRON_INST, 31 MAG_KRON_ERR, 28 32 MAG_SYS, 29 33 MAG_REL, … … 41 45 MAG_80, 42 46 MAG_UC_DIST, 47 MAG_STACK_ID, 48 MAG_FLUX_PSF, 49 MAG_FLUX_PSF_ERR, 50 MAG_FLUX_KRON, 51 MAG_FLUX_KRON_ERR, 43 52 }; 44 53 … … 132 141 MEAS_MCAL_OFFSET, 133 142 MEAS_FLAT, 143 MEAS_CENTER_OFFSET, 144 MEAS_FLUX_PSF, 145 MEAS_FLUX_PSF_ERR, 146 MEAS_FLUX_KRON, 147 MEAS_FLUX_KRON_ERR, 134 148 }; 135 149 -
trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c
r33649 r34260 63 63 CONVERT_FORMAT("DVO_PHOTCODE_PS1_V2", PS1_V2); 64 64 CONVERT_FORMAT("DVO_PHOTCODE_PS1_V3", PS1_V3); 65 CONVERT_FORMAT("DVO_PHOTCODE_PS1_V4", PS1_V4); 65 66 66 67 table = GetPhotcodeTable (); -
trunk/Ohana/src/libdvo/src/SavePhotcodesFITS.c
r33649 r34260 4 4 /* locking is used to avoid collisions with programs trying to update the photcodes values */ 5 5 /* XXX better distinction between NOT FOUND and FAILURE */ 6 6 7 int SavePhotcodesFITS (char *filename) { 7 8 … … 29 30 // for the moment, we simply support the latest photcode format for output 30 31 // XXX update this as needed as new formats are defined 31 PhotCode_PS1_V 3 *photcode_output = PhotCode_Internal_To_PS1_V3(table[0].code, table[0].Ncode);32 PhotCode_PS1_V4 *photcode_output = PhotCode_Internal_To_PS1_V4 (table[0].code, table[0].Ncode); 32 33 33 34 /* convert FITS format data to internal format (byteswaps & EXTNAME) */ 34 35 if (!gfits_db_create (&db)) return (FALSE); 35 if (!gfits_table_set_PhotCode_PS1_V 3(&db.ftable, photcode_output, table[0].Ncode)) return (FALSE);36 if (!gfits_table_set_PhotCode_PS1_V4 (&db.ftable, photcode_output, table[0].Ncode)) return (FALSE); 36 37 if (!gfits_db_save (&db)) return (FALSE); 37 38 if (!gfits_db_close (&db)) return (FALSE); -
trunk/Ohana/src/libdvo/src/dbExtractAverages.c
r33963 r34260 233 233 break; 234 234 235 case MAG_KRON: 236 value.Flt = PhotKronAve (field->photcode, average, secfilt); 237 break; 238 235 239 case MAG_20: 236 240 value.Flt = PhotM20 (field->photcode, average, secfilt); … … 241 245 case MAG_UC_DIST: 242 246 value.Flt = PhotUCdist (field->photcode, average, secfilt); 247 break; 248 case MAG_STACK_ID: 249 value.Int = PhotStackID (field->photcode, average, secfilt); 250 break; 251 252 case MAG_FLUX_PSF: 253 value.Flt = PhotAveFluxPSF (field->photcode, average, secfilt); 254 break; 255 case MAG_FLUX_PSF_ERR: 256 value.Flt = PhotAvedFluxPSF (field->photcode, average, secfilt); 257 break; 258 case MAG_FLUX_KRON: 259 value.Flt = PhotAveFluxKron (field->photcode, average, secfilt); 260 break; 261 case MAG_FLUX_KRON_ERR: 262 value.Flt = PhotAvedFluxKron (field->photcode, average, secfilt); 243 263 break; 244 264 } -
trunk/Ohana/src/libdvo/src/dbExtractMeasures.c
r33649 r34260 117 117 break; 118 118 case MAG_APER: 119 value.Flt = PhotAper (measure); 119 value.Flt = PhotAper (measure); 120 break; 121 case MAG_APER_INST: 122 value.Flt = PhotAperInst (measure); 123 break; 124 case MAG_KRON: 125 value.Flt = PhotKron (measure); 126 break; 127 case MAG_KRON_INST: 128 value.Flt = PhotKronInst (measure); 129 break; 130 case MAG_KRON_ERR: 131 value.Flt = measure[0].dMkron; 120 132 break; 121 133 case MAG_ERR: … … 152 164 if (Nsec == -1) break; 153 165 value.Int = secfilt[Nsec].Nused; 166 break; 167 case MAG_FLUX_PSF: 168 value.Flt = PhotAveFluxPSF (field->photcode, average, secfilt); 169 break; 170 case MAG_FLUX_PSF_ERR: 171 value.Flt = PhotAvedFluxPSF (field->photcode, average, secfilt); 172 break; 173 case MAG_FLUX_KRON: 174 value.Flt = PhotAveFluxKron (field->photcode, average, secfilt); 175 break; 176 case MAG_FLUX_KRON_ERR: 177 value.Flt = PhotAvedFluxKron (field->photcode, average, secfilt); 154 178 break; 155 179 } … … 498 522 break; 499 523 500 // add the star/galaxy sep -- 524 case MEAS_CENTER_OFFSET: /* OK */ 525 { 526 Image *image; 527 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 528 if (image == NULL) break; 529 530 // we have measure[0].Xccd,Yccd and image[0].NX,NY. Find the distance to the center 531 532 // XXX we may hypotetically have images with -NX to +NX here (eg, projection center), but 533 // we do not get a detection from that type of image 534 float Xcenter = 0.5*image[0].NX; 535 float Ycenter = 0.5*image[0].NY; 536 float distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter); 537 value.Flt = distance; 538 } 539 break; 540 541 case MEAS_FLUX_PSF: /* OK */ 542 value.Flt = measure[0].FluxPSF; 543 break; 544 case MEAS_FLUX_PSF_ERR: /* OK */ 545 value.Flt = measure[0].dFluxPSF; 546 break; 547 case MEAS_FLUX_KRON: /* OK */ 548 value.Flt = measure[0].FluxKron; 549 break; 550 case MEAS_FLUX_KRON_ERR: /* OK */ 551 value.Flt = measure[0].dFluxKron; 552 break; 501 553 } 502 554 return (value); -
trunk/Ohana/src/libdvo/src/dbFields.c
r33963 r34260 30 30 int GetMagMode (char *string) { 31 31 32 if (!strcasecmp (string, "inst")) return (MAG_INST); 33 if (!strcasecmp (string, "cat")) return (MAG_CAT); 34 if (!strcasecmp (string, "sys")) return (MAG_SYS); 35 if (!strcasecmp (string, "rel")) return (MAG_REL); 36 if (!strcasecmp (string, "cal")) return (MAG_CAL); 37 if (!strcasecmp (string, "ave")) return (MAG_AVE); 38 if (!strcasecmp (string, "ref")) return (MAG_REF); 39 if (!strcasecmp (string, "ap")) return (MAG_APER); 40 if (!strcasecmp (string, "aper")) return (MAG_APER); 41 if (!strcasecmp (string, "err")) return (MAG_ERR); 42 if (!strcasecmp (string, "aveerr")) return (MAG_AVE_ERR); 43 if (!strcasecmp (string, "photflags")) return (MAG_PHOT_FLAGS); 44 if (!strcasecmp (string, "flags")) return (MAG_PHOT_FLAGS); 45 if (!strcasecmp (string, "chisq")) return (MAG_CHISQ); 46 if (!strcasecmp (string, "ncode")) return (MAG_NCODE); 47 if (!strcasecmp (string, "nphot")) return (MAG_NPHOT); 48 if (!strcasecmp (string, "stdev")) return (MAG_STDEV); 49 if (!strcasecmp (string, "20")) return (MAG_20); 50 if (!strcasecmp (string, "80")) return (MAG_80); 51 if (!strcasecmp (string, "ucdist")) return (MAG_UC_DIST); 32 if (!strcasecmp (string, "inst")) return (MAG_INST); 33 if (!strcasecmp (string, "cat")) return (MAG_CAT); 34 if (!strcasecmp (string, "sys")) return (MAG_SYS); 35 if (!strcasecmp (string, "rel")) return (MAG_REL); 36 if (!strcasecmp (string, "cal")) return (MAG_CAL); 37 if (!strcasecmp (string, "ave")) return (MAG_AVE); 38 if (!strcasecmp (string, "ref")) return (MAG_REF); 39 if (!strcasecmp (string, "ap")) return (MAG_APER); 40 if (!strcasecmp (string, "aper")) return (MAG_APER); 41 if (!strcasecmp (string, "aperinst")) return (MAG_APER_INST); 42 if (!strcasecmp (string, "aper_inst")) return (MAG_APER_INST); 43 if (!strcasecmp (string, "kron")) return (MAG_KRON); 44 if (!strcasecmp (string, "kroninst")) return (MAG_KRON_INST); 45 if (!strcasecmp (string, "kron_inst")) return (MAG_KRON_INST); 46 if (!strcasecmp (string, "kronerr")) return (MAG_KRON_ERR); 47 if (!strcasecmp (string, "err")) return (MAG_ERR); 48 if (!strcasecmp (string, "aveerr")) return (MAG_AVE_ERR); 49 if (!strcasecmp (string, "photflags")) return (MAG_PHOT_FLAGS); 50 if (!strcasecmp (string, "flags")) return (MAG_PHOT_FLAGS); 51 if (!strcasecmp (string, "chisq")) return (MAG_CHISQ); 52 if (!strcasecmp (string, "ncode")) return (MAG_NCODE); 53 if (!strcasecmp (string, "nphot")) return (MAG_NPHOT); 54 if (!strcasecmp (string, "stdev")) return (MAG_STDEV); 55 if (!strcasecmp (string, "20")) return (MAG_20); 56 if (!strcasecmp (string, "80")) return (MAG_80); 57 if (!strcasecmp (string, "ucdist")) return (MAG_UC_DIST); 58 if (!strcasecmp (string, "stackID")) return (MAG_STACK_ID); 59 if (!strcasecmp (string, "fluxpsf")) return (MAG_FLUX_PSF); 60 if (!strcasecmp (string, "fluxpsferr")) return (MAG_FLUX_PSF_ERR); 61 if (!strcasecmp (string, "fluxkron")) return (MAG_FLUX_KRON); 62 if (!strcasecmp (string, "fluxkronerr")) return (MAG_FLUX_KRON_ERR); 52 63 return (MAG_NONE); 53 64 } … … 229 240 if (!strcasecmp (fieldName, "MCAL_OFFSET")) ESCAPE (MEAS_MCAL_OFFSET, MAG_NONE, OPIHI_FLT); 230 241 if (!strcasecmp (fieldName, "FLAT")) ESCAPE (MEAS_FLAT, MAG_NONE, OPIHI_FLT); 242 if (!strcasecmp (fieldName, "CENTER_OFFSET")) ESCAPE (MEAS_CENTER_OFFSET, MAG_NONE, OPIHI_FLT); 243 if (!strcasecmp (fieldName, "FLUX")) ESCAPE (MEAS_FLUX_PSF, MAG_NONE, OPIHI_FLT); 244 if (!strcasecmp (fieldName, "FLUX_ERR")) ESCAPE (MEAS_FLUX_PSF_ERR, MAG_NONE, OPIHI_FLT); 245 if (!strcasecmp (fieldName, "FLUX_PSF")) ESCAPE (MEAS_FLUX_PSF, MAG_NONE, OPIHI_FLT); 246 if (!strcasecmp (fieldName, "FLUX_PSF_ERR")) ESCAPE (MEAS_FLUX_PSF_ERR, MAG_NONE, OPIHI_FLT); 247 if (!strcasecmp (fieldName, "FLUX_KRON")) ESCAPE (MEAS_FLUX_KRON, MAG_NONE, OPIHI_FLT); 248 if (!strcasecmp (fieldName, "FLUX_KRON_ERR")) ESCAPE (MEAS_FLUX_KRON_ERR, MAG_NONE, OPIHI_FLT); 231 249 232 250 // for words that don't parse, try a photcode … … 242 260 field->magMode = mode; 243 261 switch (mode) { 262 case MAG_STACK_ID: 244 263 case MAG_NCODE: 245 264 case MAG_NPHOT: … … 336 355 field->magMode = mode; 337 356 switch (mode) { 357 case MAG_STACK_ID: 338 358 case MAG_NCODE: 339 359 case MAG_NPHOT: -
trunk/Ohana/src/libdvo/src/dvo_catalog.c
r33963 r34260 55 55 if (!strcasecmp (catformat, "PS1_V2")) return (DVO_FORMAT_PS1_V2); 56 56 if (!strcasecmp (catformat, "PS1_V3")) return (DVO_FORMAT_PS1_V3); 57 if (!strcasecmp (catformat, "PS1_V4")) return (DVO_FORMAT_PS1_V4); 57 58 if (!strcasecmp (catformat, "PS1_REF")) return (DVO_FORMAT_PS1_REF); 58 59 return (DVO_FORMAT_UNDEF); … … 66 67 if (!strcasecmp (catmode, "SPLIT")) return (DVO_MODE_SPLIT); 67 68 return (DVO_MODE_UNDEF); 69 } 70 71 // init all data, or just catalog data 72 void dvo_average_init (Average *average) { 73 average->R = 0; 74 average->D = 0; 75 average->dR = 0; 76 average->dD = 0; 77 78 average->uR = 0; 79 average->uD = 0; 80 average->duR = 0; 81 average->duD = 0; 82 average->P = 0; 83 average->dP = 0; 84 85 average->ChiSqAve = 0.0; 86 average->ChiSqPM = 0.0; 87 average->ChiSqPar = 0.0; 88 average->Tmean = 0; 89 average->Trange = 0; 90 91 average->Xp = 0; 92 average->Npos = 0; 93 94 average->Nmeasure = 0; 95 average->Nmissing = 0; 96 average->Nextend = 0; 97 average->measureOffset = -1; 98 average->missingOffset = -1; 99 average->extendOffset = -1; 100 101 average->flags = 0; 102 average->photFlagsUpper = 0; 103 average->photFlagsLower = 0; 104 105 average->objID = 0; 106 average->catID = 0; 107 average->extID = 0; 108 } 109 110 // init all data, or just catalog data 111 void dvo_secfilt_init (SecFilt *secfilt) { 112 secfilt->M = NAN; 113 secfilt->Map = NAN; 114 secfilt->Mkron = NAN; 115 secfilt->dMkron = NAN; 116 secfilt->dM = NAN; 117 secfilt->Xm = NAN_S_SHORT; 118 119 secfilt->FluxPSF = NAN; 120 secfilt->dFluxPSF = NAN; 121 secfilt->FluxKron = NAN; 122 secfilt->dFluxKron = NAN; 123 124 secfilt->flags = 0; 125 secfilt->Ncode = 0; 126 secfilt->Nused = 0; 127 128 secfilt->M_20 = NAN_S_SHORT; 129 secfilt->M_80 = NAN_S_SHORT; 130 131 secfilt->ubercalDist = 1000; 132 secfilt->Mstdev = NAN_S_SHORT; 133 secfilt->stackID = 0; 134 135 secfilt->dummy = 0; 136 } 137 138 // init all data, or just catalog data 139 void dvo_measure_init (Measure *measure) { 140 measure->M = NAN; 141 measure->dR = NAN; 142 measure->dD = NAN; 143 measure->M = NAN; 144 measure->Mcal = NAN; 145 measure->Map = NAN; 146 measure->Mkron = NAN; 147 measure->dMkron = NAN; 148 measure->dM = NAN; 149 measure->dMcal = NAN; 150 measure->dt = NAN; 151 152 measure->FluxPSF = NAN; 153 measure->dFluxPSF = NAN; 154 measure->FluxKron = NAN; 155 measure->dFluxKron = NAN; 156 157 measure->airmass = NAN; 158 measure->az = NAN; 159 160 measure->Xccd = NAN; 161 measure->Yccd = NAN; 162 163 measure->Sky = NAN; 164 measure->dSky = NAN; 165 166 measure->t = 0; 167 measure->t_msec = 0; 168 measure->averef = 0; 169 170 measure->detID = 0; 171 measure->imageID = 0; 172 measure->objID = 0; 173 measure->catID = 0; 174 measure->extID = 0; 175 176 measure->psfQual = NAN; 177 measure->psfChisq = NAN; 178 measure->psfNdof = 0; 179 measure->psfNpix = 0; 180 measure->crNsigma = NAN; 181 measure->extNsigma = NAN; 182 183 measure->FWx = 0; 184 measure->FWy = 0; 185 measure->theta = 0; 186 187 measure->Mxx = 0; 188 measure->Mxy = 0; 189 measure->Myy = 0; 190 191 measure->dXccd = 0; 192 measure->dYccd = 0; 193 measure->dRsys = 0; 194 195 measure->posangle = 0; 196 measure->pltscale = NAN; 197 198 measure->photcode = 0; 199 measure->dbFlags = 0; 200 measure->photFlags = 0; 68 201 } 69 202 … … 600 733 } 601 734 735 -
trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
r33649 r34260 89 89 FORMAT_CASE (PS1_V2, PS1_V2); 90 90 FORMAT_CASE (PS1_V3, PS1_V3); 91 FORMAT_CASE (PS1_V4, PS1_V4); 91 92 FORMAT_CASE (PS1_REF, PS1_REF); 92 93 … … 282 283 if (catalog[0].catformat == DVO_FORMAT_PS1_V2) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V2"); 283 284 if (catalog[0].catformat == DVO_FORMAT_PS1_V3) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V3"); 285 if (catalog[0].catformat == DVO_FORMAT_PS1_V4) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V4"); 284 286 if (catalog[0].catformat == DVO_FORMAT_PS1_REF) gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_REF"); 285 287 … … 384 386 FORMAT_CASE (PS1_V2, PS1_V2); 385 387 FORMAT_CASE (PS1_V3, PS1_V3); 388 FORMAT_CASE (PS1_V4, PS1_V4); 386 389 FORMAT_CASE (PS1_REF, PS1_REF); 387 390 … … 434 437 FORMAT_CASE (PS1_V2, PS1_V2); 435 438 FORMAT_CASE (PS1_V3, PS1_V3); 439 FORMAT_CASE (PS1_V4, PS1_V4); 436 440 FORMAT_CASE (PS1_REF, PS1_REF); 437 441 … … 488 492 FORMAT_CASE (PS1_V2, PS1_V2); 489 493 FORMAT_CASE (PS1_V3, PS1_V3); 494 FORMAT_CASE (PS1_V4, PS1_V4); 490 495 FORMAT_CASE (PS1_REF, PS1_REF); 491 496 … … 538 543 FORMAT_CASE (PS1_V2, PS1_V2); 539 544 FORMAT_CASE (PS1_V3, PS1_V3); 545 FORMAT_CASE (PS1_V4, PS1_V4); 540 546 FORMAT_CASE (PS1_REF, PS1_REF); 541 547 … … 592 598 FORMAT_CASE (PS1_V2, PS1_V2); 593 599 FORMAT_CASE (PS1_V3, PS1_V3); 600 FORMAT_CASE (PS1_V4, PS1_V4); 594 601 FORMAT_CASE (PS1_REF, PS1_REF); 595 602 … … 642 649 FORMAT_CASE (PS1_V2, PS1_V2); 643 650 FORMAT_CASE (PS1_V3, PS1_V3); 651 FORMAT_CASE (PS1_V4, PS1_V4); 644 652 FORMAT_CASE (PS1_REF, PS1_REF); 645 653 -
trunk/Ohana/src/libdvo/src/dvo_convert.c
r33649 r34260 40 40 CONVERT_FORMAT ("DVO_AVERAGE_PS1_V2", PS1_V2); 41 41 CONVERT_FORMAT ("DVO_AVERAGE_PS1_V3", PS1_V3); 42 CONVERT_FORMAT ("DVO_AVERAGE_PS1_V4", PS1_V4); 42 43 CONVERT_FORMAT ("DVO_AVERAGE_PS1_REF", PS1_REF); 43 44 # undef CONVERT_FORMAT … … 96 97 CONVERT_FORMAT ("DVO_AVERAGE_PS1_V2", PS1_V2, PS1_V2); 97 98 CONVERT_FORMAT ("DVO_AVERAGE_PS1_V3", PS1_V3, PS1_V3); 99 CONVERT_FORMAT ("DVO_AVERAGE_PS1_V4", PS1_V4, PS1_V4); 98 100 CONVERT_FORMAT ("DVO_AVERAGE_PS1_REF", PS1_REF, PS1_REF); 99 101 # undef CONVERT_FORMAT … … 130 132 FORMAT_CASE (PS1_V2, PS1_V2); 131 133 FORMAT_CASE (PS1_V3, PS1_V3); 134 FORMAT_CASE (PS1_V4, PS1_V4); 132 135 FORMAT_CASE (PS1_REF, PS1_REF); 133 136 # undef FORMAT_CASE … … 185 188 CONVERT_FORMAT ("DVO_MEASURE_PS1_V2", PS1_V2, PS1_V2); 186 189 CONVERT_FORMAT ("DVO_MEASURE_PS1_V3", PS1_V3, PS1_V3); 190 CONVERT_FORMAT ("DVO_MEASURE_PS1_V4", PS1_V4, PS1_V4); 187 191 CONVERT_FORMAT ("DVO_MEASURE_PS1_REF", PS1_REF, PS1_REF); 188 192 # undef CONVERT_FORMAT … … 219 223 FORMAT_CASE (PS1_V2, PS1_V2); 220 224 FORMAT_CASE (PS1_V3, PS1_V3); 225 FORMAT_CASE (PS1_V4, PS1_V4); 221 226 FORMAT_CASE (PS1_REF, PS1_REF); 222 227 # undef FORMAT_CASE … … 274 279 CONVERT_FORMAT ("DVO_SECFILT_PS1_V2", PS1_V2, PS1_V2); 275 280 CONVERT_FORMAT ("DVO_SECFILT_PS1_V3", PS1_V3, PS1_V3); 281 CONVERT_FORMAT ("DVO_SECFILT_PS1_V4", PS1_V4, PS1_V4); 276 282 CONVERT_FORMAT ("DVO_SECFILT_PS1_REF", PS1_REF, PS1_REF); 277 283 # undef CONVERT_FORMAT … … 308 314 FORMAT_CASE (PS1_V2, PS1_V2); 309 315 FORMAT_CASE (PS1_V3, PS1_V3); 316 FORMAT_CASE (PS1_V4, PS1_V4); 310 317 FORMAT_CASE (PS1_REF, PS1_REF); 311 318 # undef FORMAT_CASE … … 387 394 CONVERT_FORMAT ("DVO_IMAGE_PS1_V2", PS1_V2, PS1_V2); 388 395 CONVERT_FORMAT ("DVO_IMAGE_PS1_V3", PS1_V3, PS1_V3); 396 CONVERT_FORMAT ("DVO_IMAGE_PS1_V4", PS1_V4, PS1_V4); 389 397 CONVERT_FORMAT ("DVO_IMAGE_PS1_REF", PS1_REF, PS1_REF); 390 398 … … 425 433 FORMAT_CASE (PS1_V2, PS1_V2); 426 434 FORMAT_CASE (PS1_V3, PS1_V3); 435 FORMAT_CASE (PS1_V4, PS1_V4); 427 436 FORMAT_CASE (PS1_REF, PS1_REF); 428 437 … … 479 488 FORMAT_CASE (PS1_V2, PS1_V2); 480 489 FORMAT_CASE (PS1_V3, PS1_V3); 490 FORMAT_CASE (PS1_V4, PS1_V4); 481 491 FORMAT_CASE (PS1_REF, PS1_REF); 482 492 -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
r33963 r34260 57 57 out[i].psfNdof = 0; 58 58 out[i].psfNpix = 0; 59 60 // added for PS1_V4 61 out[i].Mkron = NAN; 62 out[i].dMkron = NAN; 63 out[i].FluxPSF = NAN; 64 out[i].dFluxPSF = NAN; 65 out[i].FluxKron = NAN; 66 out[i].dFluxKron = NAN; 59 67 } 60 68 return (out); … … 215 223 out[i].Mstdev = 0; 216 224 out[i].ubercalDist = 0; 225 226 // added for PS1_V4 227 out[i].Mkron = NAN; 228 out[i].dMkron = NAN; 229 out[i].FluxPSF = NAN; 230 out[i].dFluxPSF = NAN; 231 out[i].FluxKron = NAN; 232 out[i].dFluxKron = NAN; 233 out[i].stackID = 0; 217 234 } 218 235 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
r33963 r34260 54 54 out[i].psfNdof = 0; 55 55 out[i].psfNpix = 0; 56 57 // added for PS1_V4 58 out[i].Mkron = NAN; 59 out[i].dMkron = NAN; 60 out[i].FluxPSF = NAN; 61 out[i].dFluxPSF = NAN; 62 out[i].FluxKron = NAN; 63 out[i].dFluxKron = NAN; 56 64 } 57 65 return (out); … … 209 217 out[i].Mstdev = 0; 210 218 out[i].ubercalDist = 0; 219 220 // added for PS1_V4 221 out[i].Mkron = NAN; 222 out[i].dMkron = NAN; 223 out[i].FluxPSF = NAN; 224 out[i].dFluxPSF = NAN; 225 out[i].FluxKron = NAN; 226 out[i].dFluxKron = NAN; 227 out[i].stackID = 0; 211 228 } 212 229 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c
r33963 r34260 52 52 out[i].dbFlags = 0; 53 53 out[i].photFlags = 0; 54 55 // added for PS1_V4 56 out[i].Mkron = NAN; 57 out[i].dMkron = NAN; 58 out[i].FluxPSF = NAN; 59 out[i].dFluxPSF = NAN; 60 out[i].FluxKron = NAN; 61 out[i].dFluxKron = NAN; 54 62 } 55 63 return (out); … … 169 177 out[i].Mstdev = 0; 170 178 out[i].ubercalDist = 0; 179 180 // added for PS1_V4 181 out[i].Mkron = NAN; 182 out[i].dMkron = NAN; 183 out[i].FluxPSF = NAN; 184 out[i].dFluxPSF = NAN; 185 out[i].FluxKron = NAN; 186 out[i].dFluxKron = NAN; 187 out[i].stackID = 0; 171 188 } 172 189 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
r33963 r34260 52 52 out[i].dbFlags = in[i].dbFlags; 53 53 out[i].photFlags = in[i].photFlags; 54 55 // added for PS1_V4 56 out[i].Mkron = NAN; 57 out[i].dMkron = NAN; 58 out[i].FluxPSF = NAN; 59 out[i].dFluxPSF = NAN; 60 out[i].FluxKron = NAN; 61 out[i].dFluxKron = NAN; 54 62 } 55 63 return (out); … … 213 221 out[i].Mstdev = 0; 214 222 out[i].ubercalDist = 0; 223 224 // added for PS1_V4 225 out[i].Mkron = NAN; 226 out[i].dMkron = NAN; 227 out[i].FluxPSF = NAN; 228 out[i].dFluxPSF = NAN; 229 out[i].FluxKron = NAN; 230 out[i].dFluxKron = NAN; 231 out[i].stackID = 0; 215 232 } 216 233 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
r33963 r34260 53 53 out[i].dbFlags = in[i].dbFlags; 54 54 out[i].photFlags = in[i].photFlags; 55 56 // added for PS1_V4 57 out[i].Mkron = NAN; 58 out[i].dMkron = NAN; 59 out[i].FluxPSF = NAN; 60 out[i].dFluxPSF = NAN; 61 out[i].FluxKron = NAN; 62 out[i].dFluxKron = NAN; 55 63 } 56 64 return (out); … … 216 224 out[i].Mstdev = 0; 217 225 out[i].ubercalDist = 0; 226 227 // added for PS1_V4 228 out[i].Mkron = NAN; 229 out[i].dMkron = NAN; 230 out[i].FluxPSF = NAN; 231 out[i].dFluxPSF = NAN; 232 out[i].FluxKron = NAN; 233 out[i].dFluxKron = NAN; 234 out[i].stackID = 0; 218 235 } 219 236 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
r33963 r34260 53 53 out[i].dbFlags = in[i].dbFlags; 54 54 out[i].photFlags = in[i].photFlags; 55 56 // added for PS1_V4 57 out[i].Mkron = NAN; 58 out[i].dMkron = NAN; 59 out[i].FluxPSF = NAN; 60 out[i].dFluxPSF = NAN; 61 out[i].FluxKron = NAN; 62 out[i].dFluxKron = NAN; 55 63 } 56 64 return (out); … … 214 222 out[i].Mstdev = in[i].Mstdev; 215 223 out[i].ubercalDist = in[i].ubercalDist; 224 225 // added for PS1_V4 226 out[i].Mkron = NAN; 227 out[i].dMkron = NAN; 228 out[i].FluxPSF = NAN; 229 out[i].dFluxPSF = NAN; 230 out[i].FluxKron = NAN; 231 out[i].dFluxKron = NAN; 232 out[i].stackID = 0; 216 233 } 217 234 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c
r33963 r34260 64 64 out[i].psfNdof = 0; 65 65 out[i].psfNpix = 0; 66 67 // added for PS1_V4 68 out[i].Mkron = NAN; 69 out[i].dMkron = NAN; 70 out[i].FluxPSF = NAN; 71 out[i].dFluxPSF = NAN; 72 out[i].FluxKron = NAN; 73 out[i].dFluxKron = NAN; 66 74 } 67 75 return (out); … … 224 232 out[i].Mstdev = 0; 225 233 out[i].ubercalDist = 0; 234 235 // added for PS1_V4 236 out[i].Mkron = NAN; 237 out[i].dMkron = NAN; 238 out[i].FluxPSF = NAN; 239 out[i].dFluxPSF = NAN; 240 out[i].FluxKron = NAN; 241 out[i].dFluxKron = NAN; 242 out[i].stackID = 0; 226 243 } 227 244 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c
r33963 r34260 66 66 out[i].psfNdof = 0; 67 67 out[i].psfNpix = 0; 68 69 // added for PS1_V4 70 out[i].Mkron = NAN; 71 out[i].dMkron = NAN; 72 out[i].FluxPSF = NAN; 73 out[i].dFluxPSF = NAN; 74 out[i].FluxKron = NAN; 75 out[i].dFluxKron = NAN; 68 76 } 69 77 return (out); … … 217 225 out[i].Mstdev = 0; 218 226 out[i].ubercalDist = 0; 227 228 // added for PS1_V4 229 out[i].Mkron = NAN; 230 out[i].dMkron = NAN; 231 out[i].FluxPSF = NAN; 232 out[i].dFluxPSF = NAN; 233 out[i].FluxKron = NAN; 234 out[i].dFluxKron = NAN; 235 out[i].stackID = 0; 219 236 } 220 237 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
r33963 r34260 61 61 out[i].psfNdof = 0; 62 62 out[i].psfNpix = 0; 63 64 // added for PS1_V4 65 out[i].Mkron = NAN; 66 out[i].dMkron = NAN; 67 out[i].FluxPSF = NAN; 68 out[i].dFluxPSF = NAN; 69 out[i].FluxKron = NAN; 70 out[i].dFluxKron = NAN; 63 71 } 64 72 return (out); … … 224 232 out[i].Mstdev = 0; 225 233 out[i].ubercalDist = 0; 234 235 // added for PS1_V4 236 out[i].Mkron = NAN; 237 out[i].dMkron = NAN; 238 out[i].FluxPSF = NAN; 239 out[i].dFluxPSF = NAN; 240 out[i].FluxKron = NAN; 241 out[i].dFluxKron = NAN; 242 out[i].stackID = 0; 226 243 } 227 244 return (out); -
trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
r33963 r34260 61 61 out[i].psfNdof = 0; 62 62 out[i].psfNpix = 0; 63 64 // added for PS1_V4 65 out[i].Mkron = NAN; 66 out[i].dMkron = NAN; 67 out[i].FluxPSF = NAN; 68 out[i].dFluxPSF = NAN; 69 out[i].FluxKron = NAN; 70 out[i].dFluxKron = NAN; 63 71 } 64 72 return (out); … … 224 232 out[i].Mstdev = 0; 225 233 out[i].ubercalDist = 0; 234 235 // added for PS1_V4 236 out[i].Mkron = NAN; 237 out[i].dMkron = NAN; 238 out[i].FluxPSF = NAN; 239 out[i].dFluxPSF = NAN; 240 out[i].FluxKron = NAN; 241 out[i].dFluxKron = NAN; 242 out[i].stackID = 0; 226 243 } 227 244 return (out); -
trunk/Ohana/src/libdvo/src/dvo_image.c
r34088 r34260 212 212 if (db[0].format == DVO_FORMAT_PS1_V2) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V2"); 213 213 if (db[0].format == DVO_FORMAT_PS1_V3) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V3"); 214 if (db[0].format == DVO_FORMAT_PS1_V4) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V4"); 214 215 if (db[0].format == DVO_FORMAT_PS1_REF) gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_REF"); 215 216 -
trunk/Ohana/src/libdvo/src/dvo_image_raw.c
r33649 r34260 58 58 if (db[0].format == DVO_FORMAT_PS1_V2) ImageSize = sizeof(Image_PS1_V2); 59 59 if (db[0].format == DVO_FORMAT_PS1_V3) ImageSize = sizeof(Image_PS1_V3); 60 if (db[0].format == DVO_FORMAT_PS1_V4) ImageSize = sizeof(Image_PS1_V4); 60 61 if (db[0].format == DVO_FORMAT_PS1_REF) ImageSize = sizeof(Image_PS1_REF); 61 62 … … 87 88 if (db[0].format == DVO_FORMAT_PS1_V2) gfits_table_mkheader_Image_PS1_V2 (&db[0].theader); 88 89 if (db[0].format == DVO_FORMAT_PS1_V3) gfits_table_mkheader_Image_PS1_V3 (&db[0].theader); 90 if (db[0].format == DVO_FORMAT_PS1_V4) gfits_table_mkheader_Image_PS1_V4 (&db[0].theader); 89 91 if (db[0].format == DVO_FORMAT_PS1_REF) gfits_table_mkheader_Image_PS1_REF (&db[0].theader); 90 92 -
trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
r33963 r34260 278 278 } 279 279 280 float PhotAperInst (Measure *measure) { 281 282 int Np; 283 float Minst; 284 285 Np = photcodes[0].hashcode[measure[0].photcode]; 286 if (Np == -1) return (NAN); 287 288 if (photcodes[0].code[Np].type == PHOT_REF) { 289 Minst = measure[0].Map; 290 return (Minst); 291 } 292 Minst = measure[0].Map - measure[0].dt - ZERO_POINT; 293 294 return (Minst); 295 } 296 297 float PhotKron (Measure *measure) { 298 299 int Np; 300 float Mcat; 301 PhotCode *code; 302 303 Np = photcodes[0].hashcode[measure[0].photcode]; 304 if (Np == -1) return (NAN); 305 306 if (photcodes[0].code[Np].type == PHOT_REF) { 307 Mcat = measure[0].Mkron; 308 return (Mcat); 309 } 310 code = &photcodes[0].code[Np]; 311 Mcat = measure[0].Mkron - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 312 313 return (Mcat); 314 } 315 316 float PhotKronInst (Measure *measure) { 317 318 int Np; 319 float Minst; 320 321 Np = photcodes[0].hashcode[measure[0].photcode]; 322 if (Np == -1) return (NAN); 323 324 if (photcodes[0].code[Np].type == PHOT_REF) { 325 Minst = measure[0].Mkron; 326 return (Minst); 327 } 328 Minst = measure[0].Mkron - measure[0].dt - ZERO_POINT; 329 330 return (Minst); 331 } 332 280 333 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt) { 281 334 … … 307 360 Msys = Mcat + Mcol; 308 361 return (Msys); 362 } 363 364 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt) { 365 366 int Np; 367 float ZP; 368 PhotCode *code; 369 370 Np = photcodes[0].hashcode[measure[0].photcode]; 371 if (Np == -1) return (NAN); 372 373 if (photcodes[0].code[Np].type == PHOT_REF) { 374 ZP = 0.0; 375 return (ZP); 376 } 377 code = &photcodes[0].code[Np]; 378 ZP = code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 379 380 return (ZP); 309 381 } 310 382 … … 488 560 } 489 561 562 float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt) { 563 564 int Ns; 565 float Mkron; 566 567 if (code == NULL) return NAN; 568 569 Ns = photcodes[0].hashNsec[code[0].code]; 570 Mkron = (Ns == -1) ? NAN : secfilt[Ns].Mkron; 571 return (Mkron); 572 } 573 574 float PhotAveFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt) { 575 576 int Ns; 577 float Fpsf; 578 579 if (code == NULL) return NAN; 580 581 Ns = photcodes[0].hashNsec[code[0].code]; 582 Fpsf = (Ns == -1) ? NAN : secfilt[Ns].FluxPSF; 583 return (Fpsf); 584 } 585 586 float PhotAvedFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt) { 587 588 int Ns; 589 float dFpsf; 590 591 if (code == NULL) return NAN; 592 593 Ns = photcodes[0].hashNsec[code[0].code]; 594 dFpsf = (Ns == -1) ? NAN : secfilt[Ns].dFluxPSF; 595 return (dFpsf); 596 } 597 598 float PhotAveFluxKron (PhotCode *code, Average *average, SecFilt *secfilt) { 599 600 int Ns; 601 float Fkron; 602 603 if (code == NULL) return NAN; 604 605 Ns = photcodes[0].hashNsec[code[0].code]; 606 Fkron = (Ns == -1) ? NAN : secfilt[Ns].FluxKron; 607 return (Fkron); 608 } 609 610 float PhotAvedFluxKron (PhotCode *code, Average *average, SecFilt *secfilt) { 611 612 int Ns; 613 float dFkron; 614 615 if (code == NULL) return NAN; 616 617 Ns = photcodes[0].hashNsec[code[0].code]; 618 dFkron = (Ns == -1) ? NAN : secfilt[Ns].dFluxKron; 619 return (dFkron); 620 } 621 490 622 float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt) { 491 623 … … 522 654 Muc = (Ns == -1) ? NAN : secfilt[Ns].ubercalDist; 523 655 return (Muc); 656 } 657 658 unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt) { 659 660 int Ns; 661 unsigned int ID; 662 663 if (code == NULL) return 0; 664 665 Ns = photcodes[0].hashNsec[code[0].code]; 666 ID = (Ns == -1) ? 0 : secfilt[Ns].stackID; 667 return (ID); 524 668 } 525 669 -
trunk/Ohana/src/libohana/include/ohana.h
r34178 r34260 155 155 /* if your build crashes on OFF_T_MODE, you probably need to add your 64bit hardware to this list */ 156 156 # ifdef _LARGEFILE_SOURCE 157 # define OFF_T_FMT "%jd" 158 # endif 157 # define OFF_T_FMT "%jd" 158 # endif 159 159 160 # ifdef lin64 160 # define OFF_T_FMT "%jd" 161 # endif 161 # define OFF_T_FMT "%jd" 162 # endif 163 162 164 // mac is annoying 163 165 # ifdef _DARWIN_C_SOURCE 164 # define OFF_T_FMT "%lld"166 # define OFF_T_FMT "%lld" 165 167 # endif 166 168 # ifdef darwin_x86 167 # define OFF_T_FMT "%lld"169 # define OFF_T_FMT "%lld" 168 170 # endif 169 171 # ifdef darwin 170 # define OFF_T_FMT "%lld" 171 # endif 172 # define OFF_T_FMT "%lld" 173 # endif 174 172 175 // for mac os x 10.7 (lion): they don't use darwin, and i want to make sure it grabs for 10.7 and 64 bit (are they all 64 bit?) 173 176 # if defined(__APPLE__) && defined(x86_64) 174 # define OFF_T_FMT "%lld" 175 # endif 177 # define OFF_T_FMT "%lld" 178 # endif 179 176 180 # ifndef OFF_T_FMT 177 # define OFF_T_FMT "%ld"181 # define OFF_T_FMT "%ld" 178 182 # endif 179 183 -
trunk/Ohana/src/opihi/cmd.astro
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20120627/Ohana/src/opihi/cmd.astro (added) merged: 34139,34244,34255
- Property svn:mergeinfo changed
-
trunk/Ohana/src/opihi/dvo/dvo_host_utils.c
r33963 r34260 15 15 snprintf (uniquer, 12, "%05d.%05d", PID, TIME % 100000); 16 16 17 // write the dvo comment (host independent) 18 char commandBase[DVO_MAX_PATH]; 19 snprintf (commandBase, DVO_MAX_PATH, "dvo.command.%s.txt", uniquer); 20 char *commandFile = abspath(commandBase, DVO_MAX_PATH); 21 22 FILE *f = fopen (commandFile, "w"); 23 fprintf (f, "%s\n", basecmd); 24 if (fflush (f)) DIE("flush", "failed to flush"); 25 26 int fd = fileno (f); 27 if (fsync (fd)) DIE("fsync", "failed to fsync"); 28 29 if (fclose (f)) DIE("close", "failed to close"); 30 31 // force NFS to write the file to disk 32 int state; 33 f = fsetlockfile (commandFile, 0.5, LCK_XCLD, &state); 34 fclearlockfile (commandFile, f, LCK_XCLD, &state); 35 17 36 int top_status = TRUE; 18 37 int i; … … 29 48 snprintf (table->hosts[i].results, DVO_MAX_PATH, "%s/dvo.results.%s.fits", table->hosts[i].pathname, uniquer); 30 49 31 char commandBase[DVO_MAX_PATH];32 snprintf (commandBase, DVO_MAX_PATH, "dvo.command.%s.txt", uniquer);33 char *commandFile = abspath(commandBase, DVO_MAX_PATH);34 35 FILE *f = fopen (commandFile, "w");36 fprintf (f, "%s\n", basecmd);37 if (fflush (f)) DIE("flush", "failed to flush");38 39 int fd = fileno (f);40 if (fsync (fd)) DIE("fsync", "failed to fsync");41 42 if (fclose (f)) DIE("close", "failed to close");43 44 // force NFS to write the file to disk45 int state;46 f = fsetlockfile (commandFile, 0.5, LCK_XCLD, &state);47 fclearlockfile (commandFile, f, LCK_XCLD, &state);48 49 50 char command[1024]; 50 51 snprintf (command, 1024, "dvo_client %s -result %s %s -hostID %d -hostdir %s", commandFile, table->hosts[i].results, options, table->hosts[i].hostID, table->hosts[i].pathname); 51 free (commandFile);52 52 53 53 if (VERBOSE) gprint (GP_ERR, "command: %s\n", command); … … 75 75 } 76 76 } 77 free (commandFile); 77 78 return top_status; 78 79 } -
trunk/Ohana/src/opihi/dvo/gimages.c
r31635 r34260 216 216 217 217 if (PixelCoords) { 218 gprint (GP_LOG, "%3d %s %6.1f %6.1f %20s %5d %2d %4.2f %6.3f %5.3f %5.3f %4x \n",219 Nfound, image[i].name, X, Y, date, image[i].nstar, image[i].photcode, image[i].secz, image[i].Mcal, image[i].dMcal, image[i].exptime, image[i].flags);218 gprint (GP_LOG, "%3d %s %6.1f %6.1f %20s %5d %2d %4.2f %6.3f %5.3f %5.3f %4x %7d\n", 219 Nfound, image[i].name, X, Y, date, image[i].nstar, image[i].photcode, image[i].secz, image[i].Mcal, image[i].dMcal, image[i].exptime, image[i].flags, image[i].imageID); 220 220 } else { 221 221 XY_to_RD (&ra, &dec, 0.5*image[i].NX, 0.5*image[i].NY, &image[i].coords); 222 gprint (GP_LOG, "%3d %s %8.4f %8.4f %20s %5d %2d %4.2f %6.3f %5.3f %5.3f %4x \n",223 Nfound, image[i].name, ra, dec, date, image[i].nstar, image[i].photcode, image[i].secz, image[i].Mcal, image[i].dMcal, image[i].exptime, image[i].flags );222 gprint (GP_LOG, "%3d %s %8.4f %8.4f %20s %5d %2d %4.2f %6.3f %5.3f %5.3f %4x %7d\n", 223 Nfound, image[i].name, ra, dec, date, image[i].nstar, image[i].photcode, image[i].secz, image[i].Mcal, image[i].dMcal, image[i].exptime, image[i].flags, image[i].imageID); 224 224 } 225 225 sprintf (name, "IMAGEx:%d", Nfound); -
trunk/Ohana/src/opihi/dvo/hosts.c
r34088 r34260 2 2 # include <glob.h> 3 3 # define DVO_MAX_PATH 1024 4 5 enum {TEMP_NONE, TEMP_DVO_RESULTS, TEMP_DVO_LOG, TEMP_RELPHOT_RESULTS, TEMP_RELPHOT_LOG}; 4 6 5 7 // functions to manage the remote hosts … … 10 12 gprint (GP_ERR, " commands:\n"); 11 13 gprint (GP_ERR, " purge-temp : delete all tempfiles for this shell\n"); 14 gprint (GP_ERR, " : [-old-pid] [-all-pid] [-v] [-verbose] [-commit] [-type type]\n"); 15 gprint (GP_ERR, " get-results : determine name of RESULTS file\n"); 12 16 return FALSE; 13 17 } … … 27 31 remove_argument (N, &argc, argv); 28 32 ALL_PID = TRUE; 29 remove_argument (N, &argc, argv);30 33 } 31 34 … … 46 49 } 47 50 51 // we have the following types of temp files: 52 // dvo.results.*.fits 53 // dvo.results.*.fits.log 54 // log.rlpc.* (relphot logs) 55 // relphot.catalog.subset.dat [no glob needed] 56 int TEMP_TYPE = TEMP_DVO_RESULTS; 57 if ((N = get_argument (argc, argv, "-type"))) { 58 TEMP_TYPE = TEMP_NONE; 59 remove_argument (N, &argc, argv); 60 if (!strcasecmp(argv[N], "dvo.results")) TEMP_TYPE = TEMP_DVO_RESULTS; 61 if (!strcasecmp(argv[N], "dvo.log")) TEMP_TYPE = TEMP_DVO_LOG; 62 if (!strcasecmp(argv[N], "relphot.results")) TEMP_TYPE = TEMP_RELPHOT_RESULTS; 63 if (!strcasecmp(argv[N], "relphot.log")) TEMP_TYPE = TEMP_RELPHOT_LOG; 64 if (TEMP_TYPE == TEMP_NONE) { 65 gprint (GP_ERR, "USAGE: hosts purge-temp [-type (type)]\n"); 66 gprint (GP_ERR, " allowed types dvo.results, dvo.log, relphot.results, relphot.log]\n"); 67 return FALSE; 68 } 69 remove_argument (N, &argc, argv); 70 } 71 48 72 // XXX wrap this up in a function: 49 73 char *CATDIR = GetCATDIR(); … … 63 87 } 64 88 89 if (argc != 2) { 90 gprint (GP_ERR, "USAGE: hosts purge-temp [-all-pid] [-old-pid PID] [-verbose] [-commit]\n"); 91 return FALSE; 92 } 93 65 94 int i; 66 95 for (i = 0; i < table->Nhosts; i++) { … … 68 97 char name[DVO_MAX_PATH]; 69 98 if (ALL_PID) { 70 snprintf (name, DVO_MAX_PATH, "%s/dvo.results.*.*.fits", table->hosts[i].pathname); 99 if (TEMP_TYPE == TEMP_DVO_RESULTS) snprintf (name, DVO_MAX_PATH, "%s/dvo.results.*.fits", table->hosts[i].pathname); 100 if (TEMP_TYPE == TEMP_DVO_LOG) snprintf (name, DVO_MAX_PATH, "%s/dvo.results.*.fits.log", table->hosts[i].pathname); 101 if (TEMP_TYPE == TEMP_RELPHOT_RESULTS) snprintf (name, DVO_MAX_PATH, "%s/log.rlpc.*", table->hosts[i].pathname); 102 if (TEMP_TYPE == TEMP_RELPHOT_LOG) snprintf (name, DVO_MAX_PATH, "%s/relphot.catalog.subset.dat", table->hosts[i].pathname); 71 103 } else { 72 snprintf (name, DVO_MAX_PATH, "%s/dvo.results.%05d.*.fits", table->hosts[i].pathname, PID); 104 if (TEMP_TYPE == TEMP_DVO_RESULTS) snprintf (name, DVO_MAX_PATH, "%s/dvo.results.%05d.*.fits", table->hosts[i].pathname, PID); 105 if (TEMP_TYPE == TEMP_DVO_LOG) snprintf (name, DVO_MAX_PATH, "%s/dvo.results.%05d.*.fits.log", table->hosts[i].pathname, PID); 106 if (TEMP_TYPE == TEMP_RELPHOT_RESULTS) snprintf (name, DVO_MAX_PATH, "%s/log.rlpc.*", table->hosts[i].pathname); 107 if (TEMP_TYPE == TEMP_RELPHOT_LOG) snprintf (name, DVO_MAX_PATH, "%s/relphot.catalog.subset.dat", table->hosts[i].pathname); 73 108 } 74 109 if (VERBOSE) gprint (GP_ERR, "checking %s\n", name); … … 108 143 } 109 144 110 111 112 145 gprint (GP_ERR, "error: unknown hosts command %s\n", argv[1]); 113 146 return FALSE; -
trunk/Ohana/src/opihi/dvo/mextract.c
r33963 r34260 129 129 if (fields[i].ID == MEAS_YCCD) loadImages = TRUE; 130 130 } 131 if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE; 132 if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE; 133 if (fields[i].ID == MEAS_EXTERN_ID) loadImages = mosaicMode = TRUE; 134 if (fields[i].ID == MEAS_FLAT) loadImages = mosaicMode = TRUE; 131 if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE; 132 if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE; 133 if (fields[i].ID == MEAS_EXTERN_ID) loadImages = mosaicMode = TRUE; 134 if (fields[i].ID == MEAS_FLAT) loadImages = mosaicMode = TRUE; 135 if (fields[i].ID == MEAS_CENTER_OFFSET) loadImages = mosaicMode = TRUE; 135 136 } 136 137 if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape; -
trunk/Ohana/src/opihi/lib.shell/check_stack.c
r20936 r34260 1 1 # include "opihi.h" 2 # ifndef MAX_INT 3 # define MAX_INT 2147483647 4 # endif 2 5 3 6 int check_stack (StackVar *stack, int Nstack, int validsize) { … … 12 15 13 16 /** if this is a number, put it on the list of scalars and move on. assume value is 14 * an int unless proven otherwise **/ 17 * an int unless proven otherwise. 18 19 If we have built libdvo with opihi_int defined as a 32bit signed int, then we have 20 an overflow for values > MAX_INT (2^31). If the float value is larger than this, 21 we should treat the value as a float. (NOTE: this means we cannot use 32bit flags, 22 only 31bit flags. 23 24 **/ 25 15 26 stack[i].FltValue = strtod (stack[i].name, &c1); 16 27 stack[i].IntValue = strtol (stack[i].name, &c2, 0); 28 if ((fabs(stack[i].FltValue) > MAX_INT) && (c1 == stack[i].name + strlen (stack[i].name))) { 29 stack[i].type = 'S'; // 'S' == (float) 30 continue; 31 } 17 32 if (c2 == stack[i].name + strlen (stack[i].name)) { 18 33 stack[i].type = 's'; // 's' == (int) -
trunk/Ohana/src/relastro/src/relastro_objects.c
r33963 r34260 86 86 } 87 87 88 struct timeval now; 89 gettimeofday (&now, (void *) NULL); 90 char *moddate = ohana_sec_to_date (now.tv_sec); 91 gfits_modify (&catalog.header, "RELASTRO", "%s", 1, moddate); 92 free (moddate); 93 88 94 save_catalogs (&catalog, 1); 89 95 } -
trunk/Ohana/src/relphot/Makefile
r33963 r34260 49 49 $(SRC)/setExclusions.$(ARCH).o \ 50 50 $(SRC)/setMrelFinal.$(ARCH).o \ 51 $(SRC)/BoundaryTreeOps.$(ARCH).o \ 51 52 $(SRC)/write_coords.$(ARCH).o 52 53 … … 77 78 $(SRC)/setExclusions.$(ARCH).o \ 78 79 $(SRC)/setMrelFinal.$(ARCH).o \ 80 $(SRC)/BoundaryTreeOps.$(ARCH).o \ 79 81 $(SRC)/write_coords.$(ARCH).o 80 82 -
trunk/Ohana/src/relphot/include/relphot.h
r33963 r34260 111 111 char *BCATALOG; 112 112 ModeType MODE; 113 114 char *BOUNDARY_TREE; 113 115 114 116 double MAG_LIM; … … 242 244 float getMrel PROTO((Catalog *catalog, off_t meas, int cat)); 243 245 short getUbercalDist PROTO((off_t meas, int cat)); 246 float getCenterOffset PROTO((off_t meas, int cat, Measure *measure, unsigned int *myID)); 244 247 Image *getimage PROTO((off_t N)); 245 248 Image *getimages PROTO((off_t *N, off_t **LineNumber)); … … 340 343 int client_logger_message (char *format,...); 341 344 345 int MatchImageName (off_t meas, int cat, char *name); 346 347 int load_tree (char *treefile); 348 int BoundaryTreePrimaryCell (char *primaryCellName, double ra, double dec); -
trunk/Ohana/src/relphot/src/ImageOps.c
r33963 r34260 365 365 distance = image[i].ubercalDist; // was dummy3 in structure 366 366 return (distance); 367 } 368 369 // returns image.Mcal - ff(x,y) 370 float getCenterOffset (off_t meas, int cat, Measure *measure, unsigned int *myID) { 371 372 off_t i; 373 float distance; 374 375 if (!MeasureToImage) return -1; 376 377 i = MeasureToImage[cat][meas]; 378 if (i == -1) return (1000); 379 380 float Xcenter = 0.5*image[i].NX; 381 float Ycenter = 0.5*image[i].NY; 382 383 *myID = image[i].imageID; 384 385 distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter); 386 return (distance); 387 } 388 389 // returns image.Mcal - ff(x,y) 390 int MatchImageName (off_t meas, int cat, char *name) { 391 392 off_t i; 393 394 if (!name) return FALSE; 395 if (!name[0]) return FALSE; 396 397 if (!MeasureToImage) return FALSE; 398 399 i = MeasureToImage[cat][meas]; 400 if (i == -1) return FALSE; 401 402 // this is a bit crude: stack image names are of the form 403 // RINGS.V3.skycell.1495.027.sky.191211.stk.988232.cmf 404 // the primaryCell has a name of the form RINGS.V3.skycell.1495 405 406 if (!strncmp(image[i].name, name, strlen(name))) return TRUE; 407 return FALSE; 367 408 } 368 409 -
trunk/Ohana/src/relphot/src/StarOps.c
r34088 r34260 15 15 double *wlist; 16 16 double *aplist; 17 double *daplist; 17 double *kronlist; 18 double *dkronlist; 18 19 } SetMrelInfo; 19 20 … … 164 165 SetMrelInfoInit (&results, TRUE); // allocates results->list,dlist,wlist 165 166 ALLOCATE (results.aplist, double, Nmax); 166 ALLOCATE (results.daplist, double, Nmax); 167 ALLOCATE (results.kronlist, double, Nmax); 168 ALLOCATE (results.dkronlist, double, Nmax); 167 169 168 170 for (i = 0; i < Ncatalog; i++) { … … 174 176 SetMrelInfoFree (&results); 175 177 free (results.aplist); 176 free (results.daplist); 178 free (results.kronlist); 179 free (results.dkronlist); 177 180 return (TRUE); 178 181 } … … 303 306 int setMrel_catalog (Catalog *catalog, int Nc, int pass, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt) { 304 307 305 off_t j, k, m ;308 off_t j, k, m, ID; 306 309 int N; 307 310 float Msys, Mcal, Mmos, Mgrid; 308 311 309 StatType stats, apstats ;312 StatType stats, apstats, kronstats; 310 313 liststats_setmode (&stats, STATMODE); 311 314 liststats_setmode (&apstats, STATMODE); 312 313 double *list = results->list; 314 double *dlist = results->dlist; 315 double *wlist = results->wlist; 316 double *aplist = results->aplist; 317 double *daplist = results->daplist; 315 liststats_setmode (&kronstats, STATMODE); 316 317 double *list = results->list; 318 double *dlist = results->dlist; 319 double *wlist = results->wlist; 320 double *aplist = results->aplist; 321 double *kronlist = results->kronlist; 322 double *dkronlist = results->dkronlist; 318 323 319 324 SetMrelInfoInit (results, FALSE); // do not allocate list,dlist,wlist arrays 320 325 321 326 int isSetMrelFinal = (pass >= 0); 327 328 char *primaryCell = NULL; 329 ALLOCATE (primaryCell, char, DVO_MAX_PATH); 322 330 323 331 for (j = 0; j < catalog[Nc].Naverage; j++) { … … 325 333 326 334 // option for a test print 327 if (FALSE && (catalog[Nc].average[j].objID == 0x 46a4) && (catalog[Nc].average[j].catID == 0xf40e)) {335 if (FALSE && (catalog[Nc].average[j].objID == 0x7146) && (catalog[Nc].average[j].catID == 0x49d8)) { 328 336 fprintf (stderr, "test obj\n"); 329 337 print_measure_set (&catalog[Nc].average[j], &catalog[Nc].secfilt[j*Nsecfilt], catalog[Nc].measure); 330 338 } 339 340 BoundaryTreePrimaryCell(primaryCell, catalog[Nc].average[j].R, catalog[Nc].average[j].D); 331 341 332 342 int GoodPS1 = FALSE; … … 355 365 int haveSynth = FALSE; 356 366 int haveStack = FALSE; 367 368 // need to find the measurement closest to the center of its skycell, as well as the 369 // closest for the subset of primary projection cells 370 371 float stackCenterOffsetMin = 1e9; 372 int stackCenterIDmin = -1; 373 off_t stackCenterMeasureMin = -1; 374 375 float stackPrimaryOffsetMin = 1e9; 376 int stackPrimaryIDmin = -1; 377 off_t stackPrimaryMeasureMin = -1; 357 378 358 379 int forceSynth = FALSE; … … 401 422 float Map = PhotAper (&catalog[Nc].measure[m]); 402 423 aplist[N] = Map - Mcal - Mmos - Mgrid; 424 425 float Mkron = PhotKron (&catalog[Nc].measure[m]); 426 kronlist[N] = Mkron - Mcal - Mmos - Mgrid; 427 dkronlist[N] = catalog[Nc].measure[m].dMkron; 403 428 404 429 // special options for PS1 data … … 416 441 // gpc1 stack data 417 442 if ((catalog[Nc].measure[m].photcode >= 11000) && (catalog[Nc].measure[m].photcode <= 11400)) { 418 if (pass < 2) continue;443 // if (pass < 2) continue; 419 444 haveStack = TRUE; 445 446 unsigned int stackImageID; 447 448 // which stack image should we use for the mean value? 449 // if we request the primary (USE_TREE_FOR_PRIMARY), then find the min distances for data from the primary cell 450 if (MatchImageName (m, Nc, primaryCell)) { 451 float stackPrimaryOffset = getCenterOffset (m, Nc, &catalog[Nc].measure[m], &stackImageID); 452 if (stackPrimaryOffset < stackPrimaryOffsetMin) { 453 stackPrimaryOffsetMin = stackPrimaryOffset; 454 stackPrimaryIDmin = stackImageID; 455 stackPrimaryMeasureMin = m; 456 } 457 } 458 459 // get the center distance for the generic case: 460 float stackCenterOffset = getCenterOffset (m, Nc, &catalog[Nc].measure[m], &stackImageID); 461 if (stackCenterOffset < stackCenterOffsetMin) { 462 stackCenterOffsetMin = stackCenterOffset; 463 stackCenterIDmin = stackImageID; 464 stackCenterMeasureMin = m; 465 } 420 466 } 421 467 … … 549 595 550 596 // NOTE : use the modified weight for apmags as well as psf mags 551 liststats (aplist, daplist, wlist, N, &apstats); 552 597 liststats (aplist, dlist, wlist, N, &apstats); 553 598 catalog[Nc].secfilt[Nsecfilt*j+Nsec].Map = apstats.mean; 599 600 liststats (kronlist, dkronlist, wlist, N, &kronstats); 601 catalog[Nc].secfilt[Nsecfilt*j+Nsec].Mkron = kronstats.mean; 602 catalog[Nc].secfilt[Nsecfilt*j+Nsec].dMkron = kronstats.error; 603 604 if (haveStack) { 605 m = (stackPrimaryMeasureMin >= 0) ? stackPrimaryMeasureMin : stackCenterMeasureMin; 606 ID = (stackPrimaryMeasureMin >= 0) ? stackPrimaryIDmin : stackCenterIDmin; 607 608 // get the zero point for the selected image 609 float zp = Mcal + Mmos + Mgrid + PhotZeroPoint (&catalog[Nc].measure[m], &catalog[Nc].average[j], &catalog[Nc].secfilt[j*Nsecfilt]); 610 611 // flux_cgs : erg sec^1 cm^-2 Hz^-1 612 // mag_inst : -2.5 log (cts/sec) 613 // mag_inst : -2.5 log (flux_inst) 614 // flux_inst = ten(-0.4*mag_inst) 615 616 // mag_AB = -2.5 log (flux_cgs) - 48.6 (~by definition) [~Vega flux in V-band] 617 // flux_cgs = ten(-0.4*(mag_AB + 48.6)) 618 619 // flux_AB : ten(-0.4*mag_AB) 620 621 // flux_cgs = ten(-0.4*48.6) * flux_AB 622 // flux_AB = ten(+0.4*48.6) * flux_cgs 623 624 // flux_Jy : flux_cgs * 10^23 625 626 // flux_AB = ten(+0.4*48.6) * ten(-23) * flux_Jy 627 628 // mag_AB = mag_inst + ZP 629 630 // flux_inst = ten(-0.4*(mag_AB - ZP)) = ten(0.4*ZP) * flux_AB 631 632 // flux_AB = flux_inst * ten(-0.4*ZP) 633 634 // flux_inst * ten(-0.4*ZP) = ten(+0.4*48.6 - 23) * flux_Jy 635 636 // flux_inst = flux_Jy * ten(0.4*ZP + 0.4*48.6 - 23) 637 // flux_inst = flux_Jy * ten(0.4*ZP - 3.56) 638 // flux_Jy = flux_inst * ten(-0.4*ZP + 3.56) 639 640 // zpFactor to go from instrumental flux to Janskies 641 float zpFactor = pow(10.0, -0.4*zp + 3.56); 642 643 // need to put in AB mag factor to get to Janskies (or uJy?) 644 catalog[Nc].secfilt[Nsecfilt*j+Nsec].FluxPSF = zpFactor * catalog[Nc].measure[m].FluxPSF; 645 catalog[Nc].secfilt[Nsecfilt*j+Nsec].dFluxPSF = zpFactor * catalog[Nc].measure[m].dFluxPSF; 646 catalog[Nc].secfilt[Nsecfilt*j+Nsec].FluxKron = zpFactor * catalog[Nc].measure[m].FluxKron; 647 catalog[Nc].secfilt[Nsecfilt*j+Nsec].dFluxKron = zpFactor * catalog[Nc].measure[m].dFluxKron; 648 649 catalog[Nc].secfilt[Nsecfilt*j+Nsec].stackID = ID; 650 } 554 651 555 652 // NOTE: for 2MASS measurements, Next should be 1, as should N … … 607 704 } 608 705 } 706 if (primaryCell) free (primaryCell); 609 707 return (TRUE); 610 708 } -
trunk/Ohana/src/relphot/src/args.c
r33963 r34260 197 197 } 198 198 199 if ((N = get_argument (argc, argv, "-boundary-tree"))) { 200 remove_argument (N, &argc, argv); 201 load_tree (argv[N]); 202 remove_argument (N, &argc, argv); 203 } 204 199 205 SHOW_PARAMS = FALSE; 200 206 if ((N = get_argument (argc, argv, "-params"))) { -
trunk/Ohana/src/tools/src/ftable.c
r31160 r34260 260 260 fprintf (stderr, " -ncolumn N: print column number N\n"); 261 261 fprintf (stderr, " -list: print extension names\n"); 262 fprintf (stderr, " -layout: describe extension\n"); 262 263 exit (2); 263 264 } -
trunk/Ohana/src/tools/src/glockfile.c
r31850 r34260 5 5 char *filename; 6 6 double timeout; 7 int holdtime, state, type;7 int N, holdtime, state, type; 8 8 FILE *f; 9 10 timeout = 30.0; 11 if ((N = get_argument (argc, argv, "-timeout"))) { 12 remove_argument (N, &argc, argv); 13 timeout = atof (argv[N]); 14 remove_argument (N, &argc, argv); 15 } 9 16 10 17 if (argc != 4) { … … 14 21 15 22 filename = argv[1]; 16 timeout = 30.0;17 18 23 holdtime = atoi (argv[3]); 19 24
Note:
See TracChangeset
for help on using the changeset viewer.
