Skip to content

binary_rv_ccf

Radial velocity of a star by cross-correlation against a template, for the follow-up of spectroscopic binaries and exoplanet hosts: barycentric correction from the header, continuum normalisation, then the Tonry & Davis cross-correlation on a log-wavelength grid sampled at the native resolution.

Kind campaign
Status draft - draft: conventions still open for discussion
Version 1.0.0
Source package:spectro-kernel-recipes
Requires spectro-kernel >=0.7

Conventions

Continuum removed with a 3rd-order polynomial and 3-sigma clipping before the correlation; the log-wavelength grid follows the finest native sampling (n_grid unset) so the velocity step is not the limiting factor; search range +/- 400 km/s. The template is the observer's choice (a synthetic spectrum or a high signal-to-noise observation of a standard) and is therefore a variable.

References

  • Tonry & Davis 1979, AJ 84, 1511 - cross-correlation radial velocities and their error
  • Kurtz & Mink 1998, PASP 110, 934 - RVSAO, the practical cross-correlation implementation
  • Bouchy, Pepe & Queloz 2001, A&A 374, 733 - photon-noise limit of the radial velocity

Variables

The instrument- or observer-dependent values. Provide them with a profile file, --set name=value, or variables={...} in Python.

Variable Type Required / default Description
template_path path required template spectrum (FITS or ASCII) at rest velocity
latitude_deg float required observatory latitude (deg)
longitude_deg float required observatory longitude (deg, east positive)
elevation_m float default 0.0 observatory elevation (m)

Steps

# Algorithm Parameters
1 barycentric_correction Barycentric correction from the header latitude_deg='${latitude_deg}', longitude_deg='${longitude_deg}', elevation_m='${elevation_m}'
2 normalize_polynomial Continuum normalisation order=3, sigma_clip=3.0
3 cross_correlate_rv Cross-correlation radial velocity template_path='${template_path}', n_grid=None, vmin_kms=-400.0, vmax_kms=400.0

Run it

# profile.yaml holds your instrument values:
#   template_path: /path/to/template_path
#   latitude_deg: 0.0
#   longitude_deg: 0.0
#   elevation_m: 0.0
spectro pipeline binary_rv_ccf --input spectrum.fits --profile profile.yaml
spectro preset show binary_rv_ccf      # variables and steps
from spectro_kernel import WorkContext
from spectro_kernel.pipeline import PipelineBuilder

variables = {"template_path": "/path/to/template_path", "latitude_deg": 0.0, "longitude_deg": 0.0, "elevation_m": 0.0}
pipeline = PipelineBuilder().from_preset("binary_rv_ccf", variables).build()
result = pipeline.execute(ctx)        # ctx holds the spectrum / frames
print(result.history[-1])             # pipeline:<name> vX.Y.Z + variables
{
  "tool": "run_preset",
  "arguments": {
    "session_id": "<session_id>",
    "preset_name": "binary_rv_ccf",
    "variables": {
      "template_path": "/path/to/template_path",
      "latitude_deg": 0.0,
      "longitude_deg": 0.0,
      "elevation_m": 0.0
    }
  }
}