110 likes | 232 Vues
Coordinate Transformations. Based on Slalib http://star-www.rl.ac.uk/star/ docs/sun67.htx/sun67.html. Tested against MACRO algorithms and other coordinate trasformations in ANTARES that were based on sla_oap (reduntant since it includes corrections for optical telescopes). TM, A. Tamburro.
E N D
Coordinate Transformations Based on Slalib http://star-www.rl.ac.uk/star/ docs/sun67.htx/sun67.html Tested against MACRO algorithms and other coordinate trasformations in ANTARES that were based on sla_oap (reduntant since it includes corrections for optical telescopes). TM, A. Tamburro
y = N y’ = N f f’ x = E x’ = E From AMANDA to SLALIB AMANDA (x,y,z) = (E, N, up) SLALIB (x’,y’,z’) = (E,N,up) f’ = p/2 – f if (f’ <0) f’= f’ + 2p vz Also cos directors can be used: the unit vector pointing in the direction of travel tanf = vy/vx and cosq = vz. In AMANDA convention: vx = -cosf sinq vy = -sinf sinq SLALIB (vx,vy,vz) (-vy,-vx,-vz) vz = -cosq > 0 for upgoing <0 for downgoing
From local to astrophysical Elevation = h = p/2-q altazimutal ref system to ‘local’ equatorial (LH systems) Slalib::sla_dh2e(ang_azimuth,elevation,detector_latitude,H,declination); Ψ detector latitude = -p/2 Hour angle: The definition of RA allows to Get rid of the dependency on Earth rotation
Equatorial coordinates (RH) • point: RA origin, intercept of equatorial plane + ecliptic (Sun curve on sphere) Need hour angle of point g = Local Sidereal Time H = LST – RA [in 0-24 hrs] UTC related to motion of Sun as observed from Greenwich GMST = Greenwich Mean Sidereal Time related to star motion (any stars returns at the same place after 24 hrs) • LST = GMST + detector_longitude in hrs • (AMANDA = 0 thanks Mike!)
Precession and nutation g position varies due to equinox precession (rotation of Earth axis in 25800 yrs due to Sun-Moon influence) Nutation: small periodic terms caused by varying distances and relative directions of Moon and Sun RA and Dec should be referred to a particular year e.g. J2000 sla_prenut: rigorous matrix method =calculates the combined precession matrix × nutation one The precession matrix M connects 'real' coordinates (at the time of detection) to mean ones (for an epoch, eg 2000) So to get vMean M needs to be inverted and multiplied by vreal Validated against Duffet-Smith
Comparison Mike’s transformations • Low precision method • Difference from Duffet-Smith between 1) low precision and 2) rigorous methods: • a = 137.679167º d = 14.390278 at 1950.0 in a=138.083333º d = 14.268842º at 1979.5 • a = 137.679167º d = 14.390278 at 1950.0 in a=138.083999º d = 14.268792º at 1979.5 • Da = 6.7e-4º Dd = 5e-5º • But can vary depending on the epochs. • Test: GMST = 5.66611hrs (apparent) q = 55.8857ºf = 16.2570 º • RA 158.735 º • Dec -34.114 º Mike • RA J2000 = 158.796 º 158.738º • Dec J2000= -34.142 º -34.114º • DRA = 0.058º Dd = 0.028º
Date: the class for times Uses sla_caldj to calculate from UT time (Gregorian Calendar Date that the user should refer to Greenwich) the modified julian date at 0hr (JD-2400000.5) Methods: Getters: double get_modified_julian(): modified julian date at UT double get_GMST(): Greenwich Mean Sidereal Time (The local sidereal time of the Greenwich Meridian) double get_TAI_correction(): provides International Atomic Time correction The user can use this methods to provide the times needed by Local_to_Equa to calculate astronomical coordinates starting from Calendar Date e.g.: double time = Date(2012,9,14,21,46,17).get_GMST(); double time_jd = Date(2012,9,14,21,46,17).get_modified_julian(); (is needed to calculate precession and nutation effects)
Local_to_Equa: equatorial and galactic coordinates Based on sla_dh2e. Returns starting from cosine vectors (vx,vy,vz) or (zenith,azimut) in the detector local reference frame (x,y,z) = (E, N, up) + times (GMST+MJD) Notice that vz >0 for upgoing events and zenith should be defined in the standard way (zenith = 0 and nadir = 180°) Internally there is a conversion to fit the Slalib system that is (x,y,z) = (N,E,up) Setters: void set_detection_time(double detection_time); void set_detection_time_jd(double detection_time_jd); void set_with_detector_coordinates( double ang_zenith, doubl$ void set_cosvectors_angles(double vx, double vy, double vz,double time, double time1) void set_with_equatorial_coordinates( double right_ascension, double declination) void set_with_galactical_coordinates( double gal_longitude, double gal_lattitude) Getters: double get_detection_time(): returns Greenwich Mean Sidereal Time void get_detector_defaults(double detector_longitude, double detector_latitude) void get_detector_coordinates_sla( double zenith, double azimuth) in Slalib system void get_equatorial_coordinates( double right_ascension, double declination) void get_galactical_coordinates( double gal_longitude, double gal_latitude)
Example double time = Date(2012,9,14,21,46,17).get_GMST(); double time_jd = Date(2012,9,14,21,46,17).get_modified_julian(); ( needed to calculate precession and nutation effects) Local_to_Equa localfunction; localfunction.set_detection_time(time); localfunction.set_detection_time_jd(time_jd); localfunction.set_cosvectors_angles(vx,vy,vz,time,time_jd); OR localfunction.set_with_detector_coordinates(ang_zenith (in rad), ang_azimuth (in rad), time, time_jd); localfunction.get_equatorial_coordinates(ra (in rad),dec (in rad)); localfunction.get_galactic_coordinates(lat (in rad),lon (in rad));