ERIS Pipeline Reference Manual 1.8.15
Functions
Standard Star Calibration Pipeline

Functions

cpl_error_code eris_stdstar_reduction_common (cpl_frameset *frameset, const cpl_parameterlist *parlist, cpl_boolean apply_flat_field, const char *context, const char *recipe_name)
 Main standard star data reduction pipeline orchestration function.
 

Detailed Description

This module provides the main data reduction pipeline for standard star observations used in IFU spectroscopy calibration. It orchestrates the complete reduction workflow from raw exposures to calibrated products.

The pipeline handles multiple observation types:

The reduction workflow includes:

  1. Parameter fetching and SOF (Set of Frames) processing
  2. Individual exposure reduction and cube generation
  3. Cube combination and co-addition (if multiple exposures)
  4. Spectral extraction from combined cubes
  5. Instrumental response computation (STD with flat field)
  6. System efficiency computation (STD_FLUX without flat field)
  7. Flux calibration of spectra and cubes
  8. Strehl ratio computation (PSF calibrators)

Processing can be performed with or without flat field correction, generating different product categories and calibration outputs.

Function Documentation

◆ eris_stdstar_reduction_common()

cpl_error_code eris_stdstar_reduction_common ( cpl_frameset *  frameset,
const cpl_parameterlist *  parlist,
cpl_boolean  apply_flat_field,
const char *  context,
const char *  recipe_name 
)

Main standard star data reduction pipeline orchestration function.

Parameters
framesetInput frameset containing raw/calibration frames
parlistRecipe parameters from command-line/config file
apply_flat_fieldFlag: CPL_TRUE=apply flat field, CPL_FALSE=skip flat
contextRecipe context name (e.g., "eris")
recipe_nameName of the calling recipe
Returns
CPL_ERROR_NONE on success, error code otherwise

This is the main orchestration function for standard star observations. It executes a complete data reduction pipeline from raw exposures to calibrated products, with different processing paths depending on observation type.

Processing Workflow:

  1. Initialization and Parameter Fetching**

Identifies observation type from frameset tags (STD, STD_FLUX, PSF_CALIBRATOR, etc.)

  • Fetches recipe parameters and configures processing options
  • Initializes SOF (Set of Frames) structure with calibration files
    1. Exposure Processing** (eris_ifu_jitter_process_exposures)
  • Processes individual raw exposures
  • Applies detector corrections (linearity, dark, bad pixels)
  • Applies flat field if requested
  • Generates intermediate products
    1. Cube Generation** (eris_ifu_jitter_process_cubes)
  • Constructs 3D data cubes from processed exposures
  • Applies wavelength calibration
  • Performs geometric distortion correction
  • Generates different cube types based on processing stage: Basic cubes (OBJECT_CUBE, STD_CUBE, STD_FLUX_CUBE, PSF_CUBE, PUPIL_CUBE) Differential atmospheric refraction corrected (DAR_*) Sky-tweaked cubes (TWEAKED_*)
    1. Cube Combination** (if multiple exposures)
  • Combines/co-adds multiple cubes using HDRL functionality
  • Applies pixel-by-pixel combination with outlier rejection
  • Generates co-added cube products (*_COADD)
  • Special handling for single exposure: duplicates tags and collapses to mean
    1. Pupil Shift Computation** (PUPIL_LAMP/PUPIL_SKY only)
  • Computes pupil alignment shifts
  • Generates quality control parameters
    1. Spectral Extraction** (eris_ifu_jitter_extract)
  • Extracts 1D spectra from combined cubes
  • Uses optimal extraction or aperture photometry
  • Generates SPECTRUM products
    1. Instrumental Response Computation** (STD with flat field)
  • eris_response_compute(): Computes instrumental response curve
  • Requires: STD observation, extracted spectrum, flat field applied
  • Output: RESPONSE_CURVE product
    1. System Efficiency Computation** (STD without flat field)
  • eris_efficiency_compute(): Computes telescope+instrument efficiency
  • Requires: STD_FLUX observation, extracted spectrum, no flat field, flux standard catalog, extinction coefficients
  • Output: EFFICIENCY_CURVE product
    1. Flux Calibration**
  • eris_flux_calibrate_spectra(): Calibrates extracted spectra
  • eris_flux_calibrate_cube2(): Calibrates combined data cubes
  • Requires: RESPONSE_CURVE product, flat field applied
  • Output: FLUX_CALIBRATED_SPECTRUM and FLUX_CALIBRATED_CUBE
    1. Strehl Ratio Computation** (PSF calibrators with flat field)
  • eris_ifu_stdstar_strehl_compute(): Computes Strehl ratio from PSF
  • Measures image quality by comparing to theoretical diffraction limit
  • Requires: PSF_CALIBRATOR observation, flat field applied
  • Output: Strehl ratio QC parameters

