
;+ ***********************************************************************
; NAME:
;	NRH1_EXTRACT
;
; PURPOSE:
;	Cette procedure extrait une partie d'un tableau d'images du NRH1
;
; CATEGORY:
;	NRH1 Fichier
;
; CALLING SEQUENCE:
;	NRH1_EXTRACT, Entree, Sortie, Hdeb, Dt, Candeb, Dx
;
; INPUTS:
;	ENTREE	Tableau d'images
;	HDEB	Heure de debut du tableau d'images
;	DT	Intervalle de temps entre 2 images
;	CANDEB	Canal de debut du tableau d'images
;	DX	Intervalle entre 2 canaux
;	
; KEYWORD PARAMETERS:
;	HEURES		heures debut, fin de l'intervalle a extraire
;	CANAUX		canaux debut, fin de l'intervalle a extraire
;	STEP		pas entre deux instants successifs a la sortie
;
; OUTPUTS:
;	SORTIE	Tableau extrait
;
; COMMON BLOCKS:
;	Non
;
; MODIFICATION HISTORY: (bonmartin@obspm.fr)
;	16/11/98 adapte du logiciel XHELIO
;-*******************************************************************

PRO NRH1_EXTRACT, tab_entree, tab_sortie, hdeb, dt, candeb, dx, $
	HEURES=heures, CANAUX=canaux, STEP=step
;
;-----------------------------------------------------------------------------
; Extraction d'une partie d'un tableau 2D

ndim = SIZE(tab_entree)	;	Dimensions du tableau d'entree
ninst = ndim(2)		; 	nombre d'instants
ilim = ndim(1)		;	nombre de points sur l'axe des canaux

icandeb = FIX( (canaux(0)-candeb)/dx )	; Premier pt. de l'interv. des canaux
IF icandeb LT 0 THEN BEGIN
	icandeb = 0
	canaux(0) = candeb
ENDIF
icanfin = FIX( (canaux(1)-candeb)/dx )	; Dernier pt. de l'interv. des canaux
IF icanfin GT ilim THEN BEGIN
	icanfin = ilim
	canaux(1) = candeb + (icanfin-icandeb)*dx
ENDIF

IF NOT KEYWORD_SET(heures) THEN BEGIN
  heure_deb=hdeb 
  heure_fin=hdeb + (ninst-1)*dt
ENDIF ELSE BEGIN 
  heure_deb=HMS(heures(0))
  heure_fin=HMS(heures(1)) 
ENDELSE
numdeb=indice(hdeb,heure_deb,dt, heuredlue)	; Premier pt. interv. de temps
numfin=indice(hdeb,heure_fin,dt, heureflue)	; Premier pt. interv. de temps
heures = [ MSH(heuredlue), MSH(heureflue) ]	; Intervalle de temps exact

IF KEYWORD_SET(step) THEN $
	index = numdeb + step * INDGEN( (numfin-numdeb)/step ) $
ELSE $
	index = numdeb + INDGEN( numfin-numdeb )

tab_sortie = tab_entree(icandeb:icanfin, index, *)

END