Spec for aspect pipeline proper motion correction

Summary

This document provides a specification of code to allow the aspect pipeline to use proper motion information from the AGASC to correct the guide star positions to the epoch of the observation. This directly affects the following columns of the Aspect L1 GSPROPS product:
ra_corr
dec_corr
pos_eci

Spec

The necessary changes are confined to the Read_Agasc_Write_Gsprops routine of the aca_id_image tool. For each guide star being processed for which AGASC catalog access was successful, do the following:
  1. Get the star epoch (year) from the AGASC. This corresponds to the column EPOCH.
  2. Get the star proper motion in milli-arcsec per year from the AGASC by reading columns PM_RA and PM_DEC. Call these values star_pm_ra and star_pm_dec
  3. Convert the midpoint in time of the aspect interval to a decimal year (e.g. 2003.4322). Subtract from this the star epoch and call the result delta_year
  4. Initialize the star proper motion corrections (degrees)
    double delta_ra=0;
    double delta_dec=0;
    
  5. If none of EPOCH, PM_RA, or PM_DEC are equal (within floating precision) to -9999, then calculate:
     delta_ra  = delta_year * star_pm_ra / Milliarcsec_per_arcsec / arcsec_per_degree; 
     delta_dec = delta_year * star_pm_dec / Milliarcsec_per_arcsec / arcsec_per_degree; 
    
  6. If (delta_ra^2 + delta_dec^2) > (max_proper_motion / arcsec_per_degree)^2 then issue a warning with relevant information and set delta_ra = 0 and delta_dec = 0. max_proper_motion is a new tool parameter for aca_id_image with a default value of 5 (arcsec).
  7. Define quaternion objects corresponding to the star position and (delta_ra, delta_dec) with roll=0 for both. Then calculate the corrected star positon as the quaternion product of quat_delta * quat_star:
     Quat quat_star;
     Quat quat_delta;
     Quat quat_star_corr;
     quat_star.Set(star_ra, star_dec, 0);
     quat_delta.Set(delta_ra, delta_dec, 0);
     quat_star_corr = quat_delta * quat_star;
    
  8. Set the corrected star position (star_ra_corr,star_dec_corr) from the corrected star quaternion:
     quat_star_corr.Get(ra_corr, dec_corr, roll_corr);
     gsprops.ra_corr = ra_corr;
     gsprops.dec_corr =_dec_corr;
    
  9. Set the effective position vector (pos_eci_eff) using the corrected position instead of the catalog position
     gsprops.pos_eci_eff[0]= cos(ra_corr * RAD_PER_DEG)*cos(dec_corr * RAD_PER_DEG); 
     gsprops.pos_eci_eff[1]= sin(ra_corr * RAD_PER_DEG)*cos(dec_corr * RAD_PER_DEG); 
     gsprops.pos_eci_eff[2]= sin(dec_corr * RAD_PER_DEG);
    

Testing

Unit level
To verify the correct computations at the unit level, disable the check on proper motion correction size and stub in the following values. Confirm that the corrected RA and Dec are as listed:
star_epoch   = 2000.0
current_year = 2004.0
pm_ra  	 = 900  arcsec/year
pm_dec 	 = 1800 arcsec/year
ra     	 = 60.0000
dec    	 = 89.0000
ra_corr  = 195.021817
dec_corr = 88.586038
System level
Reprocess obsid 4501. This dataset is known to have a star with a large proper motion.



Aspect Information main page



Comments or questions: Aspect Help

Last modified:12/27/13