IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 36976


Ignore:
Timestamp:
Jul 7, 2014, 10:57:27 AM (12 years ago)
Author:
eugene
Message:

change secfilt.Xm to secfilt.Mchisq; fix zero point for AB mag / Jy conversion; a little more clarity on the rejections in bcatalog; clearly distinguish measurements from single images (eg, stacks and warps) and mosaiced chips; mosaic identification done by photcode not mosaic name; handle mixed calibration of both simple and mosaiced chips

Location:
branches/eam_branches/ipp-20140610/Ohana/src/relphot
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/include/relphot.h

    r36632 r36976  
    4848  float dMsys;
    4949  unsigned short nFitPhotom;
    50   short Xm;
     50  float Mchisq;
    5151  float secz;
    5252  float ubercalDist;
     
    119119  float M;
    120120  float dM;
    121   float Xm;
     121  float Mchisq;
    122122  int Nsec;
    123123  unsigned int objID;
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/BrightCatalog.c

    r36903 r36976  
    182182 
    183183    // need to create and assign to flat-field correction
    184     GET_COLUMN(M,     "MAG",      float);
    185     GET_COLUMN(dM,    "MAG_ERR",  float);
    186     GET_COLUMN(Xm,    "MAG_CHI",  float);
    187     GET_COLUMN(flags, "FLAGS",    int);
    188     GET_COLUMN(Ncode, "NCODE",    short);
    189     GET_COLUMN(Nused, "NUSED",    short);
    190     GET_COLUMN(Mmin,  "MAG_MIN",  float);
    191     GET_COLUMN(Mmax,  "MAG_MAX",  float);
     184    GET_COLUMN(M,      "MAG",      float);
     185    GET_COLUMN(dM,     "MAG_ERR",  float);
     186    GET_COLUMN(Mchisq, "MAG_CHI",  float);
     187    GET_COLUMN(flags,  "FLAGS",    int);
     188    GET_COLUMN(Ncode,  "NCODE",    short);
     189    GET_COLUMN(Nused,  "NUSED",    short);
     190    GET_COLUMN(Mmin,   "MAG_MIN",  float);
     191    GET_COLUMN(Mmax,   "MAG_MAX",  float);
    192192    gfits_free_header (&theader);
    193193    gfits_free_table  (&ftable);
     
    196196    ALLOCATE (secfilt, SecFilt, Nrow);
    197197    for (i = 0; i < Nrow; i++) {
    198       secfilt[i].M     = M[i];         
    199       secfilt[i].dM    = dM[i];
    200       secfilt[i].Xm    = Xm[i];
    201       secfilt[i].flags = flags[i];
    202       secfilt[i].Ncode = Ncode[i];
    203       secfilt[i].Nused = Nused[i];
    204       secfilt[i].Mmin  = Mmin[i];
    205       secfilt[i].Mmax  = Mmax[i];
     198      secfilt[i].M      = M[i];         
     199      secfilt[i].dM     = dM[i];
     200      secfilt[i].Mchisq = Mchisq[i];
     201      secfilt[i].flags  = flags[i];
     202      secfilt[i].Ncode  = Ncode[i];
     203      secfilt[i].Nused  = Nused[i];
     204      secfilt[i].Mmin   = Mmin[i];
     205      secfilt[i].Mmax   = Mmax[i];
    206206    }
    207207    fprintf (stderr, "loaded data for %lld secfilt\n", (long long) Nrow);
    208208
    209     free (M    );
    210     free (dM   );
    211     free (Xm   );
    212     free (flags);
    213     free (Ncode);
    214     free (Nused);
    215     free (Mmin );
    216     free (Mmax );
     209    free (M     );
     210    free (dM    );
     211    free (Mchisq);
     212    free (flags );
     213    free (Ncode );
     214    free (Nused );
     215    free (Mmin  );
     216    free (Mmax  );
    217217    catalog->secfilt = secfilt;
    218218    // assert Nsecfilt * Naverage = Nrow?
     
    447447    float *M        ; ALLOCATE (M      ,  float, Nsec);
    448448    float *dM       ; ALLOCATE (dM     ,  float, Nsec);
    449     float *Xm       ; ALLOCATE (Xm    ,  float, Nsec);
     449    float *Mchisq   ; ALLOCATE (Mchisq ,  float, Nsec);
    450450    int   *flags    ; ALLOCATE (flags  ,  int,   Nsec);
    451451    short *Ncode    ; ALLOCATE (Ncode  ,  short, Nsec);
     
    457457    SecFilt *secfilt = catalog->secfilt;
    458458    for (i = 0; i < Nsec; i++) {
    459       M     [i]       = secfilt[i]. M      ;
    460       dM    [i]       = secfilt[i]. dM     ;
    461       Xm    [i]       = secfilt[i]. Xm    ;
    462       flags [i]       = secfilt[i]. flags  ;
    463       Ncode [i]       = secfilt[i]. Ncode  ;
    464       Nused [i]       = secfilt[i]. Nused  ;
    465       Mmin  [i]       = secfilt[i]. Mmin   ;
    466       Mmax  [i]       = secfilt[i]. Mmax   ;
     459      M     [i]       = secfilt[i].M      ;
     460      dM    [i]       = secfilt[i].dM     ;
     461      Mchisq[i]       = secfilt[i].Mchisq ;
     462      flags [i]       = secfilt[i].flags  ;
     463      Ncode [i]       = secfilt[i].Ncode  ;
     464      Nused [i]       = secfilt[i].Nused  ;
     465      Mmin  [i]       = secfilt[i].Mmin   ;
     466      Mmax  [i]       = secfilt[i].Mmax   ;
    467467    }
    468468
    469469    // add the columns to the output array
    470     gfits_set_bintable_column (&theader, &ftable, "MAG",      M    , Nsec);
    471     gfits_set_bintable_column (&theader, &ftable, "MAG_ERR",  dM   , Nsec);
    472     gfits_set_bintable_column (&theader, &ftable, "MAG_CHI",  Xm   , Nsec);
    473     gfits_set_bintable_column (&theader, &ftable, "FLAGS",    flags, Nsec);
    474     gfits_set_bintable_column (&theader, &ftable, "NCODE",    Ncode, Nsec);
    475     gfits_set_bintable_column (&theader, &ftable, "NUSED",    Nused, Nsec);
    476     gfits_set_bintable_column (&theader, &ftable, "MAG_MIN",  Mmin , Nsec);
    477     gfits_set_bintable_column (&theader, &ftable, "MAG_MAX",  Mmax , Nsec);
     470    gfits_set_bintable_column (&theader, &ftable, "MAG",      M     , Nsec);
     471    gfits_set_bintable_column (&theader, &ftable, "MAG_ERR",  dM    , Nsec);
     472    gfits_set_bintable_column (&theader, &ftable, "MAG_CHI",  Mchisq, Nsec);
     473    gfits_set_bintable_column (&theader, &ftable, "FLAGS",    flags , Nsec);
     474    gfits_set_bintable_column (&theader, &ftable, "NCODE",    Ncode , Nsec);
     475    gfits_set_bintable_column (&theader, &ftable, "NUSED",    Nused , Nsec);
     476    gfits_set_bintable_column (&theader, &ftable, "MAG_MIN",  Mmin  , Nsec);
     477    gfits_set_bintable_column (&theader, &ftable, "MAG_MAX",  Mmax  , Nsec);
    478478
    479479    free (M      );
    480480    free (dM     );
    481     free (Xm    );
     481    free (Mchisq );
    482482    free (flags  );
    483483    free (Ncode  );
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/ImageOps.c

    r36936 r36976  
    701701  double MaxOffset, MaxScatter, MedOffset;
    702702
    703   if (FREEZE_IMAGES) return;
     703  // if (FREEZE_IMAGES) return;
    704704
    705705  if (VERBOSE) fprintf (stderr, "marking poor images\n");
     
    712712  for (i = N = 0; i < Nimage; i++) {
    713713    if (image[i].flags & IMAGE_BAD) continue;
     714
     715    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     716    if (FREEZE_IMAGES && isGPC1cam) continue;
     717
    714718    mlist[N] = image[i].Mcal;
    715719    slist[N] = image[i].dMcal;
     
    803807  Graphdata graphdata;
    804808
    805   if (FREEZE_IMAGES) return;
     809  // if (FREEZE_IMAGES) return;
    806810
    807811  ALLOCATE (xlist, double, Nimage);
     
    816820  float mindMcal    = +100.0;
    817821  float maxdMcal    = -100.0;
    818   for (i = 0; i < Nimage; i++) {
    819     Mlist[i] = image[i].Mcal;
    820     dlist[i] = image[i].dMcal;
    821     xlist[i] = image[i].secz;
     822
     823  int Nplot = 0;
     824
     825  for (i = 0; i < Nimage; i++) {
     826
     827    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     828    if (FREEZE_IMAGES && isGPC1cam) continue;
     829
     830    Mlist[Nplot] = image[i].Mcal;
     831    dlist[Nplot] = image[i].dMcal;
     832    xlist[Nplot] = image[i].secz;
    822833    minAirmass = MIN (image[i].secz, minAirmass);
    823834    maxAirmass = MAX (image[i].secz, maxAirmass);
     
    826837    mindMcal = MIN (image[i].dMcal, mindMcal);
    827838    maxdMcal = MAX (image[i].dMcal, maxdMcal);
     839   
     840    Nplot ++;
    828841  }
    829842
     
    858871  for (i = 0; i < NBIN; i++) xlist[i] = 0.00025*i;
    859872  bzero (Mlist, NBIN*sizeof(double));
    860   for (i = 0; i < Nimage; i++) {
     873
     874  for (i = 0; i < Nimage; i++) {
     875    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     876    if (FREEZE_IMAGES && isGPC1cam) continue;
    861877    bin = image[i].dMcal / 0.00025;
    862878    bin = MAX (0, MIN (NBIN - 1, bin));
     
    883899  StatType stats;
    884900  bzero (&stats, sizeof (StatType));
    885   if (FREEZE_IMAGES) return (stats);
     901
     902  // we no longer blindly apply FREEZE_IMAGES to all images, only to mosaics
     903  // if (FREEZE_IMAGES) return (stats);
    886904
    887905  ALLOCATE (list, double, Nimage);
     
    891909  for (i = 0; i < Nimage; i++) {
    892910    if (image[i].flags & IMAGE_BAD)  continue;
     911
     912    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     913    if (FREEZE_IMAGES && isGPC1cam) continue;
    893914
    894915    N = 0;
     
    926947
    927948  bzero (&stats, sizeof (StatType));
    928   if (FREEZE_IMAGES) return (stats);
     949  // if (FREEZE_IMAGES) return (stats);
    929950
    930951  ALLOCATE (list, double, Nimage);
     
    935956
    936957    if (image[i].flags & IMAGE_BAD)  continue;
     958
     959    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     960    if (FREEZE_IMAGES && isGPC1cam) continue;
    937961
    938962    list[n] = pow (10.0, 0.01*image[i].Xm);
     
    956980
    957981  bzero (&stats, sizeof (StatType));
    958   if (FREEZE_IMAGES) return (stats);
     982  // if (FREEZE_IMAGES) return (stats);
    959983
    960984  ALLOCATE (list, double, Nimage);
     
    965989
    966990    if (image[i].flags & IMAGE_BAD)  continue;
     991
     992    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     993    if (FREEZE_IMAGES && isGPC1cam) continue;
    967994
    968995    list[n] = image[i].Mcal;
     
    9861013
    9871014  bzero (&stats, sizeof (StatType));
    988   if (FREEZE_IMAGES) return (stats);
     1015  // if (FREEZE_IMAGES) return (stats);
    9891016
    9901017  ALLOCATE (list, double, Nimage);
     
    9951022
    9961023    if (image[i].flags & IMAGE_BAD)  continue;
     1024
     1025    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     1026    if (FREEZE_IMAGES && isGPC1cam) continue;
    9971027
    9981028    list[n] = image[i].dMcal;
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/MeanMagIO.c

    r36630 r36976  
    6060  GET_COLUMN (M,         "MAG",          float);
    6161  GET_COLUMN (dM,        "MAG_ERR",      float);
    62   GET_COLUMN (Xm,        "MAG_CHISQ",    float);
     62  GET_COLUMN (Mchisq,    "MAG_CHISQ",    float);
    6363  GET_COLUMN (Nsec,      "NSEC",         int);
    6464  GET_COLUMN (objID,     "OBJ_ID",       int);
     
    7373  ALLOCATE (meanmags, MeanMag, Nrow);
    7474  for (i = 0; i < Nrow; i++) {
    75     meanmags[i].M              = M    [i];
    76     meanmags[i].dM             = dM   [i];
    77     meanmags[i].Xm             = Xm  [i];
    78     meanmags[i].Nsec           = Nsec [i];
    79     meanmags[i].objID          = objID[i];
    80     meanmags[i].catID          = catID[i];
     75    meanmags[i].M              = M      [i];
     76    meanmags[i].dM             = dM     [i];
     77    meanmags[i].Mchisq         = Mchisq [i];
     78    meanmags[i].Nsec           = Nsec   [i];
     79    meanmags[i].objID          = objID  [i];
     80    meanmags[i].catID          = catID  [i];
    8181  }
    8282  fprintf (stderr, "loaded data for %lld objects (* filters)\n", (long long) Nrow);
    8383
    84   free (M    );
    85   free (dM   );
    86   free (Xm   );
    87   free (Nsec );
    88   free (objID);
    89   free (catID);
     84  free (M     );
     85  free (dM    );
     86  free (Mchisq);
     87  free (Nsec  );
     88  free (objID );
     89  free (catID );
    9090
    9191  *nmeanmags = Nrow;
     
    125125  gfits_create_table (&theader, &ftable);
    126126
    127   float *M, *dM, *Xm;
     127  float *M, *dM, *Mchisq;
    128128  int *Nsec;
    129129  unsigned int *objID, *catID;
     
    132132  ALLOCATE (M,         float,          Nmeanmags);
    133133  ALLOCATE (dM,        float,          Nmeanmags);
    134   ALLOCATE (Xm,        float,          Nmeanmags);
     134  ALLOCATE (Mchisq,    float,          Nmeanmags);
    135135  ALLOCATE (Nsec,      int,            Nmeanmags);
    136136  ALLOCATE (objID,     unsigned int,   Nmeanmags);
     
    139139  // assign the storage arrays
    140140  for (i = 0; i < Nmeanmags; i++) {
    141     M    [i]   = meanmags[i].M    ;
    142     dM   [i]   = meanmags[i].dM   ;
    143     Xm   [i]   = meanmags[i].Xm   ;
    144     Nsec [i]   = meanmags[i].Nsec ;
    145     objID[i]   = meanmags[i].objID;
    146     catID[i]   = meanmags[i].catID;
     141    M     [i]   = meanmags[i].M     ;
     142    dM    [i]   = meanmags[i].dM    ;
     143    Mchisq[i]   = meanmags[i].Mchisq;
     144    Nsec  [i]   = meanmags[i].Nsec ;
     145    objID [i]   = meanmags[i].objID ;
     146    catID [i]   = meanmags[i].catID ;
    147147  }
    148148
     
    150150  gfits_set_bintable_column (&theader, &ftable, "MAG",       M,         Nmeanmags);
    151151  gfits_set_bintable_column (&theader, &ftable, "MAG_ERR",   dM,        Nmeanmags);
    152   gfits_set_bintable_column (&theader, &ftable, "MAG_CHISQ", Xm,        Nmeanmags);
     152  gfits_set_bintable_column (&theader, &ftable, "MAG_CHISQ", Mchisq,    Nmeanmags);
    153153  gfits_set_bintable_column (&theader, &ftable, "NSEC",      Nsec,      Nmeanmags);
    154154  gfits_set_bintable_column (&theader, &ftable, "OBJ_ID",    objID,     Nmeanmags);
    155155  gfits_set_bintable_column (&theader, &ftable, "CAT_ID",    catID,     Nmeanmags);
    156156
    157   free (M    );
    158   free (dM   );
    159   free (Xm   );
    160   free (Nsec );
    161   free (objID);
    162   free (catID);
     157  free (M     );
     158  free (dM    );
     159  free (Mchisq);
     160  free (Nsec  );
     161  free (objID );
     162  free (catID );
    163163
    164164  FILE *f = fopen (filename, "w");
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/MosaicOps.c

    r36910 r36976  
    9696   
    9797    /* a new mosaic, define ranges -- preserve the original values incase this image is not used */
    98     mosaic[Nmosaic].start = start;
    99     mosaic[Nmosaic].stop  = stop;
    100     mosaic[Nmosaic].Mcal  = 0.0; // note : mosaic stores only offsets relative to the original image values
    101     mosaic[Nmosaic].dMcal = 0.0; // note : at the end, mosaic.Mcal is added back to the input images
    102     mosaic[Nmosaic].dMsys = 0.0;
    103     mosaic[Nmosaic].Xm    = 0.0;
     98    mosaic[Nmosaic].start  = start;
     99    mosaic[Nmosaic].stop   = stop;
     100    mosaic[Nmosaic].Mcal   = 0.0; // note : mosaic stores only offsets relative to the original image values
     101    mosaic[Nmosaic].dMcal  = 0.0; // note : at the end, mosaic.Mcal is added back to the input images
     102    mosaic[Nmosaic].dMsys  = 0.0;
     103    mosaic[Nmosaic].Mchisq = 0.0;
    104104    mosaic[Nmosaic].flags  = image[i].flags;
    105     mosaic[Nmosaic].secz  = image[i].secz;
     105    mosaic[Nmosaic].secz   = image[i].secz;
    106106    mosaic[Nmosaic].photcode = GetPhotcodeEquivCodebyCode (image[i].photcode);
    107107
     
    172172  // generate a list of all subset image start times
    173173  ALLOCATE (startTimes, unsigned int, Nsubset);
     174  int Nmoschip = 0;
    174175  for (i = 0; i < Nsubset; i++) {
    175     startTimes[i] = subset[i].tzero;
    176   }
    177   sort_times (startTimes, Nsubset);
     176    int isGPC1cam = ((subset[i].photcode >= 10000) && (subset[i].photcode <= 10500));
     177    if (!isGPC1cam) {
     178      continue;
     179    }
     180    startTimes[Nmoschip] = subset[i].tzero;
     181    Nmoschip ++;
     182  }
     183  sort_times (startTimes, Nmoschip);
    178184  MARKTIME("create array of all image obstimes: %f sec\n", dtime);
    179185 
     
    184190
    185191  // generate a list of the unique start times (these define the mosaics)
    186   for (i = 0; i < Nsubset; i++) {
     192  for (i = 0; i < Nmoschip; i++) {
    187193    if (startTimes[i] < startTimesMosaic[Nmosaic]) {
    188194      fprintf (stderr, "error?\n");
     
    210216  for (i = 0; i < Nmosaic; i++) {
    211217    /* a new mosaic, define ranges */
    212     mosaic[i].start = startTimesMosaic[i];
    213     mosaic[i].stop  = 0;
    214     mosaic[i].Mcal  = 0.0;
    215     mosaic[i].dMcal = 0.0;
    216     mosaic[i].dMsys = 0.0;
    217     mosaic[i].Xm    = 0.0;
    218     mosaic[i].flags = 0;
    219     mosaic[i].secz  = NAN;
     218    mosaic[i].start    = startTimesMosaic[i];
     219    mosaic[i].stop     = 0;
     220    mosaic[i].Mcal     = 0.0;
     221    mosaic[i].dMcal    = 0.0;
     222    mosaic[i].dMsys    = 0.0;
     223    mosaic[i].Mchisq   = 0.0;
     224    mosaic[i].flags    = 0;
     225    mosaic[i].secz     = NAN;
    220226    mosaic[i].photcode = 0;
    221     mosaic[i].skipCal = FALSE;
     227    mosaic[i].skipCal  = FALSE;
    222228   
    223229    memset (&mosaic[i].coords, 0, sizeof(Coords));
     
    238244    }
    239245   
    240     /* select valid mosaic images by photcode */
    241     pname = GetPhotcodeNamebyCode (image[i].photcode);
    242     if (!pname) continue;
    243     status = strncmp (pname, MOSAICNAME, strlen (MOSAICNAME));
    244     if (status) continue;
     246    // this is gpc1-specific.  needs a more general solution
     247    int isGPC1cam = ((image[i].photcode >= 10000) && (image[i].photcode <= 10500));
     248    if (!isGPC1cam) {
     249      continue;
     250    }
     251
     252    if (0) {
     253      // XXX this version fails if we have stack and fforce data: GPC1.g.SkyChip
     254      /* select valid mosaic images by photcode */
     255      pname = GetPhotcodeNamebyCode (image[i].photcode);
     256      if (!pname) continue;
     257      status = strncmp (pname, MOSAICNAME, strlen (MOSAICNAME));
     258      if (status) continue;
     259    }
    245260
    246261    /* set image time range */
     
    262277
    263278  // assign each image to a mosaic
     279  int Nsimple = 0;
    264280  for (i = 0; i < Nsubset; i++) {
    265281    ImageToMosaic[i] = -1;
    266282
    267     /* select valid mosaic images by photcode */
    268     pname = GetPhotcodeNamebyCode (subset[i].photcode);
    269     status = strncmp (pname, MOSAICNAME, strlen (MOSAICNAME));
    270     if (status) continue;
     283    // this is gpc1-specific.  needs a more general solution
     284    int isGPC1cam = ((subset[i].photcode >= 10000) && (subset[i].photcode <= 10500));
     285    if (!isGPC1cam) {
     286      Nsimple ++;
     287      continue;
     288    }
     289
     290    if (0) {
     291      // XXX this version fails if we have stack and fforce data: GPC1.g.SkyChip
     292      /* select valid mosaic images by photcode */
     293      pname = GetPhotcodeNamebyCode (subset[i].photcode);
     294      status = strncmp (pname, MOSAICNAME, strlen (MOSAICNAME));
     295      if (status) continue;
     296    }
    271297
    272298    start = subset[i].tzero;
     
    302328    mosaic[j].Mcal  = 0.0;
    303329    mosaic[j].dMcal = 0.0;
    304     mosaic[j].Xm    = 0.0;
     330    mosaic[j].Mchisq = 0.0;
    305331    mosaic[j].dMsys = subset[i].flags;
    306332    mosaic[j].flags = subset[i].flags;
     
    316342  initMosaicGrid (subset, Nsubset);
    317343
    318   fprintf (stderr, "matched %d images to %d mosaics\n", (int) Nsubset, (int) Nmosaic);
     344  fprintf (stderr, "matched %d images to %d mosaics, %d simple chips not matched to mosaics\n", (int) (Nsubset - Nsimple), (int) Nmosaic, (int) Nsimple);
    319345  return;
    320346}
     
    384410    mosaic[i].dMcal = 0.0;
    385411    mosaic[i].dMsys = 0.0;
    386     mosaic[i].Xm    = 0.0;
     412    mosaic[i].Mchisq    = 0.0;
    387413    mosaic[i].flags = 0;
    388414    mosaic[i].secz  = NAN;
     
    443469    mosaic[j].Mcal  = 0.0;
    444470    mosaic[j].dMcal = 0.0;
    445     mosaic[j].Xm    = 0.0;
     471    mosaic[j].Mchisq    = 0.0;
    446472    mosaic[j].dMsys = image[i].flags;
    447473    mosaic[j].flags = image[i].flags;
     
    566592      Mcal  += image[m].Mcal;
    567593      dMcal += image[m].dMcal;
    568       Xm    += image[m].Xm;
     594      Xm    += image[m].Mchisq;
    569595
    570596      // for ubercal images, we (elsewhere) keep Mcal frozen
     
    573599      image[m].Mcal  = 0.0;
    574600      image[m].dMcal = NAN;
    575       image[m].Xm    = NAN_S_SHORT;
     601      image[m].Mchisq    = NAN_S_SHORT;
    576602    }
    577603
     
    617643    mosaic[i].coords.pc2_1  = 0.0;
    618644
    619     mosaic[i].Mcal  = Mcal / MosaicN_Image[i];
    620     mosaic[i].dMcal = dMcal / MosaicN_Image[i];
    621     mosaic[i].Xm    = Xm / MosaicN_Image[i];
     645    mosaic[i].Mcal   = Mcal / MosaicN_Image[i];
     646    mosaic[i].dMcal  = dMcal / MosaicN_Image[i];
     647    mosaic[i].Mchisq = Xm / MosaicN_Image[i];
    622648  }
    623649  return;
     
    669695      Mcal  += image[m].Mcal;
    670696      dMcal += image[m].dMcal;
    671       Xm    += image[m].Xm;
     697      Xm    += image[m].Mchisq;
    672698
    673699      // XXX: how does this work with UBERCAL?  We want to keep the Mcal values supplied by ubercal, but
     
    679705
    680706      /* we are using mosaic.Mcal, not image.Mcal. reset image.Mcal */
    681       image[m].Mcal  = 0.0;
    682       image[m].dMcal = NAN;
    683       image[m].Xm    = NAN_S_SHORT;
     707      image[m].Mcal   = 0.0;
     708      image[m].dMcal  = NAN;
     709      image[m].Mchiqs = NAN;
    684710    }
    685711    dS /= MosaicN_Image[i];
     
    697723    RD_to_XY (&dX, &dY, Rmax, Dmax, &mosaic[i].coords);
    698724
    699     mosaic[i].Mcal  = Mcal / MosaicN_Image[i];
    700     mosaic[i].dMcal = dMcal / MosaicN_Image[i];
    701     mosaic[i].Xm    = Xm / MosaicN_Image[i];
     725    mosaic[i].Mcal   = Mcal / MosaicN_Image[i];
     726    mosaic[i].dMcal  = dMcal / MosaicN_Image[i];
     727    mosaic[i].Mchisq = Xm / MosaicN_Image[i];
    702728  }
    703729  if (!USE_GRID) return;
     
    729755      image[im].Mcal += mosaic[i].Mcal;
    730756      image[im].dMcal = mosaic[i].dMcal;
    731       image[im].Xm = mosaic[i].Xm;
     757      image[im].Mchisq = mosaic[i].Mchisq;
    732758      image[im].dMagSys = mosaic[i].dMsys;
    733759      image[im].nFitPhotom = mosaic[i].nFitPhotom;
     
    840866  mosID = ImageToMosaic[idx];
    841867  if (mosID < 0) {
    842     Image *image = getimage(idx);
    843     fprintf (stderr, "unmatched image %s\n", image[0].name);
     868    // Image *image = getimage(idx);
     869    // fprintf (stderr, "unmatched image %s\n", image[0].name);
     870    // skip measurements from simple chips (not matched to a mosaic by definition)
    844871    return;
    845872  }
     
    882909  if (!MOSAIC_ZEROPT) return (0);
    883910
     911  // unassigned measurements belong to simple chips
    884912  i = MeasureToMosaic[cat][meas];
    885   if (i == -1) return (NAN);
     913  if (i == -1) return (0.0);
    886914
    887915  if (mosaic[i].flags & IMAGE_BAD) return (NAN); 
     
    12191247  myMosaic[0].dMcal = stats.error;
    12201248  myMosaic[0].nFitPhotom = N;
    1221   myMosaic[0].Xm    = 100.0*log10(stats.chisq);
     1249  myMosaic[0].Mchisq    = stats.chisq;
    12221250
    12231251  if (testImage) {
     
    12391267
    12401268  if (testImage) {
    1241     fprintf (stderr, "%f %f  :  %d %f\n", myMosaic[0].Mcal, myMosaic[0].dMsys, myMosaic[0].Xm, pow(10.0, 0.01*myMosaic[0].Xm));
     1269    fprintf (stderr, "%f %f  :  %f\n", myMosaic[0].Mcal, myMosaic[0].dMsys, myMosaic[0].Mchisq);
    12421270  }
    12431271
     
    16991727    if (mosaic[i].flags & IMAGE_BAD) continue;
    17001728    if (mosaic[i].skipCal) continue;
    1701     list[n] = pow(10.0, 0.01*mosaic[i].Xm);
     1729    list[n] = mosaic[i].Mchisq;
    17021730    dlist[n] = 1;
    17031731    n++;
     
    17841812  off_t i, j, m, c, N, Nimage;
    17851813  double *xlist, *ylist;
    1786   // double Xmin, Xmax, Ymin, Ymax;
    17871814  char string[64];
    17881815  Graphdata graphdata;
     
    18031830  for (i = 0; i < Nmosaic; i++) {
    18041831    N = 0;
    1805     // Xmin = Ymin = +360.0;
    1806     // Xmax = Ymax = -360.0;
    18071832    for (j = 0; j < N_onMosaic[i]; j++) {
    18081833     
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/StarOps.c

    r36917 r36976  
    153153  int i;
    154154
    155   fprintf (stderr, "this version of setMrel is invalid for now\n");
    156   exit (1);
     155  // fprintf (stderr, "this version of setMrel is invalid for now\n");
     156  // exit (1);
    157157       
    158158  int Nsecfilt = GetPhotcodeNsecfilt ();
     
    673673      liststats (list, dlist, wlist, N, &stats);
    674674
    675       catalog[Nc].secfilt[Nsecfilt*j+Nsec].M  = stats.mean;
    676       catalog[Nc].secfilt[Nsecfilt*j+Nsec].dM = stats.error;
    677       catalog[Nc].secfilt[Nsecfilt*j+Nsec].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq + 1e-4) : NAN_S_SHORT;
     675      catalog[Nc].secfilt[Nsecfilt*j+Nsec].M      = stats.mean;
     676      catalog[Nc].secfilt[Nsecfilt*j+Nsec].dM     = stats.error;
     677      catalog[Nc].secfilt[Nsecfilt*j+Nsec].Mchisq = (stats.Nmeas > 1) ? stats.chisq : NAN;
    678678
    679679      // when running -averages, we have no information about the images, so we cannot set this
     
    953953
    954954  int i, j, Ndel, Nave, Ntot, mark, Ns, Nscat, Nchi, Nnan;
    955   float dM, Xm;
     955  float dM;
    956956  double Chisq, MaxScatter, MaxChisq;
    957957  double *xlist, *slist, *dlist;
     
    981981      for (j = 0; j < catalog[i].Naverage; j++) {
    982982        if ( catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD ) continue;
    983         Xm = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm;
    984         if (Xm == -1) continue;
    985         Chisq = pow (10.0, 0.01*Xm);
    986         xlist[Ntot] = Chisq;
     983        Mchisq = catalog[i].secfilt[Nsecfilt*j+Nsec].Mchisq;
     984        xlist[Ntot] = Mchisq;
    987985        slist[Ntot] = catalog[i].secfilt[Nsecfilt*j+Nsec].dM;
    988986        dlist[Ntot] = 1;
     
    10021000      for (j = 0; j < catalog[i].Naverage; j++) {
    10031001        dM = catalog[i].secfilt[Nsecfilt*j+Nsec].dM;
    1004         Xm = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm;
    1005         Chisq = pow (10.0, 0.01*Xm);
    1006         mark = (dM > MaxScatter) || (Xm == NAN_S_SHORT) || (Chisq > MaxChisq);
     1002        Mchisq = catalog[i].secfilt[Nsecfilt*j+Nsec].Mchisq;
     1003        mark = (dM > MaxScatter) || (isnan(Mchisq) || (Mchisq > MaxChisq);
    10071004        if (mark) {
    10081005          catalog[i].secfilt[Nsecfilt*j+Nsec].flags |= ID_STAR_POOR;
    10091006          Ndel ++;
    1010           if (dM > MaxScatter) { Nscat ++; }
    1011           if (Xm == NAN_S_SHORT) { Nnan ++; }
    1012           if (Chisq > MaxChisq) { Nchi ++; }
     1007          if (dM > MaxScatter)   { Nscat ++; }
     1008          if (isnan(Mchisq))    { Nnan ++; }
     1009          if (Mchisq > MaxChisq) { Nchi ++; }
    10131010        } else {
    10141011          catalog[i].secfilt[Nsecfilt*j+Nsec].flags &= ~ID_STAR_POOR;
     
    12361233
    12371234  off_t j, Ntot;
    1238   int i, n, Xm;
     1235  int i, n;
    12391236  double *list, *dlist;
    12401237  StatType stats;
     
    12571254      if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 
    12581255       
    1259       Xm = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm;
    1260       if (Xm == NAN_S_SHORT) continue;
    1261       list[n] = pow (10.0, 0.01*Xm);
     1256      Mchisq = catalog[i].secfilt[Nsecfilt*j+Nsec].Mchisq;
     1257      if (isnan(Mchisq)) continue;
     1258      list[n] = Mchisq;
    12621259      dlist[n] = 1;
    12631260      n++;
     
    13801377        if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue;
    13811378        xlist[N] = catalog[i].secfilt[Nsecfilt*j+Nsec].M;
    1382         value    = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm;
    1383         if (value == NAN_S_SHORT) continue;
    1384         ylist[N] = 0.01*value;
     1379        value    = catalog[i].secfilt[Nsecfilt*j+Nsec].Mchisq;
     1380        if (isnan(value)) continue;
     1381        ylist[N] = value;
    13851382        N++;
    13861383      }
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/args.c

    r36630 r36976  
    227227  }
    228228
    229   SHOW_PARAMS = FALSE;
     229  SHOW_PARAMS = TRUE;
    230230  if ((N = get_argument (argc, argv, "-params"))) {
    231231    remove_argument (N, &argc, argv);
    232     SHOW_PARAMS = TRUE;
     232    SHOW_PARAMS = FALSE;
    233233  }
    234234
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/assign_images.c

    r36630 r36976  
    2727    makeMosaics (image, Nimage);
    2828
    29     // center coords and Mcal, dMcal, Xm for the mosaics
     29    // center coords and Mcal, dMcal, Mchisq for the mosaics
    3030    setMosaicCenters (image, Nimage);
    3131    MARKTIME("set mosaic coordinates and Mcal values: %f sec\n", dtime);
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/bcatalog.c

    r36910 r36976  
    2222  ALLOCATE (subcatalog[0].secfilt,  SecFilt,     NAVERAGE*Nsecfilt);
    2323  Nmeasure = Naverage = 0;
     24
     25  int NmMax = 0;
     26  int NmMin = catalog[0].Nmeasure;
    2427
    2528  Ncode = Ntime = Ndophot = Nmag = Nsigma = Nimag = Nfew = Npsfqf = Ngalaxy = Nnan = Nbad = Npoor = 0;
     
    8285        // subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].dM     = NAN;
    8386        // subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Mstdev = NAN_S_SHORT;
    84         // subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Xm    = NAN;
     87        // subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Mchisq = NAN;
    8588        // subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].M_20   = NAN_S_SHORT;
    8689        // subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].M_80   = NAN_S_SHORT;
     
    187190      }
    188191      myAssert (Nmeasure < NMEASURE, "realloc failure");
    189     }
     192    } // end of catalog.average.Nmeasure loop
    190193
    191194    // skip object if it is likely to be a galaxy
     
    212215      continue;
    213216    }
     217    NmMin = MIN (Nm, NmMin);
     218    NmMax = MAX (Nm, NmMax);
    214219
    215220    // for w-band photometry (& other cases?) convert gri photometry
     
    242247  subcatalog[0].Nsecf_mem = Naverage * catalog[0].Nsecfilt;
    243248
     249  if (VERBOSE) {
     250    fprintf (stderr, "using "OFF_T_FMT" stars ("OFF_T_FMT" measures) of "OFF_T_FMT" ("OFF_T_FMT" measures) for catalog %s, %d < Nm < %d\n",
     251             subcatalog[0].Naverage,  subcatalog[0].Nmeasure,  catalog[0].Naverage, catalog[0].Nmeasure, catalog[0].filename, NmMin, NmMax);
     252    fprintf (stderr, "rejections: %d stars have too few measures:\n   %d code, %d time, %d dophot, %d mag, %d sigma, %d imag, %d psfqf, %d Nnan, %d galaxies, %d bad, %d poor\n",
     253             Nfew, Ncode, Ntime, Ndophot, Nmag, Nsigma, Nimag, Npsfqf, Nnan, Ngalaxy, Nbad, Npoor);
     254  }
     255
    244256  // limit the total number of stars in the catalog
    245257  if (MaxDensityUse) {
     
    247259  }
    248260
    249   if (VERBOSE) {
    250     fprintf (stderr, "using "OFF_T_FMT" stars ("OFF_T_FMT" measures) of "OFF_T_FMT" for catalog %s\n",
    251              subcatalog[0].Naverage,  subcatalog[0].Nmeasure,  i, catalog[0].filename);
    252     fprintf (stderr, "rejections: %d code, %d time, %d dophot, %d mag, %d sigma, %d imag, %d few, %d psfqf, %d Nnan, %d galaxies, %d bad, %d poor\n",
    253              Ncode, Ntime, Ndophot, Nmag, Nsigma, Nimag, Nfew, Npsfqf, Nnan, Ngalaxy, Nbad, Npoor);
    254   }
    255261  return (TRUE);
    256262}
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/initialize.c

    r36630 r36976  
    3636
    3737  if (SHOW_PARAMS) {
    38     fprintf (stderr, "current parameter settings:\n");
     38    int Ns;
     39    fprintf (stderr, "subset selection criteria:\n");
     40    fprintf (stderr, "  photcodes ");
     41    for (Ns = 0; Ns < Nphotcodes; Ns++) {
     42      if (Ns == Nphotcodes - 1) {
     43        fprintf (stderr, "%s\n", photcodes[Ns][0].name);
     44      } else {
     45        fprintf (stderr, "%s, ", photcodes[Ns][0].name);
     46      }
     47    }
    3948    if (TimeSelect) {
    4049      fprintf (stderr, "TimeSelect: TRUE (%s - %s)\n", ohana_sec_to_date (TSTART), ohana_sec_to_date (TSTOP));
     
    4251      fprintf (stderr, "TimeSelect: FALSE\n");
    4352    }
     53    if (DophotSelect) {
     54      fprintf (stderr, "DophotSelect: TRUE (%d)\n", DophotValue);
     55    } else {
     56      fprintf (stderr, "DophotSelect: FALSE\n");
     57    }
     58    fprintf (stderr, "PSF_QF limit: 0.85 (hardwired)\n");
     59
     60    // fprintf (stderr, "Photom Bad Mask: 0x%08x, Photom Poor Mask: 0x%08x\n");
     61
     62    fprintf (stderr, "MAG_LIM: %f, SIGMA_LIM: %f\n", MAG_LIM, SIGMA_LIM);
     63    fprintf (stderr, "INST_MAG_MIN: %f, INST_MAG_MAX: %f\n", ImagMin, ImagMax);
     64
     65    fprintf (stderr, "STAR_TOOFEW: %d\n", STAR_TOOFEW);
     66
    4467    fprintf (stderr, "VERBOSE: %d, PLOTSTUFF: %d\n", VERBOSE, PLOTSTUFF);
    4568    fprintf (stderr, "GRID_X: %d, GRID_Y: %d, BINNING: %d == Nmx: %d, Nmy: %d\n",
     
    4972             (int)(RELPHOT_GRID_X/RELPHOT_GRID_BINNING), (int)(RELPHOT_GRID_Y/RELPHOT_GRID_BINNING));
    5073
    51     fprintf (stderr, "MAG_LIM                %lf\n", MAG_LIM);
    5274    fprintf (stderr, "STAR_SCATTER           %lf\n", STAR_SCATTER);
    5375    fprintf (stderr, "IMAGE_SCATTER          %lf\n", IMAGE_SCATTER);
     
    5678    fprintf (stderr, "GSCFILE                %s\n",  GSCFILE);
    5779    fprintf (stderr, "CATDIR                 %s\n",  CATDIR);
    58     exit (0);
    5980  }
    6081
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelCatalog.c

    r36945 r36976  
    354354    liststats (Mpsflist, dpsflist, wpsflist, Npsf, psfstats);
    355355
    356     secfilt[Nsec].M  = psfstats->mean;
    357     secfilt[Nsec].dM = psfstats->error;
    358     secfilt[Nsec].Xm = (psfstats->Nmeas > 1) ? 100.0*log10(psfstats->chisq + 1e-4) : NAN_S_SHORT;
     356    secfilt[Nsec].M      = psfstats->mean;
     357    secfilt[Nsec].dM     = psfstats->error;
     358    secfilt[Nsec].Mchisq = (psfstats->Nmeas > 1) ? psfstats->chisq : NAN;
    359359
    360360    // when running -averages, we have no information about the images, so we cannot set this
     
    613613    secfilt[Nsec].dFapStk   = zpFactor * measure[k].dFluxAp;
    614614
    615     secfilt[Nsec].MpsfStk   = (measure[k].FluxPSF  > 0.0) ? zp -2.5*log10(measure[k].FluxPSF) : NAN;
    616     secfilt[Nsec].MkronStk  = (measure[k].FluxKron > 0.0) ? zp -2.5*log10(measure[k].FluxKron) : NAN;
    617     secfilt[Nsec].MapStk    = (measure[k].FluxAp   > 0.0) ? zp -2.5*log10(measure[k].FluxAp) : NAN;
     615    secfilt[Nsec].MpsfStk   = (measure[k].FluxPSF  > 0.0) ? 8.9 - 2.5*log10(secfilt[Nsec].FpsfStk) : NAN;
     616    secfilt[Nsec].MkronStk  = (measure[k].FluxKron > 0.0) ? 8.9 - 2.5*log10(secfilt[Nsec].FkronStk) : NAN;
     617    secfilt[Nsec].MapStk    = (measure[k].FluxAp   > 0.0) ? 8.9 - 2.5*log10(secfilt[Nsec].FapStk) : NAN;
    618618
    619619    secfilt[Nsec].stackDetectID = ID;
     
    716716        if (isnan(Mcal))  SKIP_THIS_MEAS(Ncal);
    717717      }
    718       float Fcal = MagToFlux(Mcal);
     718      float Fcal = MagToFlux(-Mcal);
    719719
    720720      // in the calculations below,
     
    767767    secfilt[Nsec].sFpsfWrp = psfstats->sigma; // Mstdev is in millimags (not enough space for more precision)
    768768    secfilt[Nsec].NusedWrp = psfstats->Nmeas;
    769     secfilt[Nsec].MpsfWrp  = isnan(secfilt[Nsec].FpsfWrp) ? NAN : -2.5*log(secfilt[Nsec].FpsfWrp); // XXX need to add zero-point
     769    secfilt[Nsec].MpsfWrp  = isnan(secfilt[Nsec].FpsfWrp) ? NAN : 8.9 - 2.5*log10(secfilt[Nsec].FpsfWrp); // 8.9 since flux is in Jy
    770770
    771771    // NOTE : use the modified weight for apmags as well as psf mags
     
    775775    secfilt[Nsec].sFapWrp    = Nap > 0 ? apstats->sigma : NAN;
    776776    secfilt[Nsec].NusedApWrp = Nap;
    777     secfilt[Nsec].MapWrp  = isnan(secfilt[Nsec].FapWrp) ? NAN : -2.5*log(secfilt[Nsec].FapWrp); // XXX need to add zero-point
     777    secfilt[Nsec].MapWrp  = isnan(secfilt[Nsec].FapWrp) ? NAN : 8.9 - 2.5*log10(secfilt[Nsec].FapWrp); // 8.9 since flux is in Jy
    778778
    779779    liststats (Fkronlist, dkronlist, wkronlist, Nkron, kronstats);
     
    782782    secfilt[Nsec].sFkronWrp    = Nkron > 0 ? kronstats->sigma : NAN;
    783783    secfilt[Nsec].NusedKronWrp = Nkron;
    784     secfilt[Nsec].MkronWrp  = isnan(secfilt[Nsec].FkronWrp) ? NAN : -2.5*log(secfilt[Nsec].FkronWrp); // XXX need to add zero-point
     784    secfilt[Nsec].MkronWrp  = isnan(secfilt[Nsec].FkronWrp) ? NAN : 8.9 - 2.5*log10(secfilt[Nsec].FkronWrp); // 8.9 since flux is in Jy
    785785  }
    786786  return (TRUE);
  • branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/share_mean_mags.c

    r36630 r36976  
    123123  meanmags->M  = secfilt->M;
    124124  meanmags->dM = secfilt->dM;
    125   meanmags->Xm = secfilt->Xm;
     125  meanmags->Mchisq = secfilt->Mchisq;
    126126  meanmags->Nsec = Nsec; // key to secfilt entry
    127127
Note: See TracChangeset for help on using the changeset viewer.