Changeset 39448
- Timestamp:
- Mar 10, 2016, 8:29:24 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20160226/src/relastro/src/FitChip.c
r38986 r39448 221 221 222 222 int i, Ns; 223 float dL, dM, dLsum, dLsum2, dMsum, dMsum2, *dR; 224 225 ALLOCATE (dR, float, Nstars); 223 float dL, dM; 224 225 ALLOCATE_PTR (dRvec, double, Nstars); 226 ALLOCATE_PTR (dLvec, double, Nstars); 227 ALLOCATE_PTR (dMvec, double, Nstars); 226 228 227 229 Ns = 0; 228 dLsum = dLsum2 = dMsum = dMsum2 = 0.0;229 230 for (i = 0; i < Nstars; i++) { 230 231 if (raw[i].mask) continue; … … 235 236 dM = raw[i].M - ref[i].M; 236 237 237 dLsum += dL; 238 dLsum2 += dL*dL; 239 dMsum += dM; 240 dMsum2 += dM*dM; 241 242 dR[Ns] = hypot (dL, dM); 238 dLvec[Ns] = dL; 239 dMvec[Ns] = dM; 240 dRvec[Ns] = hypot (dL, dM); 243 241 Ns++; 244 242 } 245 243 246 *dLsig = sqrt((dLsum2 / Ns) - SQ(dLsum/Ns)); 247 *dMsig = sqrt((dMsum2 / Ns) - SQ(dMsum/Ns)); 244 dsort (dLvec, Ns); 245 dsort (dMvec, Ns); 246 247 double Slo, Shi; 248 Slo = VectorFractionInterpolate (dLvec, 0.158655, Ns); 249 Shi = VectorFractionInterpolate (dLvec, 0.841345, Ns); 250 *dLsig = (Shi - Slo) / 2.0; 251 free (dLvec); 252 253 Slo = VectorFractionInterpolate (dMvec, 0.158655, Ns); 254 Shi = VectorFractionInterpolate (dMvec, 0.841345, Ns); 255 *dMsig = (Shi - Slo) / 2.0; 256 free (dMvec); 257 248 258 *nKeep = Ns; 249 259 250 260 if (Ns < 5) { 251 261 *dRsig = NAN; 252 free (dR );262 free (dRvec); 253 263 return (FALSE); 254 264 } 255 265 256 266 // for a 2D Gaussian, 40% of the points are within R = 1 sigma 257 fsort (dR, Ns);258 *dRsig = dR [(int)(0.40*Ns)];267 dsort (dRvec, Ns); 268 *dRsig = dRvec[(int)(0.40*Ns)]; 259 269 260 free (dR );270 free (dRvec); 261 271 return (TRUE); 262 272 }
Note:
See TracChangeset
for help on using the changeset viewer.
