##PURPOSE:
##  To plot read noise for the nights of 07Dec12 and 08Dec15 and show the 
##  improvement in a single plot.
##CALLING SEQUENCE:
## run PlotReadNoiseComparison_07Dec12_08Dec11.py [DetStr] [Temp] [Date]
##
execfile('/afs/slac/u/ki/lances/python/python_HxRG/HxRG_Setup.py')
execfile('/afs/slac/u/ki/lances/python/ThesisPlotSettings.py')
import ReadNoise; reload(ReadNoise); from ReadNoise import *
from Return_IPCValsFromFE55 import *

PlotDir = '/nfs/slac/g/ki/ki04/lances/LSST/KPNO/Latex/Thesis/ReadNoise/Figures/'
SaveImg = 1
TvFlag  = 0
TempArr     = []
NoiseArrGau = []
NoiseArrStd = []
##GET THE TEMPERATURES 1 by 1
DetStr   = 'H2RG-001'
ElecStr  = 'ASIC'
Date     = 'Dec07'
Temp     = 100
Gain     = 4
ActGain  = 2
WindowM  = 1
CGain08 = 1620./1330

XStart = 04
XStop  = 300
YStart = 4
YStop  = 260

##100 K
'''
Temp     = 90
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_90K.txt'
Np_90, StdNoise90, GauNoise90 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise90[0])
NoiseArrStd = append(NoiseArrStd, StdNoise90[0])
'''

##100 K
Temp     = 100
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_100K.txt'
Np_100, StdNoise100, GauNoise100 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise100[0])
NoiseArrStd = append(NoiseArrStd, StdNoise100[0])

##110 K
Temp     = 110
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_110K.txt'
Np_110, StdNoise110, GauNoise110 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise110[0])
NoiseArrStd = append(NoiseArrStd, StdNoise110[0])


##120 K
Temp     = 120
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_120K.txt'
Np_120, StdNoise120, GauNoise120 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise120[0])
NoiseArrStd = append(NoiseArrStd, StdNoise120[0])

##130 K
Temp     = 130
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_130K.txt'
Np_130, StdNoise130, GauNoise130 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise130[0])
NoiseArrStd = append(NoiseArrStd, StdNoise130[0])


##140 K
Temp     = 140
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_140K.txt'
Np_140, StdNoise140, GauNoise140 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise140[0])
NoiseArrStd = append(NoiseArrStd, StdNoise140[0])

#150 K 
Temp     = 150 
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_150K.txt' 
Np_150, StdNoise150, GauNoise150 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise150[0])
NoiseArrStd = append(NoiseArrStd, StdNoise150[0])

#160 K 
Temp     = 160 
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_160K.txt' 
Np_160, StdNoise160, GauNoise160 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise160[0])
NoiseArrStd = append(NoiseArrStd, StdNoise160[0])

#170 K 
Temp     = 170 
ReadNoiseFile = 'H2RG_001_ASICSpatialReadNoiseFiles10Reads_25V_170K.txt'
Np_170, StdNoise170, GauNoise170 = ReadNoise(DetStr, ElecStr, 0, ReadNoiseFile, TvFlag=TvFlag,\
       MinRN = -28, MaxRN=28, XStart=XStart, XStop=XStop, YStart=YStart, YStop=YStop)
TempArr     = append(TempArr, Temp)
NoiseArrGau = append(NoiseArrGau, GauNoise170[0])
NoiseArrStd = append(NoiseArrStd, StdNoise170[0])


#Get the different conversion gains
ConversionGains = []

for Temp in TempArr:
  print Temp
  TopPixMean, BotPixMean, RigPixMean, LefPixMean, TLPixMean, TRPixMean, \
  BLPixMean,  BRPixMean,  ConversionGain, SinglePixFrac, TotalEvents, \
  TotalSinEvents = Return_IPCValsFromFE55(Temp, Date)
  ConversionGains = append(ConversionGains, ConversionGain)

Fig=mplot.figure(0)
mplot.clf()
mplot.plot(TempArr, NoiseArrGau, 'ro')
mplot.xlabel(r'\textbf{Temperature (K)}')
mplot.ylabel(r'\textbf{CDS Read Noise - No Conversion Gain (RMS)}')

Fig=mplot.figure(1)
mplot.clf()
mplot.plot(TempArr, ConversionGains*NoiseArrGau, 'rs')
mplot.xlabel(r'\textbf{Temperature (K)}')
mplot.ylabel(r'\textbf{CDS Read Noise (RMS $e^{-}$)}')
mplot.figtext(0.20, 0.78,r'\textbf{$V_{BIASGATE}\ =\ 2.05\ V$}', size=13)
mplot.figtext(0.26, 0.70,r'\textbf{$V_{SUB}\ =\ 25.0\ V$}', size=13)
mplot.xlim(90, 180)
mplot.ylim(7, 12)
mplot.savefig(PlotDir+'ReadNoiseVsTemp_H2RG_001_25V.png')
mplot.savefig(PlotDir+'ReadNoiseVsTemp_H2RG_001_25V.eps')

Fig=mplot.figure(2)
mplot.clf()
mplot.plot(TempArr, ConversionGains, 'ro')
mplot.xlabel(r'\textbf{Temperature (K)}')
mplot.ylabel(r'\textbf{Conversion Gain ($e^{-}/ADU$)}')
mplot.figtext(0.6,0.70,r'\textbf{$V_{BIASGATE}\ =\ 2.05 V$}', size=14)
mplot.figtext(0.6,0.65,r'\textbf{$V_{SUB}\ =\ 25 V$}', size=14)
