import matplotlib.pyplot as plt
import IQMixer.IQCalib as IQ
import Analyse_Fit_SingleKID as FitSingle
import Analyse_PSD as PSD
import FileReader as reader

IQCorrectionfile = 'IQMixer_Calib/20160803_1M_BOX/EllipseFit_0dBm_2000MHz_8000MHz.csv'
sweepdata_folder = "../../../MeasurementResult/20160814_Al_Noguchi/"
sweepdata_file = 'Sweep_4579MHz'
freq, I, Q = reader.ReadSweep(sweepdata_folder, sweepdata_file)
paras = IQ.IQ_GetPara(IQCorrectionfile, int(round(freq[len(freq) / 2] / 1e6)))
I_mixercalibrated, Q_mixercalibrated = IQ.IQ_CorrtBarends(paras, I, Q)

####   CUT   ####
bandwidth = 1e6
freq, real, imag = reader.CutSweep(bandwidth, freq, I_mixercalibrated,
                                   Q_mixercalibrated)
comp = np.asarray([real[i] + imag[i] * 1j for i in range(0, len(real))])

### Fit ###
tau = 45e-9
a, a_err, alpha, alpha_err, tau, tau_err, phi0, phi0_err, fr, fr_err, Qr, Qr_err, Qc, Qc_err, Qi = FitSingle.Fit_7parameterIQ1(
    freq, comp, tau)
fitIQ1 = a * np.exp(1j * alpha) * np.exp(
    -2 * np.pi * 1j * freq * tau) * (1 - (Qr / Qc * np.exp(1j * phi0)) /
                                     (1 + 2 * 1j * Qr * (freq - fr) / fr))
comptilt = comp * np.exp(2 * np.pi * 1j * freq * tau)
plt.axis('equal')
plt.plot(I_mixercalibrated, Q_mixercalibrated, 'b')
plt.plot(fitIQ1.real, fitIQ1.imag, '.r')
plt.show()
print fr