Observation Type Processing Paths:

Observation Type With Flat Field Without Flat Field
STD Response computation (No calibration output)
STD_FLUX Flux calibration Efficiency computation
PSF_CALIBRATOR Strehl computation, Flux calibration (No calibration output)
PUPIL_LAMP Pupil shift computation Pupil shift computation
PUPIL_SKY Pupil shift computation Pupil shift computation

Product Categories by Cube Type:

The function handles different product category (PRODCATG) assignments based on cube processing stage and flat field application:

  • Basic cubes: JITTER_STD_CUBE, JITTER_STD_FLUX_CUBE, etc.
  • DAR-corrected: JITTER_DAR_CUBE
  • Sky-tweaked: JITTER_TWK_CUBE
  • Co-added: *_COADD or *_COADD_NOFLAT (without flat)

Parameter Control:

Processing steps are controlled by boolean parameters in parlist:

  • <context>.combine: Enable cube combination
  • <context>.extractSource: Enable spectral extraction
  • <context>.compute-response: Enable response computation
  • <context>.compute-efficiency: Enable efficiency computation
  • <context>.flux-calibrate: Enable flux calibration
  • <context>.compute-strehl: Enable Strehl computation
Note
The apply_flat_field flag significantly affects processing:
  • With flat: enables response, flux calibration, Strehl
  • Without flat: enables efficiency computation
  • Product names include "_NOFLAT" suffix when flat is not applied
Function uses TRY/CATCH error handling macros
All intermediate structures (sof, params) are freed on exit
Products are automatically added to frameset with appropriate tags
QC parameters are logged throughout processing
See also
eris_ifu_jitter_process_exposures
eris_ifu_jitter_process_cubes
eris_ifu_combine_pbp
eris_ifu_jitter_extract
eris_response_compute
eris_efficiency_compute
eris_flux_calibrate_spectra
eris_flux_calibrate_cube2
eris_ifu_stdstar_strehl_compute

Possible cpl_error_code set in this function:

  • CPL_ERROR_NULL_INPUT if any input pointer is NULL
  • Various error codes from sub-functions (exposure processing, cube generation, etc.)

Definition at line 197 of file eris_ifu_stdstar_static.c.

References BRK_IF_ERROR, CATCH, eris_check_error_code(), eris_frameset_count_tag(), eris_frameset_duplicate_cube_tag(), eris_get_pupil_shift(), eris_ifu_combine_pbp(), eris_ifu_cube_collapse_mean_and_save(), eris_ifu_free_std_param(), eris_ifu_free_string(), eris_ifu_get_bandString(), eris_ifu_get_instrumentString(), eris_ifu_get_preopticsScaleString(), eris_ifu_jitter_extract(), eris_ifu_jitter_fetch_params(), eris_ifu_jitter_free_sofStruct(), eris_ifu_jitter_get_cube_type_string(), eris_ifu_jitter_get_procatg_and_filename(), eris_ifu_jitter_process_cubes(), eris_ifu_jitter_process_exposures(), eris_ifu_jitter_processSof(), eris_qclog_init(), and TRY.