gw.transforms.detector_transforms.ApplyCalibrationToWaveform

gw.transforms.detector_transforms.ApplyCalibrationToWaveform(
    ifo_list,
    data_domain,
)

Apply calibration correction to the waveform based on calibration parameters in extrinsic_parameters.

Detector calibration uncertainty is modeled as described in https://dcc.ligo.org/LIGO-T1400682/public

Gravitational wave data \(d\) is assumed to be of the form

\[d(f) = h_{obs}(f) + n(f),\]

where \(h_{obs}\) is the observed waveform and \(n\) is the noise. Since the detector is not perfectly calibrated, the observed waveform is not identical to the true waveform \(h(f)\). Rather, it is assumed to have corrections of the form

\[h_{obs}(f) = h(f) * (1 + \delta A(f)) * \exp(i \delta \phi(f)) = h(f) * \alpha(f),\]

where \(\delta A(f)\) and \(\delta \phi(f)\) are frequency-dependent amplitude and phase errors. Under the calibration model, these are parametrized with cubic splines, defined in terms of calibration parameters \(A_i\) and \(\phi_i\), defined at log-spaced frequency nodes,

\[ \delta A(f) &= \mathrm{spline}(f; {f_i, \delta A_i}), \\ \delta \phi(f) &= \mathrm{spline}(f; {f_i, \delta \phi_i}). \]

Calibration parameters (A, ) should be in sample[“extrinsic_parameters”] with keys like “recalib_H1_amplitude_0”, “recalib_H1_phase_0”, etc.

  • If values are arrays of shape (N,), applies N calibration curves, adding a leading dimension to the waveform.
  • If values are scalars, applies a single calibration curve.
  • If no calibration parameters found, passes through unchanged.

The calibration spline model is lazily initialized on the first call, inferring num_calibration_nodes from the number of calibration parameters present.

Parameters

Name Type Description Default
ifo_list InterferometerList List of Interferometers present in the analysis. required
data_domain Domain Domain on which data is defined. required

Attributes

Name Description
data_domain
ifo_list