"""
The ska_oso_pdm.sb_definition.scan_definition module defines
simple Python representation of a single observation scan
"""
__all__ = ["ScanDefinition", "ScanDefinitionID"]
from typing import List, Optional
from pydantic import Field
from ska_oso_pdm._shared import (
PdmObject,
ScanDefinitionID,
TargetID,
TerseStrEnum,
TimedeltaMs,
)
from .csp.csp_configuration import CSPConfigurationID
from .dish.dish_configuration import DishConfigurationID
from .mccs.target_beam_configuration import TargetBeamConfigurationID
from .sdp import ScanTypeID
class PointingCorrection(TerseStrEnum):
"""
Operation to apply to the pointing correction model.
MAINTAIN: continue applying the current pointing correction model
UPDATE: wait for (if necessary) and apply new pointing calibration solution
RESET: reset the applied pointing correction to the pointing model defaults
"""
MAINTAIN = "MAINTAIN"
UPDATE = "UPDATE"
RESET = "RESET"
[docs]
class ScanDefinition(PdmObject):
"""
ScanDefinition represents the instrument configuration for a single scan.
:param scan_definition_id: the unique ID for this scan definition
:param scan_duration: scan duration
:target_ref: ID of target to observe
:target_beam_configuration_refs: SKA LOW sub-array beam configurations to apply during this scan.
:dish_configuration_ref: SKA MID dish configuration ID during this scan.
:scan_type_ref: SKA MID scan type ID
:csp_configuration_ref: SKA MID Central Signal Processor ID
:pointing_correction: operation to apply to the pointing correction model.
"""
scan_definition_id: Optional[ScanDefinitionID] = None
scan_duration: TimedeltaMs
target_ref: Optional[TargetID] = None
target_beam_configuration_refs: List[TargetBeamConfigurationID] = Field(
default_factory=list
)
dish_configuration_ref: Optional[DishConfigurationID] = None
scan_type_ref: Optional[ScanTypeID] = None
csp_configuration_ref: Optional[CSPConfigurationID] = None
pointing_correction: PointingCorrection = PointingCorrection.MAINTAIN