IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 7, 2008, 3:31:01 PM (18 years ago)
Author:
eugene
Message:

big update from eam_branch_20081124 with updates to Opihi math

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/dvo/dbExtractAverages.c

    r17201 r20936  
    4040
    4141/* return average.field based on the selection */
    42 double dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
     42dbValue dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) {
    4343
    4444  int i, Nsec;
    45   double value;
     45  dbValue value;
    4646
    47   value = NAN;
     47  value.Flt = NAN;
     48  value.Int =   0;
    4849
    4950  /* assign vector values */
    5051  switch (field->ID) {
    5152    case AVE_RA:
    52       value = average[0].R;
     53      value.Flt = average[0].R;
    5354      break;
    5455    case AVE_DEC:
    55       value = average[0].D;
     56      value.Flt = average[0].D;
    5657      break;
    5758    case AVE_GLON:
     
    6061        haveGalactic = TRUE;
    6162      }
    62       value = GLON;
     63      value.Flt = GLON;
    6364      break;
    6465    case AVE_GLAT:
     
    6768        haveGalactic = TRUE;
    6869      }
    69       value = GLAT;
     70      value.Flt = GLAT;
    7071      break;
    7172    case AVE_ELON:
     
    7475        haveEcliptic = TRUE;
    7576      }
    76       value = ELON;
     77      value.Flt = ELON;
    7778      break;
    7879    case AVE_ELAT:
     
    8182        haveEcliptic = TRUE;
    8283      }
    83       value = ELAT;
     84      value.Flt = ELAT;
    8485      break;
    8586    case AVE_RA_ERR:
    86       value = average[0].dR;
     87      value.Flt = average[0].dR;
    8788      break;
    8889    case AVE_DEC_ERR:
    89       value = average[0].dD;
     90      value.Flt = average[0].dD;
    9091      break;
    9192
    9293    case AVE_U_RA:
    93       value = average[0].uR;
     94      value.Flt = average[0].uR;
    9495      break;
    9596    case AVE_U_DEC:
    96       value = average[0].uD;
     97      value.Flt = average[0].uD;
    9798      break;
    9899    case AVE_U_RA_ERR:
    99       value = average[0].duR;
     100      value.Flt = average[0].duR;
    100101      break;
    101102    case AVE_U_DEC_ERR:
    102       value = average[0].duD;
     103      value.Flt = average[0].duD;
    103104      break;
    104105
    105106    case AVE_PAR:
    106       value = average[0].P;
     107      value.Flt = average[0].P;
    107108      break;
    108109    case AVE_PAR_ERR:
    109       value = average[0].dP;
     110      value.Flt = average[0].dP;
    110111      break;
    111112
    112113    case AVE_NMEAS:
    113       value = average[0].Nmeasure;
     114      value.Int = average[0].Nmeasure;
    114115      break;
    115116    case AVE_NMISS:
    116       value = average[0].Nmissing;
     117      value.Int = average[0].Nmissing;
    117118      break;
    118119    case AVE_Xp:
    119       value = 0.01*average[0].Xp;
     120      value.Flt = 0.01*average[0].Xp;
    120121      break;
    121122    case AVE_FLAG:
    122       value = average[0].code;
     123      value.Int = average[0].code;
     124      break;
     125    case AVE_OBJID:
     126      value.Int = average[0].objID;
     127      break;
     128    case AVE_CATID:
     129      value.Int = average[0].catID;
    123130      break;
    124131
     
    126133      switch (field->magMode) {
    127134        case MAG_AVE:
    128           value = PhotAve  (field->photcode, average, secfilt);
     135          value.Flt = PhotAve  (field->photcode, average, secfilt);
    129136          break;
    130137        case MAG_REF:
    131           value = PhotRef  (field->photcode, average, secfilt, measure);
     138          value.Flt = PhotRef  (field->photcode, average, secfilt, measure);
    132139          break;
    133140        case MAG_INST:
     
    137144        case MAG_CAL:
    138145          // XXX need to code this correctly: this returns just the first matching value
    139           value = NAN;
     146          value.Flt = NAN;
    140147          for (i = 0; i < average[0].Nmeasure; i++) {
    141148            if (field->photcode->code != measure[i].photcode) continue;
    142             value = measure[i].M;
     149            value.Flt = measure[i].M;
    143150            break;
    144151          }
     
    146153        case MAG_CHISQ:
    147154          // GetPhotcodeEquivCodebyCode (field->photcode)
    148           value = PhotXm (field->photcode, average, secfilt);
     155          value.Flt = PhotXm (field->photcode, average, secfilt);
    149156          break;
    150157        case MAG_ERR:
    151158          // GetPhotcodeEquivCodebyCode (field->photcode)
    152           if (field->photcode->type == PHOT_REF) {
     159          if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
    153160            for (i = 0; i < average[0].Nmeasure; i++) {
    154161              if (field->photcode->code != measure[i].photcode) continue;
    155               value = measure[i].dM;
     162              value.Flt = measure[i].dM;
    156163              break;
    157164            }
    158165          } else {
    159             value = PhotdM (field->photcode, average, secfilt);
     166            value.Flt = PhotdM (field->photcode, average, secfilt);
    160167          }
    161168          break;
     
    165172          Nsec = GetPhotcodeNsec (field->photcode->code);
    166173          if (Nsec == -1) break;
    167           value = secfilt[Nsec].Ncode;
     174          value.Int = secfilt[Nsec].Ncode;
    168175          break;
    169176        case MAG_NPHOT:
    170177          Nsec = GetPhotcodeNsec (field->photcode->code);
    171178          if (Nsec == -1) break;
    172           value = secfilt[Nsec].Nused;
     179          value.Int = secfilt[Nsec].Nused;
    173180          break;
    174181
     
    176183      break;
    177184    case AVE_dMAG:
    178       value = PhotdM (field->photcode, average, secfilt);
     185      value.Flt = PhotdM (field->photcode, average, secfilt);
    179186      break;
    180187    case AVE_Xm:
    181       value = PhotXm (field->photcode, average, secfilt);
     188      value.Flt = PhotXm (field->photcode, average, secfilt);
    182189      break;
    183190    case AVE_TYPE:
     
    185192    case AVE_TYPEFRAC:
    186193      break;
    187       /*
    188     case AVE_NCODE:
    189       value = 0;
    190       for (i = 0; i < average[0].Nm; i++) {
    191         if (field->photcode->code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
    192         value ++;
    193       }
    194       break;
    195     case AVE_NPHOT:
    196       value = 0;
    197       for (i = 0; i < average[0].Nm; i++) {
    198         if (field->photcode->code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
    199         if (measure[i].flags & (ID_MEAS_POOR_PHOTOM | ID_MEAS_SKIP_PHOTOM)) continue;
    200         value ++;
    201       }
    202       break;
    203     case AVE_NCRIT:
    204       break;
    205       */
    206194  }
    207195  return (value);
Note: See TracChangeset for help on using the changeset viewer.