Changeset 39294 for trunk/Ohana/src/opihi/cmd.astro/cdensify.c
- Timestamp:
- Dec 24, 2015, 6:01:22 AM (11 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.astro/cdensify.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.astro/cdensify.c
r39233 r39294 11 11 Buffer *bf; 12 12 Vector *vr, *vd; 13 opihi_flt *r, *d,x, y;13 opihi_flt x, y; 14 14 int kapa; 15 15 Graphdata graphmode; … … 24 24 double Rmin = graphmode.coords.crval1 - 182.0; 25 25 double Rmax = graphmode.coords.crval1 + 182.0; 26 27 Vector *vv = NULL; 28 if ((N = get_argument (argc, argv, "-value"))) { 29 remove_argument (N, &argc, argv); 30 if ((vv = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) return (FALSE); 31 remove_argument (N, &argc, argv); 32 } 26 33 27 34 float scale = 0.0; … … 45 52 gprint (GP_ERR, "USAGE: cdensify buffer R D\n"); 46 53 gprint (GP_ERR, " option: -psf [dot] (circle) (square) (gauss)\n"); 54 gprint (GP_ERR, " other options:\n"); 55 gprint (GP_ERR, " -raw : do not renormalize PSF\n"); 56 gprint (GP_ERR, " -scale : spatial scale factor for PSF (radius, half-width, or sigma)\n"); 57 gprint (GP_ERR, " -value (vector) : multiply sum by the given vector\n"); 47 58 return (FALSE); 48 59 } … … 53 64 54 65 if (vr[0].Nelements != vd[0].Nelements) return (FALSE); 66 67 if (vv) { 68 if (vv[0].Nelements != vr[0].Nelements) { 69 gprint (GP_ERR, "mis-match in vector lengths\n"); 70 return FALSE; 71 } 72 } 55 73 56 74 REQUIRE_VECTOR_FLT (vr, FALSE); … … 99 117 InitCoords (&coords, "DEC--TAN"); 100 118 101 r = vr[0].elements.Flt; 102 d = vd[0].elements.Flt; 119 opihi_flt *r = vr[0].elements.Flt; 120 opihi_flt *d = vd[0].elements.Flt; 121 122 opihi_flt *Fs = vv ? vv[0].elements.Flt : NULL; 123 opihi_int *Is = vv ? vv[0].elements.Int : NULL; 124 int isFloatScale = (vv && vv[0].type == OPIHI_FLT); 125 103 126 val = (float *)bf[0].matrix.buffer; 127 104 128 for (i = 0; i < vr[0].Nelements; i++, r++, d++) { 105 129 double rn = ohana_normalize_angle (*r); … … 108 132 coords.crval1 = rn; 109 133 coords.crval2 = *d; 134 135 float F = 1.0; 136 if (vv) { 137 F = isFloatScale ? Fs[i] : Is[i]; 138 } 110 139 111 140 switch (PSFTYPE) { … … 118 147 if (Xb < 0) continue; 119 148 if (Yb < 0) continue; 120 val[Xb + Yb*Nx] ++; 149 if (vv) { 150 val[Xb + Yb*Nx] += F; 151 } else { 152 val[Xb + Yb*Nx] ++; 153 } 121 154 break; 122 155 case IS_SQUARE: … … 134 167 if (Xb < 0) continue; 135 168 if (Yb < 0) continue; 136 val[Xb + Yb*Nx] += Normalize ? fSquare : 1.0; 169 if (vv) { 170 val[Xb + Yb*Nx] += Normalize ? fSquare*F : F; 171 } else { 172 val[Xb + Yb*Nx] += Normalize ? fSquare : 1.0; 173 } 137 174 } 138 175 } … … 154 191 if (Xb < 0) continue; 155 192 if (Yb < 0) continue; 156 val[Xb + Yb*Nx] += Normalize ? fCircle : 1.0; 193 if (vv) { 194 val[Xb + Yb*Nx] += Normalize ? fCircle*F : F; 195 } else { 196 val[Xb + Yb*Nx] += Normalize ? fCircle : 1.0; 197 } 157 198 } 158 199 } … … 173 214 if (Xb < 0) continue; 174 215 if (Yb < 0) continue; 175 val[Xb + Yb*Nx] += fGauss*exp(-fSigma*r2); 216 if (vv) { 217 val[Xb + Yb*Nx] += F*fGauss*exp(-fSigma*r2); 218 } else { 219 val[Xb + Yb*Nx] += fGauss*exp(-fSigma*r2); 220 } 176 221 } 177 222 }
Note:
See TracChangeset
for help on using the changeset viewer.
