Changeset 37675
- Timestamp:
- Nov 26, 2014, 6:23:50 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140904/Ohana/src/relastro/src/FrameCorrection.c
r37660 r37675 117 117 double Ro = 330.0; 118 118 double Do = 0.0; 119 double scale = 2.0; // degrees per patch 120 int Nx = 10; 121 int Ny = 10; 119 122 if (USE_ICRF_POLE) { 120 123 Ro = 0.0; 121 124 Do = 90.0; 122 }123 124 double scale = 2.0; // degrees per patch125 int Nx = 10;126 int Ny = 10; 125 scale = 5.0; // degrees per patch 126 Nx = 4; 127 Ny = 4; 128 } 129 127 130 128 131 Coords *coords = NULL; … … 147 150 if (USE_ICRF_SHFIT) { 148 151 // Lmax in recipe 149 int Lmax = 20;152 int Lmax = 5; 150 153 151 154 // dR and dD will carry the fit coefficients in RA and DEC … … 191 194 memset (mask, 0, icrfobj->Nicrfobj*sizeof(int)); 192 195 193 SHfitWithMask (icrfobj->Rave, icrfobj->Dave, icrfobj->dRoff, mask, icrfobj->Nicrfobj, dRc); 194 SHfitWithMask (icrfobj->Rave, icrfobj->Dave, icrfobj->dDoff, mask, icrfobj->Nicrfobj, dDc); 195 196 // the bit below is for testing 197 198 // allocate an SHterms structure to hold the Ylm values 199 SHterms *Ylm = SHtermsInit (dRc->lmax); 200 201 static int version = 0; 202 char filename[1024]; 203 snprintf (filename, 1024, "%s/sh.%02d.dat", CATDIR, version); 204 FILE *f = fopen (filename, "w"); 205 myAssert (f, "oops"); 206 version ++; 207 208 for (i = 0; i < icrfobj->Nicrfobj; i++) { 196 double *dPosObs, *dPosSrt = NULL; 197 ALLOCATE (dPosObs, double, icrfobj->Nicrfobj); 198 ALLOCATE (dPosSrt, double, icrfobj->Nicrfobj); 199 200 int Niter; 201 for (Niter = 0; Niter < 3; Niter ++) { 202 203 SHfitWithMask (icrfobj->Rave, icrfobj->Dave, icrfobj->dRoff, mask, icrfobj->Nicrfobj, dRc); 204 SHfitWithMask (icrfobj->Rave, icrfobj->Dave, icrfobj->dDoff, mask, icrfobj->Nicrfobj, dDc); 205 206 // the bit below is for testing 207 208 // allocate an SHterms structure to hold the Ylm values 209 SHterms *Ylm = SHtermsInit (dRc->lmax); 210 211 static int version = 0; 212 char filename[1024]; 213 snprintf (filename, 1024, "%s/sh.%02d.dat", CATDIR, version); 214 FILE *f = fopen (filename, "w"); 215 myAssert (f, "oops"); 216 version ++; 217 218 int Nkeep = 0; 219 for (i = 0; i < icrfobj->Nicrfobj; i++) { 209 220 210 SHtermsForRD (Ylm, icrfobj->Rave[i], icrfobj->Dave[i]);221 SHtermsForRD (Ylm, icrfobj->Rave[i], icrfobj->Dave[i]); 211 222 212 double dRfit = 0.0; 213 double dDfit = 0.0; 214 215 int j; 216 for (j = 0; j < Ylm->Nterms; j++) { 217 dRfit += dRc->Fr[j]*Ylm->Fr[j] + dRc->Fi[j]*Ylm->Fi[j]; 218 dDfit += dDc->Fr[j]*Ylm->Fr[j] + dDc->Fi[j]*Ylm->Fi[j]; 219 } 220 fprintf (f, "%12.8f %12.8f %7.3f %7.3f : %7.3f %7.3f\n", 221 icrfobj->Rave[i], icrfobj->Dave[i], icrfobj->dRoff[i], icrfobj->dDoff[i], dRfit, dDfit); 222 } 223 fclose (f); 223 double dRfit = 0.0; 224 double dDfit = 0.0; 225 226 int j; 227 for (j = 0; j < Ylm->Nterms; j++) { 228 dRfit += dRc->Fr[j]*Ylm->Fr[j] + dRc->Fi[j]*Ylm->Fi[j]; 229 dDfit += dDc->Fr[j]*Ylm->Fr[j] + dDc->Fi[j]*Ylm->Fi[j]; 230 231 } 232 fprintf (f, "%12.8f %12.8f %7.3f %7.3f : %7.3f %7.3f : %d\n", 233 icrfobj->Rave[i], icrfobj->Dave[i], icrfobj->dRoff[i], icrfobj->dDoff[i], dRfit, dDfit, mask[i]); 234 dPosObs[i] = hypot(icrfobj->dRoff[i] - dRfit, icrfobj->dDoff[i] - dDfit); 235 if (mask[i]) continue; 236 if (isnan(dPosObs[i])) continue; 237 dPosSrt[Nkeep] = dPosObs[i]; 238 Nkeep ++; 239 } 240 fclose (f); 241 242 dsort (dPosSrt, Nkeep); 243 double dPmax = 1.5*dPosSrt[(int)(0.95*Nkeep)]; 244 245 Nkeep = 0; 246 for (i = 0; i < icrfobj->Nicrfobj; i++) { 247 if (dPosObs[i] > dPmax) mask[i] = 1; 248 if (isnan(dPosObs[i])) mask[i] = 1; 249 if (!mask[i]) Nkeep++; 250 } 251 fprintf (stderr, "keeping %d of %d points\n", Nkeep, icrfobj->Nicrfobj); 252 } 224 253 225 254 free (mask); 255 free (dPosObs); 256 free (dPosSrt); 226 257 227 258 return TRUE; … … 406 437 if (Yave > map->Ny) continue; 407 438 408 double Rm = icrfobj->Rave[i] - icrfobj->dRoff[i] / 3600.0 ;439 double Rm = icrfobj->Rave[i] - icrfobj->dRoff[i] / 3600.0 / cos(icrfobj->Rave[i]*RAD_DEG); 409 440 double Dm = icrfobj->Dave[i] - icrfobj->dDoff[i] / 3600.0; 410 441 RD_to_XY (&Xmeas, &Ymeas, Rm, Dm, coords); … … 572 603 } 573 604 574 average->R -= dR / 3600.0 ;605 average->R -= dR / 3600.0 / cos(average->R*RAD_DEG); 575 606 average->D -= dD / 3600.0; 576 607 }
Note:
See TracChangeset
for help on using the changeset viewer.
