IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 10, 2009, 3:43:50 AM (17 years ago)
Author:
eugene
Message:

more tests of robust petrosian analysis

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20090715/Ohana/src/opihi/cmd.astro/galradius.c

    r25018 r25033  
    1111  opihi_flt *flux, *radius, *values;
    1212  Buffer *buf;
    13   Vector *fvec, *rvec, *tvec;
     13  Vector *fvec, *rvec, *tvec, *Fvec, *Rvec;
    1414  char name[128];
    1515
     
    2222  if ((rvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    2323  if ((fvec = SelectVector (argv[2], OLDVECTOR, TRUE)) == NULL) return (FALSE);
     24
     25  if ((Rvec = SelectVector ("rg", ANYVECTOR, TRUE)) == NULL) return (FALSE);
     26  if ((Fvec = SelectVector ("fg", ANYVECTOR, TRUE)) == NULL) return (FALSE);
     27
    2428  Fmin = atof(argv[3]);
    2529  Fmax = atof(argv[4]);
     
    5054    Rbin = 1;
    5155  } else {
    52     Rbin = MAX(1, Rsum / Rnpt);
     56    Rbin = MAX(1, 0.5*(Rsum / Rnpt));
    5357  }
    5458
     
    5660  if (Rbin <= 2) {
    5761    Nout   = fvec[0].Nelements;
     62    ResetVector (Rvec, OPIHI_FLT, Nout);
     63    ResetVector (Fvec, OPIHI_FLT, Nout);
     64    memcpy (Fvec[0].elements.Flt, fvec[0].elements.Flt, Fvec[0].Nelements*sizeof(opihi_flt));
     65    memcpy (Rvec[0].elements.Flt, rvec[0].elements.Flt, Rvec[0].Nelements*sizeof(opihi_flt));
    5866    flux   = fvec[0].elements.Flt;
    5967    radius = rvec[0].elements.Flt;
    60     // XXX handle the necessary free below
    6168  } else {
    6269    // rebin the vectors by Rbin values:
    6370    Nout = fvec[0].Nelements / Rbin + 1;
    64     ALLOCATE (flux,   opihi_flt, Nout);
    65     ALLOCATE (radius, opihi_flt, Nout);
    6671    ALLOCATE (values, opihi_flt, fvec[0].Nelements);
    6772 
     73    ResetVector (Rvec, OPIHI_FLT, Nout);
     74    ResetVector (Fvec, OPIHI_FLT, Nout);
     75    flux   = Fvec[0].elements.Flt;
     76    radius = Rvec[0].elements.Flt;
     77
    6878    for (i = 0; i < Nout; i++) {
    6979      radius[i] = (i + 0.5)*Rbin;
     
    7383      N = 0;
    7484      for (j = 0; j < fvec[0].Nelements; j++) {
    75         if (rvec[0].elements.Flt[i] < Rmin) continue;
    76         if (rvec[0].elements.Flt[i] > Rmax) continue;
    77         values[N] = fvec[0].elements.Flt[i];
     85        if (rvec[0].elements.Flt[j] < Rmin) continue;
     86        if (rvec[0].elements.Flt[j] > Rmax) continue;
     87        values[N] = fvec[0].elements.Flt[j];
    7888        N++;
    7989      }
     
    8797      }
    8898    }
     99    free (values);
    89100  }
    90101
Note: See TracChangeset for help on using the changeset viewer.