static codefile_t* open_for_writing(const char* fn) { codefile_t* cf; qfits_header* hdr; if (fn) cf = new_codefile(fn, TRUE, FALSE); else cf = new_codefile(fn, TRUE, TRUE); if (!cf) goto bailout; // default cf->dimcodes = 4; // add default values to header hdr = codefile_get_header(cf); fits_add_endian(hdr); qfits_header_add(hdr, "AN_FILE", "CODE", "This file lists the code for each quad.", NULL); qfits_header_add(hdr, "NCODES", "0", "", NULL); qfits_header_add(hdr, "NSTARS", "0", "", NULL); fits_header_add_int(hdr, "DIMCODES", cf->dimcodes, ""); qfits_header_add(hdr, "SCALE_U", "0.0", "", NULL); qfits_header_add(hdr, "SCALE_L", "0.0", "", NULL); qfits_header_add(hdr, "INDEXID", "0", "", NULL); qfits_header_add(hdr, "HEALPIX", "-1", "", NULL); qfits_header_add(hdr, "HPNSIDE", "1", "", NULL); fits_add_long_comment(hdr, "The first extension contains the codes " "stored as %i native-endian doubles. " "(the quad location in %i-D code space)", cf->dimcodes, cf->dimcodes); return cf; bailout: if (cf) codefile_close(cf); return NULL; }
int allquads_close(allquads_t* aq) { startree_close(aq->starkd); // fix output file headers. if (quadfile_fix_header(aq->quads) || quadfile_close(aq->quads)) { ERROR("Couldn't write quad output file"); return -1; } if (codefile_fix_header(aq->codes) || codefile_close(aq->codes)) { ERROR("Couldn't write code output file"); return -1; } return 0; }
codefile_t* codefile_open(const char* fn) { codefile_t* cf = NULL; cf = new_codefile(fn, FALSE, FALSE); if (!cf) goto bailout; if (fitsbin_read(cf->fb)) { ERROR("Failed to open codes file"); goto bailout; } cf->codearray = codes_chunk(cf)->data; return cf; bailout: if (cf) codefile_close(cf); return NULL; }
int hpquads_files(const char* skdtfn, const char* codefn, const char* quadfn, int Nside, double scale_min_arcmin, double scale_max_arcmin, int dimquads, int passes, int Nreuses, int Nloosen, int id, anbool scanoccupied, void* sort_data, int (*sort_func)(const void*, const void*), int sort_size, char** args, int argc) { quadfile_t* quads; codefile_t* codes; startree_t* starkd; int rtn; logmsg("Reading star kdtree %s ...\n", skdtfn); starkd = startree_open(skdtfn); if (!starkd) { ERROR("Failed to open star kdtree %s\n", skdtfn); return -1; } logmsg("Will write to quad file %s and code file %s\n", quadfn, codefn); quads = quadfile_open_for_writing(quadfn); if (!quads) { ERROR("Couldn't open file %s to write quads.\n", quadfn); return -1; } codes = codefile_open_for_writing(codefn); if (!codes) { ERROR("Couldn't open file %s to write codes.\n", codefn); return -1; } rtn = hpquads(starkd, codes, quads, Nside, scale_min_arcmin, scale_max_arcmin, dimquads, passes, Nreuses, Nloosen, id, scanoccupied, sort_data, sort_func, sort_size, args, argc); if (rtn) return rtn; if (quadfile_close(quads)) { ERROR("Couldn't write quad output file"); return -1; } if (codefile_close(codes)) { ERROR("Couldn't write code output file"); return -1; } startree_close(starkd); return rtn; }