
;+ ***********************************************************************
; NAME:
;	TRACEPOS
;
; PURPOSE:
;	Cette procedure trace le resultat de calcul de position des centroids
;	en fonction du temps
;
; CATEGORY:
;	NRH1 Trace
;
; CALLING SEQUENCE:
;	TRACEPOS, Position, Str, Unit, Numero, Grandeur 
;
; INPUTS:
;	POSITION ...... Tableau issu de LECP1D contenant les images
;                       POSITION(Num_position,type,indice temporel)
;                                               type = 0 ---> No d'image 
;                                                      1 ---> canal
;                                                      2 ---> amplitude  
;                                                      3 ---> flux
;                                                      4 ---> diametre
;	STR ....... Structure associee aux donnees (NRH1_STR_IMAGE)
;	UNIT ........ 	no. de l'unite logique dont est issu tabparam
;	NUMRO .....	no. de la position a tracer
;	GRANDEUR ...	no. du type a tracer
;	
; KEYWORD PARAMETERS:
;	HEURES	Tableau d'heures de debut et de fin de trace
;				 ['hh:mn:ss:ccc','hh:mn:ss:ccc']
;	MINMAX	tableau des kimites de l'echelle Y [Min, Max]
; 	ECHLOG	Echelle log 
;	COLOR	Indice de la couleur
;	NOERASE
;	OLDPAGE
;	LASER
;	CHARSIZE
;
; OUTPUTS:
;	Trace temporel
;
; COMMON BLOCKS:
;	NRH1_GLOBAL
;
; MODIFICATION HISTORY: (bonmartin@obspm.fr)
;	26/11/98	adapte de XHELIO (JB)
;-*******************************************************************

PRO tracepos,tabparam,sa,lun,numero, grandeur, COLOR=color,$
	LASER=laser,NOERASE=noerase, HEURES=heures, MINMAX=minmax,$
	OLDPAGE = oldpage, ECHLOG = echlog, CHARSIZE=charsize

;* -------------------------------------------- *
;*     Declaration des variables globales       *
;* -------------------------------------------- *
;
   COMMON NRH1_GLOBAL,nomfich,FichInfo

;-----------------------------------------------------
; Verification des parametres passes
; Heures par defaut: debut, fin du fichier d'images dont x est tire

pastempo = FichInfo(lun).paspix(0); pas temporel	
IF NOT KEYWORD_SET(heures) THEN BEGIN
   hdeb=fichinfo(lun).heurdeb
   hfin=fichinfo(lun).heurfin
ENDIF ELSE BEGIN
   hdeb=HMS(heures(0))
   hfin=HMS(heures(1))
ENDELSE

IF NOT KEYWORD_SET(color) THEN color = !p.color
; IF NOT KEYWORD_SET(win) THEN win = 0
IF N_ELEMENTS(grandeur) EQ 0 THEN grandeur = 0

;-----------------------------------------------------
; verifie que le numero de position n'est pas > 
; le nombre de positions dans le tableau tabparam

nbpos=(size(tabparam))(1)
IF (numero LT 0) OR (numero GE nbpos) THEN numero = 0

;-----------------------------------------------------
; calcul de l'abscisse (temps) la position # numero

n_images = sa.tabe(2,numero)
xcoor = sa.tabe(1,numero) + findgen(n_images) * pastempo
heur0 = MIN(xcoor, MAX=heur1)
;-----------------------------------------------------

; Construction du tableau tabplot qui ne contient que le parametre a tracer

tabplot = reform(tabparam(numero,grandeur,0:n_images-1))
meanvalue = total ( tabparam(numero, grandeur, 0:n_images-1)) / n_images

;-----------------------------------------------------
;          ANNOTATIONS
;-----------------------------------------------------
; Calcul des annotations de l'abscisse (temps): par defaut (si HEURES n'est pas
; donne explicitement), l'axe x va du debut a la fin du fichier d'images
; dont le tableau x a ete tire.

milsec_axis, [hdeb, hfin], tickv, tickl, ticks
;-----------------------------------------------------

;---------------------------------------------------------------
;  CHARGEMENT DES INFORMATIONS A AFFICHER
;---------------------------------------------------------------

; Pour chaque position: Reseau du NRH et frequence
freq=motcle(lun,'FREQ')
label=motcle(lun,'LABEL')
IF STRUPCASE(label) EQ 'EST-OUEST' THEN label = 'East-west'
IF STRUPCASE(label) EQ 'NORD-SUD' THEN label = 'South-north'
comb = STRCOMPRESS( label + ", " + freq ) 

