;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Lance Simms, Stanford University 2009
;function update_header_xrg
;
;PURPOSE:
;	To add keywords to the fits header of a file generated in 
;	the data reduction for the HxRG Images. 
;	
;	The keywords are taken from the KeyStr structure that is
;	instantiated at the beginning of each script
;
;INPUTS:
;	FitsHeader: The header to be updated
;OUTPUTS:
;       FitsHeader: The header with the keywords from keystr included
;
function Update_Header_Xrg, FitsHeader

common KeyParams

;Ramp Parameters
FxADDPar, FitsHeader, 'NREADS',   KeyStr.NReads, $
	'Number of Reads per Group'
FxADDPar, FitsHeader, 'NGROUPS',  KeyStr.NGroups, $
	'Number of Groups in Ramp'
FxADDPar, FitsHeader, 'NDROPS',   KeyStr.NDrops,  $
	'Number of Drops per Group'
FxADDPar, FItsHeader, 'TOTREADS', KeyStr.TotalReads, $
	'Total Number of Reads in Ramp'
FxADDPar, FitsHeader, 'FILTER',   KeyStr.ThisFilter, $
	'Filter Used'
FxADDPar, FitsHeader, 'ITIME', KeyStr.ITime, $
	'Integration time for exposure'
FxADDPar, FitsHeader, 'WINDOWM', Keystr.WindowMode, $
	'0-Full Frame Mode; 1-Window Mode'
FxADDPar, FitsHeader, 'WINDOWS', KeyStr.NumWindows, $
	'Number of windows used in window mode'

;Pointing/WCS Parameters
FxADDPar, FitsHeader, 'RA',     KeyStr.RA,      'Right Ascension (Hours)'
FxADDPar, FitsHeader, 'DEC',    KeyStr.DEC,     'Declination (Degrees)'
FxADDPar, FitsHeader, 'ZD',     KeyStr.ZD,	'Zenith Distance (Degrees)'
FxADDPar, FitsHeader, 'AZ',     KeyStr.AZ,      'Azimuth (Degrees)'
FxADDPar, FitsHeader, 'HA',     KeyStr.HA,      'Hour Angle (Hours)'
FxADDPar, FitsHeader, 'LST',	KeyStr.LST,	'Local Sidereal Time'
FxADDPar, FitsHeader, 'UT',	KeyStr.UT,	'Universal Time (Hours)'

;Calculate airmass using routine by E. Gawiser - RA and DEC are bad
;KeyStr.AirMass = airmass(KeyStr.LAT,KeyStr.DEC,KeyStr.HA)
KeyStr.AirMass = 1/cos(KeyStr.ZD*!pi/180.)
FxADDPar, FitsHeader, 'AIRMASS', KeyStr.AIRMASS, $
	'Airmass'
FxADDPar, FitsHeader, 'LAT',     KeyStr.LAT,	 $
	'Latitude of Observatory'
FxADDPar, FitsHeader, 'ITIME',   KeyStr.ITIME,	 $
	'Integration Time'
FxADDPar, FitsHeader, 'CDELT1',  KeyStr.CDELT1,  $
	'Degress Per Pixel'
FxADDPar, FitsHeader, 'CDELT2',  KeyStr.CDELT2,  $
	'Degrees Per Pixel'
FxADDPar, FitsHeader, 'CRVAL1',  KeyStr.CRVAL1,  $
	'RA at Frame Center, J2000 (deg)'
FxADDPar, FitsHeader, 'CRVAL2',  KeyStr.CRVAL2,  $
	'DEC at Frame Center, J2000 (deg)'
FxADDPar, FitsHeader, 'CTYPE1',  KeyStr.CTYPE1,  $
	'Right Ascension'
FxADDPar, FitsHeader, 'CTYPE2',  KeyStr.CTYPE2,  $
	'Declination'
FxADDPar, FitsHeader, 'CRPIX1',  KeyStr.CRPIX1,  $
	'Origin for Coordinates X'
FxADDPar, FitsHeader, 'CRPIX2',  KeyStr.CRPIX2,  $
	'Origin for Coordinates Y'
FxADDPar, FitsHeader, 'TIME', KeyStr.Time, $
	'The time when the original file was created'

;Voltages and Temps, etc.
FxADDPar, FitsHeader, 'PAMPGAIN', KeyStr.Gain, $
	'Gain of the preamps'
FxADDPar, FitsHeader, 'PIXRATE', KeyStr.PixRate, $
	'Pixel Rate in microseconds'
FxADDPar, FitsHeader, 'VRESET', KeyStr.VRESET, $
	'Reset voltage for Detector'
FxADDPar, FitsHeader, 'DSUB', KeyStr.DSUB, $
	'Detector substrate voltage'
FxADDPar, FitsHeader, 'VBIASGATE', KeyStr.VBIASGATE, $
	'Bias for pixel source follower'
FxADDPar, FitsHeader, 'DRAIN', KeyStr.DRAIN, $
	'Bias for the drain voltage'
FxADDPar, FitsHeader, 'VDD', KeyStr.VDD, $
	'Digital power supply voltage'
FxADDPar, FitsHeader, 'VDDA', KeyStr.VDDA, $
	'Analog power supply voltage'
FxADDPar, FitsHeader, 'CELLDRAIN', KeyStr.CELLDRAIN, $
	'Detector Bias voltage'
FxADDPar, FitsHeader, 'VBIASPWR', KeyStr.VBIASPWR, $
	'Detector bias voltage'
FxADDPar, FitsHeader, 'VSUB', KeyStr.VSUB, $
	'Detector backside contact voltage'

return, FitsHeader

end 
