def add_ase(self, signal: Signal):
        '''

        :param signal:the edfa's input signal, if the signal is wdm, then the lambda will use
        center lambda, correction needed in the future
        :return:
        '''

        if check_array.isscalar(signal.center_lambda_in_m):
            sigma = np.sqrt(self.nf_lin * PLANK * CLIGHT /
                            signal.center_lambda_in_m * (self.gain_lin - 1) *
                            signal.sps * signal.symbol_rate_in_hz)
        else:
            max_lam = np.max(signal.center_lambda_in_m)
            min_lam = np.min(signal.center_lambda_in_m)
            center = 2 * max_lam * min_lam / (max_lam + min_lam)
            sigma = np.sqrt(self.nf_lin * PLANK * CLIGHT / center *
                            (self.gain_lin - 1) * signal.sps *
                            signal.symbol_rate_in_hz)

        noise = 0.5 * sigma * (
            np.random.randn(2, signal.sps * signal.data_len) +
            1j * np.random.randn(2, signal.sps * signal.data_len))

        signal.data_sample = signal.data_sample + noise