from finesse.model import Node from finesse.components.general import borrows_nodes from finesse.components.readout import ReadoutRF from finesse.detectors.general import MaskedDetector from finesse.parameter import float_parameter @borrows_nodes() @float_parameter("f", "Frequency") @float_parameter("phase", "Phase") class MaskedReadoutRF(ReadoutRF, MaskedDetector): def __init__( self, name: str, optical_node: Node, *, f: float = 0.0, phase: float = 0.0, output_detectors: bool = False, pdtype: None | str | dict[str, str] = None, ): super().__init__( name, optical_node, f=f, phase=phase, output_detectors=output_detectors, pdtype=pdtype, ) MaskedDetector.__init__(self, name) @property def has_mask(self) -> int: return len(self.mask)