/usr/include/astrometry/matchobj.h is in libastrometry-dev 0.73+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | /*
# This file is part of the Astrometry.net suite.
# Licensed under a 3-clause BSD style license - see LICENSE
*/
#ifndef MATCHOBJ_H
#define MATCHOBJ_H
#include <stdint.h>
#include "astrometry/starutil.h"
#include "astrometry/sip.h"
#include "astrometry/bl.h"
#include "astrometry/index.h"
#include "astrometry/an-bool.h"
struct match_struct {
unsigned int quadno;
unsigned int star[DQMAX];
unsigned int field[DQMAX];
uint64_t ids[DQMAX];
// actually code error ^2.
float code_err;
// Pixel positions of the quad stars.
double quadpix[2 * DQMAX];
// Star positions of the quad stars.
double quadxyz[3 * DQMAX];
uint8_t dimquads;
// the center of the field in xyz coords
double center[3];
// radius of the bounding circle, in distance on the unit sphere.
double radius;
// radius of the bounding circle in degrees
double radius_deg;
// WCS params
anbool wcs_valid;
tan_t wcstan;
// arcseconds per pixel; computed: scale=3600*sqrt(abs(det(wcstan.cd)))
double scale;
// How many quads were matched to this single quad (not a running total)
// (only counts a single ABCD permutation)
int16_t quad_npeers;
int nmatch;
int ndistractor;
int nconflict;
int nfield;
int nindex;
// nbest = besti+1 = nmatch + ndistractor + nconflict <= nfield
int nbest;
float logodds;
float worstlogodds;
// how many other matches agreed with this one *at the time it was found*
int16_t nagree;
int fieldnum;
int fieldfile;
int16_t indexid;
int16_t healpix;
int16_t hpnside;
char fieldname[32];
anbool parity;
// how many field quads did we try before finding this one?
int quads_tried;
// how many matching quads from the index did we find before this one?
int quads_matched;
// how many matching quads had the right scale?
int quads_scaleok;
// how many field objects did we have to look at?
// (this isn't stored in the matchfile, it's max(field))
int objs_tried;
// how many matches have we run verification on?
int nverified;
// how many seconds of CPU time have we spent on this field?
float timeused;
// stuff used by blind...
// tweaked-up WCS.
sip_t* sip;
// RA,Dec of reference stars; length is "nindex".
double* refradec;
// for correspondence file we need a copy of the field! (star x,y positions)
double* fieldxy;
bl* tagalong;
bl* field_tagalong;
// in arcsec.
double index_jitter;
index_t* index;
// from verify.c: correspondences between index and image stars.
// length of this array is "nfield".
// Element i corresponds to field star 'i'; theta[i] is the reference star
// that matched, as an index in the "refxyz", "refxy", and "refstarid" arrays;
// OR one of the (negative) special values THETA_DISTRACTOR, THETA_CONFLICT, THETA_FILTERED.
int* theta;
// log-odds that the matches in 'theta' are correct;
// this array is parallel to 'theta' so has length "nfield".
// Star that were unmatched (THETA_DISTRACTOR, etc) have -inf;
// Stars that are part of the matched quad have +inf.
// Normal matches contain log-odds of the match: log(p(fg)/p(bg));
// see verify.h : verify_logodds_to_weight(x) to convert to a weight
// that is 0 for definitely not-a-match and 1 for definitely a match.
double* matchodds;
// the order in which test stars were tried during verification
int* testperm;
// the stuff we discover about the reference stars during verify().
// These arrays have length "nindex"; they include all reference
// stars that should appear in the image.
// refxyz[i*3] -- x,y,z unit sphere position of this star; xyz2radec
double* refxyz;
// refxy[i*2] -- pixel x,y position (according to the *un-tweaked* WCS)
double* refxy;
// refstarid[i] -- index in the star kdtree (ie, can be used with startree_get_data_column as 'indices')
int* refstarid;
};
typedef struct match_struct MatchObj;
void matchobj_compute_overlap(MatchObj* mo);
// compute all derived fields.
void matchobj_compute_derived(MatchObj* mo);
// Returns the name of the index that produced this match.
const char* matchobj_get_index_name(MatchObj* mo);
void matchobj_log_hit_miss(int* theta, int* testperm, int nbest, int nfield, int loglevel, const char* prefix);
char* matchobj_hit_miss_string(int* theta, int* testperm, int nbest,
int nfield, char* target);
void matchobj_print(MatchObj* mo, int loglvl);
#endif
|