; 			INFOS UTILES SUR VERIF_ANTENNES
;
; Modules necessaires pour VERIF_ANTENNES (le suffixe ".pro" est sous-entendu):
;  /home/mercier/calib	(Meudon)
;     rh_corr_antennes    rh_dp_calib_sub   rh_dp_calib_con
;     rh_harm_n_vis       rh_image_con
;
;  /home/mercier/rh_gene  (Meudon)
;     rh_harm_n_vis       init_malax_2d
;    
;    (ces modules sont directement accessibles grace au IDL_PATH defini dans le
;	.cshrc)

; Creation : 29 nov 2005, a partir de RH_CALIB_CON, dont c'est une version 
;		simplifiee.
;
; But : visualiser le remplissage du plan uv, de facon a detecter la presence
;	d'antennes en panne, et les eliminer ensuite du traitement des donnees 
;	solaires.
;	Cela est important pour le CLEAN, faute de quoi le CLEAN pourrait pro-
;	duire de tres forts artefacts (ex cas du 24 sept 2001, ou il manquait
;	presque toutes les antennes NS impaires).

; Recommandations :
;   Pour bien voir l'absence eventuelle de certaines antennes, il vaut mieux
;   que la fonction de visibilite soit aussi etendue et uniforme que possible
;   dans le plan uv => integrer sur un continuum ou un sursaut aussi compact
;   que possible.

; PLAN DE LA PARTIE DE VERIF_ANTENNES D'INTERET POUR L'UTILISATEUR :
; . parametres usuellement modifies,
; . parametres figes
; . choses automatiques
; . programme lui meme.
;______________________________________________________________________________

; MODIFICATIONS :
;______________________________________________________________________________


PRO VERIF_ANTENNES

; DEBUT DES PARAMETRES DE DEFINITION (NON FIG'ES)

;  Repertoire du fichier  
    pref_dir  = '/poub/extraits/mercier/'
;   pref_juke = '/juke/10sec/INT0109C/'		; exemple pour le juke
;  Nom de fichier
    nomfich = pref_dir + '2i051114.30' ; 10sec 19:44-23:29 rot NS0 H2 H4 pointe
;   nomfich = dir_juke + '2i010924.01'	; 08:13-15:12 (ex. de NS manquantes).
;  Debut et fin d'integration
    t_deb = [20, 30, 00, 00]     &  t_fin = [20, 55, 00, 00] 

; Parametres de l'observation
    num_freq = 0	; numero de frequence, de 0 a 6.
    i_polar  = 0 	; 0 Stokes I,  1 Stokes V .
    sel_ant  = $	; Drapeaux d'utilisation des antennes. Laiss'e avec
			;   les parametres non fig'es car une antenne mise a 
			;   zero peut servir de repere.
	   [ 1,  1,  1, $
	;    E2  E1  E0
	;
	    1,  1,  1,  1,  1,  1,  1,   1,     1,  1,  1,  1,  1,  1,  1,  1,$
	;  H1  H2  H3  H4  H6  H6  H7  NS0_ew  H9  H10 H11 H12 H13 H14 H15 H16
	;
	   1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,   1,   1,   1,   1,   $
	; NS0 NS1 NS2 NS3 NS4 NS5 NS6 NS7 NS8 NS9 NS10 NS11 NS12 NS13 NS14
	;
	   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,  $
	; NS15 NS16 NS17 NS18 NS19 NS20 NS21 NS22 NS23 NS45

;	   0,   0,   0,   0]
	   1,   1,   1,   1]
	; AA1  AA2  AA3  AA4

; FIN DES PARAMETRES NON FIG'ES et de la partie mofifiable.

;___________________________________________________________________________

; DEBUT DES PARAMETRES FIG'ES (heritage de H_CALIB_CON)
    t_integ  = 60	; temps d'integration original (1 ou 60 sec uniquement)
    amul     = 1000.0	; coeff multiplicateur du niveau de parasites toleres
			;   defini plus bas.
; Choix des controles 
	; usuel a Nancay :  icon_1 = 1,  icon_2 = 1,  icon_3 = 1,  icon_4 = 0
    icon_1 = 0		; 1 pour trace images 1D EW et NS
    icon_2 = 0		; 1 pour trace TF image 1D EW
    icon_3 = 0		; 1 pour trace TF image 1D NS
    icon_4 = 1		; 1 pour trace image 2D (et visibilite 2D avec  .c) .
    ch_siz = 1.4	; taille des caracteres pour xyouts.  Usuel 1.3 .  FIGE
    n_win  = 4		; numero de fenetre de sortie pour image 2D   FIGE
			;  (usuel 4, 12, 20 pour des comparaisons).
			;   Indifferent si icon_4 = 0.
    			;   On ajoute automatiquement  4  plus bas si i_recalib
			;     = 1 (pour comparer non recalibre et recalibre).
    fr_z = [1.0, 0.50]	; fraction de zooming [sur im_2D, sur TF_2D]. >0.37

;  Corrections possibles :
	; . recalibration complete avec un fichier de type "coeff_corr", obtenu
	;     par un passage de RH_DP_CALIB (options avec et sans usuelles 
	;     toutes les deux).
	; . correction de position des antennes (implantation irreguliere),
	;	obligatoire apres le 12 mai 04. Commentaires detailles dans 
	;	CORR_POS_ANT (fichier RH_CORR_ANTENNES)
	; . correction de depointage des antennes H (option avec usuelle)
	; . correction "manuelle" de gains apparents contenus dans un fichier
	;     ch_cor_man. Gouvernee par le parametre i_corr_man, usuellement 
	;     mis a zero plus bas. 
    i_soustrac_comp = 0 ; pour exciser une source compacte secondaire sur le 
			;    soleil. Utile pour le cas du 27 aug 02. USUEL 0
			;    PARAMETRES D'EXCISION XM2, YM2 DEFINIS PLUS BAS.
    i_source_cal = 1	; source de calibration ou de recalibration :
			;   0 soleil,   1 Cygne,   2 Vierge,   3 Hydre.
			;   Sert uniquement a CORR_POS_ANT (RH_CORR_ANTENNES)
			;   MIS D'OFFICE A  1  SI  i_recalib=0 (la calibration
			;   d'origine est toujours sur le Cygne). 
    h_cal = [18, 15]	; heure de calibration, indifferente pour observations
			;    apres 1 nov 2003 (uasge des AA), car figure alors
			;    dans l'entete du fichier. Sert a CORR_POS_ANT. 
			;    Ecrasee par h_recal (tiree de ch_cor) dans le cas
			;    d'une recalibration.
;  Recalibration complete
    dir_cor = '/home/mercier/coeff_corr/'  ; FIGE (repertoire fichiers recalib)
    i_recalib = 0	; 1 pour recalibrer (avec fichier identifie par ch_cor)
			;    L'heure de recalibration est extraite plus bas de
			;    ch_cor.
    ch_cor = '18_sep_01_19:45'
	; Fichiers obtenus apres revision de CALIBRATION du 4-7 jul 2005 :
	;  '14_nov_05_20:00'   '14_nov_05_21:00'  

;  Recalibration manuelle
	; Le fichier  dir_cor_man/ch_cor_man  contient: 
	; . 12 lignes commentaires
	; . phi_ew_ns  et  phi_w_e  en format  2i8
	; . 5 lignes commentaires
	; . g_amp et g_phi  sur 44 ou 48 lignes (nbre auquel on adapte  i_AA) 
    i_AA = 1		; 1 si antennes AA figurent dans fichier ch_cor_man.
			;   Toujours bien preciser, car sert a initialisation.
    i_corr_man = 1	; recalibration manuelle du fichier "ch_cor_man"  (se 
			;   superpose a la recalibration).
    dir_cor_man = '/home/mercier/corr_man/'
    ch_cor_man = '14_nov_05_236_1'
	; Archives des fichiers de correction manuelle :
	; '14_nov_05_164_1'  idem a 236   327   410
	; Ces fichiers contiennent les gains et phases apparents.
;  
; Drapeaux d'utilisation des antennes
	; Usuel : tous les drapeaux a 1, sauf depointage, parasites, ou gains
	;	    aberrants, ou controle de polarisation
    i_pave_seul = 0	; 1 pour ne garder que le pave central et le sous pave
			;   des AA, eliminant aussi E0.
			;   Ca met sel_ant a 0 pour E2, E0, NS45, et on annule
			;   les harm de E1 avec les H d'ordre > 16.
			; FIGE (utilite pour mise au point seulement).

; Ancienne place de la definition de sel_ant (dans RH_CALIB_CON)
	; Les suppressions avec  sel_ant  s'ajoutent aux suppressions avec
	;   les drapeaux d'utilisation de series d'harmoniques avec les 
	;   antennes d'extension (ie0_ew, etc.) definis plus bas.

    type_obs = 1	; 1 toutes les observations  
			;    . posterieures au 17 avril 03
			;    . anterieures  au  8 oct   02  
			; 2 pour observations de transition (apres fin 2002), 
			;     semblables a celles pour la nouvelle calibration
			;     (toutes antennes pointees, dipoles de H2 H4 NS0 
			;     tournes, pas de modification des tables de gain),
			;     sauf que rotew et rotns sont indiqu'es nuls dans
			;     l'entete parce que le maxion et le micro-pointage
			;     ont ete decouples manuellement.
			;   ce cas ne se presente que pour les observations de
			;     calibration et pas pour celles de controle.
    i_corr_rot_NS0 = 1	; 1 usuel. 0 pour ne pas corriger de la rotation de NS0
    i_cor_dep_H    = 1	; 1 (usuel) pour corriger les effets de depointage des
			;     antennes H : perte de lobe et rotation des dipo-
			;     les (en fait on multiplie simplement ah_dep par
			;     i_cor_dep_H, CE QUI ANNULE ALORS ah_dep). On pas-
			;     se quand meme dans CORR_ROR_DEP_H, mais si les
			;     dipoles du reseau H sont tournes < 0.05 rad, on
			;     ne fait pas la correction des harm polar (des
			;     antennes EW ET des antennes NS), ce qui permet 
			;     de traiter les observations non deointees pour
			;     mesurer l'alignement des dipoles des H.
			; 0 au debut des observations avec depointage E, p ex
			;     pour mesurer le dephasage de depointage.
			;   Rem : ce n'est qu'une rustine et une meilleure so-
			;	lution serait de rectifier le depointage indi-
			;	que sans l'entete. Trop compliqu'e.
    i_AA_NS8 = 1	; 1 pour superposer les harm de NS8 avec les AA.

