
;+ ***********************************************************************
; NAME:
;	WRITE_FLUXNRH
;
; PURPOSE:
;	Ecriture d'un fichier de flux , format FITS
;
; CATEGORY:
;	Traitements NRH
;
; CALLING SEQUENCE:
;	WRITE_FLUXNRH, File,  Header, Flux, Time, Str_lim
;
; INPUTS:
;	FILE	Nom du fichier a ecrire
;
;	HEADER	Header FITS du fichier ayant servi a calculer le flux
;
;	FLUX	Tableau de flux
;
;	TIME	Tableau des heures corespondantes (ms)
;
;	STR_LIM	Structure contenant les limites definies pour le calcul
;			(voir RH_2D)	
;
; PROCEDURE:
;	Cette procedure modifie le header d'origine et ecritle fichier FITS.
;	Elle genere un Header primaire puis le Header modifie en EXTENSION 1
;	puis enregistre les tableaux de TEMPS et de FLUX sous forme de table
;	binaire avec en ligne 1 et les colonnes TIME et FLUX.
;	Dans le cas ou on calcule le flux sur plusieurs regions, en conservant
;	les autres parametres, le resultat est enregistre a la fin du fichier
;	dans une nouvelle extension	
;
; EXAMPLE:
;	    CPT_FLUX_NRH2, Str_fic.file, Str_lim, Flux, Time
;           Header = HEADFITS(str_fic.file, EXTEN = 1)
;           File= MOD_NRHFILE(Str_fic.file,CONTENT='f', Heure=Str_lim.hd, $
;                        DIRECTORY= 'Current')
;            WRITE_FLUXNRH,File, Header, Flux, Time, Str_lim
;	Calcule le flux, en fonction des limites donnees dans str_lim
;	Lit le Header du fichier d'images
;	Definit le nom du fichier de flux
;	Ecrit le fichier
;
; MODIFICATION HISTORY:
;	Ecrit par: J BONMARTIN le 13/02/98 (bonmartin@obspm.fr)
;		Le 10/05/99	Enleve FILENAME dans le HEADER d'extension (JB)
;-*******************************************************************

PRO WRITE_FLUXNRH, File, Header, Flux, Time, Str_lim, ARRAY=array, $
					STK_PARA= para

	IF NOT KEYWORD_SET ( ARRAY ) THEN BEGIN
		Print,'WARNING, array indication no present' 
		Array='' & END
	IF NOT KEYWORD_SET ( PARA ) THEN BEGIN
		Print,'WARNING, physical parameter no present' 
		Para= '' & END

	r= FINDFILE(File)
	If R(0) EQ '' THEN BEGIN
		ERRMSg=''
		m=widget_message('The flux file must be opended first')
	Return & END

	IF R(0) NE '' THEN BEGIN
		Hprim = HEADFITS(File)
		NB_xtend = FXPAR(Hprim, 'N_EXTEND') + 1
		FXHMODIFY, File, 'N_EXTEND', NB_xtend
	End

	SZ= (size(flux))(1)		
		SXDELPAR, Header, 'TFORM3'
		SXDELPAR, Header, 'TDIM3'
		SXDELPAR, Header, 'TTYPE3'
		IF FXPAR(Header, 'TFIELDS') EQ 4 THEN BEGIN
			SXDELPAR, Header, 'TFORM4'
			SXDELPAR, Header, 'TDIM4'
			SXDELPAR, Header, 'TTYPE4'
		ENDIF		
		SXDELPAR, Header, 'DATAMAX'
		SXDELPAR, Header, 'DATAMIN'
		SXADDPAR, Header, 'NAXIS1', (size(time))(1) *8
		SXADDPAR, Header, 'NAXIS2', 1
		SXADDPAR, Header, 'TFIELDS', 2
		SXADDPAR, Header, 'TFORM1', $
			strcompress(string(sz),/REMOVE_ALL)+'J    '
		SXADDPAR, Header, 'TFORM2', $
			strcompress(string(sz),/REMOVE_ALL)+'E    '
		SXADDPAR, Header, 'TTYPE2', 'FLUX     '
		SXADDPAR, Header, 'XLIML', str_lim.xd
		SXADDPAR, Header, 'XLIMH', str_lim.xf
		SXADDPAR, Header, 'YLIML', str_lim.yd
		SXADDPAR, Header, 'YLIMH', str_lim.yf
		SXADDPAR, Header, 'PHYSPARA', Para
		SXADDPAR, Header, 'NRH_ARR', Array

	FXBHMAKE,Hb, 1
	FXBCREATE, Unit, File , Header
	FXBWRITE , Unit, Time, 1,1
	FXBWRITE , Unit, Flux, 2,1
	FXBFINISH, Unit

END