#Purpose:
#  To plot the anomaly associated with not clocking the 
#  array as a function of the time it was left idle.
# 
#  Two arrays are created, one contains the files in which 
#  the anomaly occured and the other contains the files 
#  that were recorded just before them.  
#The time between the two files is idle time.
#
#MODE = 0 : Sort through a directory to find the files
#MODE = 1 : Get specific files for a plot

execfile('/afs/slac/u/ki/lances/python/python_HxRG/HxRG_Setup.py')
execfile('/afs/slac/u/ki/lances/python/ThesisPlotSettings.py')
from FitRamp import *
Mode = 0
Num  = 6
if Num == 0:
  Str  = '*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H1RG-022/ASIC/08Jun29/'
elif Num == 1:
  Str  = '*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/'
elif Num == 2:
  Str  = '*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec05/HxRGTest/'
elif Num == 3:
  Str  = 'DSUB*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H1RG-022/ASIC/08Jun28/'
elif Num == 4:
  Str  = '*Window*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec11/Fe55/'
elif Num == 5:
  Str  = '*Window*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec06/Fe55/'
elif Num == 6:
  Str  = 'Dark*5.00V_*'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec13/Dark/'
elif Num == 7:
  Str  = 'Dark*10.00V_*'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec13/Dark/'
elif Num == 8:
  Str  = 'Dark*15.00V_*'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec15/Dark/'
elif Num == 9:
  Str  = '*Window*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-001/ASIC/08Dec05/Fe55/'
elif Num == 10:
  Str  = '*Window*.fits'
  Dir  = '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec14/Focus/'

if Mode == 0:
  Files = sort_files_by_date(Dir+Str)
  Files = SortFilesByTime(Files)
  NumFiles = size(Files)
  FirstFiles  = Files[0:NumFiles-2]
  SecondFiles = Files[1:NumFiles-1] 
elif Mode == 1:
  FirstFiles = [\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_H2RG_SIPIN_10_Reads_Dec20_2007_00_53_18.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_00_54_25.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_01_13_34.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_01_29_48.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_01_45_57.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_02_01_35.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_17_51.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_19_31.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_20_52.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_22_16.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_20_Reads_Dec20_2007_02_51_57.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_02_53_07.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_02_57_22.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_11_33.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_19_07.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_23_11.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_27_49.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_31_52.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_36_35.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_40_36.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_44_37.fits',\
  ]
  
  SecondFiles = [\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_00_54_25.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_01_13_34.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_01_29_48.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_01_45_57.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow2000_Reads_Dec20_2007_02_01_35.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_17_51.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_19_31.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_20_52.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_22_16.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow100_Reads_Dec20_2007_02_23_16.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_02_53_07.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_02_57_22.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_11_33.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_19_07.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_23_11.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_27_49.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_G_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_31_52.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_36_35.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_40_36.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_44_37.fits',\
  '/nfs/slac/g/ki/ki04/lances/H2RG-32-147/ASIC/07Dec19/HD53791/HD53791_Fe55_After_Dark_H2RG_SIPIN_OneWindow500_Reads_Dec20_2007_03_48_37.fits',\
  ]

IdleTimes   = []
RefPixMeans = []
SciPixMeans = []
VRESETs     = []
VBIASGATs   = []
DSUBs       = []
NAxis1s     = []
NAxis2s     = []
NAxis3s     = []
PAmpGains   = []
WindowXMins = []
WindowXMaxs = []
WindowYMins = []
WindowYMaxs = []
DetTemps    = []

for File1, File2 in zip(FirstFiles, SecondFiles):
  HxRG1 = HxRG_C(FitsFileName=File1)
  HxRG1.Get_Raw_Header(FitsFileName=File1)
  HxRG2 = HxRG_C(FitsFileName=File2)
  HxRG2.Get_Raw_Header(FitsFileName=File2)
  if HxRG2.BegHoursNum >= HxRG1.FinHoursNum:
    File1EndTimeSeconds = HxRG1.FinHoursNum*3600.+HxRG1.FinMinutesNum*60.+HxRG1.FinSecondsNum
    File2BegTimeSeconds = HxRG2.BegHoursNum*3600.+HxRG2.BegMinutesNum*60.+HxRG2.BegSecondsNum
  else:
    File1EndTimeSeconds = HxRG1.FinHoursNum*3600.+HxRG1.FinMinutesNum*60.+HxRG1.FinSecondsNum
    File2BegTimeSeconds = HxRG2.BegHoursNum*3600.+HxRG2.BegMinutesNum*60.+HxRG2.BegSecondsNum+3600.*24

  IdleTime  = File2BegTimeSeconds-File1EndTimeSeconds
  IdleTimes = append(IdleTimes, IdleTime)

  #Get the last minus first
  print File2 + ' : ' + str(IdleTime)
  if HxRG2.NAxis3 !=0:
    FitsHDU     = pyfits.open(File2)
    LastRead    = HxRG2.NAxis3
    Im0         = FitsHDU[0].section[0,:,:]+float(HxRG2.BZero)
    Im1         = FitsHDU[0].section[LastRead-1,:,:]+float(HxRG2.BZero)
    Diff        = Im1-Im0
    RefPixMean  = Diff[:,0:4].mean()
    SciPixMean  = Diff[200:210,200:210].mean()
    RefPixMeans = append(RefPixMeans, RefPixMean)
    SciPixMeans = append(SciPixMeans, SciPixMean)
    VRESETs     = append(VRESETs, HxRG2.VRESET)
    VBIASGATs   = append(VBIASGATs, HxRG2.VBIASGAT)
    DSUBs       = append(DSUBs, HxRG2.DSUB)
    NAxis1s     = append(NAxis1s, HxRG2.NAxis1)
    NAxis2s     = append(NAxis2s, HxRG2.NAxis2)
    NAxis3s     = append(NAxis3s, HxRG2.NAxis3)
    DetTemps    = append(DetTemps, HxRG2.DetTemp)
    if HxRG2.WindowM == 1:
      WindowXMins = append(WindowXMins, HxRG2.WindowXStart)
      WindowXMaxs = append(WindowXMaxs, HxRG2.WindowXStop)
      WindowYMins = append(WindowYMins, HxRG2.WindowYStart)
      WindowYMaxs = append(WindowYMaxs, HxRG2.WindowYStop)
    else:
      WindowXMins = append(WindowXMins, 0)
    WindowXMaxs = append(WindowXMaxs, 0)
    WindowYMins = append(WindowYMins, 0)
    WindowYMaxs = append(WindowYMaxs, 0)
    PAmpGains   = append(PAmpGains, HxRG2.PAmpGain)
    #print ','+str(HxRG1.DurMinutesNum)+','+str(HxRG1.DurSecondsNum)

mplot.figure(0)
mplot.clf()
mplot.plot(IdleTimes,'ro')
#ylim([-10,500])
mplot.figure(1)
mplot.clf()
mplot.plot(PAmpGains,'bo')
mplot.figure(2)
mplot.clf()
mplot.plot(RefPixMeans,'go')
mplot.plot(SciPixMeans,'ro')
mplot.figure(3)
mplot.clf()
mplot.plot(DetTemps,'yo')