; Excision des parasites : antennes des bases testees et niveaux acceptes 
    ant_test_par = [ 0,  0,  0, $
	;           E2  E1  E0
	;
	   0,  0,  0,  1,  0,  1,  0,    1,    0,  1,  0,  1,  0,  0,  0,  0, $
	; H1  H2  H3  H4  H5  H6  H7  NS0_ew  H9  H10 H11 H12 H13 H14 H15 H16
	;
	   1,  0,  1,  0,  1,  0,  0,  0,  0,  0,  0,   0,   0,   0,   0,   $
	; NS0 NS1 NS2 NS3 NS4 NS5 NS6 NS7 NS8 NS9 NS10 NS11 NS12 NS13 NS14
	;
	   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  $
	; NS15 NS16 NS17 NS18 NS19 NS20 NS21 NS22 NS23 NS45

	   0,   0,   0,   0 ]
	; AA1  AA2  AA3  AA4

	; La procedure de traitement de calibration dans CALIBRATION est robus-
	;   vis a vis des parasites sur les tres courtes bases a partir de NS0.
	; Il est donc inutile (et meme nuisible) de rejeter des scrutations
	;   parce que ces bases sont parasitees. C'est pourquoi H7, H9 et NS1
	;   ne sont pas selectionnees dans ant_test_par.
	; Les antennes donnant de grandes bases ne sont pas selctionnees non 
	;   plus car ces grandes bases dependent du modele et les amplitudes 
	;   des harmoniques correspondants peuvent varier de facon importante
	;   pendant la duree d'observation.
; Pour 6 freq (laisser ou mettre en commentaire)
	;        164  151  236  327  411    432
    t_1_p     = [0.9, 0.8, 0.9, 2.0, 3.0,   4.0, 0.0, 0.0, 0.0, 0.0] ;  1 sec
    t_2_p     = [0.2, 0.2, 0.2, 0.3, 0.6,   1.5, 0.0, 0.0, 0.0, 0.0] ; 60 sec

; Pour 5 freq (laisser ou mettre en commentaire)
	;        164  151  236  327  411    432
