IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 11, 2009, 1:57:01 PM (17 years ago)
Author:
bills
Message:

Several changes to support managing PSPS object and detction ids.

  1. Support for 64 bit columns in fits tables. "K"
  2. if TSCAL == 1 and TZERO == 0 omit those keywords from the tables
  3. compute psps object and detection ids
Location:
trunk/Ohana/src/addstar
Files:
7 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/addstar/Makefile

    r26280 r26384  
    8181$(SRC)/ReadImageHeader.$(ARCH).o \
    8282$(SRC)/UpdateImageIDs.$(ARCH).o \
    83 $(SRC)/update_coords.$(ARCH).o
     83$(SRC)/update_coords.$(ARCH).o \
     84$(SRC)/psps_ids.$(ARCH).o
    8485
    8586ADDSTARD = \
    … …  
    118119$(SRC)/opening_angle.$(ARCH).o \
    119120$(SRC)/replace_match.$(ARCH).o \
    120 $(SRC)/update_coords.$(ARCH).o
     121$(SRC)/update_coords.$(ARCH).o \
     122$(SRC)/psps_ids.$(ARCH).o
    121123
    122124ADDSTART = \
    … …  
    157159$(SRC)/NewImage_Thread.$(ARCH).o \
    158160$(SRC)/NewReflist_Thread.$(ARCH).o \
    159 $(SRC)/NewRefcat_Thread.$(ARCH).o
     161$(SRC)/NewRefcat_Thread.$(ARCH).o \
     162$(SRC)/psps_ids.$(ARCH).o
    160163
    161164ADDSTARC = \
    … …  
    206209$(SRC)/ConfigInit.$(ARCH).o \
    207210$(SRC)/Shutdown.$(ARCH).o \
    208 $(SRC)/SetSignals.$(ARCH).o
     211$(SRC)/SetSignals.$(ARCH).o \
     212$(SRC)/psps_ids.$(ARCH).o
    209213
    210214SEDSTAR = \
  • trunk/Ohana/src/addstar/include/addstar.h

    r26286 r26384  
    289289PhotCode *pmm_get_photcode (char *emulsion, char *filter);
    290290
     291#define PSPS_ID TRUE
     292uint64_t CreatePSPSDetectionID(double tobs, int ccdid, int detID);
     293uint64_t CreatePSPSObjectID(double ra, double dec);
     294
    291295// this is a gnu extension?? caution!
    292296void *memrchr(const void *s, int c, size_t n);
  • trunk/Ohana/src/addstar/src/FilterStars.c

    r26338 r26384  
    8888    }
    8989
    90 # if (0)
    9190    if (PSPS_ID) {
    9291      double mjd;
    9392      mjd = ohana_sec_to_mjd (image[0].tzero);
    94       // XXX this is clearly wrong : what does PSPS want?
    95       stars[N].measure.extID = PSPS_create_detectid (mjd, imageID);
     93      stars[N].measure.extID = CreatePSPSDetectionID(mjd, image[0].ccdnum, stars[N].measure.detID);
     94    } else {
     95      stars[N].measure.extID = 0;
    9696    }
    97 # endif
    9897
    99     stars[N].measure.imageID = imageID; // this value is update in UpdateImageIDs
     98    stars[N].measure.imageID = imageID; // this value is updated in UpdateImageIDs
    10099
    101100    N ++;
  • trunk/Ohana/src/addstar/src/find_matches.c

    r26283 r26384  
    271271    catalog[0].average[Nave].catID         = catID;
    272272    catalog[0].average[Nave].flags         = 0;
     273    if (PSPS_ID) {
     274        catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R,
     275                                                            catalog[0].average[Nave].D);
     276    } else {
     277        catalog[0].average[Nave].extID         = 0;
     278    }
    273279
    274280    objID ++;
  • trunk/Ohana/src/addstar/src/find_matches_closest.c

    r26283 r26384  
    266266    catalog[0].average[Nave].catID         = catID;
    267267    catalog[0].average[Nave].flags         = 0;
     268    if (PSPS_ID) {
     269        catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R,
     270                                                            catalog[0].average[Nave].D);
     271    } else {
     272        catalog[0].average[Nave].extID         = 0;
     273    }
     274
    268275
    269276    objID ++;
  • trunk/Ohana/src/addstar/src/find_matches_closest_refstars.c

    r26283 r26384  
    291291    catalog[0].average[Nave].catID         = catID;
    292292    catalog[0].average[Nave].flags         = 0;
     293    if (PSPS_ID) {
     294        catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R,
     295                                                            catalog[0].average[Nave].D);
     296    } else {
     297        catalog[0].average[Nave].extID         = 0;
     298    }
    293299
    294300    objID ++;
  • trunk/Ohana/src/addstar/src/find_matches_refstars.c

    r26283 r26384  
    261261    catalog[0].average[Nave].catID         = catID;
    262262    catalog[0].average[Nave].flags         = 0;
     263    if (PSPS_ID) {
     264        catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R,
     265                                                            catalog[0].average[Nave].D);
     266    } else {
     267        catalog[0].average[Nave].extID         = 0;
     268    }
     269
    263270
    264271    objID ++;
  • trunk/Ohana/src/addstar/src/psps_ids.c

    • Property svn:mergeinfo set to (toggle deleted branches)
      /branches/eam_branches/20091113/Ohana/src/addstar/src/PSPS_IDs.c26119-26255
    r26370 r26384  
    11# include "addstar.h"
    22
    3 uint64_7 PSPS_create_detectID (double MJDobs, int imageID) {
     3// Compute PSPS defined IDs
    44
    5   // MJD has a PS lifetime range of : 3288 (2009/01/01) to 9132 (2025/01/01) (< 2^14)
     5uint64_t
     6CreatePSPSDetectionID(double tobs, int ccdid, int detID)
     7{
     8//    double floor();
     9    // t0 for detection id is 2007-01-01 00:00:00 utc
     10    double  t0 = 54101.0;
     11    double diff;
     12    int itmp;
     13    uint64_t detectid;
     14       
     15    diff = floor( 100000. * (tobs - t0) );
     16    itmp = diff;
     17    // ccdid must be < 100
     18    detectid = 1000000000*((uint64_t) itmp) + 10000000 * ((uint64_t) ccdid) +
     19             ((uint64_t) detID);
    620
    7   static double t0 = 51544.5; // MJD @ 2000/01/01,12:00:00
     21    return detectid;
     22}
     23   
     24uint64_t
     25CreatePSPSObjectID(double ra, double dec)
     26{
     27    uint64_t part1, part2, part3;
     28    double zid, zresid;
     29    int izone;
     30    double zh = 0.0083333;
     31   
     32    zid = (dec + 90.) / zh;             // 0 - 180*60*2 = 21600 < 15 bits
     33    izone = (int) floor(zid);
     34    zresid = zid -  ((float) izone);    // 0.0 - 1.0
    835
    9   uint64_t iTime;
    10   uint64_t detectID;
     36    part1 = (uint64_t)( izone  * 10000000000000) ;
     37    part2 = ((uint64_t)(ra * 1000000.)) * 10000 ; // 0 - 360*1e6 = 3.6e8 (< 29 bits)
     38    part3 = (int) (zresid * 10000.0) ; // 0 - 10000 (1 bit == 30/10000 arcsec (< 14 bits)
    1139
    12   iTime = floor(tobs - t0);
    13 
    14   // iTime takes the upper 16 bits, imageID can take up to lower 48 bits
    15   detectID = (iTime << 48) | imageID;
    16 
    17   return detectID;
     40    return part1 + part2 + part3;
    1841}
    19 
    20 uint64_t PSPS_create_objID (double ra, double dec) {
    21 
    22   static double zh = 0.0083333; // zone height = 30 arcsec
    23 
    24   uint64_t objID;
    25   uint64_t part1, part2, part3;
    26 
    27   double zid, zresid;
    28   int izone;
    29 
    30   zid = (dec + 90.0) / zh; // 0 - 180*60*2 = 21600 (< 15 bits)
    31   izone = (int) floor(zid);
    32   zresid = zid -  ((float) izone); // 0 - 1.0
    33   part1 = (uint64_t)( izone  * 10000000000000) ;
    34   part2 = ((uint64_t)(ra * 1 000 000.)) * 10000 ; // 0 - 360.0*1e6 = 3.6e8 (< 29 bits)
    35   part3 = (int) (zresid * 10000.0) ; // 0 - 10000 (1 bit == 30/10000 arcsec = 0.003 arcsec) (< 14 bits)
    36 
    37   objID = part1 + part2 + part3;
    38 
    39   return objID;
    40 }
    41 
    42 uint64_t PSPS_create_objID_eam (double ra, double dec) {
    43 
    44   static double zh = 0.0083333; // zone height = 30 arcsec
    45 
    46   uint64_t objID;
    47   uint64_t part1, part2, part3;
    48 
    49   double zid, zresid;
    50   int izone, ira;
    51 
    52   zid = (dec + 90.0) / zh; // 0 - 180*60*2 = 21600 (< 15 bits)
    53   izone = (int) floor(zid);
    54   zresid = zid -  ((float) izone); // 0 - 1.0
    55 
    56   ira = ra * 1 000 000; // 0 - 360.0*1e6 = 3.6e8 (< 29 bits)
    57 
    58   part1 = (izone << 48);
    59   part2 = (ira << 16);
    60   part3 = (int) (zresid * 10000.0) ; // 0 - 10000 (1 bit == 30/10000 arcsec = 0.003 arcsec) (< 14 bits)
    61 
    62   objID = part1 | part2 | part3;
    63 
    64   return objID;
    65 }
    66 
    67 // part1 : 15 bits
    68 // part2 : 29 bits
    69 // part3 : 14 bits
    70 // 15 + 14 + 29 bits = 58 bits...
    71 
Note: See TracChangeset for help on using the changeset viewer.