Changeset 42078 for trunk/Ohana/src/opihi/cmd.astro/imfit-trail.c
- Timestamp:
- Feb 28, 2022, 12:10:28 PM (4 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.astro/imfit-trail.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.astro/imfit-trail.c
r41666 r42078 4 4 void trailCL (); 5 5 6 // fitted parameters: 6 7 # define PAR_X 0 7 8 # define PAR_Y 1 8 9 # define PAR_THETA 2 9 # define PAR_SIGMA 3 10 # define PAR_LENGTH 4 11 # define PAR_I0 5 12 # define PAR_SKY 6 10 # define PAR_LENGTH 3 11 # define PAR_I0 4 12 # define PAR_SKY 5 13 14 // fixed parameters: 15 # define PAR_SIGMA 0 13 16 14 17 void trail_setup (char *name) { … … 18 21 fitfunc = trailTD; 19 22 imfit_cleanup = trailCL; 20 Npar = 7;21 Nfpar = 0;23 Npar = 6; 24 Nfpar = 1; 22 25 23 26 /* allocate free and fixed parameters */ … … 30 33 par[PAR_Y ] = get_variable_default ("Yg", 0.0); 31 34 par[PAR_THETA ] = get_variable_default ("Tg", 0.0); 32 par[PAR_SIGMA ] = get_variable_default ("Wg", 2.0);33 35 par[PAR_LENGTH ] = get_variable_default ("Lg", 10.0); 34 36 par[PAR_I0 ] = get_variable_default ("Zpk", 10000.0); 35 37 par[PAR_SKY ] = get_variable_default ("Sg", 0.0); 36 38 sky = &par[PAR_SKY]; 39 40 fpar[PAR_SIGMA ] = get_variable_default ("Wg", 2.0); 37 41 } 38 42 … … 40 44 set_variable ("Xg", par[PAR_X ]); 41 45 set_variable ("Yg", par[PAR_Y ]); 42 set_variable ("Wg", par[PAR_SIGMA ]);43 46 set_variable ("Tg", par[PAR_THETA ]); 44 47 set_variable ("Lg", par[PAR_LENGTH]); 45 48 set_variable ("Zpk", par[PAR_I0 ]); 46 49 set_variable ("Sg", par[PAR_SKY ]); 50 51 set_variable ("Wg", fpar[PAR_SIGMA]); 47 52 } 48 53 … … 54 59 opihi_flt Y = y - par[PAR_Y]; 55 60 56 opihi_flt S2 = 2.0 * SQ( par[PAR_SIGMA]);61 opihi_flt S2 = 2.0 * SQ(fpar[PAR_SIGMA]); 57 62 58 63 opihi_flt ST = sin(RAD_DEG*par[PAR_THETA]); … … 78 83 79 84 // are these signs correct? I think so: (dR/dXo = -dR/dX); dRdX below is actually dR/dXo 85 // since X = X - par[PAR_X], dFoo/dXo = -dFoo/dX 80 86 float dRdX = +ST; 81 87 float dRdY = -CT; 82 float dRdT = -Y*ST - X*CT; 88 float dRdT = (-Y*ST - X*CT)*RAD_DEG; 89 // note PAR_THETA is in degrees 83 90 84 91 float dGdX = dGdR * dRdX; 85 92 float dGdY = dGdR * dRdY; 86 93 float dGdT = dGdR * dRdT; 94 // dGdL is 0.0 because dRdL is 0.0 (R is not a function of L) 87 95 88 96 // are these signs correct? I think so: (dR/dXo = -dR/dX); dRdX below is actually dR/dXo … … 96 104 float dZmdL = -0.5 / sqrt(S2); 97 105 98 float dZpdT = (-X*ST + Y*CT) / sqrt(S2); 106 // note PAR_THETA is in degrees 107 float dZpdT = (-X*ST + Y*CT) * RAD_DEG / sqrt(S2); 99 108 float dZmdT = dZpdT; // dZpdT = dZmdT 100 109 … … 119 128 // dGdL is 0.0 because dRdL is 0.0 120 129 float dPdL = Gxy * (dEpdL - dEmdL); 121 122 130 float dPdT = dGdT * (Ep - Em) + Gxy * (dEpdT - dEmdT); 123 131 … … 127 135 dpar[PAR_LENGTH] = par[PAR_I0] * dPdL; 128 136 dpar[PAR_THETA] = par[PAR_I0] * dPdT; 129 dpar[PAR_SIGMA] = 0; // we don't actually allow this to vary, so we do not need to calculate it130 137 } 131 138
Note:
See TracChangeset
for help on using the changeset viewer.
