public class Gaia
extends java.lang.Object
The methods here are not specific to the Gaia mission,
but the parameters of the functions and their units are specified
in a form that is convenient for use with Gaia data,
in particular the gaia_source
catalogue available from
http://gea.esac.esa.int/archive/
and copies or mirrors.
There are currently two main sets of functions here, distance estimation from parallaxes, and astrometry propagation to different epochs.
Distance estimation
Gaia measures parallaxes, but some scientific use cases require the radial distance instead. While distance in parsec is in principle the reciprocal of parallax in arcsec, in the presence of non-negligable errors on measured parallax, this inversion does not give a good estimate of distance. A thorough discussion of this topic and approaches to estimating distances for Gaia-like data can be found in the papers
The functions provided here correspond to calculations from Astraatmadja & Bailer-Jones, "Estimating Distances from Parallaxes. III. Distances of Two Million Stars in the Gaia DR1 Catalogue", ApJ 833, a119 (2016) 2016ApJ...833..119A based on the Exponentially Decreasing Space Density prior defined therein. This implementation was written with reference to the Java implementation by Enrique Utrilla (DPAC).
These functions are parameterised by a length scale L
that defines the exponential decay (the mode of the prior PDF is at
r=2L).
Some value for this length scale, specified in parsec, must be supplied
to the functions as the lpc
parameter.
Epoch Propagation
The Gaia source catalogue provides, for at least some sources, the six-parameter astrometric solution (Right Ascension, Declination, Parallax, Proper motion in RA and Dec, and Radial Velocity), along with errors on these values and correlations between these errors. While a crude estimate of the position at an earlier or later epoch than that of the measurement can be made by multiplying the proper motion components by epoch difference and adding to the measured position, a more careful treatment is required for accurate propagation between epochs of the astrometric parameters, and if required their errors and correlations. The expressions for this are set out in section 1.5.5 (Volume 1) of The Hipparcos and Tycho Catalogues, ESA SP-1200 (1997) (but see below), and the code is based on an implementation by Alexey Butkevich and Daniel Michalik (DPAC). A correction is applied to the SP-1200 treatment of radial velocity uncertainty following Michalik et al. 2014 2014A&A...571A..85M because of their better handling of small radial velocities or parallaxes.
The calculations give the same results, though not exactly in the same form, as the epoch propagation functions available in the Gaia archive service.
Modifier and Type | Field | Description |
---|---|---|
static double |
AU_YRKMS |
This quantity is A_v, the Astronomical Unit expressed in km.yr/sec.
|
Modifier and Type | Method | Description |
---|---|---|
static double[] |
distanceBoundsEdsd(double plxMas,
double plxErrorMas,
double lPc) |
Calculates the 5th and 95th percentile confidence intervals
on the distance estimate using the Exponentially Decreasing
Space Density prior.
|
static double |
distanceEstimateEdsd(double plxMas,
double plxErrorMas,
double lPc) |
Best estimate of distance using the Exponentially Decreasing
Space Density prior.
|
static double[] |
distanceQuantilesEdsd(double plxMas,
double plxErrorMas,
double lPc,
double... qpoints) |
Calculates arbitrary quantiles for the distance estimate
using the Exponentially Decreasing Space Density prior.
|
static double |
distanceToModulus(double distPc) |
Converts a distance in parsec to a distance modulus.
|
static double[] |
epochProp(double tYr,
double[] astrom6) |
Propagates the astrometry parameters, supplied as a 6-element array,
to a different epoch.
|
static double[] |
epochPropErr(double tYr,
double[] astrom22) |
Propagates the astrometry parameters and their associated errors
and correlations, supplied as a 22-element array,
to a different epoch.
|
static double |
modulusToDistance(double distmod) |
Converts a distance modulus to a distance in parsec.
|
static double |
rvKmsToMasyr(double rvKms,
double plxMas) |
Converts from unnormalised radial velocity in km/s to
normalised radial velocity in mas/year.
|
static double |
rvMasyrToKms(double rvMasyr,
double plxMas) |
Converts from normalised radial velocity in mas/year to
unnormalised radial velocity in km/s.
|
public static final double AU_YRKMS
public static double[] epochProp(double tYr, double[] astrom6)
The input and output astrometry parameters are each represented by a 6-element array, with the following elements:
index gaia_source name unit description ----- ---------------- ---- ----------- 0: ra deg right ascension 1: dec deg declination 2: parallax mas parallax 3: pmra mas/yr proper motion in ra * cos(dec) 4: pmdec mas/yr proper motion in dec 5: radial_velocity km/s barycentric radial velocityThe units used by this function are the units used in the
gaia_source
table.tYr
- epoch difference in yearsastrom6
- astrometry at time t0,
represented by a 6-element array as above
(a 5-element array is also permitted where
radial velocity is zero or unknown)t0+tYr
,
represented by a 6-element array as aboveepochProp(-15.5,
array(ra,dec,parallax,pmra,pmdec,radial_velocity))
- calculates the astrometry at 2000.0 of gaia_source values
that were observed at 2015.5public static double[] epochPropErr(double tYr, double[] astrom22)
The input and output astrometry parameters with associated error and correlation information are each represented by a 22-element array, with the following elements:
index gaia_source name unit description ----- ---------------- ---- ----------- 0: ra deg right ascension 1: dec deg declination 2: parallax mas parallax 3: pmra mas/yr proper motion in RA * cos(dec) 4: pmdec mas/yr proper motion in Declination 5: radial_velocity km/s barycentric radial velocity 6: ra_error mas error in right ascension 7: dec_error mas error in declination 8: parallax_error mas error in parallax 9: pmra_error mas/yr error in RA proper motion * cos(dec) 10: pmdec_error mas/yr error in Declination proper motion 11: radial_velocity_error km/s error in barycentric radial velocity 12: ra_dec_corr correlation between ra and dec 13: ra_parallax_corr correlation between ra and parallax 14: ra_pmra_corr correlation between ra and pmra 15: ra_pmdec_corr correlation between ra and pmdec 16: dec_parallax_corr correlation between dec and parallax 17: dec_pmra_corr correlation between dec and pmra 18: dec_pmdec_corr correlation between dec and pmdec 19: parallax_pmra_corr correlation between parallax and pmra 20: parallax_pmdec_corr correlation between parallax and pmdec 21: pmra_pmdec_corr correlation between pmra and pmdecNote the correlation coefficients, always in the range -1..1, are dimensionless.
This is clearly an unwieldy function to invoke, but if you are using it with the gaia_source catalogue itself, or other similar catalogues with the same column names and units, you can invoke it by just copying and pasting the example shown in this documentation.
This transformation is only applicable for radial velocities determined independently of the astrometry, such as those obtained with a spectrometer. It is not applicable for the back-transformation of data already propagated to another epoch.
tYr
- epoch difference in yearsastrom22
- astrometry at time t0,
represented by a 22-element array as aboveepochPropErr(-15.5, array(
ra,dec,parallax,pmra,pmdec,radial_velocity,
ra_error,dec_error,parallax_error,pmra_error,pmdec_error,radial_velocity_error,
ra_dec_corr,ra_parallax_corr,ra_pmra_corr,ra_pmdec_corr,
dec_parallax_corr,dec_pmra_corr,dec_pmdec_corr,
parallax_pmra_corr,parallax_pmdec_corr,
pmra_pmdec_corr))
- calculates the astrometry with all errors and correlations at
2000.0 for gaia_source values that were observed at 2015.5.public static double rvMasyrToKms(double rvMasyr, double plxMas)
The output is calculated as
AU_YRKMS * rvMasyr / plxMas
,
where AU_YRKMS=4.740470446
is one Astronomical Unit in km.yr/sec.
rvMasyr
- normalised radial velocity, in mas/yearplxMas
- parallax in maspublic static double rvKmsToMasyr(double rvKms, double plxMas)
The output is calculated as
rvKms * plxMas / AU_YRKMS
,
where AU_YRKMS=4.740470446
is one Astronomical Unit in km.yr/sec.
rvKms
- unnormalised radial velocity, in mas/yearplxMas
- parallax in maspublic static double distanceEstimateEdsd(double plxMas, double plxErrorMas, double lPc)
plxMas
- parallax in masplxErrorMas
- parallax error in maslPc
- length scale in parsecpublic static double[] distanceBoundsEdsd(double plxMas, double plxErrorMas, double lPc)
Note this function has to numerically integrate the PDF to determine quantile values, so it is relatively slow.
plxMas
- parallax in masplxErrorMas
- parallax error in maslPc
- length scale in parsecpublic static double[] distanceQuantilesEdsd(double plxMas, double plxErrorMas, double lPc, double... qpoints)
Note this function has to numerically integrate the PDF to determine quantile values, so it is relatively slow.
plxMas
- parallax in masplxErrorMas
- parallax error in maslPc
- length scale in parsecqpoints
- one or more required quantile cut points,
each in the range 0..1qpoints
giving the corresponding distance in parsecdistanceQuantilesEdsd(parallax, parallax_error,
1350, 0.5)[0]
calculates the median of the EDSD distance PDF
using a length scale of 1.35kpc, distanceQuantilesEdsd(parallax, parallax_error,
3000, 0.01, 0.99)
returns a 2-element array giving the 1st and 99th percentile
of the distance estimate using a length scale of 3kpcpublic static double distanceToModulus(double distPc)
5*log10(distPc)-5
.distPc
- distance in parsecpublic static double modulusToDistance(double distmod)
10^(1+distmod/5)
.distmod
- distance modulus in magnitudesCopyright © 2018 Central Laboratory of the Research Councils. All Rights Reserved.