IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35288


Ignore:
Timestamp:
Mar 10, 2013, 5:59:33 PM (13 years ago)
Author:
eugene
Message:

relastro hpm basically works, but selection needs to be refined

Location:
branches/eam_branches/ipp-20130307/Ohana/src/relastro/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20130307/Ohana/src/relastro/src/UpdateObjects.c

    r34749 r35288  
    385385  }
    386386
    387   fprintf (stderr, "fitted "OFF_T_FMT" objects ("OFF_T_FMT" ave, "OFF_T_FMT" pm, "OFF_T_FMT" par), skipped "OFF_T_FMT"\n",  (NaveSum + NpmSum + NparSum),  NaveSum,  NpmSum,  NparSum,  NskipSum);
     387  if (VERBOSE) fprintf (stderr, "fitted "OFF_T_FMT" objects ("OFF_T_FMT" ave, "OFF_T_FMT" pm, "OFF_T_FMT" par), skipped "OFF_T_FMT"\n",  (NaveSum + NpmSum + NparSum),  NaveSum,  NpmSum,  NparSum,  NskipSum);
    388388  return (TRUE);
    389389}
  • branches/eam_branches/ipp-20130307/Ohana/src/relastro/src/args.c

    r35287 r35288  
    8989  if ((N = get_argument (argc, argv, "-high-speed"))) {
    9090    // XXX include a parallax / no-parallax option
    91     if (N >= argc - 5) usage();
     91    if (N >= argc - 4) usage();
    9292    FIT_TARGET = TARGET_HIGH_SPEED;
    9393    remove_argument (N, &argc, argv);
     
    103103
    104104  if ((N = get_argument (argc, argv, "-hpm"))) {
    105     if (N >= argc - 3) usage();
     105    if (N >= argc - 2) usage();
    106106    FIT_TARGET = TARGET_HPM;
    107107    remove_argument (N, &argc, argv);
  • branches/eam_branches/ipp-20130307/Ohana/src/relastro/src/hpm_objects.c

    r35287 r35288  
    22# define MAX_TRANGE 180.0
    33# define MIN_PS1_DET 3
    4 # define MAX_CHISQ_PM 10.0
    5 # define MIN_NPOS_FRAC 0.8
     4# define MAX_CHISQ_PM 1000000.0
     5# define MIN_NPOS_FRAC 1.0
    66
    77# define NEXT_I { if (Ngroup < 2) slowMoving[ni] = TRUE; newI = TRUE; i++; continue; }
     
    5656  dvo_catalog_init (&testcat, TRUE);
    5757  testcat.Naverage = 1; // this is fixed -- only one obj in testcat
     58  testcat.Nsecfilt = Nsecfilt;
    5859  off_t NMEASURE_TESTCAT = 1000;
    59   REALLOCATE (catalogOut.average, Average, 1);
    60   REALLOCATE (catalogOut.measure, Measure, NMEASURE_TESTCAT);
    61   REALLOCATE (catalogOut.secfilt, SecFilt, Nsecfilt);
     60  ALLOCATE (testcat.average, Average, 1);
     61  ALLOCATE (testcat.measure, Measure, NMEASURE_TESTCAT);
     62  ALLOCATE (testcat.secfilt, SecFilt, Nsecfilt);
    6263
    6364  // mask with which to mark objects to be ignored
     
    6566  memset (slowMoving, 0, catalog[0].Naverage*sizeof(int));
    6667  off_t Nslow = 0;
     68
     69  time_t T2000 = ohana_date_to_sec ("2000/01/01");
    6770
    6871  // mark (exclude) objects which do not meet the selection criterion
     
    7679    }
    7780
    78     // selection criteria : (Nps1 > 2) && (Trange < 180)
    79     if (catalog[0].average[i].Trange > MAX_TRANGE) {
    80       slowMoving[i] = TRUE;
    81       Nslow ++;
    82       continue;
    83     }
    8481    // count the PS1 detections via explicit photcode ranges?
    8582    // XXX this is a total hard-wired hack...
    8683    int Nps1 = 0;
    87     for (j = 0; i < 5; j++) {
    88       Nps1 += catalog[0].secfilt[Nsecfilt*i+j].Ncode;
     84    double Tmin = +100.0*365.0;  // +/- 100 years
     85    double Tmax = -100.0*365.0; 
     86    m = catalog[0].average[i].measureOffset;
     87    for (j = 0; j < catalog[0].average[i].Nmeasure; j++) {
     88      if (catalog[0].measure[m+j].photcode < 10000) continue;
     89      if (catalog[0].measure[m+j].photcode > 10600) continue;
     90      double To = (catalog[0].measure[m+j].t - T2000) / 86400.0 ; // time in days relative to J2000 in years
     91      Tmin = MIN(Tmin, To);
     92      Tmax = MAX(Tmax, To);
     93      Nps1 ++;
    8994    }
    9095    if (Nps1 < MIN_PS1_DET) {
     
    9398      continue;
    9499    }     
     100    // selection criteria : (Nps1 > 2) && (Trange < 180)
     101    double Trange = Tmax - Tmin;
     102    if (Trange > MAX_TRANGE) {
     103      slowMoving[i] = TRUE;
     104      Nslow ++;
     105      continue;
     106    }
    95107  }
    96108
    97109  fprintf (stderr, OFF_T_FMT" slow, "OFF_T_FMT" total objects; "OFF_T_FMT" possible fast\n",  Nslow,  catalog[0].Naverage,  catalog[0].Naverage - Nslow);
     110  if (catalog[0].Naverage == Nslow) {
     111    fprintf (stderr, "no possible fast objects, skipping this catalog\n");
     112    dvo_catalog_save (&catalogOut, VERBOSE2);
     113    dvo_catalog_unlock (&catalogOut);
     114    dvo_catalog_free (&catalogOut);
     115    free (slowMoving);
     116    return TRUE;
     117  }
    98118   
    99119  // double loop over unmarked objects (sorted in RA / X)
     
    229249    }
    230250    testcat.average[0].Nmeasure = Nmatchmeas;
     251    testcat.Nmeasure = Nmatchmeas;
     252    populate_tiny_values (&testcat, DVO_TV_MEASURE);
    231253
    232254    // we have now accumulated the measurements for this group, let's try a fit
     
    240262    good |= (testcat.average[0].ChiSqPM < MAX_CHISQ_PM);
    241263    good |= (testcat.average[0].Npos > MIN_NPOS_FRAC * testcat.average[0].Nmeasure);
     264    good &= ((testcat.average[0].flags & ID_STAR_FIT_PM) > 0);
    242265
    243266    if (good) {
Note: See TracChangeset for help on using the changeset viewer.