MCCS Calibration Architecture

The diagram below attempts to describes the calibration architecture.

Calibration architecture

Calibration architecture as currently implemented 0.17.0

  • observational_context: Currently consists of station_id and channel

  • solutions: Currently gain solutions.

  • observational_name: Currently the path of the hdf5 file dumped

  • field_conditions: Currently the outsideTemperature as reported by FieldStation

Application of Solutions

The calibration solutions are applied to each allocated station during the Subarray` Configure command. If no solution is found a unit calibration will be applied as a default.

Below is the current sequence diagram:


@startuml

participant TM as TM
participant MccsSubarray as Subarray
participant MccsStation as Station
participant MccsStationCalibrator as StationCalibrator
participant MccsCalibrationStore as MccsCalibrationStore
participant SelectionRule as SelectionRule
participant postgresql as postgresql
participant SpsStation as SpsStation
participant MccsTile as MccsTile
participant ArtefactRepository as ArtefactRepository

TM -> Subarray: Configure()

loop stations

Subarray -> Station: ApplyConfiguration()
Station -> SpsStation: SetBeamformerTable()

loop tiles
SpsStation -> MccsTile: SetBeamformerRegions()
end

Station -> StationCalibrator: GetCalibration()
StationCalibrator -> MccsCalibrationStore: GetSolution()
MccsCalibrationStore -> SelectionRule: GetSolution()
SelectionRule -> postgresql: sql
postgresql -> SelectionRule: solution_path
SelectionRule -> ArtefactRepository: read(solution_path)
SelectionRule <- ArtefactRepository: solution
SelectionRule -> MccsCalibrationStore: solution
MccsCalibrationStore -> StationCalibrator: solution
StationCalibrator -> Station: solution

loop antennas
Station -> SpsStation: LoadCalibrationCoefficients()
SpsStation -> MccsTile: LoadCalibrationCoefficients()
end

Station -> SpsStation: ApplyCalibration()

loop tiles
SpsStation -> MccsTile: ApplyCalibration()
end

end

@enduml

Storing of Solutions

The MccsStationCalibrator is responsible for orchestrating the retrieval and storage of calibration solutions.

See sequence diagram for an overview of the internals:

@startuml

participant TangoUser as TangoUser
participant MccsStationCalibrator as StationCalibrator
participant MccsStation as Station
participant MccsCalibrationStore as MccsCalibrationStore
participant StationCalibrationSolverDevice as solver
participant postgresql as postgresql
participant SpsStation as SpsStation
participant MccsTile as MccsTile
participant MccsDaq as MccsDaq
participant ArtefactRepository as ArtefactRepository

TangoUser -> StationCalibrator: StartCalibrationLoop

loop channels

StationCalibrator -> Station: AcquireDataForCalibration(channel)
Station -> SpsStation: AcquireDataForCalibration(channel)
SpsStation -> MccsDaq: Configure()
SpsStation -> MccsDaq: Start()
SpsStation -> MccsTile: SetLmcDownload()
SpsStation -> MccsTile: SendDataSamples()
MccsDaq -> ArtefactRepository: dump_hdf5()
MccsDaq -> SpsStation: hdf5_data_path
SpsStation -> Station: hdf5_data_path
Station -> StationCalibrator: hdf5_data_path
StationCalibrator -> solver: Solve(\n\thdf5_data_path,\n\tsolution_path)
solver -> ArtefactRepository: write(solution_path, gain_solution)
StationCalibrator->MccsCalibrationStore: StoreSolution(\n\tsolution_path,\n\tmetadata)
MccsCalibrationStore->postgresql: Store(solution_path, metadata)

end

@enduml