IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 28, 2022, 12:10:28 PM (4 years ago)
Author:
eugene
Message:

add Molweide projection; improvements to source fitting functions (imfit) for testing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.astro/imfit-trail.c

    r41666 r42078  
    44void  trailCL ();
    55
     6// fitted parameters:
    67# define PAR_X      0
    78# define PAR_Y      1
    89# 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
    1316
    1417void trail_setup (char *name) {
     
    1821  fitfunc = trailTD;
    1922  imfit_cleanup = trailCL;
    20   Npar = 7;
    21   Nfpar = 0;
     23  Npar  = 6;
     24  Nfpar = 1;
    2225
    2326  /* allocate free and fixed parameters */
     
    3033  par[PAR_Y      ] = get_variable_default ("Yg",      0.0);
    3134  par[PAR_THETA  ] = get_variable_default ("Tg",      0.0);
    32   par[PAR_SIGMA  ] = get_variable_default ("Wg",      2.0);
    3335  par[PAR_LENGTH ] = get_variable_default ("Lg",     10.0);
    3436  par[PAR_I0     ] = get_variable_default ("Zpk", 10000.0);
    3537  par[PAR_SKY    ] = get_variable_default ("Sg",      0.0);
    3638  sky = &par[PAR_SKY];
     39
     40  fpar[PAR_SIGMA ] = get_variable_default ("Wg",      2.0);
    3741}
    3842
     
    4044  set_variable ("Xg",  par[PAR_X     ]);
    4145  set_variable ("Yg",  par[PAR_Y     ]);
    42   set_variable ("Wg",  par[PAR_SIGMA ]);
    4346  set_variable ("Tg",  par[PAR_THETA ]);
    4447  set_variable ("Lg",  par[PAR_LENGTH]);
    4548  set_variable ("Zpk", par[PAR_I0    ]);
    4649  set_variable ("Sg",  par[PAR_SKY   ]);
     50
     51  set_variable ("Wg",  fpar[PAR_SIGMA]);
    4752}
    4853
     
    5459  opihi_flt Y = y - par[PAR_Y];
    5560 
    56   opihi_flt S2 = 2.0 * SQ(par[PAR_SIGMA]);
     61  opihi_flt S2 = 2.0 * SQ(fpar[PAR_SIGMA]);
    5762
    5863  opihi_flt ST = sin(RAD_DEG*par[PAR_THETA]);
     
    7883
    7984    // 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
    8086    float dRdX = +ST;
    8187    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
    8390
    8491    float dGdX = dGdR * dRdX;
    8592    float dGdY = dGdR * dRdY;
    8693    float dGdT = dGdR * dRdT;
     94    // dGdL is 0.0 because dRdL is 0.0 (R is not a function of L)
    8795
    8896    // are these signs correct? I think so: (dR/dXo = -dR/dX); dRdX below is actually dR/dXo
     
    96104    float dZmdL = -0.5 / sqrt(S2);
    97105
    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);
    99108    float dZmdT = dZpdT; // dZpdT = dZmdT
    100109
     
    119128    // dGdL is 0.0 because dRdL is 0.0
    120129    float dPdL = Gxy * (dEpdL - dEmdL);
    121 
    122130    float dPdT = dGdT * (Ep - Em) + Gxy * (dEpdT - dEmdT);
    123131
     
    127135    dpar[PAR_LENGTH] = par[PAR_I0] * dPdL;
    128136    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 it
    130137  }
    131138
Note: See TracChangeset for help on using the changeset viewer.