;function Median_Sky
;
;PURPOSE:
;	To produce a median value for a pixel that consists of sky background
;	in a given filter
;

function Master_Flat, Rootdir = Rootdir, Date=Date, ReducedDir = ReducedDir, $
		BlockLength = BlockLength, DarkSub = DarkSub, $
		ObjectName = ObjectName, SkyName = SkyName, $
		NReads = NReads, ThisFilter = ThisFilter, $
		OverRide = OverRide, FilterStr=FilterStr,$
		FlatDir = FlatDir, DarkDir = DarkDir

 ;Include Keyword File
 @KeywordStruct.pro

 cd, RootDir+Date

 ;Form string for dark subtraction
 If SubtractDark eq 1 then DarkSubStr = 'DarkSub' else DarkSubStr = ''

 ;Check to see if the Median Dark for 2 Reads (Flat Cadence) exists 
 DarkMedianFile = File_Search(DarkDir+'MedianDark_Blank_ForEachOf_2Reads'+FilterStr+$
		              '.fits')
 If DarkMedianFile eq '' then stop
 print, 'Using Dark Median File : ' + DarkMedianFile

 ;Check to see if the Median Flat already exists; overwrite if not
 FlatMedianFile = file_search(FlatDir+'MedianFlat_'+ThisFilter+'_ForEachOf_2Reads'+$
			      '.fits')
 If FlatMedianFile eq '' then stop
 print, 'Using Flat Median File : ' + FlatMedianFile

 print, 'Reading in images'
 Fits_Read, DarkMedianFile(0), DarkIm, DarkHeader
 Fits_Read, FlatMedianFile(0), FlatIm, FlatHeader

 ;Remove dark current
 MasterFlat = (long(FlatIm(*,*,1))-long(DarkIm(*,*,1)))-$
	      (long(FlatIm(*,*,0))-long(DarkIm(*,*,0)))

 FlatHist = histogram(MasterFlat, locations = locPix)
 plot, locPix, FlatHist, psym = 10
 
 ValidPixVals = MasterFlat(128:Naxis1-1-Ref/2, Ref/2:Naxis2-Ref/2-1)
 ValidHist = histogram(ValidPixVals, location = locValPix)
 window, 1
 plot, locValPix, ValidHist, psym = 10
 ;Print out some values
 print, 'Number of Values below zero (w/o Ch0): ' + $
	strtrim(N_elements(where(ValidPixVals lt 0)),2)
 print, 'Average value of pixels (w/o Ch0) : ' + $
	strtrim(mean(ValidPixVals), 2)
 MkHdr, MasterFlatHeader, MasterFlat
 Fits_Write, FlatDir+'MasterFlat_'+ThisFilter+'.fits', MasterFlat, MasterFlatHeader

stop

return,1

end
