Source code for cabaret.focuser
from dataclasses import dataclass
[docs]
@dataclass
class Focuser:
"""
A simple focuser model for simulating the effect of defocus on image quality.
"""
position: float = 10_000
"""The current focus position of the focuser."""
best_position: float = 10_000
"""The optimal focus position for best image quality."""
scale: float = 100
"""The scale factor that determines how quickly defocus degrades seeing."""
max_seeing_multiplier: float = 5.0
"""The maximum factor by which seeing can be increased due to defocus."""
@property
def seeing_multiplier(
self,
) -> float:
"""Factor by which the seeing is increased due to defocus."""
offset = abs(self.position - self.best_position)
return min(1 + offset / self.scale, self.max_seeing_multiplier)