uvex_transients.surveys.base.SurveySchedule.get_observations_of#

SurveySchedule.get_observations_of(coord: SkyCoord, start_time: Time | None = None, end_time: Time | None = None) → QTable[source]#

Return the "observe" rows whose footprint covers a sky position.

Useful for checking whether – and when – the survey observed a given position, e.g. to evaluate detectability of a simulated transient.

As a performance optimization, candidate rows are first narrowed down with a cheap angular-separation pre-filter using bounding_radius, then confirmed with a single, vectorized exact containment test (m4opt.fov.contains()): rather than rotating instrument_fov out to each candidate pointing and testing coord against each rotated copy in a loop (which rebuilds a WCS – the dominant cost – once per candidate row), coord is transformed into each candidate’s own local pointing frame and tested against the single, unrotated instrument_fov all at once. This is the same geometric test, just inverted to build one WCS per call instead of one per candidate row.

Parameters:
  • coord (SkyCoord) – Scalar sky position to test.

  • start_time (Time, optional) – Optional time window to restrict the search to (see get_rows_between_times()). Must be given together. If both are None (the default), every "observe" row in the schedule is considered.

  • end_time (Time, optional) – Optional time window to restrict the search to (see get_rows_between_times()). Must be given together. If both are None (the default), every "observe" row in the schedule is considered.

Returns:

The subset of table whose observed footprint contains coord, in chronological order. Empty if there is no such row.

Return type:

QTable

Raises:

ValueError – If coord is not scalar, or exactly one of start_time/end_time is given.