;+ *************************************************************************************
; NAME:
;	CALC_VOLGAUSS
;
; PURPOSE:
;	Calcul du volume gaussien a partir des parametres d'une ellipse et de la valeur 
;	du pic	
;
; CATEGORY:
;	RH_2D, recherche de positions
;
; CALLING SEQUENCE:
;	CALC_VOLGAUSS, Ellip, Dimx, Dimy, Tab
;
; INPUTS:
;	Ellip		structure decrivant la source
;	Dimx, Dimy:	dimensions de l'image d'origine
;
; OUTPUTS:
;	Tab:		tableau 2D contenant le volume gaussien
;
; EXAMPLE:
;
; MODIFICATION HISTORY:
;	Ecrit par: C Renie, decembre 1997 
;- *************************************************************************************

PRO CALC_VOLGAUSS, ellip, dimx, dimy, tab

	x = FINDGEN(dimx) # REPLICATE(1.0, dimy)
	y = REPLICATE(1.0, dimx) # FINDGEN(dimy)
	teta = -ellip.tet
	xprim = (x-ellip.xmax)*COS(teta) - (y-ellip.ymax)*SIN(teta)
	yprim = (x-ellip.xmax)*SIN(teta) + (y-ellip.ymax)*COS(teta)
	grx = 1/SQRT(ellip.gra)
	gry = 1/SQRT(ellip.grb)
	u = (xprim/grx)^2 + (yprim/gry)^2 
	u = -u*ALOG(2.0)
	badvalues=WHERE ( u LT -80.0 , count)
	IF count GT 0 THEN  u(badvalues) = -80.0
	tab = ellip.max*EXP(u)
	
END

PRO CALC_VOLGAUSS1, ellip, coeff, dimx, dimy, tab

	temp = ellip
	pab = (temp.gra + temp.grb)/coeff
	mab = (temp.gra - temp.grb)/coeff
	co = COS(2*temp.tet)
	si = SIN(2*temp.tet)
	y=INDGEN(dimy)-temp.ymax*coeff
	FOR i=0, dimx-1 DO BEGIN
		x = i*1.0 - temp.xmax*coeff
		buf = (x^2*(pab+mab*co) + y^2*(pab-mab*co))/2.0
		buf1 = buf + (x*y*si*mab)
		buf2 = -buf1*ALOG(2.0)
		badvalues=WHERE ( buf2 LT -80.0 , count)
		IF count GT 0 THEN  buf2(badvalues) = -80.0
		tab(i,*) = temp.max*EXP(buf2)
	ENDFOR

END

PRO TEST_CALC_VOLGAUSS, fichier, idpos, idsource, dimx, dimy

	str_gauss = {GAUSS, max:0.0, xmax:0.0, ymax:0.0, gra:0.0, grb:0.0, tet:0.0}
	rdline_fpos, fichier, idpos, idsource, str_gauss

	dimx = str_gauss.xmax + 10/SQRT(str_gauss.gra) & dimy = str_gauss.ymax + 10/SQRT(str_gauss.grb)
	volgaus = FLTARR(dimx,dimy)
	calc_volgauss, str_gauss, dimx, dimy, volgaus

	WINDOW, /FREE, XSIZE=512, YSIZE=512
	TVSCL, volgaus
	;SURFACE, volgaus
	PRINT, TOTAL(volgaus), dimx, dimy
	
END
