IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34858


Ignore:
Timestamp:
Dec 19, 2012, 6:50:16 AM (14 years ago)
Author:
eugene
Message:

adding generation of error vector

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20121219/Ohana/src/opihi/cmd.data/vgauss.c

    r29938 r34858  
    3131  }
    3232
     33//   Guess = FALSE;
     34//   if ((N = get_argument (argc, argv, "-guess"))) {
     35//     Guess = TRUE;
     36//     remove_argument (N, &argc, argv);
     37//   }
     38
    3339  if (argc != 5) {
    3440    gprint (GP_ERR, "USAGE: vgauss <x> <y> <dy> (out)\n");
     41    gprint (GP_ERR, "  <dy> may be the words 'con[stant]' or 'poi[sson]', in which case the error is constructed'\n");
    3542    gprint (GP_ERR, " uses guesses: C0 (mean), C1 (sigma), C2 (norm), C3 (sky)\n");
    3643    return (FALSE);
     
    3946  if ((xvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    4047  if ((yvec = SelectVector (argv[2], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    41   if ((svec = SelectVector (argv[3], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    4248  if ((ovec = SelectVector (argv[4], ANYVECTOR, TRUE)) == NULL) return (FALSE);
     49
     50  int Nsvec = strlen(argv[3]);
     51
     52  if ((Nsvec >= 3) && (!strncasecmp ("poisson", argv[3], Nsvec) || !strncasecmp ("constant", argv[3], Nsvec))) {
     53    svec = SelectVector ("vgauss_err", ANYVECTOR, TRUE);
     54    if (svec == NULL) return (FALSE);
     55    MatchVector (svec, xvec, OPIHI_FLT);
     56    v1 = svec[0].elements.Flt;
     57    v2 = yvec[0].elements.Flt;
     58    if (!strncasecmp ("poisson", argv[3], Nsvec)) {
     59      for (i = 0; i < svec[0].Nelements; i++) {
     60        v1[i] = (isfinite(v2[i]) && (v2[i] > 0)) ? sqrt(v2[i]) : 1.0;
     61      }
     62    } else {
     63      for (i = 0; i < svec[0].Nelements; i++) {
     64        v1[i] = 1.0;
     65      }
     66    }
     67  } else {
     68    if ((svec = SelectVector (argv[3], OLDVECTOR, TRUE)) == NULL) return (FALSE);
     69  }
    4370
    4471  CastVector (xvec, OPIHI_FLT);
     
    4673  CastVector (svec, OPIHI_FLT);
    4774  // XXX Cast is failing.
    48    
    4975
    5076  Npts = xvec[0].Nelements;
     
    5884  GET_VAR (par[3], "C3");
    5985  Npar = 4;
     86
    6087
    6188  // mrqmin takes the inverse variance (do not generate NANs)
Note: See TracChangeset for help on using the changeset viewer.