; Pour l'ordonnee: Parametre trace 
CASE grandeur OF
  0:texte = STRCOMPRESS(motcle(1, 'BLOC0'))
  1:texte = STRCOMPRESS(motcle(1, 'BLOC1'))
  2:texte = STRCOMPRESS(motcle(1, 'BLOC2'))
  3:texte = STRCOMPRESS(motcle(1, 'BLOC3'))
  4:texte = STRCOMPRESS(motcle(1, 'BLOC4'))
  5:texte = STRCOMPRESS(motcle(1, 'BLOC5'))
ENDCASE
xtexte = "Universal time (" + fichinfo(lun).date + ")"
IF NOT KEYWORD_SET(CHARSIZE) THEN charsize=1.
IF(!P.MULTI(2) LE 2) THEN BEGIN
	chrxy = .6
	multichar = charsize
ENDIF ELSE BEGIN
	chrxy = .4 
	multichar = 2*charsize
ENDELSE


;IF (!P.MULTI(1) NE 0) THEN Taille=0.4 ELSE Taille=0.8
;-----------------------------------------------------
; Choix de l'echelle y: valeurs extremes ou valeurs imposees 
IF KEYWORD_SET (minmax) THEN BEGIN
	valmin = minmax(0)
	valmax = minmax(1)
ENDIF ELSE BEGIN
;	valmin=min(tab(numero,0,*))
;	valmax=max(tab(numero,0,*))
	valmin=min(tabplot)
	valmax=max(tabplot)
ENDELSE

;-----------------------------------------------------
;         AFFICHAGE

IF KEYWORD_SET(Laser) THEN Laser,/On

IF KEYWORD_SET(oldpage) THEN $
;	OPLOT, xcoor, tab(numero,0,*), linestyle = numero, PSYM=10 ELSE $
	OPLOT, xcoor, tabplot, linestyle = numero, PSYM=10 ELSE $
; *** ce linestyle ne permet pas de distinguer des traces des sources avec
;     le meme numero a differentes frequences; a corriger ***

IF (NOT KEYWORD_SET(oldpage)) THEN BEGIN
	IF KEYWORD_SET(echlog) THEN $
;		plot,xcoor,tab(numero,0,*), XSTYLE=1,YSTYLE=2,$
		plot,xcoor,tabplot, XSTYLE=1,YSTYLE=2,$
			linestyle=numero, COLOR=color,PSYM=10, $
			xrange=[hdeb,hfin], yrange=[valmin,valmax],$
;			xmargin=[9,5], ymargin=[9,2], $
	        	CHARSIZE = 0.6*multichar, XCHARSIZE = 1.0, $
			YCHARSIZE = 1.0, $
	        	XTICKV = tickv, XTICKS = ticks(0), XMINOR = ticks(1), $
			XTICKNAME = tickl, XTITLE=xtexte, YTITLE=texte, $
			NOERASE=noerase, /YLOG $
ELSE $
;	plot,xcoor,tab(numero,0,*), $
		plot,xcoor,tabplot, $
			XSTYLE=1,YSTYLE=2, linestyle=numero, $
		xrange=[hdeb,hfin],yrange=[valmin,valmax],$
;		ymargin=[9,2],xmargin=[8,5], $
		CHARSIZE = 0.6*multichar, XCHARSIZE = 1.0, YCHARSIZE = 1.0, $
		COLOR=color,PSYM=10,$
        	XTICKV = tickv, XTICKS = ticks(0), XMINOR = ticks(1), $
		XTICKNAME = tickl,$
		XTITLE=xtexte,YTITLE=texte, $
		NOERASE=noerase, /YNOZERO
ENDIF

; ------ Informations sur les courbes au-dessous du cadre ---------------------
 
yextent = 3.*Float(!D.Y_CH_SIZE)/FLOAT(!D.Y_VSIZE)
; Espace disponible en vertical (en fraction de la hauteur du champ), compte 
; tenu du YMARGIN et du titre X
lineheight = yextent/nbpos 
yann = !y.window(0) - yextent - numero*lineheight
PLOTS, [0.01, 0.11], [yann, yann], linestyle = numero, /NORMAL
info = "# " + STRTRIM(string(numero),1) + ": "  + comb + ", " +  $
	MSH(heur0) + " - " + MSH(heur1) + $
	" UT, Mean=" + STRTRIM(string(meanvalue), 1)
IF lineheight*FLOAT(!D.Y_VSIZE) GE !D.Y_CH_SIZE THEN ycharsize = 1.0 ELSE $
	ycharsize =  0.95*lineheight*FLOAT(!D.Y_VSIZE)/FLOAT(!D.Y_CH_SIZE)
xcharsize = 0.85*FLOAT(!D.X_VSIZE)  / FLOAT( STRLEN(info)*!D.X_CH_SIZE )


IF xcharsize LT ycharsize THEN charsize=xcharsize ELSE charsize=ycharsize
XYOUTS, 0.12, yann, info, CHARSIZE=charsize, /NORMAL
; -----------------------------------------------------------------------------

IF KEYWORD_SET(Laser) THEN Laser,/Off

END
