#PURPOSE:
#
#To Plot 1/f noise in the hybrid CMOS detectors
#
execfile('/afs/slac/u/ki/lances/python/python_HxRG/HxRG_Setup.py')

FitsFileName = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec16/Dark/Dark_Gain4_8ADC_20.00V_100_H2RG_SIPIN_100_Reads_Dec16_2008_19_16_35.fits'
FitsFileName = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec16/Dark/Dark_Gain4_8ADC_20.00V_140_H2RG_SIPIN_100_Reads_Dec17_2008_02_58_24.fits'
FitsFileName = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec16/Dark/Dark_Gain4_8ADC_20.00V_160_H2RG_SIPIN_100_Reads_Dec17_2008_06_04_29.fits'

FitsHDU1  = pyfits.open(FitsFileName)
FirstFrame = 40
LastFrame  = 42
TRows      = 2048 
Im         = FitsHDU1[0].section[FirstFrame:LastFrame, : , :].astype(int32)
Im         = Im[:, :, 512: 1024]
Rows       = 2048*(LastFrame-FirstFrame-1)
Im1d       = zeros(Rows, dtype=float32) 

for i in arange(Rows):
  Im1d[i] = mean(Im[i/TRows+1, mod(i, TRows), :]-(Im[0, mod(i, TRows), :]))

NumSamp   = Rows
SampInt   = 0.0052                             #Time of row is 0.0052 seconds
SampTimes = arange(NumSamp)*SampInt            #Times of sampling
FSpac     = 1./(NumSamp*SampInt)               #Frequency Spacing
KVals     = FSpac*(-NumSamp/2+arange(NumSamp)) #KVals for full FFT
KValsReal = FSpac*arange(NumSamp/2+1)          #KVals for real FFT

Fig=mplot.figure(0)
mplot.clf()
Fig.add_axes([0.12, 0.14, 0.84, 0.82])
mplot.loglog(KValsReal, rfft(Im1d).real**2)
mplot.xlim(0.1, 100)
mplot.ylim(0.001, 1e7)
mplot.xlabel(r'\textbf{Log Frequency (Hz)}')
mplot.ylabel(r'\textbf{Log Power Spectral Density}')
mplot.figtext(0.2, 0.30,  r'\textbf{Temp = 100 K}', size=13)
mplot.figtext(0.2, 0.24,  r'\textbf{$V_{SUB}$ = 20 V}', size=13)
mplot.savefig('/nfs/slac/g/ki/ki04/lances/LSST/KPNO/Latex/Thesis/ReadNoise/Figures/PowerSpectralDensityOfReadNoiseSciPix.png')
mplot.savefig('/nfs/slac/g/ki/ki04/lances/LSST/KPNO/Latex/Thesis/ReadNoise/Figures/PowerSpectralDensityOfReadNoiseSciPix.eps')
