import gwpy.timeseries
import numpy as np


#see alogs 62213 and 63812
start_time = 1420908058
span = 300
host_server='nds.ligo.caltech.edu'
port_number=31200
data = gwpy.timeseries.TimeSeriesDict.fetch(['H1:IMC-IM4_TRANS_NSUM_OUT16', 'H1:IMC-PWR_IN_OUT16', 'H1:ASC-AS_C_NSUM_OUT16', 'H1:OMC-DCPD_SUM_OUT16'],start_time,start_time+span,
                                                            host=host_server,
                                                            port=port_number,
                                                            verbose=True)

medians_dict = {}
for chan in data.keys():
    median = np.median(data[chan].value)
    medians_dict[chan] = median
    print(chan + ' ' + str(median))



#copied directly from Craig: https://git.ligo.org/aligo_commissioning/power_budget/-/blob/master/code/im4_trans_calibration_via_ham6_power_measurement.py

trans_prm = 3.1e-2
trans_pr2 = 229e-6
trans_pr3 = 3.17e-6
trans_bs = 50e-2
trans_itmx = 1.5e-2
trans_sr3 = 3.5e-6
trans_sr2 = 7.5e-6
trans_srm = 32.34e-2
trans_ofi = 0.99

expected_ham6_over_prm = (
    trans_ofi
    * trans_srm
    * (1 - trans_sr2)
    * (1 - trans_sr3)
    * trans_bs
    * (1 - trans_itmx)
    * (1 - trans_bs)
    * (1 - trans_pr3)
    * (1 - trans_pr2)
    * trans_prm
)

reported_HAM6_over_PRM = medians_dict['H1:ASC-AS_C_NSUM_OUT16']/medians_dict['H1:IMC-IM4_TRANS_NSUM_OUT16']

correction_to_IM4 = reported_HAM6_over_PRM/expected_ham6_over_prm

print('suggested correction to IM4 trans based on AS_C calibration and known transmissions: ' + str(correction_to_IM4))

reported_IO_efficency = medians_dict['H1:IMC-IM4_TRANS_NSUM_OUT16']/medians_dict['H1:IMC-PWR_IN_OUT16']

corrected_IO_efficency = reported_IO_efficency * correction_to_IM4

print('blah')