Skip to content

star_vsini_fourier

Projected rotational velocity v sin i of a star from the first zero of the Fourier transform of one isolated absorption line (Carroll 1933; Gray 2005), on a continuum-normalised, reduced spectrum. The line, its window and the limb-darkening coefficient depend on the star and on your resolution, so they are variables.

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 normalised with a 3rd-order polynomial and 3-sigma clipping before the transform; the method is valid only when the rotational broadening dominates the instrumental profile (v sin i above roughly twice the instrumental FWHM in velocity): the brick refuses unresolved lines and reports the Fourier noise floor so the acceptance of the zero can be judged.

References

  • Carroll 1933, MNRAS 93, 478 - zeros of the Fourier transform of the rotation profile
  • Gray 2005, The Observation and Analysis of Stellar Photospheres, 3rd ed., ch. 18
  • Dravins, Lindegren & Torkelsson 1990, A&A 237, 137 - q1 as a function of the limb darkening
  • Diaz, Gonzalez, Levato & Grosso 2011, A&A 531, A143 - the Fourier v sin i recipe

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
line_center_angstrom float required rest wavelength (air) of an isolated absorption line, e.g. Mg II 4481.13 for A stars, Fe I 6430.85 for cooler stars
window_angstrom float default 5.0 half-window around the line, wide enough to reach the continuum on both sides (about 2-3 times lambda * v sin i / c plus margin)
epsilon float default 0.6 linear limb-darkening coefficient of the star at the line's wavelength

Steps

# Algorithm Parameters
1 normalize_polynomial Continuum normalisation order=3, sigma_clip=3.0
2 vsini_fourier v sin i from the Fourier first zero line_center_angstrom='${line_center_angstrom}', window_angstrom='${window_angstrom}', epsilon='${epsilon}'

Run it

# profile.yaml holds your instrument values:
#   line_center_angstrom: 0.0
#   window_angstrom: 5.0
#   epsilon: 0.6
spectro pipeline star_vsini_fourier --input spectrum.fits --profile profile.yaml
spectro preset show star_vsini_fourier      # variables and steps
from spectro_kernel import WorkContext
from spectro_kernel.pipeline import PipelineBuilder

variables = {"line_center_angstrom": 0.0, "window_angstrom": 5.0, "epsilon": 0.6}
pipeline = PipelineBuilder().from_preset("star_vsini_fourier", 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": "star_vsini_fourier",
    "variables": {
      "line_center_angstrom": 0.0,
      "window_angstrom": 5.0,
      "epsilon": 0.6
    }
  }
}