##PlotReadNoisewMultChannelAvg.py
##
##PURPOSE:
##  To plot the read noise as a function of the number of channels averaged
##  in the HxRG detectors
##
##
##SETUP
from ReadNoise import *
execfile('/afs/slac/u/ki/lances/python/ThesisPlotSettings.py')

DetStr  = 'H1RG-022'
ElecStr = 'ASIC'
Mode    = 2           ##Temporal read noise in CDS Window mode
UseRef  = 0
TvFlag  = 0

##Gains in uV and e
Gain1_uVpADU = 63
Gain4_uVpADU = 15.75
Gain1_epADU  = 5.6
Gain4_epADU  = 1.4
uVpe         = 11.25

##Gain 1
CDS_1_1, ReadN_1_1, N_1_1, Bins_1_1, StdMean_1_1, StdMode_1_1, StdMed_1_1 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/FE55_Gain1_1ADC_H1RG_SIPIN_OneWindow1000_Reads_Jun30_2008_01_51_09.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag)

CDS_2_1, ReadN_2_1, N_2_1, Bins_2_1, StdMean_2_1, StdMode_2_1, StdMed_2_1 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain1_2ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_11_17.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag)

CDS_4_1, ReadN_4_1, N_4_1, Bins_4_1, StdMean_4_1, StdMode_4_1, StdMed_4_1 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain1_4ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_23_17.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag)

CDS_6_1, ReadN_6_1, N_6_1, Bins_6_1, StdMean_6_1, StdMode_6_1, StdMed_6_1 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain1_6ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_29_46.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag)

CDS_8_1, ReadN_8_1, N_8_1, Bins_8_1, StdMean_8_1, StdMode_8_1, StdMed_8_1 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain1_8ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_36_36.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag)

MeanNoise_1uV    = zeros(5, dtype=float32)
MeanNoise_1e     = zeros(5, dtype=float32)
MeanNoise_1L     = [StdMean_1_1, StdMean_2_1, StdMean_4_1, \
                  StdMean_6_1, StdMean_8_1]
MeanNoise_1uV[:] = MeanNoise_1L
MeanNoise_1uV    = MeanNoise_1uV*Gain1_uVpADU
MeanNoise_1e[:]  = MeanNoise_1L
MeanNoise_1e     = MeanNoise_1e*Gain1_epADU

mplot.figure(1)
mplot.clf()
NChannels   = [1,2,4,6,8]
mplot.plot(NChannels, MeanNoise_1L)

##Gain 4
CDS_1_4, ReadN_1_4, N_1_4, Bins_1_4, StdMean_1_4, StdMode_1_4, StdMed_1_4 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain4_1ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_05_36.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag, UseRef=UseRef)
 
CDS_2_4, ReadN_2_4, N_2_4, Bins_2_4, StdMean_2_4, StdMode_2_4, StdMed_2_4 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain4_2ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_16_59.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag, UseRef=UseRef)
 
CDS_4_4, ReadN_4_4, N_4_4, Bins_4_4, StdMean_4_4, StdMode_4_4, StdMed_4_4 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain4_4ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_26_17.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag, UseRef=UseRef)
 
CDS_6_4, ReadN_6_4, N_6_4, Bins_6_4, StdMean_6_4, StdMode_6_4, StdMed_6_4 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain4_6ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_32_42.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag, UseRef=UseRef)

CDS_8_4, ReadN_8_4, N_8_4, Bins_8_4, StdMean_8_4, StdMode_8_4, StdMed_8_4 = ReadNoise('H1RG-022','ASIC',2,'/nfs/slac/g/ki/ki03/lances/H1RG-022/ASIC/08Jun29/Dark_Gain4_8ADC_H1RG_SIPIN_OneWindow500_Reads_Jun29_2008_23_41_13.fits', XStart=0, YStart=0, XStop=5, TvFlag=TvFlag, UseRef=UseRef)

MeanNoise_4uV    = zeros(5, dtype=float32)
MeanNoise_4e     = zeros(5, dtype=float32)
MeanNoise_4L     = [StdMean_1_4, StdMean_2_4, StdMean_4_4, \
                  StdMean_6_4, StdMean_8_4]
MeanNoise_4uV[:] = MeanNoise_4L
MeanNoise_4uV    = MeanNoise_4uV*Gain4_uVpADU
MeanNoise_4e[:]  = MeanNoise_4L
MeanNoise_4e     = MeanNoise_4e*Gain4_epADU

mplot.figure(2)
mplot.clf()
NChannels   = [1,2,4,6,8]
mplot.plot(NChannels, MeanNoise_4L)

mplot.figure(0)
mplot.clf()
mplot.plot(NChannels, MeanNoise_1e, 'b-')
mplot.plot(NChannels, MeanNoise_1e, 'bo', label=r'Gain 1: 5.6 e$^{-}$/ADU')
mplot.plot(NChannels, MeanNoise_4e, 'r-')
mplot.plot(NChannels, MeanNoise_4e, 'ro', label=r'Gain 4: 1.4 e$^{-}$/ADU')
mplot.ylabel(r'\textbf{Temporal Noise (e$^{-}$)}', fontsize=14)
mplot.xlabel(r'\textbf{Number of Channels}', fontsize=14)
mplot.title(r'\textbf{Noise for Science Pixels on H1RG-022}', fontsize=14)
mplot.legend(numpoints=1)
YeLim  = mplot.ylim()
mplot.twinx()
mplot.ylim([YeLim[0]*uVpe,YeLim[1]*uVpe])
mplot.ylabel(r'\textbf{Temporal Noise ($uV$)}', fontsize=14)


