;+ ***********************************************************************
; NAME:
;	POSTOFITS
;
; PURPOSE:
;	Transforme un fichier de positions genere par TRI_CENTRES en fichier FITS.
;	Ne retient que les positions dont le nombre de sources est superieur a nbhit.
;
; CATEGORY:
;	RH_2D, Recherche de position
;
; CALLING SEQUENCE:
;	POSTOFITS, Fich1, Fich2, Fich3, Nbposi, Nbhit
;
; OPTIONAL INPUTS:
;	Fich1:	nom du fichier binaire dans lequel est stocke la description
;		des volumes gaussiens tries en positions
;	Fich2:	nom du fichier fits de positions
;	Fich3:	nom du fichier images qui a servi pour la recherche des positions
;	Nbposi: nombre de positions contenues dans Fich1
;	Nbhit:	nombre de sources minimum a retenir par position
;
; MODIFICATION HISTORY:
;	Ecrit par: C. Renié 07/1998
;		Le 13/09/00 Rajout BUFSIZE=0 pour OPENR
;-*******************************************************************


PRO POSTOFITS, fichposi, fichfits, fichimg, nbposi, nbhit, inf2d
	
	; initialise le fichier fits s'il existe deja
	IF (FINDFILE(fichfits))(0) EQ fichfits THEN BEGIN
		create_nrh_pfile, fichfits, fichimg
	ENDIF
		
	t = {temps:0L, numpos:0.0, source:{GAUSS}}
	OPENR, filepos, fichposi, /GET_LUN, BUFSIZE=0

	FOR pos=0, nbposi-1 DO BEGIN
		; determine le nombre de sources de la position
		nbsource = 0
		WHILE (NOT EOF(filepos)) DO BEGIN 
			READU, filepos, t	
			IF t.numpos EQ pos THEN nbsource = nbsource + 1
		ENDWHILE
		;PRINT, 'posi ', pos, 'nbhits=', nbsource
		POINT_LUN, filepos,0	; retour au debut du fichier de positions
		IF nbsource GT nbhit THEN BEGIN
			posi = REPLICATE({temps:0L, source:{GAUSS}, flux:0.0}, nbsource)
			; selection et copie des sources de la position
			i = 0
			WHILE (NOT EOF(filepos)) DO BEGIN 
				READU, filepos, t
				IF t.numpos EQ pos THEN BEGIN
					posi(i).temps = t.temps
					posi(i).flux = cp_fluxpos_nrh2(t.source, inf2d.Ray, inf2d.Freq, $
						inf2d.Npx, inf2d.Npy)
					posi(i).source = t.source
					i=i+1	
				ENDIF
			ENDWHILE
			; tri par temps croissants
			tabindex = SORT(posi(*).temps)
			posi = posi(tabindex)
			WRITE_POSINRH, fichfits, fichimg, posi
			POINT_LUN, filepos,0	; retour au debut du fichier de positions
		ENDIF	
	ENDFOR
	FREE_LUN,filepos
END