;    t_1_p     = [0.9, 0.9, 2.0, 3.0, 4.0,   0.0, 0.0, 0.0, 0.0, 0.0] ;  1 sec
;    t_2_p     = [0.2, 0.2, 0.3, 0.6, 1.5,   0.0, 0.0, 0.0, 0.0, 0.0] ; 60 sec
	; Pour eliminer les scrutations parasitees : on n'integre que les scru-
	;   tations pour lesquelles :
	;	abs (harmonique - val moy)  <  a_p * abs(val moy)
	;   Le test est fait sur plusieurs harmoniques a courte base a partir
	;   de NS0_ns. Si une scrutation est acceptable en non polar, on admet
	;   qu'elle l'est aussi en polar (commentaire a l'appel de RH_DP_SUB_1)
	; Le coeff a_p depend du rapport signal / bruit de la source et est
	;   choisi dans les tableaux t_1_p et t_2_p ci-dessus selon le temps
	;   d'integration de l'observation initiale. Il doit etre ajuste par
	;   l'utilisateur en choisissant amul de facon a garder 1/2 ou un peu 
	;   plus des scrutations initiales. 
	; Un coefficient multiplicatif d'ensemble amul est defini plus haut.
	;   S'il faut choisir amul >>1, c'est que l'observation est tres para-
	;   sitee. Se contenter de moins de scrutations selectionnees.
; Drapeaux d'utilisation de series d'harmoniques avec les antennes d'extension
	; Usuel : tous les drapeaux a 1 et gap_ns0=[0, 0] (pas de suppress.)
	; Il peut etre parfois utile de supprimer E2 et peut-etre NS45 si elles
	;   sont mal phasees. 
	; Rem  : avant le remplissage du pave la suppression de E0 renforcait
	;   les alias a l'egal de l'image centrale et rendait leur reduction 
	;   par clean impossible.
    ie0_ew   = 1	; E0 avec E2, E1, H1 a H16 (1 avec, 0 sans). Indispen-
			;   sable pour distinguer une source de son alias et
			;   que le clean ne s'y trompe pas.
    ie0_ns   = 0	; E0 avec les NS (distrib asym dans plan (u,v))
    ie1_ew   = 1	; E1 avec H1 a H16.
    ie2_ew   = 1	; E2 avec E1, H1 a H16. La calibration de E2 etant pro-
			;   blematique, ne pas l'utiliser si ca peut arranger.
    ie2_ns   = 1	; E2 avec les NS (distrib asym dans plan (u,v)). Idem.
    ins45_ew = 1	; NS45 avec E1, H1 a H16.
    ins45_NS = 1	; NS45 avec les NS.
    i_redond = 1	; 0 pour suppression des doublures mediocres (bases
			;   courtes a partir de NS0). Usuel 0.
    gap_ns0 = [0, 0]	; limites du gap d'ant [EW, NS], comptees a partir de 
			;   NS0, non couplees a NS0 (parasitee). Usuel [0, 0].
    i_corr_pos_ant = 1	; Depuis le 12 mai 2004.
			;   Usuel i_reglage=0 dans RH_CORR_ANTENNES.PRO 
			;   (lig 353).
; FIN DE PARAMETRES FIGES

; Debut de choses automatiques
    set_plot, 'x'
;   device, decomposed=0	; pour ne pas decomposer en R G B. Executer
				;   au lancement d'IDL.
				;   dans IMAGE_CALIB_CON on obtient bien "rain-
				;     bow" pour tvscl et "BW" pour shade_surf
				;     en chargeant les tables de couleur juste
				;     avant.
    rot_p = 1	; pour tourner de l'angle p. Necessaire a im_2d_con mais bidon
		;   car on s'arrete a l'image interferometrique.
;  Selection de la frequence
	;        164  151  236  327  411    432
    sel_freq  = ['N', 'N', 'N', 'N', 'N',   'N', 'N', 'N', 'N', 'N']
    sel_freq(num_freq) = 'Y'
    if (t_integ eq  1) then  a_p = amul * t_1_p(num_freq)	; ou num_freq+1
    if (t_integ eq 60) then  a_p = amul * t_2_p(num_freq)	; ------------
;  Modif numero de fenetre de sortie pour trace 2D (cas d'une recalibration)
    n_win = n_win  +  4 * i_recalib	; pour comparer non recal et recalibre.
;  Complement du format des heures de debut et de fin, pour gerer les cas :
	; . t_deb avec 2 elements (sources) : on complete avec des zeros
	; . t_deb avec 4 elements (soleil, intervalle court sur un sursaut) :
	;	on ne change pas t_deb et t_fin
    if(n_elements(t_deb)  eq  2) then begin
	t_deb = [t_deb, 00, 00]	  &    t_fin = [t_fin, 00, 00]
    endif
;  Choix oblig'e du Cygne comme source de calibration en l'absence de recali-
	; bration
    if (i_recalib eq 0) then  i_source_cal = 1	; Cygne suppos'e.
;  Extraction de l'heure de recalibration du nom du fichier de recalibration
    if (i_recalib eq 1) then begin
	heu_recal = fix(strmid(ch_cor, 4, 2, /reverse_offset))
	min_recal = fix(strmid(ch_cor, 1, 2, /reverse_offset))
	    ; Rem : avec /reverse_offset le 1er caractere est compte a partir
	    ;       de la fin, mais sa longueur est vers la droite. Ainsi :
	    ;	    ch_h_recal = strmid(ch_cor, 4, 5, /reverse_offset)
	    ;	extrait "16:48"
	if (i_source_cal  eq  0) then begin
	    h_recal = [heu_recal, min_recal]
		; Si la source de recalibration est le soleil, on n'ajoute rien
		;   car on recalibre sur un sursaut solaire bref.
	    if (h_recal(1) ge 60) then 	h_recal = h_recal + [1, -60]
	endif
	if (i_source_cal  gt  0) then begin
	    h_recal = [heu_recal, min_recal] + [0, 15]
		; Si la source de recalibration est une source non solaire on 
		;   ajoute 15 min car la duree usuelle d'un intervalle de cali-
		;   bration sur une source non solaire est 30 minutes.
	    if (h_recal(1) ge 60) then 	h_recal = h_recal + [1, -60]
	endif
    endif

;  Preliminaire a une recalibration "manuelle" (gains apparents d'antennes dans
	; un fichier  "ch_cor_man")
    if (i_AA  eq  0) then nbre_ant = 44
    if (i_AA  eq  1) then nbre_ant = 48
;  Initialisation par defaut des gains manuels et de leurs drapeaux
    g_flag = replicate(  0, nbre_ant)
    g_amp  = replicate(1.0, nbre_ant)    & g_phi = replicate(0, nbre_ant)
;  Lecture du fichier de gains apparents pour une recalibration "manuelle"
    if (i_corr_man  eq  0) then begin
	phi_ew_ns = 0   & phi_w_e = 0	; pour CORR_GAIN_ANT.
    endif
    if (i_corr_man  ne  0) then begin	; lecture des gains et phases apparents
;      Definition des ch_* comme des chaines de caracteres (sinon ca bloque
	    ; a la lecture si le 1er caractere n'est pas numerique).
	ch_1  = '1'  & ch_2  = '1'  & ch_3  = '1' & ch_4  = '1' & ch_5  = '1'
	ch_6  = '1'  & ch_7  = '1'  & ch_8  = '1' & ch_9  = '1' & ch_10 = '1'
	ch_11 = '1'  & ch_12 = '1'  & ch_14 = '1' & ch_15 = '1' & ch_16 = '1'
	ch_17 = '1'  & ch_18 = '1'
	fich_cor_man = dir_cor_man + ch_cor_man
	openr, unit, fich_cor_man, /get_lun
;      Saut des lignes de commentaire
	readf, unit, ch_1   & readf, unit, ch_2   & readf, unit, ch_3
	readf, unit, ch_4   & readf, unit, ch_5	  & readf, unit, ch_6	
	readf, unit, ch_7   & readf, unit, ch_8	  & readf, unit, ch_9	
	readf, unit, ch_10  & readf, unit, ch_11  & readf, unit, ch_12
;      Lecture de  phi_ew_ns  et  phi_w_e 
	readf, unit, format="(2i8)", phi_ew_ns, phi_w_e
;      Saut de 5 lignes vides
	readf, unit, ch_14  & readf, unit, ch_15  & readf, unit, ch_16
	readf, unit, ch_17  & readf, unit, ch_18
;      lecture des g_amp et g_phi sur 44 ou 48 lignes
	ch_format = "(i3, f8.2, i8)"
	for i = 0, nbre_ant - 1  do begin
	    readf, unit, format=ch_format,  flag_i, amp_i, phi_i
		; refuse de remplir directement amp(i) et phi(i).
	    g_flag (i) = flag_i    & g_amp(i) = amp_i    & g_phi (i) = phi_i
	endfor
	close, unit
	free_lun, unit
    endif			; fin de lecture des gains "manuels".
    icon = 0
    if (icon eq 1) then begin
	print, format="('phi_ew_ns =', i5, 6x, 'phi_w_e =', i5)", $
							phi_ew_ns, phi_w_e
	ch_format_1 = "(10i8)"
	print, ''
	print, 'g_amp ='
	print, format="(10f8.2)", g_amp
	print, ''
	print, 'g_phi ='
	print, format="(10i8)", g_phi
	stop
    endif

;  Suppression de E2 E0 NS45 si i_pave_seul=1
    if (i_pave_seul eq 1) then begin
	sel_ant(0)  = 0		; E2
	sel_ant(43) = 0		; NS45
	    ; finalement on garde E0, les harm purement EW avec les AA etant
	    ;	trop mauvais
    endif
; Fin de choses automatiques 

; FIN DE LA DEFINITION DES PARAMETRES


;____________________________________________________________________________
	    ; STRUCTURE entFI (entete), repris de de rh_common.inc
	    ; ========================
	    ;
	    ; Longueur tete du fichier               entFI.lgent     Long
	    ; Longueur du fichier                    entFI.filesize  Long
	    ; Longueur d'une acquisition, en octets  entFI.lg        Int
	    ; Type des acq du fichier, 1-1D, 2-2D    entFI.typ       Int
	    ; Codage des acquisitions, 2-16 bits     entFI.cod       Int
	    ; Representation des acq, 0-Harm         entFI.rep       Int
	    ; Nombre de valeurs  tete acq            entFI.lgtet     Int
	    ; Nombre de valeurs  corps acq           entFI.nval      Int
	    ; Nombre de valeurs 2D                   entFI.nval_2d   Int
	    ; Nombre de valeurs EW                   entFI.nval_ew   Int
	    ; Nombre de valeurs NS                   entFI.nval_ns   Int
	    ; Type de donnees,'1D    ','2D    '      entFI.d_typ     Bytarr(6)
	    ; Temps d'integration en millisecondes   entFI.itg       Long
	    ; Date (jour, mois, an)                  entFI.dat       Intarr(3)
	    ; Reference de la source, en caracteres  entFI.ref       Bytarr(6)
	    ; Heure meridien (Heure, minute, sec, centieme) entFI.mer Intarr(3)
	    ; Declinaison (degres,',',')             entFI.dec       Intarr(3)
	    ; Horloge 0-TU ou 1-TS                   entFI.hg        Int
	    ; Heure de debut (heure, minute)         entFI.hdeb      Intarr(4)
	    ; Heure de fin en heure, minute)         entFI.hfin      Intarr(4)
	    ; Nombre de frequences, de 1 a 10        entFI.nf        Int
	    ; Table des frequences en centaines de Khz  entFI.frq    Intarr(10)
	    ; Correction de trajectoire 1-avec ou 0-sans entFI.trj   Int
	    ; Compression 1-avec ou 0-sans           entFI.comp      Int
	    ; Cycle recepteur, en millisecondes      entFI.cyclms Int
	    ; Description donnees                       entFI.d_obs  bytarr(78)
	    ; Reseau EW depointage 0-Sans, 1-Est, 2-Ouest   entFI.depew     Int
	    ; Reseau EW depointage en minutes               entFI.dephew    Int
	    ; Rotation dipoles ant 2, 4 EW 1-avec ou 0-sans entFI.rotew     Int
	    ; Rotation antenne 0 NS 1-avec ou 0-sans        entFI.rotns     Int
	    ; Position EW des antennes en mm         entFI.pxant  Lonarr(44)
	    ; Position NS des antennes en mm         entFI.pyant  lonarr(44)
	    ; Table des correlations (no Ref, no ant) entFI.corel intarr(2,576)
	    ; Tables de correction                   entCOR:entCOR
	    ; Description de l'observation           descrip      bytarr(80,2)
	    ; Description de l'activite              activ        bytarr(80)
	    ; Description des pannes                 pannes       bytarr(80,3)
	    ; Evenements non comprimes               evenements   bytarr(80,15
	    ; swap_endian a faire si = 1             endian       0L
	    ; numero du dernier enregistrement       klumax       0L

;______________________________________________________________________________

; DEBUT DE LA PARTIE ACTIVE, REPRISE DE RH_DP_CALIB

; NOTATIONS:
; correl 	tableau (2, 576) indiquant les numeros des 2 antennes 
;		  correspondant a chacun des 576 harmoniques. Permet de faire
;		  le passage de harm_N a harm.
; entfi.freq	frequences (intarr(10))
; entfi.corel  tableau (2, 576) indiquant les numeros des 2 antennes corres-
;		  pondant a chacun des 576 harmoniques. Permet dans malc_im_2d
;		  le passage de harm_N au tableau des harmoniques a 2 dimen-
;		  sions.
; bfi.h		(h,m,s,c) de debut d'observation.
; klu, kdeb, kfin, kmax	numeros des enregistrements.
; numim		numero d'image.
; sfu_tb
; lufi.pt	fltarr(4, 576)
; gap_ns0	intarr(2), definit une zone d'exclusion d'harmoniques parasi-
;		   te's autour de NS0.
; ant_test_par  identification des antennes utilisees pour detection parasites.
; sel_ant	drapeau d'utilisation des antennes (0 si antenne a probleme).
; entfi.frq	tableau des frequences de l'observation
; isel		tableau des frequences qu'on a choisi de traiter
; nsel		nombre de frequences a traiter
; entfi.nval	integer (2304 par exemple).
; pt		fltarr(4, 576) puis fltarr(2, 2, 576). Tableau des harmoniques.
;			1er indice: cos ou sin, 
;			2eme ind: non polar ou polar, 
;			3eme indice: balaie les 576 harm.
;
; STRUCTURE entFI (entete), repris de de rh_common.inc
; ========================
;
; Longueur tete du fichier                      entFI.lgent     Long
; Longueur du fichier                           entFI.filesize  Long
; Longueur d'une acquisition, en octets         entFI.lg        Int
; Type des acq du fichier, 1-1D, 2-2D           entFI.typ       Int
; Codage des acquisitions, 2-16 bits            entFI.cod       Int
; Representation des acq, 0-Harm                entFI.rep       Int
; Nombre de valeurs  tete acq                   entFI.lgtet     Int
; Nombre de valeurs  corps acq                  entFI.nval      Int
; Nombre de valeurs 2D                          entFI.nval_2d   Int
; Nombre de valeurs EW                          entFI.nval_ew   Int
; Nombre de valeurs NS                          entFI.nval_ns   Int
; Type de donnees,'1D    ','2D    '             entFI.d_typ     Bytarr(6)
; Temps d'integration en millisecondes          entFI.itg       Long
; Date (jour, mois, an)                         entFI.dat       Intarr(3)
; Reference de la source, en caracteres         entFI.ref       Bytarr(6)
; Heure meridien (Heure, minute, sec, centieme) entFI.mer       Intarr(3)
; Declinaison (degres,',',')                    entFI.dec       Intarr(3)
; Horloge 0-TU ou 1-TS                          entFI.hg        Int
; Heure de debut (heure, minute)                entFI.hdeb      Intarr(4)
; Heure de fin en heure, minute)                entFI.hfin      Intarr(4)
; Nombre de frequences, de 1 a 10               entFI.nf        Int
; Table des frequences en centaines de Khz      entFI.frq       Intarr(10)
; Correction de trajectoire 1-avec ou 0-sans    entFI.trj       Int
; Compression 1-avec ou 0-sans                  entFI.comp      Int
; Cycle recepteur, en millisecondes             entFI.cyclms    Int
; Description donnees                           entFI.d_obs     bytarr(78) 
; Reseau EW depointage 0-Sans, 1-Est, 2-Ouest   entFI.depew     Int
; Reseau EW depointage en minutes               entFI.dephew    Int
; Rotation dipoles ant 2, 4 EW 1-avec ou 0-sans entFI.rotew     Int
; Rotation antenne 0 NS 1-avec ou 0-sans        entFI.rotns     Int
; Position EW des antennes en mm                entFI.pxant     Lonarr(44)
; Position NS des antennes en mm                entFI.pyant     Lonarr(44)
; Table des correlations (no Ref, no ant)       entFI.corel     intarr(2,576)
; 1 Tables de correction                       entCOR:entCOR
; Description de l'observation                  descrip         bytarr(80,2)
; Description de l'activite                     activ           bytarr(80)
; Description des pannes                        pannes          bytarr(80,3)
; Evenements non comprimes                      evenements      bytarr(80,15)
; swap_endian a faire si = 1                    endian          0L
; numero du dernier enregistrement              klumax          0L
;

    print, 'Fichier utilise ; ', nomfich
stop

; LIBERATION DES NUMEROS DE CANAL
    for i=1, 127  do free_lun, i
    for i=1, 127  do close   , i
;   help, /files			; pour connaitre l'etat des fichiers.

; Inclusion de lignes de programmes "classiques"
    @rh_common.inc	; inclut le contenu de "rh_common.inc" (description de
			;   la structure "entfi." (en-tete de fichier). Inclut
			;   une ligne : common RH, liste de variables dans la 
			;   structure entfi  .
			;   Voir dans :
			;	/home/dirhelio/sswnrh/radio/nrh/idl/->
			;		dp_soft_rh/routine_rh
			;   et faire xemacs rh_open.pro

; Nom presque complet des fichiers de recalibration (la freq et non polar ou 
	; polar sont rajoutes dans RECALIBRATION
    fich_cor = dir_cor + 'coeff_corr_' + ch_cor 

; Annulation d'ensemble de la correction de certaines antennes
    g_flag = i_corr_man * g_flag 

; Verification de non nullite de ces gains
    for ia = 0,  nbre_ant - 1  do begin
	if (g_amp(ia) eq 0) then begin
	    print, 'Erreur : un des gains des antennes est nul.'
	    print, 'Taper .c pour continuer quand meme'
	    stop
	endif 
    endfor

; Calcul du temp de milieu d'intervalle d'integration (utilis'e dans pour la
	; correction d'implantation d'antennes dans CORR_POS_ANT. Precision non
	; requise.
    t_moy = (t_deb(0) + float(t_deb(1)) / 60  +   $
				t_fin(0) + float(t_fin(1)) / 60) / 2
    ih_moy = fix(t_moy)
    im_moy = nint( (t_moy - ih_moy) * 60 )		; nint pour arrondir.
    print, 'ih_moy, im_moy :', ih_moy, im_moy
    ihm_moy = [ih_moy, im_moy]			; pour entree de CORR_POS_ANT.

; Compilation des sous-programmes et controles.
    RH_DP_CALIB_SUB	; compilation de :
	; . RH_DP_SUB_1	: decider si une scrutation est biaisee ou non par des
	;		    parasites, et lever le drapeau d'autorisation 
	;		    d'integration i_integ.
	; . DP_CON_2	: controle des drapeux d'integration

    RH_CORR_ANTENNES	; compilation de :
	;  CORR_POS_ANT     correction de position de toutes les antennes.
	;  CORR_GAIN_ANT    correction manuelle de certaines antennes.
	;  CORR_ROT_DEP_NP  correction depointage et rotation non polar 
	;  CORR_ROT_DEP_P   --------------------------------- polar

; Choix de la methode de resolution des systemes lineaires apparaissant dans
	; la determination de parametres aux moindres carres dans FIT_QUADRIC,
	; FIT_CUBIC, FIT_QUARTIC (eux memes appelles par RH_MALC_IM_1D. 
    i_sys_lin = 2		; 1 Cramer, 2 LU, 3 SVD.

    npi = 128			; nbre de points sur l'image interferometrique
				;   (ce n'est plus np).


; Debut de la sequence decrite 2 fois :
;    . 1ere lecture et integration pour obtenir une valeur du niveau des har-
;	 moniques dont on espere que les parasites l'ont biaisee de moins d'un
;	 facteur 2 pour une integration de l'ordre de 1 heure
;    . 2eme lecture et integration, ou on rejette les scrutations parasitees.
;   On peut ainsi exciser les parasites ayant l'allure d'impulsion temporelles
;     mais on ne detecte pas les parasites constants.
;   Cette detection de parasite est rajoutee apres-coup et l'ensemble du trai-
;     tement est fait 2 fois pour ne pas se faire chier a sortir de la boucle 
;     ce qui pourrait peut-etre l'etre.

    i_lec = 0			; initialisation du numero de la lecture, qui 
				;   sera increment'e a 1 puis a 2.
a6: J_M = 0			; fin du saut en arriere apres 1ere lecture.
    i_lec = i_lec + 1

    if (i_lec eq 1) then  t_0 = systime(1)
    if (i_lec eq 2) then  begin
	t_lec = systime(1)
	dt = t_lec - t_0
	ch_format ="(6x, 'Fin 1ere lecture et calcul moyenne    :', " + $
		"i3, ' sec')"
	print, format=ch_format, nint(dt)
    endif

; Ouverture du fichier de type Nancay
;   if (not open_rh(nomfich, /mono, /malax)) then begin	; jusqu'au 26 aug 99.
    if (not RH_OPEN(nomfich, /mono        )) then begin	; apres le 26 aug 99.
	    ; RH_OPEN : ouvre le fichier Nancay, remplit le common RH, initia-
	    ;   lise des structures de lecture, et est aussi le nom de la
	    ;   variable logique (vraie ou fausse) qui indique le succes de 
	    ;   l'ouverture du fichier.
	    ; /mono : lecture scrutation par scrutation (donc une frequence a
	    ;   la fois) => klu s'incremente de 1 a la lecture d'une scrutation
	    ;   a une frequence. S'il n'y a pas /mono klu s'incrementera de 1 
	    ;   pour la lecture des crutations a toutes les frequences.
	    ;   (une structure en sortie de RH_READ contiendra une seule freq
	    ;   ou toutes).
	    ; si lecture n'est pas bonne => fichier non trouve.
	print, 'fichier de donnees non trouve : ', nomfich
	return
    endif
	; Le if (...) appelle OPEN_RH (avec le seul mot-cle mono) puis teste 
	;   les codes de sortie. S'ils ne sont pas bons, impression d'un code 
	;   erreur.

    date_obs = entfi.dat		; precautiom (problemes avec "date").

; Lecture de l'heure de calibration dans l'entete et ecrasement de h_cal
	; On prend en fait l'heure de calibration correspondant a la 1ere 
	; frequence selectionnee, admettant que c'est la meme pour toutes les 
	; frequences.
    h_cal_en_tete = entfi.entcor.heure
	; Si on fait directement : 
	;	h_cal_en_tete = reform(entfi.entcor.heure(*, dom(0)))
	;   ca laisse  un intarr(2, 10). On commence donc par reduire au statut
	;   de variable normale
    h_cal_en_tete = reform(h_cal_en_tete(*, num_freq))

;  Ecrasement de h_cal pour les observations comportant l'eure de calibration
    if ((h_cal_en_tete(0) ne 0)  and  (h_cal_en_tete(1) ne 0))  then  $
							h_cal = h_cal_en_tete

; Definition de dates de changement dans les observations et les programmes
    date_AA = [01, 11, 2003]		; introduction des antennes AA.

; Calcul des dates juliennes precedentes
    jul_date_AA  = julday(date_AA (1), date_AA (0), date_AA (2))
    jul_date_obs = julday(date_obs(1), date_obs(0), date_obs(2))

; Definitions reliees aux dates precedentes
    if (jul_date_obs  lt  jul_date_AA)  then  begin
	nbre_harm = 576
	if (i_recalib eq 1) then  h_cal = h_recal
	    ; h_recal est extrait plus haut du nom du fichier de recalibration.
	    ; Si on ne recalibre pas h_cal est entr'e manuellement plus haut.
	    ;	C'est le seul cas ou cette donnee entree manuellement est uti-
	    ;	lisee.
    endif
    if (jul_date_obs  gt  jul_date_AA)  then  begin
	nbre_harm = 576 + 1 * (18 * 4)
	if (i_recalib eq 0) then begin
	    v_temp = entfi.entcor.heure		; temp comme "temporaire".
	    h_cal = v_temp(*, num_freq) + [0, 15]
		; Rem :  entfi.entcor.heure(*, num_freq)  ne marche pas.
		; Rappel : on ajoute 15 min car la duree usuelle d'un inter-
		;	    valle de calibration est 30 min.
	    if (h_cal(1) ge 60) then 	h_cal = h_cal + [1, -60]
	endif
	if (i_recalib eq 1) then h_cal = h_recal
    endif

    correl = entfi.corel	; alleger notations et retablir orthographe.

; Initialisation du common MALAX
	; Contient :
	;  . date (j, m, a) dans entfi.dat 
	;  . sref	'soleil' ou 'autre' 
	;  . drapeaux de corr iono, 
	;  . parametres des reseaux,
	;  . new et nns, nbre de canaux "minima" en EW et NS,  
	;  . heure meridien (TU ou TS decimale), declinaison,
	;  . angle P et derive en H et delta (nuls pour sources non solaires)
	; Notations
	;   entfi.dat	date (j, m, a)
	;   sref	'soleil' ou 'autre'
	;   rot_p	correction de l'angel p : 0 sans, 1 avec.
    	
;  Variables necessaires pour calculer le common MALAX
    hmer      = fltarr(3)				; TS pour les sources.
    hmer(0:2) = float  (entfi.mer(0:2))
    hmer(2)   = hmer(2) + float(entfi.mer(3)) / 100.

    dec      = fltarr  (3)
    dec(0:2) = float   (entfi.dec(0:2))
    dec(2)   = dec (2) + float(entfi.dec(3)) / 100.

;  Declinaison, depointage, rotation des antennes, dephasage polar
	; (utile pour la calibration)
    delta = !pi/180 * (dec(0) + float(dec(1)) / 60 + dec(2) / 3600)
	; Rem : les 1/100 de '' d'arc sont dontenus dans dec(2)
    if (type_obs eq 1) then begin
	rotew   = entfi.rotew
	rotns   = entfi.rotns
    endif
    if (type_obs eq 2) then begin
	rotew   = 1
	rotns   = 1
    endif
    if (entfi.depew eq 0) then ah_dep = 0
    if (entfi.depew eq 1) then ah_dep = - entfi.dephew	; en minutes de temps.
    if (entfi.depew eq 2) then ah_dep =   entfi.dephew	; -------------------
    ah_dep =  !pi / 12 * ah_dep / 60	; en radians, >0 pour depointage W.
	; ah_dep sert uniquement aus corrections du depointage des antennes H :
	; . correction de lobe des antennes H
	; . correction des niveaux non polar et polar liee a la rotation des
	;     dipoles des antennes H due a leur depointage
	; ah_dep n'est utilis'e que dans les CORR_ROT_DEP np et p.
    ah_dep = ah_dep * i_cor_dep_H

    sref = string (entfi.ref)		; 'soleil' ou 'autre'.

;  Initialisation du common MALAX
    if (i_lec eq 1) then $
	INIT_MALAX_2D,  date_obs,  hmer,  dec,  sref,  rot_p	; entree.
	    ; - Appelle  IN_MALAX_2D  qui remplit le common

; Initialisation d'une correction de phase a faire jusqu'au 5/11/1998 non in-
	; clus (correction d'un sabotage delouisien traitre, sorte de chausse-
	; trappe non signalee).
    jul_cor = julday (11, 5, 1998)	; pour "julian correction". 5 nov 98
    jul_dat = julday (date_obs(1), date_obs(0), rh_date100(date_obs(2), /full))
					; pour "julien date".
    icorrec_phase = 0
    if (jul_dat  lt  jul_cor)  then  begin
	icorrec_phase = 1
	print, 'Correction des phases:  entfi.nval =', entfi.nval / 4
    endif

    temps = [3600000L, 60000L, 1000L, 10L]
    msd   = (transpose(temps) # long(t_deb)) (0)	; h debut en msec
    msf   = (transpose(temps) # long(t_fin)) (0)	; - fin   -------

; Selection des heures:
; Calcul des indices des records de debut et de fin
    nbim = -1
    if (msd eq msf)  then nbim = 1

;  Donnees non comprimees 
    if (entfi.comp eq 0)  then begin
        ind = where (t_deb  ne  t_fin,  count)	; nbre d'elements differents
						;  dans  t_deb et t_fin.
        RH_HDEB, t_deb, $	; entree, heure de debut demandee.
		 kdeb, h	; sortie, kdeb numero d'image de debut, 
				;	  h    heure  ---------------

		; Rem du 23 nov 2005 : quand on entre une heure exterieure au
		;   fichier, RH_DEB  retourne  kdeb = num du dernier enrgt et
		;   h = heure de fin de fichier, meme si on a choisi t_deb
		;   anterieur au debut de fichier.
		;   Ca a l'air de marcher si on entre des heures existantes,
		;   avec  t_fin - t_deb  > 1 scrutation
        t_deb = h		; heure de debut effective.
;	print, format='("Debut  ", 3(i2.2,":"),i2.2)', hd
        if (count ne 0)  then begin
            RH_HDEB, t_fin , $	; entree, heure de fin demandee.
		     kfin, h	; sortie, kfin numero d'image de fin,
				;	  h    heure  --------------

            t_fin = h		; heure de fin effective.
        end else begin
	    kfin = kdeb
            t_fin = t_deb
        endelse
    endif else begin 
;  Donnees comprimees 
        RH_LECDEB, msd, msf,  $ ; entree (heure debut et fin en msec).
	       kdeb, kfin	; sortie numeros extremes des enrg a traiter.
        if (nbim eq 1)  then kdeb = kfin
    endelse

; Si klumax n'est pas une frequence selectionnee, on demande a lire une 
	; frequence au dela de klumax et on tombe sur "end of file".
    isel = where (sel_freq eq 'Y')
    nsel = n_elements (isel)
    if ( abs(kfin - entfi.klumax) lt entfi.nf)  then $
	kfin = entfi.klumax -entfi.nf + isel(nsel-1) + 1L 
    if (i_lec eq 1) then begin
	print, '      ' + $
	    'Numeros d''enregistrements:  debut    fin     fin fichier'
	ch_format = "(32x, i6, 3x, i6, 6x, i6)"
	print, format=ch_format, kdeb, kfin, entfi.klumax
    endif
    klu = kdeb			; numero d'enregistrement lu
    RH_READCH, klu, sel_freq	
	; Lecture prealable, ici seulement pour avoir l'heure de debut. 
	; En entree sel_freq indique les frequences selectionnees. 
	; En sortie les variables en sont dans le common RH.
	; RH_READCH boucle sur les scrutations en incrementant klu, jusqu'a
	;   trouver une scrutation pour une frequence selectionnee. A ce moment
	;   on sort sans incrementer klu, qui doit etre increment par l'utili-
	;   sateur.
	; Au final klu est le nombre total de scrutations lues a toutes les
	;   frequences, selectionnees ou non.
    hmsc = bfi.h
    ch_format = "('            : heure debut : ', " + $
	    "i2, ':', i2, ':', i2, ':', i2)"
;    if (i_lec eq 1) then print, format=ch_format, hmsc

; Mise en forme des header fits, ouverture des fichiers et ecriture des 
	; headers provisoires. A COMMENTER MIEUX.
    numrec    = lonarr(entfi.nf)
    numrec(*) = 0L
    numcnt    = lonarr(entfi.nf)
    numcnt(*) = 0L
    iunit     = lonarr(entfi.nf)
    imsdeb    = 0L
    imsfin    = 24L * 3600000L
    imstd     = lonarr (entfi.nf)
    imstf     = lonarr (entfi.nf)
    imstd(*)  = imsdeb
    imstf(*)  = imsfin
    itd       = intarr (4, entfi.nf)
    itf       = intarr (4, entfi.nf)
    mmax      = fltarr (entfi.nf)
    mmin      = fltarr (entfi.nf)
    dirdsmf   = strarr(entFI.nf) 

; Initialisation des accumulateurs de scrutations pout l'integration.
	; On integre sur toute la duree d'observation choisie avant de comparer
	;   directement a un modele approximatif donn'e a priori ou a un modele
	;   lisse qu'on determine a partir des observations.
	; Il faut un accumulateur pour l'imtegration non selective (avec suf-
	;   fixe _moy) et un autre pour l'integration selective (suffixe _I).
    if (i_lec eq 1) then begin 
	harm_N_np_moy = complexarr(nbre_harm, 10)    ; 10 frequences possibles,
	harm_N_p_moy  = complexarr(nbre_harm, 10)    ;   non polar et polar.
	harm_N_np_I   = complexarr(nbre_harm, 10)
	harm_N_p_I    = complexarr(nbre_harm, 10)
    endif
    c_harm_N_np_I = intarr(10)		; compteur d'integration (2eme passage)
    c_harm_N_p_I  = intarr(10)		; ------------------------------------
    freq_I	  = fltarr(10)		; rustine pour la calibration.
    if  (i_lec eq 2) then begin
	t_i_integ = intarr(n_image/nsel + 2,  2, nf_max + 1)
	    ; Tableau des drapeaux d'integration.
	    ;   1er  indice : scrutation a 1 freq,
	    ;   2eme ------ : non polar ou polar
	    ;   3eme ------ : nbre de frequences.
	    ;   + 2 par precaution.
	    ; nf_max + 1 ( et non nsel) car t_i_integ est adresse en 3eme 
	    ;    indice par le numero de frequence nf.  nf_max + 1 = nsel  si 
	    ;    les premieres frequences sont selectionnees, mais nfmax > nsel
	    ;    si ce n'est pas le cas => plantage.
    endif

; Boucle sur les acquisitions (1 acq =  nbre_harm  harmoniques)
	; Les enregistrement des differentes frequences a une meme heure sont
	; contigus (numero klu). La boucle sur les frequences est donc interne
	; a la boucle sur les heures.
	; Rappel : isel   tableau des frequences qu'on a choisi de traiter.
	;	   nsel	  nombre de frequences a traiter.
	;	   nf	  numero de frequence traitee dans la boucle du while.

    n_image = 1			; initialisation du numero d'image traitee.
    n_bord  = 10		; hauteur des bandes N et S pour ajuster base 
				;   dans RH_MALC_IM_2D. Usuel 10.
    dom = where(sel_freq eq 'Y')
    nf_max = max(dom)		; numero de la plus haute freq selectionnee 
;   n_im_f = intarr(nsel)	; avant 7 avril 03 => plantage si les frequen
				;   ces les plus basses ne sont pas selection-
				;   nees.
    n_im_f = intarr(nf_max + 1)	; initialisation des compteurs d'image pour 
				;   chaque frequence. Les frequences sont re-
				;   perees par leur numero, qui peut etre supe-
				;   rieur a nsel (nbre de frequences selection-
				;   nees si les basses frequences ne sont pas 
				;   selectionnees.
;   while (klu  le  kfin)  do begin
    while (klu  le  kfin + 6)  do begin
	    ; l'ajout de 6 est destine a taiter le cas ou on veut isoler une
	    ;   seule scrutation (dans un fichier 10sec ou 128 sec), et entrer
	    ;   dans la boucle si une une frequence autre que la frequence 0 
	    ;	est selectionnee.
	t0 = systime(1)			; temps en sec depuis le 1er jan 70.
	RH_READCH, klu, sel_freq
	    ; RH_READCH boucle sur les scrutations en incrementant klu, jusqu'a
	    ;   trouver une scrutation pour une frequence selectionnee. A ce 
	    ;   moment on sort sans incrementer klu, qui doit etre incremente
	    ;   par l'utilisateur.
	    ; Au final klu est le nombre total de scrutations lues a toutes les
	    ;   frequences, selectionnees ou non.
;	print, 'VERIF_ANTENNES,  klu, kfin  :', klu, kfin
	if klu eq -999L then goto, a0	; vers fermeture du fichier lu.
	hmsc = bfi.h			; vrai pour donnees non simulees.
	if (n_image  eq  1) then  hmsc_deb = hmsc	
						; pour passage  a  RH_IMAGE_CON
;	print, ''
;	print, 'Boucle while : klu =', fix(klu), '     hmsc =', byte(hmsc(0:3))
	ch_format = "(i2)"
	ch_hms = string(format=ch_format, hmsc(0)) + ':' + $
		 string(format=ch_format, hmsc(1)) + ':' + $
	 	 string(format=ch_format, hmsc(2))
;	print, 'VERIF_ANTENNES,  heure lue :   ', ch_hms, $
;						'   num freq :',bfi.nof
  	nf = bfi.nof				; numero de la frequence lue.
;	print, klu, hmsc			; heure, min sec, 1/100
	freq = float (entfi.frq(nf)) / 10
	ch_format = "('VERIF_ANTENNES,  heure lue : ', " + $
	    "i2, ':', i2, ':', i2, '    freq =', f6.1, ' MHz')"
;	print, ' '
;	print, format=ch_format, hmsc(0), hmsc(1), hmsc(2), freq
	    ; impressions souvent utile
	nsa  = long (bfi.c)			; nbre d'images comprimees. 
	ihms = transpose(temps)#hmsc		; heure en msec.

	if (numrec(nf) eq 0L) then begin
	    imstd(nf) = ihms
	    itd(*,nf) = hmsc
	endif
	pt = lufi.pt
	if (icorrec_phase eq 1) then  RH_COREC_PHASE, nf, pt, hmsc   
		; correction de l'erreur sur le phasage jusqu'au 4 nov 98.
	pt = reform (pt, 2 , 2 , entfi.nval / 4)
	    ; pt = fltarr(4, nbre_harm),  puis  fltarr(2, 2, nbre_harm). C'est
	    ;		la table des donnees :
	    ;		       1er indice: cos ou sin, 
	    ;		       2eme ind: non polar ou polar, 
	    ;		       3eme indice: balaie les  nbre_harm  harm.

	    ; Rem : non polar et polar ne sont pas traites symetriquement.
	    ;	C'est un reste du traitement non polar + polar pour les images
	    ;	solaires.

;     Integration non polar
;      Remplissage du tableau des harmoniques non polar rang'es format Nancay. 
	harm_N_np = complex(pt(0, 0, *),  pt(1, 0, *))
	    ; le 2eme indice indique non polar ou polar.
	harm_N_np = reform(harm_N_np)	; pour supprimer 2 indices degeneres.
	    ; pt est un reel, tableau des harmoniques. 1er indice: cos ou sin, 
	    ;   2eme ind: non polar ou polar, 3eme indice: balaie les nbre_harm
	    ;   harmoniques.
	    ; harm_N_np est donc un complexarr (nbre_harm).
;      Integration non selective (1ere lecture)
	if (i_lec eq 1) then begin
	    harm_N_np_moy(*, nf) = harm_N_np_moy(*, nf) + harm_N_np
	endif
;      Integration selective (2eme lecture)
	if (i_lec eq 2) then begin
		; on convient de detecter les parasites sur l'harmonique (NS2,
		;   NS0_ew), de numero 45 dans harm_N. Tous les harmoniques a
		;   une meme frequence sont ainsi gardes ou jetes. Des frequen-
		;   ces differentes ne sont pas forcement parasitees ensemble.
;	  Test d'integration ameliore sur plusieurs harmoniques
	    RH_DP_SUB_1,  $			; fichier RH_DP_CALIB_SUB.PRO
		ant_test_par,   a_p,  correl,   i_polar,      $	; entree 
		n_image,        freq,     nf, 		      $	; entree
		harm_N_np_moy,  harm_N_np,		      $	; entree
		i_integ_np				; sortie, drapeau 
							;   d'integration.
	    t_i_integ(n_im_f(nf), 0, nf) = i_integ_np
		    ; rappel : t_i_integ tableau d'autorisation d'integration,
		    ;	       n_im_f    numero d'image a la freq de numero nf.
		    ;	       2eme indice : non polar ou polar.
	    if (i_polar eq 1) then goto, a1
		    ; Dans ce cas on ne fait pas l'integration selective non 
		    ;   polar. On utilise seulement i_integ_np pour en affecter
		    ;   la valeur a i_integ_p.
;	  Integration selective proprement dite
	    if (i_integ_np eq 1) then begin
		harm_N_np_I(*, nf) = harm_N_np_I(*, nf) + harm_N_np
		c_harm_N_np_I (nf) = c_harm_N_np_I(nf)  + 1
	    endif
	endif			; fin du if de 2eme lecture non polar.
	freq_I (nf) = freq
	max_np      = 1		; valeur bidon pour RH_CLOSE_HEADER.
	min_np      = 1		; valeur bidon pour RH_CLOSE_HEADER.
;     Fin d'integration non polar

a1:	J_M = 0			; fin du saut de l'integration non polar.

;     Debut d'integration polar
	if (i_polar eq 1) then begin
	    harm_N_p = complex(pt(0, 1, *), pt(1, 1, *))
		; le 2eme indice indique non polar ou polar.
	    harm_N_p = reform(harm_N_p)	; pour supprimer 2 indices degeneres.
;         Integration non selective
	    if (i_lec eq 1) then begin
		harm_N_p_moy(*, nf) = harm_N_p_moy(*, nf) + harm_N_p
	    endif
;         Integration selective
	    if (i_lec eq 2) then begin
;	      Test d'integration ameliore sur plusieurs harmoniques
		RH_DP_SUB_1, $		; dans fichier RH_DP_CALIB_SUB.PRO
		    ant_test_par,  a_p,   correl,  i_polar,   $	; entree.
		    n_image,       freq,     nf,	      $	; entree.
		    harm_N_p_moy,  harm_N_p,		      $	; entree.
		    i_integ_p					; sortie.
		t_i_integ(n_im_f(nf), 1, nf) = i_integ_p
;	      Integration selective proprement dite
		    ; Pour une observation destinee a la calibration de nom-
		    ;   breux harmoniques polar sont nuls. En particulier NS2
		    ;   et NS4 entre elles et avec H10 et H12, qui sont utili-
		    ;   ses dans la detection des parasites impulsifs.
		    ; Pour un observation de controle et si le reseau H est de-
		    ;	point'e, il y a moins d'harmoniques polar nuls mais
		    ;	(NS2, NS4) reste nul.
		    ; Par simplicite dans un premier temps (12 mai 03) on admet
		    ;	que si une scrutation non polar est acceptable la scru-
		    ;	tation polar l'est aussi. Pour preserver l'avenir et
		    ;	modifier le moins possible ls structure du programme
		    ;	on ecrase  i_integ_p  avec  i_integ_np.
		    ;	Rem : La partie polar de  t_i_integ  n'est pas ecrasee
		    ;		mais elle devient inutilisee.
		i_integ_p = i_integ_np			; solution du 12 mai 03
		if (i_integ_p eq 1) then begin
			; on peut faire le test sur  i_integ_np  mais alors il
			;   faut changer plus bas la normalisation de l'inte-
			;   gration selective.
		    harm_N_p_I(*, nf) = harm_N_p_I(*, nf) + harm_N_p
		    c_harm_N_p_I(nf)  = c_harm_N_p_I(nf) + 1
		endif
	    endif			; fin du if de 2eme lecture polar.
	    freq_I (nf) = freq
	endif				; fin d'integration polar.

	klu = klu + 1L			; numero de l'engrt suivant a lire,
	n_image = n_image + 1		; numero d'image suivante, toutes fre-
					;   quences selectionnees jointes.
	n_im_f(nf) = n_im_f(nf) + 1	; incrementation du compteur de scru-
					;   tations pour la frequence corres-
					;   pondant a la scrutation lue.
    endwhile		; Fin de boucle sur les acquisitions et les frequences.

    hmsc_fin = hmsc	; pour passage  a  RH_IMAGE_CON. 

; CONTROLE des scrutations integrees sans selection (non polar ou polar) a 
	; toutes les frequences
    icon = 0
    if ((icon eq 1) and (i_lec eq 1)) then begin
	if (i_polar eq 0) then $
	    DP_CON_1, correl, i_polar, freq_I, harm_N_np_moy, harm_N_np_moy
	if (i_polar eq 1) then $
	    DP_CON_1, correl, i_polar, freq_I, harm_N_p_moy, harm_N_p_moy
    endif

; Controle de la selection des scrutations au cours de la 2eme lecture
    icon = 0
    if ((icon eq 1) and (i_lec eq 2)) then $
	DP_CON_2, n_image, nsel, freq_I, t_i_integ
	    ; Rappel : le 2eme indice de t_i_integ correspond a non polar ou 
	    ;		polar.

; Fermeture du fichiers lu
a0: J_M = 0				; fin saut de sortie de boucle while.
    n_image       = n_image       - 1	; nbre d'images (dernier + 1 en trop).
;   c_harm_N_np_I = c_harm_N_np_I - 1	; ------------- np    non parasitees.
;   c_harm_N_p_I  = c_harm_N_p_I  - 1	; ------------- polar --------------
    rh_close				; fermeture du fichier de lecture.


; Normalisation des scrutations integrees sans excision des parasites et aiguil
	; lage vers la relecture pour excision de parasites ou vers les traces.
	; La normalisation de l'integration selective est faite plus bas.
    if (i_lec eq 1) then begin		; eq 10 pour essais (comme avant)
	harm_N_np_moy   = harm_N_np_moy / (n_image/nsel)
	harm_N_p_moy    = harm_N_p_moy  / (n_image/nsel)
	a_harm_N_np_moy = abs(harm_N_np_moy)
	a_harm_N_p_moy  = abs(harm_N_p_moy)
	    ; a_harm_N_np_moy sera considere comme une valeur raisonnable du 
	    ;   niveau des harmoniques. 
	    ; Rem : il est inutile de remettre a zero les accumulateurs 
	    ;        harm_N_np_I et harm_N_p_I, car ils seront re-definis dans
	    ;	     le 2eme passage.
	ch_format = "('            : fin 1ere lecture,', i5,' scrutations " + $
	    "(', i4, ' par frequence).')"
;	print, format=ch_format, n_image, n_image/nsel
;	print, '            : debut 2eme lecture.'
;	help, nsel, klu, n_image
	    ; on verifie avec cette instruction que klu est bien le numero 
	    ; d'enregitrement a partir du debut du fichier et que n_image est
	    ; le nombre total d'images lues pour l'ensemble des frequences 
	    ; selectionnees.
	icon = 0
	if (icon eq 1) then begin
	    window, 0
	    plot, a_harm_N_np_moy(0 : 575, num_freq)
	    stop
	endif
	goto, a6			; vers 2eme lecture de fichier.
    endif

; Controle des compteurs de scrutations integrees aux frequences selectionnees
    icon = 0
    if (icon eq 1) then begin
	print, 'n_im_f =', n_im_f
	print, ' '
	print, 'c_harm_N_np_I =', c_harm_N_np_I
    endif

    t_integ = systime(1)
    dt = t_integ - t_lec
    ch_format ="(6x, 'Fin 2eme lecture et retrait parasites :', i3, ' sec')"
    print, format=ch_format, nint(dt)
    print, ' '

    ch_format = "(5x, i2, ' frequences,', i8, ' images lues,', i8, " + $
						"' images lues par freq')"
    print, format=ch_format, nsel, n_image, nint(n_image / nsel)
    print, '      Nombres d''images integrees pour les frequences ' + $
							     'selectionnees :'
    print, '         non polar :', c_harm_N_np_I(0:5)
    print, '         polar     :', c_harm_N_p_I (0:5)

    if ( (i_polar eq 0) and (c_harm_N_np_I(num_freq) eq 0) ) then begin
	print, 'Aucune image selectionne a la frequence demandee'
	stop
    endif
    if ( (i_polar eq 1) and (c_harm_N_p_I(num_freq) eq 0) ) then begin
	print, 'Aucune image selectionne a la frequence demandee'
	stop
    endif


; Controle integration
    icon = 0
    if (icon eq 1) then begin
	    ; rappel si i_polar=0  h arm_N_np_I ne 0    harm_N_p_I =0
	    ;           i_polar=1  h arm_N_np_I = 0     harm_N_p_I ne 0 
;     Trace de harm_N_np_I ou harm_N_p_I
	if (i_polar eq 0)  then  begin
	    harm_N_I = harm_N_np_I
	    ch_label = 'abs(harm non polar integres)'
	endif
	if (i_polar eq 1)  then  begin
	    harm_N_I = harm_N_p_I
	    ch_label = 'abs(harm polar integres)'
	endif
	amax = max(abs(harm_N_I(*, num_freq)), min=amin)   & da = amax-amin
	ymax = amax + 0.05 * da		& ymin = amin - 0.05 * da
	window, 0
	plot,  abs(harm_N_I(*, num_freq)), $
	    xrange=[-20, n_elements(harm_N_I(*, num_freq)) + 20], xstyle=1, $
	    yrange=[ymin, ymax], ystyle=1
	xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_label
	stop
    endif

    print, 'Fin integration et debut de calcul et trace des images'


; Balayage sur les frequences pour retenir la seule frequence selectionnee
	; Rappel : il y avait un bouclage sur les frequences dans le while de
	;	     lecture.
    for nf=0, 10-1 do begin		; pour balayer toutes les frequences,
					;   selectionnees ou non
	freq = freq_I(nf)
	if (freq eq 0) then goto, a5	; freq non selectionnee dans sel_freq.
					;   Saut vers la frequence suivante.
	if (i_polar eq 1) then goto, a7
	    ; Non polar et polar ne sont pas traitees sur le meme plan. C'est 
	    ;   un reste du cas des images solaires.
	ch_format = "('Frequence', i4, ' MHz :', i6, ' images lues,'," + $
		"i6, ' images non polar non parasitees')"
	print, ' '
	print,  format=ch_format,  nint(freq),  nint(n_image/nsel),  $
							c_harm_N_np_I(nf)
	harm_N_np = reform(harm_N_np_I(*, nf) /  c_harm_N_np_I(nf) )
		; pour une simulation   n_image=1  et  si nsel>1  on diviserait
		;   par zero.
	; niveau de boucle sur les frequences dans les traces non polar.
;     Mise a zero des harmoniques de E1 et E0 avec les H d'ordre > 16 
	    ;   (i_pave_seul=1)
	    ; Les autres harmoniques exterieurs au pave central seront annules
	    ;	dans RH_IMAGE_CON grace a sel_ant, qui a ete modifie par 
	    ;	i_pave_seul.
	    ;   De toutes facons ce n'est qu'une rustine de mise au point.
	if (i_pave_seul eq 1) then begin
	    harm_N_np(521 - 7 : 521) = 0
	    harm_N_np(539 - 7 : 539) = 0
			;  E1	---- E2, E1, H1 a H16		504 a 521
			;  E0	---- E2, E1, H1 a H16		522 a 539
	endif

;     Excision simplifiee d'une eventuelle 2eme source compacte 
	    ; (rustine du 8 dec 04 pour excision du cas du 27 aug 02
	    ; La source excisee est supposee plus faible que celle qui sert a 
	    ;    calibrer.
	    ; On la retire, ainsi que son alias,mais de facon moins complete 
	    ;   que la source principale quand il s'agira de determiner la 
	    ;	base.
	xm2    = -1	; abscisse du max, en canaux interfero entre -64 + 63
	ym2    =  0	; ordonnee ------------------------------------------
	larg_b =  3 	; 1/2 largeur de la barre d'ecretage (canaux interfero)
	r_cont =  5	;  rayon domaine de contrainte pour interpol facettes 
			;   (canaux interferometriques) 
	long_ew = 6	; 1/2 longueur de la barre d'ecretage EW  ------------
	if (i_soustrac_comp  eq  1) then begin
	    i_recentrage = 0  & x_centrage = 0  & y_centrage = 0  ; bidons.
	    i_stop = 1
	    i_pave_plein = 0
	    RH_MALC_IM_2D, $
	     ; entree
		i_stop, i_sys_lin,					$
		i_pave_plein,   i_recentrage,  x_centrage,  y_centrage,	$
		freq,  ie0_ew,  harm_N_np,  correl,  npi, n_bord,	$
	     ; sortie: image interfero et lobe theorique, avec le centre du
	     ;	    Soleil en (npi/2, npi/2).
		harl_0, l_th,  harm_0, im_2d,  flux_total, flux_compact, uu, vv

	    SOUSTRAC_COMPACT, $			; fichier SOUSTRAC_C_B_H
		i_sys_lin,  npi, 	      $	; entree parametres generaux
		larg_b,  r_cont,  long_ew,    $	; entree parametres d'ecretage
		xm2,  ym2,	              $	; entree position source
		correl,  harm_N_np,  im_2d,   $	; entree donnees
		im_ecr,  harm_N_ecr, im_ecr_2	; sortie

		    ; im _ecr     image ecretee avec les bandes interpolees. 
		    ;		      Sa TF n'est donc pas strictement limitee
		    ;		      a la grille incomplete du RH
		    ; harm_N_ecr  vecteur  harm_N  calcule a partir de  im_ecr.
		    ;		     Il ne contient donc pas toute l'informa-
		    ;		     tion de im_ecr.
		    ; im_ecr_2    image recalculee a partir de  harm_N_ecr. 
		    ;		    C'est donc un filtrage de  im_ecr  par le 
		    ;		    RH. les bandes ont disparu et les secon-
		    ;		    daires obliteres sont reconstitues. Satis-
		    ;		    faisant a l'oeil.
	    icon = 0
	    if (icon eq 1) then begin
		CALIB_CON		; pour compiler.
		CALIB_CON_74, i_sys_lin, npi, freq, correl, im_2d, im_ecr, $
							harm_N_ecr, im_ecr_2
	    endif
;         Elimination definitive de la source secondaire
	    harm_N_np = harm_N_ecr
;	    im_2d     = im_ecr_2		; utile ?
	endif	; fin du if d'excision de la source compacte secondaire.

;     Recalibration non polar eventuelle (usage fichiers coeff_corr* seuls)
	if (i_recalib eq 1) then begin
	    harm_0 = harm_N_np
	    i_np_p = 0				; 0 non polar, 1 polar
	    RH_RECALIBRATION, $			; fichier RH_RECALIBRATION.PRO
		n_image,		      $	; entree
		i_np_p, freq,  fich_cor,      $	; ------
		correl,  		      $	; ------
		harm_N_np			; ------ sortie

	    icon = 0
	    if (icon eq 1) then begin
		diff = harm_N_np - harm_0
		window, 2
		plot, abs(diff)
		print, abs(diff)
		stop
	    endif
	endif
;     Correction eventuelle de certaines antennes (gains entres manuellement)
	    ; Il n'y a pas de "if" car on entre les drapeux d'utilisation
	    ;    g_flag.
	n_image = 1				; pour compatibilite
	CORR_GAIN_ANT, $		; fichier RH_CORR_ANTENNES.PRO
	    n_image,		      $	; entree.
	    phi_ew_ns,   phi_w_e,     $	; -----
	    g_flag,   g_amp,   g_phi, $	; ------
	    correl,		      $	; ------
	    harm_N_np			; entree et sortie

;     Correction des irregularites d'implantation d'antennes
	    ; (doit tenir compte que c'est recalibre ou non pour faire la cor-
	    ;	rection de position d'antennes)
	if (i_corr_pos_ant eq 1) then begin
	    n_image = 1				; pour compatibilite
	    CORR_POS_ANT, $			; dans RH_CORR_ANTENNES.PRO
		n_image,			      $ ; entree
		i_source_cal,  h_cal,	              $ ; ------
		date_obs,  dec,  hmer, ihm_moy,	      $ ; ------
		correl,    freq, 		      $ ; ------
		harm_N_np  				; entree et sortie

		; . dec et hmer sont relatifs a la source observee. Pour la 
		;     source de calibration (en fait souvent la meme que la
		;     source de controle) ces grandeurs sont definies dans 
		;     CORR_POS_ANT.
		; . i_source cal  identifie la source de calibration ou de
		;     recalibration (qui oblitere la calibration du TR)
		; . h_cal   heure de calibration (dans l'entete du fichier 
		;     apres mise enservice des AA fin 2003). Ecrasee plus haut
		;     par  h_recal  s'il y a recalibration.
		; . ihm_moy est [heure, min] de la scrutation en TS (source de 
		;     controle) ou en TU (soleil). On en fait la difference
		;     avec  hmer, exprimee dans le meme temps (TS ou TU).
	endif

;     Correction depointage et rotation des antennes (sources de controle)
	    ; Dans ce cas date_obs suffit pour savoir comment corriger. Le cas
	    ;   de l'examen de sources de calibration n'est pas prevu au 11 avr
	    ;   03.
	    ; Rem : avec RH_DP_CALIB l'appel a CORR_ROT_DEP_NP ne figure pas
	    ;	      a ce stade car il est fait dans CALIBRATION.
	type_obs = 1  & type_calib = 1  & n_image = 1  ; pour compatibilite
	CORR_ROT_DEP_NP, $		; dans fichier RH_CORR_ANTENNES.PRO
		n_image,				$ ; entree.
		date_obs,  type_obs,  type_calib,       $ ; ------
		i_corr_rot_NS0,				$ ; ------
		rotew,  rotns,  ah_dep,  delta,  freq,  $ ; ------ (rads, MHz).
		harm_N_np, 			        $ ; ------ et sortie.
		a_H2, a_NS0				  ; sortie (radians),

;     Controle des harmoniques NS de NS0_ew et NS0_ns
	icon = 0
	if (icon eq 1) then  begin
	    ch_polar = 'non polar : '
	    DP_CON_1,  freq,  ch_polar,  harm_N_np
	endif
	; niveau de la boucle de lecture des scrutations successives.

;     Calcul de l'image non polar et normalisation
	    ; Le temps cpu utilis'e depuis le debut de la boucle sur les scru-
	    ;   tations est environ 0.162 sec sur mesopz
	ch_pol = 'non polar'
	RH_IMAGE_CON, $			; dans fichier RH_IMAGE_CON.PRO	
	     ; tous les parametres sont en entree. Version simplifiee de 
	     ;     RH_CALC_IMAGE_HELIO.
	     ; Caracterisation image
		sref, correl, freq,  ch_pol, npi,  n_bord,		$
	     ; Suppression (eventuelle) des harmoniques de certaines antennes
		ie0_ew,   ie0_ns,   ie1_ew,   ie2_ew,    ie2_ns,	$
		ins45_ew,  ins45_ns,  i_redond,  gap_ns0,  sel_ant,	$
	     ; Donnees pour une image
		n_image, hmsc_deb, hmsc_fin,				$
		harm_N_np,						$
	     ; Divers
		i_sys_lin,  i_AA_NS8,					$
	     ; Affichages dans IM_2D_CON
		icon_1,  icon_2,  icon_3,  icon_4,  n_win,  fr_z,  ch_siz

		; Rem : n_image,  hmsc_debut,  hmsc_fin  sont ajoutes le 24
		;	nov 2005 pour affichage sur le trace.

	; niveau non polar de la boucle de lecture des scrutations successives.

;      Fin de traces non polar.
	if (i_polar eq 0) then goto, a5		; vers fin de procedure.
	    ; Non polar et polar ns sont pas sur lr meme plan. C'est un reste
	    ;   du cas des images solaires.

	; niveau non polar

a7:	J_M = 0	; fin du saut de l'image non polar si i_polar=1 .

;     Debut de traitement de l'image polar
	if (i_polar eq 1)  then begin
	    harm_N_p = reform(harm_N_p_I(*, nf) /  c_harm_N_p_I(nf) )
	    ; niveau polar dans boucle de lecture des scrutations successives.
;	  Controle de series d'harmoniques NS (pour verif VERIF_ANTENNES polar)
	    icon = 0
	    if (icon eq 1) then begin
		hNS_NS0_ew = complexarr(25)
		for i=1, 24 do hNS_NS0_ew(i) =  harm_N_p(9 + 18 *i)
		ch_format ="(50f8.3)"
		print, ' '
		print, 'NS0_ew avec les NS'
		print, format=ch_format, abs(hNS_NS0_ew)
		print, ' '
		print, 'NS0_ns avec NS7 a NS23'
		print, format=ch_format, abs(harm_N_p(573:575)), $
							abs(harm_N_p(558:572))
		print, ' '
		print, 'NS8 avec NS0 a NS17'
		print, format=ch_format, abs(harm_N_p(540:557))
		print, ' '
		print, 'NS45 avec les NS'
		print, format=ch_format, abs(harm_N_p(450:485))
		print, ' '
		stop
	    endif

;	  Recalibration polar eventuelle
	    if (i_recalib eq 1) then begin
		i_np_p = 1			; 0 non polar, 1 polar.
		n_image = 1			; pour compatibilite
		RH_RECALIBRATION, $		; fichier RH_RECALIBRATION.PRO
		    n_image,		      $	; entree
		    i_np_p,  freq,  fich_cor, $	; entree
		    correl,  		      $	; entree
		    harm_N_p			; entree sortie
	    endif

;	  Correction eventuelle de certaines antennes (gains "manuels")
		; Pas de "if" car on entre le drapeau d'utilisation.
		n_image = 1			; pour compatibilite
	    CORR_GAIN_ANT, $			; fichier RH_CORR_ANTENNES.PRO.
		n_image,	          $	; entree.
		phi_ew_ns,   phi_w_e,     $	; -----
		g_flag,   g_amp,   g_phi, $	; ------
		correl,		          $	; ------
		harm_N_p			; entree et sortie

;         Correction d'implantation irreguliere des antennes
	    if (i_corr_pos_ant eq 1) then $
		n_image = 1		; pour compatibilite
		CORR_POS_ANT, $		; fichier RH_CORR_ANTENNES.PRO
		    n_image,				$ ; entree
		    i_source_cal,  h_cal,			$ ; ------
		    date_obs,  dec,  hmer,  ihm_moy,	$ ; ------
		    correl,    freq, 			$ ; ------
		    harm_N_p  				  ; entree sortie

;         Correction des harmoniques dans le cas de l'examen des sources de
		;   controle
		; Dans ce cas date_obs suffit pour savoir comment corriger. Le
		;   cas de l'examen de sources de calibration n'est pas prevu
		;   au 11 avr 03.
		; Rem : avec RH_DP_CALIB l'appel a CORR_ROT_DEP_P ne figure pas
		;	  ici car il est fait dans CALIBRATION_P.
	    type_obs = 1  & type_calib = 1  & n_image = 1  ; pour compatibilite
	    CORR_ROT_DEP_P, $		; dans fichier RH_CORR_ANTENNES.PRO
		n_image,			       $ ; entree
		date_obs,   type_obs,    type_calib,   $ ; ------
		i_corr_rot_NS0,			       $ ; ------
		rotew,  rotns,  ah_dep,  delta,  freq, $ ; ------ (rads, MHz).
		harm_N_p, 			       $ ; ------ et sortie.
		a_H2, a_NS0				 ; sortie (radians),

;	  Controle des harmoniques NS de NS0_ew et NS0_ns
	    icon = 0
	    if (icon eq 1) then  begin
		ch_polar = 'polar : '
		DP_CON_1,  freq,  ch_polar,  harm_N_p
	    endif
	; niveau de la boucle de lecture des scrutations successives.
;	  Remplacement eventuel des donnees polar par des donnees simulees
		; La simulation concerne ici uniquement les donnees solaires.
		;   Dans le cas de la calibration elle est faite plus bas.
;	    if (i_simulation eq 0) then  begin
;		objet_simule    = 0  ; au lieu de fltarr(npi, npi). Economie.
;		tf_objet_simule = 0  ; -------------------------------------
;	    endif

;	  Calcul de l'image polar et normalisation
	    ch_pol = 'polar'
	    RH_IMAGE_CON, $		; dans fichier RH_IMAGE_CON
		; tous les parametres sont en entree.
	 	; Caracterisation image
		    sref,  correl, freq,  ch_pol, npi,  n_bord,		$
	 	; Suppression eventuelle des harmoniques de certaines antennes
		    ie0_ew,   ie0_ns,   ie1_ew,   ie2_ew,    ie2_ns,	$
		    ins45_ew,  ins45_ns,  i_redond,  gap_ns0,  sel_ant,	$
	 	; Donnees pour une image
		    n_image, hmsc_debut, hmsc_fin,			$
		    harm_N_p,	$
	 	; Divers
		    i_sys_lin,  i_AA_NS8,				$
		; Affichages dans IM_2D_CON
		    icon_1,  icon_2,  icon_3,  icon_4,  n_win,  fr_z,  ch_siz


	    max_p   = max(im_2d_p,  ind_p,  min=min_p)

;	    print, 'RH_DPATCHFITS_NRH (apres RH_CALC_IMAGE_HELIO' + $
;		'     polar)  heure scrut traitee :   ', ch_hms

	endif	; fin de traces polar.
a5:	J_M = 0	; fin du saut de l'image polar si i_polar=0, ou de la frequence
		;   tout entiere (non polr et polar) si elle n'est pas selec-
		;   tionnee.

    endfor		; Fin de boucle sur les frequences

    end			; fin de VERIF_ANTENNES