;    REGROUPEMENT DE TOUTES LES PROCEDURES IMPLIQUANT LES ANTENNES DU RH

;  CORR_POS_ANT     correction du defaut de correction de mouvement diurne du a
;		      des ereurs de position de toutes les antennes.
;  CORR_POS_ANT_0   version embryonnaire du precedent correction de quelques
;		      antennes, les autres etant supposees bien placees.
;  CORR_GAIN_ANT    correction manuelle de certaines antennes.
;  CORR_ROT_DEP_NP  correction depointage et rotation non polar 
;  CORR_ROT_DEP_P   --------------------------------- polar
;  RH_CORR_ANTENNES 	    qu'on appelle pour compiler l'ensemble
;
;    Rappel : la correction du depointage des antennes de reseau H est faite 
;		dans CORR_ROT_DEP_NP.PRO et CORR_ROT_DEP_P.PRO. Ces programmes
;		corrigent aussi de la rotation des dipoles, qui est differente 
;		en non polar et polar.
;______________________________________________________________________________
; Rangement des antennes

; E2  E1  E0  
;  0   1   2   

; H1  H2  H5  H4  H5  H6  H7   NS0_ew   H9  H10  H11  H12  H13  H14  H15  H16
;  3   4   5   6   7   8   9     10     11   12  1 3   14   15   16   17   18

;    NS0    NS1    NS2    NS3    NS4    NS5    NS6    NS7    NS8   NS9   NS10  
;    19     20     21     22     23     24     25     26     27    28     29   

;   NS11   NS12   NS13   NS14   NS15   NS16   NS17   NS18   NS19   NS20  
;    30     31     32     33     34     35     36    3 7     38     39

;   NS21   NS22   NS23   NS45      AA1   AA2   AA3   AA4
;    40     41     42     43        44    45    46    47


;______________________________________________________________________________


PRO CORR_POS_ANT, $
	n_image,			      $ ; entree
	i_source_cal,  h_cal,		      $	; ------
	date_obs,  dec_obj,  hmer_obj,        $	; ------
	ihm,				      $	; ------
	correl, freq, 			      $	: ------
	harm_N  				; entree et sortie

; Creation 21 juillet 03
; But : corriger les harmoniques du defaut de correction de mouvement diurne
;	  du a des ereurs de position de toutes les antennes.
;	Remplace CORR_POS_ANT_0, qui attribuait tout a des mauvaises positions
;	  des extension.
;       Marche dans le cas general, ou l'objet observ'e et la source de cali-
;	  bration sont differents.
;	Ne fait pas la difference entre une calibration d'origine et une reca-
;	  libration (effectuee en amont). Dans le cas d'une recalibration,
;	  h_cal a etet ecrasee en amont par l'heure de recalibration h_recal 
;	  (elle meme extraite du nom du fichier de recalibration) et la source
;	  de recalibration est identifiee comme le soleil par 

; Modifications :
; 03 oct  9	introduction des correctifs de position pour les antennes AA.
; 04 avr 12     introduction de date_cor_cal = [12, 04, 2004]. A partir de 
;		  cette date on yient compte des positions exactes des antennes
;		  dans la calibration. Pour les observations utilisant une 
;		  telle calibration (ou recalibration) il faut ensuite faire
;		  une correction donnee par (1) et utilisant evidemment les 
;		  memes positions d'antennes, avant de construire des images.
;		  date_cor_cal  sert a definir iflag (0 ou 1). Suivant la 
;		  valeur de iflag on utilise la formule (3) ou la formule (1).
;	        introduction de  date_cor_TR = [01, 01, 2005] . A partir de
;		  cette date le programme TR inclut les bases D correctes 
;		  (les memes qui sont utilisees depuis un certains temps deja 
;		  dans la calibration et le calcul des images).
;   		  A partir de cette date  CORR_POS_ANT  n'a plus rien a faire
;		  et se court-circuite lui meme.
; 04 mai 27	clarification des affinements successifs des positions d'anten-
;		  nes, remise a zero de i_regl_sup, qui etait reste a 3 de 
;		  facon intempestive.
; 04 sep 15	amelioration de quelques commentaires et verification qu'on
;		  utilise bien  date_cor_cal et date_cor_TR.
; 04 dec 15     extension de la logique de recalibration : avant cette date
;		  i_recalib  ne figurait pas dans la liste d'entree et la sour-
;		  ce de calibration declaree etait toujours le Cygne. La cor-
;		  rection de position :
;		  . etait correcte pour une recalibration sur le Cygne
;		  . aurait ete tres fausse pour une recalibration sur le soleil
;		      (h_recal en TU  associee au passage au meridien du Cygne
;		       en TS).
;		  Il n'est pas utile d'ajouter  i_recalib  a la liste d'entree
;		  puisque la recalibration effectuee en amont se subsitue a la
;		  calibratuion d'origine. Il faut seulement savoir quelle est
;		  la source de recalibration, qui peut etre le soleil lui meme.
;		  La recalibration peut meme etre appliquee (pour controle) a
;		  une source non solaire.
; 04 mar  8	fixation de la date de modification du Temps Reel  date_cor_TR,
;		  qui inclut desormais les corrections de phases correspondant
;		  aux positions reelles des antennes, date apres laquelles les
;		  observations ne devront plus etre corrigees avec 
;		  CORR_POS_ANT.

; Notations : 
; i_source_cal	identification de la source de calibration (ou de recalibra-
;		  tion),
; h_cal		heure centrale de l'intervalle de calibration (en pratique
;		    l'heure de debut est acceptable) en TS.
;		    intarr(> ou = 2), mais on n'utilise que heures et minutes.
;		  Ecrasee par h_recal  en amont de CORR_POS_ANT dans le cas
;		    d'une recalibration.
; 
; dec_obj, hmer_obj  decinaison et heure de passage au meridien de l'objet 
;		       observ'e (soleil ou source de controle (TS ou TU).
;		       intarr(> ou = 3).
; ihm	  	intarr(2) : heures, minutes de la scrutation traitee (TS ou TU)
;

; POSITION DU PROBLEME :
; Si les positions des antennes (regulieres ou non) utilisees dans le program-
;   me Temps Reel (TR) presentent des ecarts par rapport aux positions reelles,
;   il en resulte que la correction de poursuite des franges est incorrecte et 
;   introduit une phase supplementaire :
;		phi_e = 2*pi/lambda * (D - D0).uc	(1)
;
;	avec :	D   base reelle (de l'antenne de reference vers l'antenne de 
;		      reseau),
;		D0  base supposee dans le programme Temps Reel,
;		uc  vecteur unitaire de visee vers le centre de la source,
;       pour lesquels on adopte le systeme habituel dans le calcul des phases :
;		. x dans le pan de l'equateur vers l'ouest de Nancay
;		. y ------------------------------ le sud  ---------
;		. z parallele a l'axe des poles.
;	
;   La phase phi de l'harmonique en sortie de correlateur est definie comme 
;     phi tel que les signaux aeriens aux antennes "de reference" et "de re-
;     seau" soient rspectivement  :
;	exp(i omega t)  et  exp(i omega t + phi)
;   phi_e s'ajoute alors a phi.
;
;   La correction doit en etre faite ulterieurement, apres la relecture des 
;   harmoniques et avant les calculs d'image. Apres cette operation les harmo-
;   niques restent eventuellement affectes d'une phase instrumentale constante
;   (due aux longueurs de cable et aux filtres) mal corrigee.
;
; Si une calibration est faite en utilisant la meme valeur D0 pour les lignes
;   de base, c'est a dire si la relecture des harmoniques faite avant la cali-
;   bration ne comporte pas la correction donnee par (1), la phase addition-
;   nelle  phi_e  donnee par (1) s'ajoute a la phase instrumentale reelle, (qui
;   est comptee avec la meme convention de signe que la phase phi de l'harmoni-
;   que) et la calibration fournit des phases instrumentales apparentes :
;		phi_i' = phi_i +  2*pi/lambda * (D - D0).uc0	(2)
;   ou uc0 est le vecteur unitaire de visee moyen vers le centre du Cygne pen-
;   dant l'intervalle de calibration. 
;   Au cours d'une observation ulterieure (ou d'un retraitement de la meme
;   observation auto-recalibree), la procedure de correction de poursuite des
;   franges du programme Temps Reel (qui re-utilise la meme valeur D0) produit 
;   la phase supplementaire donnee par (1), a laquelle s'ajoute maintenant
;   une erreur egale a l'oppose du 2eme terme du membre de droite de  (2). 
;    => les harmoniques sont maintenant affectes d'une phase supplementaire
;       indesirable :
;		phi_s = 2*pi/lambda * (D - D0).(uc - uc0)	(3)
;   qu'il faut corriger pour obtenir une image correcte (on remarque que phi_s
;   s'annule pour uc = uc0).
;   On remarque que la dependance temporelle (contenue dans uc) est la meme
;   pour phi_e dans (1) et pour phi_s dans (3).
;
;   Une correction a posteriori des observations corrigees du mouvement diurne
;   et calibrees en utilisant D0 implique l'utilsation de (3).
;
; Si, toujours dans le cas ou le TR utilise la valeur approchee D0, la calibra-
;   tion est faite en appliquant aux harmoniques de la source de calibration
;   la correction donnee par (1), en donnant a uc la valeur uc0, on obtient les
;   vraies phases instrumentales  phi_i, celles qui dependent des longueurs de 
;   cable et des filtres. 
;   Pour obtenir une image correcte lors d'une observation ulterieure pour 
;   laquelle le TR utilise  D0  et  phi_i, il faut appliquer la corection (1).
;
;   Rem : la correction  (1)  depend du temps par uc et ne s'annule que si les
;         vecteurs (D - D0) et uc sont orthogonaux (par pur hasard).
;   
;   Ce sera le cas si, une fois que D est connu avec certitude, le programme
;   Temps reel continue a utiliser D0 par simplicite, mais que, rappelons le,
;   la calibration fasse appel a CORR_POS_ANT. Ainsi la correction de mouvement
;   diurne serait imparfaite mais les phases instrumenetales seraient bien cor-
;   rigees.
;
; Si le programme Temps Reel et le programme de calibration utilisent D tous
;   les deux, il n'y a plus de correction a faire. De meme si on fait une re-
;   calibration qui utilise aussi la valeur correcte de D.
;
; Determination de D
;   Supposons qu'on ne connaisse pas encore D et qu'on cherche a le determiner 
;   par tatonnements (c'est ainsi qu'on raffine les valeurs de D tabulees plus
;   bas). On appelle :
;   . D0 la valeur vectorielle (inexacte) utilisee dans :
;	 - le programme Temps Reel pour observer la source de calibration, 
;	 - dans la procedure de calibration (dans laquelle existe l'option de
;	     ne pas corriger la calibration des mauvaises valeurs de position 
;	     utilisees par le temps reel), 
;	 - dans le progamme Temps Reel pour la source de controle.
;   . D1 ---------------------- (encore inexacte) utilisee pour "corriger", 
;	     a leur relecture, les harmoniques de la source de controle.
;   Il apparait alors une phase supplementaire de deux termes : 
;     . l'un est l'erreur sur la phase intrumentale deduit de (2):
;		 - 2*pi/lambda * (D - D0).uc0
;     . l'autre est ce qui reste de l'erreur (1) quand on y fait D = D1 .
;   Au total la phase supplementaire est :
;	phi_s' =  2*pi/lambda * ( (D - D1).uc - (D-D0).uc0 )    (4)
;   La partie dependant du temps (par uc) de phi_s' est la meme que dans (3).
;   On cherche a la faire disparaitre => D = D1. Il reste une phase constante 
;   non corrigee mais on s'en fout, le but ici etant de determiner D et non 
;   d'avoir une image parfaite.
;
; En outre l'initialisation du Temps Reel comporte une correction (fausse et 
;   datant de l'ere Delouisienne) de l'implantation des antennes, qui suppose 
;   qu'il y a des erreurs de position seulement dans la direction EW, avec des
;   ecarts faux. 
;   Cette correction (qui n'etait pas reprise dans la calibration, ce qui faus-
;   sait la coherence de toute la procedure) a ete supprimee le lundi 28 jul 03
;   en fin d'apres midi. Elle ne sera pas remplacee par une correction exacte 
;   tant que celle-ci ne sera pas au point. Il faut donc supprimer ici la 
;   "correction" Delouisienne jusqu'au 25 jul 03 inclus et pas plus tard.
;
; Ulterieurement (fin 2004 ?) la correction exacte sera incluse dans l'initia-
;   lisation du Temps Reel (=> images correctes en monitoring) et supprimee
;   ici.Il n'y aura plus de correction de position des antennes a faire en aval
;   du Temps Reel, que ce soit pour faire des images ou une calibration.

; Informations reprises de POS_ANT_RH.PRO :
	; Valeurs envoyees le 13 oct 2003 a Andree Coffre pour le Temps Reel :
	;    dew = 49.905	au lieu de   49.903
	;    hew =  0.00248	----------    0.002 48
	;    u   = -0.00380	----------   -0.003 80
	;    dns  = 54.274	----------   54.271
	;    hns  = 0.042190	----------    0.042 280
	;    al   = 0.826540	----------    0.826 420

; Definition des diverses dates de modification des programmes
    date_ann_del = [28, 07, 2003]
	; Ne plus retirer les "corrections" delouisiennes apres cette date.
	;   La correction a ete faite le 29 jul 03 a 07:02 TU.


    date_AA = [01, 11, 2003]
	; Date a laquelle on a introduit des valeurs ameliorees des parametres
	;   moyens des reseaux dans le Temps Reel, a l'occasion de l'arret
	;   pour l'installation des antennes AA. Il, ne reste donc plus que
	;   des irregularites de positions aleatoires de moyenne nulle autour
	;   des reseaux moyens. Sert a determiner  i_ecart_pos  (1 ou 2).

    date_cor_cal = [12, 04, 2004]	
	; Date a laquelle on inclut la correction de position des antennes (1),
	;   supposee exacte, dans la calibration. Pour les observations utili-
	;   sant une telle calibration (ou recalibration) il faut ensuite faire
	;   une correction donnee par (1) et utilisant evidemment les memes 
	;   positions d'antennes, avant de construire des images.
	; C'est l'avant derniere date a definir avant la date d'introduction
	;   des corrections de position dans le Temps Reel. Il n'y aura alors
	;   plus rien a corriger en aval du Temps Reel (calibration ou images).
	; Em resum'e :
	;   . avant cette date corriger les observations solaires avec (3)
	;   . apres -------------------------------------------------- (1)

    date_cor_TR = [01, 02, 2008]
	; Mis a jour le 8 mars 2006, mais devra etre revu apres la periode de 
	;   test du Temps Reel (date_cor_TR = [01, 02, 2006]).
	; Date apres laquelle le programme TR inclut les bases D correctes
	;   (les memes qui sont utilisees depuis un certains temps deja, puis-
	;   qu'on les connait, dans la calibration et le calcul des images).
	;   A partir de cette date il n'y a plus rien a faire.
	; La version meudonnaise reste avec une date du futur lointain jusqu'a
	;   ce que le TR a Nancay soit decrete au point.

;  Bricolage sur la date d'observation (annees sur 2 chiffres)
    ijour = date_obs(0)    & imois = date_obs(1)    & ian = date_obs(2)
    if (ian gt 1980) then begin
	; on ne fait rien, la date est complete.
    endif else begin		; la date est exprimee sur 2 chiffres
	if (ian lt 50) then  ian = ian + 2000
	if (ian gt 50) then  ian = ian + 1900
	    ; ces rustines sont valables entre 1950 et 2050, date a laquelle on
	    ;   sera tous morts.
    endelse

;  Calcul des dates juliennes et test. Decisions subsequentes
    day_ann_del = julday(date_ann_del(1), date_ann_del(0), date_ann_del(2))
    day_AA      = julday(date_AA     (1), date_AA     (0), date_AA     (2))
    day_cor_cal = julday(date_cor_cal(1), date_cor_cal(0), date_cor_cal(2))
    day_cor_TR  = julday(date_cor_TR (1), date_cor_TR (0), date_cor_TR (2))

    day_obs = julday(imois, ijour, ian)

    if (day_obs gt day_cor_TR) then begin		; rien a faire.
	if (n_image eq 1) then begin	
	  print, 'Les corrections d''irregularite de reseau ont deja ete ' +$
		'faites dans le '
	  print, '   programme Temps Reel. Pas de corrections supplementaires'
	endif
	goto, a1					; vers fin programme.
    endif

    if (n_image eq 1) then begin
	if (day_obs  lt  day_ann_del)  then  print, $
	    '      Annulation des corrections Delouis du Temps reel.'
	if (day_obs  ge  day_ann_del)  then  print, $
	    '      Il n''y a plus de corrections Delouis dans le Temps reel'
    endif

    if (day_obs lt day_cor_cal) then begin
	    ; la calibration (ou la recalibration) n'est pas encore corrigee 
	    ;   des irregularites d'implantation des antennes. On utilise la 
	    ;	formule (3). Le cas est identifie par iflag=0.
	iflag = 0
	if (n_image eq 1) then begin
	    print, '      Correction irregularite des reseaux pour obser' + $
						'vations anterieures a la'  
	    print, '        correction des irregularites dans la calibration.'
	endif
    endif

    if (day_obs ge day_cor_cal) then begin
	    ; la calibration est corrigee des irregularites d'implantation des
	    ;   antennes et ces irregularites sont connues avec certitude.
	    ;   On utilise la formule (1). Cas identifie par iflag=1
	iflag = 1
	if (n_image eq 1) then begin
	    print, '      Correction irregularites des reseaux pour obser' + $
						'vations posterieures a la'
	    print, '        correction des irregularites dans la calibration.'
	endif
    endif

    if (day_obs lt day_AA)  then  i_ecart_pos = 1
    if (day_obs ge day_AA)  then  i_ecart_pos = 2
	; i_ecart_pos permet de choisir entre les correctifs de positions par
	;   rapport aux anciens parametres moyens des reseaux, ou par rapport 
	;   aux nouveaux.
    
; Reconnaissance de l'utilisation des antennes anti-aliasing.
    nbre_harm = n_elements(harm_N)

; Definition de la position reelle des antennes en metres
;  Pour chaque antenne on definit :
;  A) dr_a = position reelle - position supposee avec un pas regulier
;     Ainsi dr_a est l'oppose de l'erreur faite sur la position des antennes,
;       en les supposant a des positions theoriques correspondant a des pas 
;	reguliers egaux aux pas moyens des reseaux EW et NS.
;     Les dr_a sont donnees en millimetres, dans le repere equatorial de Nancay
;	(qui n'est pas le systeme projete sur le soleil dans les calculs d'ima-
;	ge) :
;	  . x dans le pan de l'equateur vers l'ouest de Nancay,
;	  . y ------------------------------ le sud  ---------,
;	  . z parallele a l'axe des poles.
;       et ont ete calculees par POS_ANT_RH (dans fichier POS_ANT_RH.PRO), 
;	dans les conditions suivantes : 
;	  . la latitude est celle de l'antenne GPS de reception de l'heure
;	  . les mesures de position sur le terrain ont ete faites dans un 
;	      repere tourne de -0.00070 radians par rapport aux axes EW et NS,
;	      mais avec une verticale locale correcte (voir commentaires dans 
;	      le fichier POS_ANT_RH.TXT). Admettre cette erreur de  -0.00070 
;	      radians lors des mesures sur le terrain permet en effet de faire
;	      coincider beaucoup mieux les parametres moyens deduits des mesu-
;	      res sur le terrain avec les series de mesures interferometriques
;	      faites vers 1986. Cette hypotheses est raisonnable puisqu'elle
;	      permet, en jouant sur un seul parametre, de reduire les ecarts 
;	      sur plusieurs autres.
;	  . les parametres moyens des reseaux utilises sont strictement ceux du
;	      programme Temps Reel de facon a corriger exactement le calcul de
;	      poursuite des franges (remarque deja faite dans POS_ANT_RH.PRO) :
;	      a) pour les observations anterieures au 10 oct 03 (arret pour
;		   installer les antennes AA) :
;		      dew = 49.903      hew = 0.00230       u  = -0.00400
;		      dns = 54.271      hns = 0.042280      al =  0.826420
;	           (on pris i_ancien = 2 dans POS_ANT_RH (fichier du meme nom)
;	      b) pour les observations posterieures a l'installation des anten-
;		   nes AA, les parametres moyens des reseaux sont ceux obtenus 
;		   en tatonnant avec POS_ANT_RH (voir commentaires dans ce pro-
;		   gramme), legerement differnts des precedents :
;		       dew = 49.905      hew = 0.00248        u = -0.00380
;		       dns = 54.274      hns = 0.042190      al =  0.826540
;  B) dr_d = position supposee par Delouis - pos supposee avec un pas regulier,
;	calculees dans le triedre equatorial par POS_ANT_RH, utilisant :
;	  . les decalages (exclusivement dans la direction du reseau EW)
;	  . les parametres moyens du reseau EW utilises dans le temps reel.
;	Voir archive des positions modifiees dans CORR_POS_ANT.TXT
;	  reglage 1 = avec le 26 aug 03
;	  reglage 2 = ------- 31 ------

; Definition des etapes d'approximation des positions d'antennes (commentaire):
	; Etape 0 : positions donnees par les parametres moyens,
	; Etape 1 : ajout des ecarts mesures sur le terrain (2 choix pour dr_a
	;	      selon que la date d'observation est anterieure ou poste-
	;	      rieure a nov 03 (i_ecart_pos = 1 ou 2). Cette etape 1 est
	;	      faite de toutes facons. 
	; Etape 2 : ecrasement de certains des ecarts precedents par des 
	;	      valeurs qui donnent des resultats satisfaisant pour les
	;	      series d'observations radio precisees ci-dessous. Cette
	;	      etape 2 est fait de toutes facons (choix de i_regl_2).
	; Etape 3 : modifications de l'etape 2, definies par la valeur de 
	;	      i_regl_sup :
	;	      0      : pas de modifications a l'etape 2.
	;	      3 a 15 : modifications plus ou moins importantes de 
	;			 l'etape 2.

; Etape 1 : ajout des ecarts mesures sur le terrain
    if (i_ecart_pos eq 1) then $    ; cas du Temps Reel d'avant les AA, avec
				    ;   les parametres moyens d'avant nov 03.
      dr_a = [ $		    ; ecarts en mm dans le REPERE EQUATORIAL,
				    ;   calcules a partir des mesures sur le
				    ;   terrain et des parametres moyens utili-
				    ;   ses par le Temps Reel d'avant nov 03
				    ;   (i_ancien = 2 dans POS_ANT_RH).
	[  -80,   127,   114], $    ; E2
	[  -43,    -9,   -64], $    ; E1
	[  -23,   -44,   -41], $    ; E0

	[  -45,   -42,   -38], $    ; H1
	[  -88,   -31,   -39], $    ; H2
	[ -108,   -49,   -27], $    ; H3
	[  -41,   -50,   -31], $    ; H4
	[  -54,   -74,   -27], $    ; H5
	[  -55,   -90,   -16], $    ; H6
	[   -6,  -101,   -12], $    ; H7
	[    0,     0,     0], $    ; NS0_ew

	[    7,   -44,     8], $    ; H9  
	[   17,   -55,     1], $    ; H10 
	[   49,   -76,    16], $    ; H11 
	[   15,   -77,    12], $    ; H12 
	[   25,   -73,    31], $    ; H13 
	[   41,   -56,    51], $    ; H14
	[   44,   -42,    20], $    ; H15
	[ -123,   -35,    51], $    ; H16

	[    0,     0,     0], $    ; NS0_ns
	[   -4,     4,     1], $    ; NS1 
	[   -7,     9,     1], $    ; NS2 
	[  -10,    21,     9], $    ; NS3
	[  -14,    25,    10], $    ; NS4 
	[  -17,    30,    10], $    ; NS5 
	[  -21,    34,    11], $    ; NS6
 	[  -24,    39,    11], $    ; NS7
	[  -27,    50,    19], $    ; NS8 
	[  -30,    55,    20], $    ; NS9 
	[  -34,    52,    13], $    ; NS10

	[  -37,    57,    14], $    ; NS11
	[  -41,    61,    14], $    ; NS12
	[  -44,    73,    22], $    ; NS13
	[  -47,    77,    23], $    ; NS14
	[  -50,    89,    31], $    ; NS15
	[  -54,   100,    39], $    ; NS16
	[  -57,   105,    39], $    ; NS17
	[  -61,   116,    47], $    ; NS18
	[  -64,   118,    50], $    ; NS19
	[  -67,   132,    56], $    ; NS20
	[  -70,   139,    54], $    ; NS21
	[  -73,   145,    67], $    ; NS22
	[  -78,   152,    65], $    ; NS23

	[ -150,   332,   154], $    ; NS45

        [  -24,    49,    15], $    ; AA1  (complet'e le 9 oct 03).
        [  -19,    48,     7], $    ; AA2   ---------------------
        [  -14,    47,    -1], $    ; AA3   ---------------------
        [   -9,    46,    -9]]	    ; AA4   ---------------------
 

    if (i_ecart_pos eq 2) then $    ; cas du Temps Reel avec les AA, ou on a
				    ;   introduit des parametres moyens ame-
				    ;   liores.
      dr_a = [ $		    ; ecarts en mm dans le repere equatorial,
				    ;   calcules a partir des mesures sur le
				    ;   terrain et des parametres moyens utili-
				    ;   ses par le Temps Reel d'apres nov 03.
				    ;   (i_ancien = 0 dans POS_ANT_RH).
        [   16,     126,     113], $    ; E2
        [  -11,     -10,     -64], $    ; E1
        [    7,     -45,     -41], $    ; E0
 
        [  -17,     -43,     -38], $    ; H1
        [  -64,     -31,     -39], $    ; H2
        [  -88,     -50,     -27], $    ; H3
        [  -25,     -50,     -31], $    ; H4
        [  -42,     -74,     -27], $    ; H5
        [  -47,     -90,     -16], $    ; H6
        [   -2,    -101,     -12], $    ; H7
        [    0,       0,       0], $    ; NS0_ew
        [    3,     -44,       8], $    ; H9  
        [    9,     -55,       1], $    ; H10 
        [   37,     -76,      16], $    ; H11 
        [   -1,     -77,      12], $    ; H12 
        [    5,     -73,      31], $    ; H13 
        [   17,     -56,      51], $    ; H14 
        [   16,     -42,      21], $    ; H15 
        [ -155,     -35,      51], $    ; H16 
 
        [    0,       0,       0], $    ; NS0_ns
        [   -1,      -3,      -2], $    ; NS1 
        [   -1,      -4,      -4], $    ; NS2 
        [   -1,       0,       1], $    ; NS3 
        [    0,      -2,      -1], $    ; NS4 
        [    0,      -4,      -4], $    ; NS5 
        [   -1,      -7,      -6], $    ; NS6 
        [   -1,      -8,      -8], $    ; NS7 
        [   -1,      -4,      -3], $    ; NS8 
        [   -1,      -6,      -5], $    ; NS9 
        [    0,     -15,     -14], $    ; NS10
        [    0,     -17,     -17], $    ; NS11
        [   -1,     -20,     -19], $    ; NS12
        [   -1,     -15,     -14], $    ; NS13
        [   -1,     -18,     -16], $    ; NS14
        [   -1,     -13,     -11], $    ; NS15
        [   -1,      -8,      -5], $    ; NS16
        [    0,     -10,      -8], $    ; NS17
        [   -1,      -6,      -2], $    ; NS18
        [   -1,     -11,      -2], $    ; NS19
        [   -1,      -4,       1], $    ; NS20
        [   -1,      -3,      -4], $    ; NS21
        [   -1,      -3,       6], $    ; NS22
        [   -1,      -3,       1], $    ; NS23
        [   -1,      28,      30], $    ; NS45
 
        [    5,      -5,      -7], $    ; AA1  (complet'e le 9 oct 03).
        [   14,      -6,     -15], $    ; AA2  -----------------------
        [   23,      -7,     -23], $    ; AA3  -----------------------
        [   32,      -8,     -31]]	; AA4  -----------------------

     dr_a_terrain =  dr_a 		; sauvegarde

; Etape 2 : Modification de certaines mesures sur le terrain 
	; On satisfait mieux aux observations, avec semble t-il une assez bonne
	;   generalite (raffinnements obtenu par tatonnements en faisant que le
;	;   phasage, bon a 17:00, le reste jusqu'a 23:30)
	; Les valeurs ci dessous ecrasent les valeurs mesurees sur le terrain.
	; POUR "SURVOLER" LES ETAPES 2 ET 3 RECHERCHER LA SEQUENCE :
	;    "Fin de raffinement des reglages de position d'antennes"
    i_regl_2  = 2		; usuel 2
	; Definit l'etape 2 du reglage ( i_regl_2 = 1 ou 2). Usuel i_regl_2 = 2
	;   et  pas de modifications ulterieures (i_reglage = 0  plus bas).
	; Valeurs de i_regl_2 :
	; 0 pour conserver les mesures sur le terrain.	
	; 1 pour que le reglage 2 (Cygne 26 aug 03, tout pointe, NS0 non tour-
	;     nee, recalib. 17:10) ecrase les mesures terrain.
	; 2 pour inclure le correctif ci dessous, qui corrige aussi a peu pres
	;     les observations des 26 aug, 25 avr 03, 2 jun 03, 10 sep 03.
	;     Le correctif a ajouter par rapport a i_regl_2 = 1 pour satisfaire
	;     a peu pres les observations des 26 aug 03, 25 avr 03, 2 jun03, 
	;     10 sep 03  est :
	;  	[   0,    9,    0]	pour  E1
	;  	[   0,   10,    0]	pour  E0
	;  	[  15,    0,    0]	pour  NS0_ew
	;  	[  15,    0,    0]	pour  NS0_ns
	;  	[  27,  -23,    0]	pour  NS16
	;  	[  -5,    5,    0]	pour  NS45
	;      METTRE ALORS I_REGL_SUP A ZERO USUELLEMENT.
    if (i_regl_2 eq 1) then begin	  ; d'apres le Cygne du 26 aug 03 seul.
	dr_a(0,  0) = [-120,  000,  114]  ; E2
	dr_a(0,  1) = [ -65,   -9,  -64]  ; E1
	dr_a(0,  2) = [ -70,  -44,  -41]  ; E0
	dr_a(0, 10) = [ -50,    0,    0]  ; NS0_ew
	dr_a(0, 18) = [  60,  -35,   51]  ; H16
	dr_a(0, 19) = [ -50,    0,    0]  ; NS0_ns
	dr_a(0, 26) = [ -40,   39,   11]  ; NS7
	dr_a(0, 30) = [ -80,   57,   14]  ; NS11
	dr_a(0, 35) = [-140,  200,   39]  ; NS16
	dr_a(0, 39) = [ -37,   70,   56]  ; NS20
	dr_a(0, 43) = [ -20,  300,  130]  ; NS45
    endif
    if (i_regl_2 eq 2) then begin	  ; etape 1 retouchee par moyenne.
	dr_a(0,  0) = [-120,  000,  114]		 ; E2
	dr_a(0,  1) = [ -65,   -9,  -64] + [ 0,   9, 0]	 ; E1
	dr_a(0,  2) = [ -70,  -44,  -41] + [ 0,  10, 0]	 ; E0
	dr_a(0, 10) = [ -50,    0,    0] + [15,   0, 0]	 ; NS0_ew
	dr_a(0, 18) = [  60,  -35,   51]		 ; H16
	dr_a(0, 19) = [ -50,    0,    0] + [15,   0, 0]	 ; NS0_ns
	dr_a(0, 26) = [ -40,   39,   11]		 ; NS7
	dr_a(0, 30) = [ -80,   57,   14]		 ; NS11
	dr_a(0, 35) = [-140,  200,   39] + [27, -23, 0]	 ; NS16
	dr_a(0, 39) = [ -37,   70,   56]		 ; NS20
	dr_a(0, 43) = [ -20,  300,  130] + [-5,   5, 0]	 ; NS45
    endif

; Etape 3 : modifications eventuelles de l'etape 2 
	; Definies comme des modifications et non des ecrasements.
	; Definies par i_regl_sup (a partir de 3 pour eviter les confusions 
	;   avec les etapes 1 et 2 ) : 
	;  0 : aucune modification.
	;  3 et au dela : modifications ci_dessous.
	;
	; Rappel : l'etape 2 donne de bons resultats sur : 
	;	26 aug 03, 10 sept 03 (un peu mieux avec reglage 8)
	;	 9 avr 03 (reglage 12 un peu mieux, E2 seule modifiee de 50 mm)
	;	02 jun 03 (327 seul)  28 mai 03 (327 seul)
	;	13 mai 03 (sauf au tout debut, 1h avant recalib)
	;	25 avr 03 (reglage  6 est a peine different)
	;	 9 jul 03 (reglage 10 est a peine different)
	;	14 sep 03 (reglage 12 un peu meilleur avec E1)
	;	22 ------ (------- 14 --------------- avec E1 et NS45 legers)
	;	24 ------          16 un peu meilleur
	; Modifications suppementaires (valeurs de i_regl_sup) :
	;    3 : 31 aug 03, recalib  17:50. Nettement different. E0 depointee.
	;		24 sep 03
	;    5 : 21 jun 03 (indispensable pour E2).
	;    9 :  6 mai 03 (E2, E1, E0, NS45, indispensables)
	;   10 :  9 jul 03 (E2, E1, NS45 nettement indispensables).
	;   12 : 14 sep 03 (E1 et E2 assez sensibles, E0 inconnaissable)
	;   13 :  9 avr 03 (E2 seule modifiee de 50 mm)
	;   14 : 22 sep 03 (E1 de 10 mm et NS45 de 20 mm))
	;   15 : 20 mai 03 (E2 de 30 mm, e1 de 25 mm E0 de 15 mm)
	;   16 : 24 sep 03 (E2 de 10 mm E1 de 10 mm, E2 de 20 mm)
	;   17 : ajustements faits le 16 sept 04
    i_regl_sup = 17	; 0      : pas de modification de l'etape 2 (usuel),
			; 3 a 16 : voir ci-dessus
			; ERREUR TROUVEE LE 27 MAI 03 : on avait i_regl_sup = 3
			;   ce qui explique peut-etre les dephasages persis-
			;   tants trouves jusque la pour E0 E1 E2 et NS45.

    if (i_regl_sup eq 17) then begin	; oeuvre du 16 sept 04.
	    ; Cygne du 31 aug 04 recalibre a 19:45. 
	    ; Ajustement du 16 sep 04 : on fait en sorte que les phases des
	    ;   harmoniques a 236 MHz (frequence moyenne) restent constantes
	    ;	au cours du temps, meme si ce sont des constantes assez dif-
	    ;	ferentes de zero.
	    ; On ajuste le correctif sur x en annulant la partie impaire, en
	    ;	faisant que les phases soient egales a 17h et 23h
	    ; On ajuste ensuite le correctif sur y en annulant la partie paire,
	    ;	en faisant que les phases soient egales a 17h et 20h.
	    ; Le correctif en z, qui donne une phase costante, indiscernable
	    ;	d'une phase instrumentale a declinaison constante, requiert
	    ;   une autre source que le Cygne.
	dr_a(0,  0) = dr_a(0:2,  0) + [ 150,  100,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [  70,  -15,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [ 100,   30,    0]	; E0
	dr_a(0, 43) = dr_a(0:2, 43) + [ 100, -250,    0]	; NS45
    endif

;   Voir plus bas impression des ecarts adoptes par rapport aux positions 
	; mesurees sur le terrain (chercher la chaine "icon_dr_a").

    if (i_regl_sup eq 16) then begin
	    ; Cygne 24 sep 03, pointe, H2 H4 Ns0 tournees, 25 sep 03, dep 90 W.
	dr_a(0,  0) = dr_a(0:2,  0) + [  10,   00,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [  10,   00,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [  20,   00,    0]	; E0
    endif

    if (i_regl_sup eq 15) then begin
	    ; Cygne 20 mai 03, point'e, H2, H4, NS0 tournees. 
	dr_a(0,  0) = dr_a(0:2,  0) + [ -30,   00,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [ -25,   00,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [ -15,   00,    0]	; E0
    endif
    if (i_regl_sup eq 14) then begin
	    ; Cygne 22 sep 03, point'e, H2, H4, NS0 tournees. 
	dr_a(0,  1) = dr_a(0:2,  1) + [ -10,   00,    0]	; E1
	dr_a(0, 43) = dr_a(0:2, 43) + [ -20,   00,    0]	; NS45
    endif

    if (i_regl_sup eq 12) then begin	; Difficile car E0 depointee.
	    ; Cygne 14 sep 03, point'e, H2, H4, NS0 tournees. 
	dr_a(0,  0) = dr_a(0:2,  0) + [  30,   00,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [  30,   00,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [  00,   00,    0]	; E0
	dr_a(0, 35) = dr_a(0:2, 35) + [ -30, -100,    0]	; NS16
	dr_a(0, 43) = dr_a(0:2, 43) + [ -20,   00,    0]	; NS45
    endif

    if (i_regl_sup eq 10) then begin	; Difficile car E0 depointee.
	    ; Cygne 9 jul 03, point'e, H2, H4, NS0 tournees. 
	dr_a(0,  0) = dr_a(0:2,  0) + [ 105,   00,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [  35,   00,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [  00,   00,    0]	; E0
;	dr_a(0, 10) = dr_a(0:2, 10) + [  30,    0,    0]	; NS0_ew
;	dr_a(0, 19) = dr_a(0:2, 19) + [  30,    0,    0]	; NS0_ns
	dr_a(0, 43) = dr_a(0:2, 43) + [ -70,   00,    0]	; NS45
    endif

    if (i_regl_sup eq 9) then begin
	    ; Cygne 6 mai 03, point'e, NS0 tournee. 
	dr_a(0,  0) = dr_a(0:2,  0) + [  50,   00,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [  50,   00,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [  50,   00,    0]	; E0
	dr_a(0, 35) = dr_a(0:2, 35) + [  30,   10,    0]	; NS16
	dr_a(0, 43) = dr_a(0:2, 43) + [-100, -200,    0]	; NS45
    endif

    if (i_regl_sup eq 8) then begin
	    ; Cygne 10 sep  03, point'e NS0 non tournee.
	    ; un peu mieux qu'avec le reglage 2
	dr_a(0,  0) = dr_a(0:2,  0) + [ -00,   00,    0]	; E2
	dr_a(0, 10) = dr_a(0:2, 10) + [  30,    0,    0]	; NS0_ew
	dr_a(0, 19) = dr_a(0:2, 19) + [  30,    0,    0]	; NS0_ns
	dr_a(0, 35) = dr_a(0:2, 35) + [  50,   10,    0]	; NS16
	dr_a(0, 43) = dr_a(0:2, 43) + [ -20,   20,    0]	; NS45
    endif
  
    if (i_regl_sup eq 7) then begin
	    ; Cygne 28 mai 03, NS0 tournee, 327 MHz seul. Difficile, A REVOIR
	dr_a(0,  0) = dr_a(0:2,  0) + [  20,  100,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [ -10,   20,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [ -10,   20,    0]	; E0
	dr_a(0, 10) = dr_a(0:2, 10) + [  25,    0,    0]	; NS0_ew
	dr_a(0, 17) = dr_a(0:2, 17) + [  00,    0,    0]	; H15
	dr_a(0, 18) = dr_a(0:2, 18) + [ -00,  -00,    0]	; H16
	dr_a(0, 19) = dr_a(0:2, 19) + [  25,    0,    0]	; NS0_ns
	dr_a(0, 35) = dr_a(0:2, 35) + [  40,   10,    0]	; NS16
	dr_a(0, 43) = dr_a(0:2, 43) + [ -40,   00,    0]	; NS45
	dr_a(0, 39) = dr_a(0:2, 39) + [ -20,    0,    0]	; NS20
	dr_a(0, 43) = dr_a(0:2, 43) + [   0,  220,    0]	; NS45
    endif
  
    if (i_regl_sup eq 6) then begin
	    ; Cygne 25 avr 03, pointe, NS0 tournee, recalib 16:45.
	dr_a(0,  1) = dr_a(0:2,  1) + [   0,   19,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [   0,   20,    0]	; E0
	dr_a(0, 35) = dr_a(0:2, 35) + [  60, -100,    0]	; NS16
    endif

    if (i_regl_sup eq 5) then begin
	    ; Cygne 21 jun 03, pointe, NS0 tournee, recalib 17:00
	dr_a(0,  0) = dr_a(0:2,  0) + [  80,    0,    0]	; E2  verifi'e
								;   le 10sep03
	dr_a(0,  1) = dr_a(0:2,  1) + [  10,    0,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [  10,    0,    0]	; E0
	dr_a(0,  6) = dr_a(0:2,  6) + [ -24,    0,    0]  	; H4
	dr_a(0, 35) = dr_a(0:2, 35) + [  60, -100,    0]	; NS16
	dr_a(0, 43) = dr_a(0:2, 43) + [   0, -200,    0]	; NS45
    endif

    if (i_regl_sup eq 3) then begin
	    ; Cygne 31 aug 03, recalib  17:50. Difficile car E0 depointee.
	dr_a(0,  0) = dr_a(0:2,  0) + [ 100,    0,    0]	; E2
	dr_a(0,  1) = dr_a(0:2,  1) + [  20,    0,    0]	; E1
	dr_a(0,  2) = dr_a(0:2,  2) + [  60,    0,    0]	; E0
	dr_a(0, 10) = dr_a(0:2, 10) + [  20,    0,    0]	; NS0_ew
	dr_a(0, 19) = dr_a(0:2, 19) + [  20,    0,    0]	; NS0_ns
	dr_a(0, 35) = dr_a(0:2, 35) + [  30,  -00,    0]	; NS16
;	dr_a(0, 43) = dr_a(0:2, 43) + [  80,  -00,    0]	; NS45
	dr_a(0, 43) = dr_a(0:2, 43) + [  40,  -50,    0]	; NS45
    endif


;  Cadavres laisse tels quels et re-ecrits plus haut en ajoutant des correctifs
	; au lieu d'ecraser.
;    if (i_regl_sup eq 3) then begin
	    ; Cygne 31 aug 03, recalib  17:50. Complique. On laisse tel quel.
;	dr_a(0,  0) = [  -20,   127,   114]	; E2
;	dr_a(0,  1) = [  -25,    -9,   -64]	; E1
;	dr_a(0,  2) = [  -25,   -44,   -41]	; E0
;	dr_a(0, 10) = [   10,    00,     0]	; NS0_ew
;	dr_a(0, 12) = [   47,   -55,     1]	; H10
;	dr_a(0, 13) = [   40,   -76,    16]	; H11 
;	dr_a(0, 16) = [   45,   -73,    31]	; H13 
;	dr_a(0, 18) = [   80,   -35,    51]	; H16
;
; 	dr_a(0, 19) = [   10,     0,     0]	; NS0_ns
;	dr_a(0, 20) = [   -4,     4,     1]	; NS1 
;	dr_a(0, 21) = [   -7,     9,     1]	; NS2 
;	dr_a(0, 22) = [   10,    21,     9]	; NS3
;	dr_a(0, 23) = [  -14,    25,    10]	; NS4 
;	dr_a(0, 24) = [  -00,    30,    10]	; NS5 
;	dr_a(0, 25) = [  -21,    34,    11]	; NS6
;	dr_a(0, 27) = [  -70,    50,    19]	; NS8
;	dr_a(0, 28) = [  -50,    55,    20]	; NS9
; 
;	dr_a(0, 30) = [  -80,    57,    14]	; NS11
;	dr_a(0, 35) = [  -80,   200,    39]	; NS16
;	dr_a(0, 37) = [  -70,   116,    47]	; NS18
;	dr_a(0, 39) = [  -57,    70,    56]	; NS20
;	dr_a(0, 42) = [ -100,   152,    65]	; NS23
;
;	dr_a(0, 43) = [ -120,   300,   130]	; NS45
;    endif

;    if (i_regl_sup eq 4) then begin	
;	    ; Cygne 31 aug 03 recalib 17:10 (depointage non stabilis'e)
;	    ; On laisse tel quel.
;	dr_a(0,  0) = [ -120,   000,   114]	; E2
;	dr_a(0,  1) = [  -20,    -9,   -64]	; E1
;	dr_a(0,  2) = [  -20,   -44,   -41]	; E0
;	dr_a(0, 10) = [  -00,     0,     0]	; NS0_ew
;	dr_a(0, 18) = [   60,   -35,    51]	; H16
;	dr_a(0, 19) = [  -00,     0,     0]	; NS0_ns
;	dr_a(0, 26) = [  -40,    39,    11]	; NS7
;	dr_a(0, 30) = [  -80,    57,    14]	; NS11
;	dr_a(0, 35) = [ -140,   200,    39]	; NS16
;	dr_a(0, 39) = [  -57,    70,    56]	; NS20
;	dr_a(0, 43) = [  -80,   300,   130]	; NS45
;    endif

; Fin de raffinement des reglages de position d'antennes

; Annulation de la "correction Delouis" (en fonction avant le 28 jul 2003)
    dx_d = $				; _d comme Delouis. en mm.
 	[-380,  -80,  -37, $
;	   E2    E1    E0   
 
	-88,  -96,  -95,  -42,  -29,  -28,  -17, $
;	 H1    H2    H3    H4    H5    H6    H7   
 
	 23, $
;	 NS0_ew   
 
	37,   56,  107,   71,   86,   98,   93,   67, $
;	H9   H10   H11   H12   H13   H14   H15   H16    
 
	-10, $
;	NS0_ns   
 
	25,   10,   20,  -10,   30,   20,  -10,    0,   25,   20, $
;	NS1   NS2   NS3   NS4   NS5   NS6   NS7   NS8   NS9   NS10   
 
	-20,    10,   15,   45,   30,  -10,   45,   30,   40,   40, $
;	NS11  NS12  NS13  NS14  NS15  NS16  NS17  NS18  NS19  NS20   
 
	30,    10,    10,     0,      0,    0,    0,    0]
;	NS21  NS22   NS23    NS45    AA1   AA2   AA3   AA4   
 
; Mise a zero des correction de positions (essais seulement)
;    dr_a = 0 * dr_a			; en commentaire sauf pour essai.
;    dx_d = 0 * dx_d			; en commentaire sauf pour essai.

; Compensation eventuelle de l'ancienne "correction" Delouis dans le TR pour
	; les observations d'avant "date_ann_del"
    if (day_obs lt day_ann_del) then  begin
	    ; Il faut retirer les corrections Delouis faites a l'initialisa-
	    ;   tion du programme Temps Reel.
	dr_a(0, *) = dr_a(0, *) - dx_d		; en principe  dr_a(0, *) -dx_d
    endif

; Impression des ecarts adoptes par rapport aux mesures sur le terrain.
    icon_dr_a = 0
    if (icon_dr_a  eq  1) then begin
	d_dr_a = dr_a - dr_a_terrain
	print, ' '
	print, '      Ecarts adoptes par rapport aux mesures sur le ' + $
		'terrain (mm) :'
	print, format="(8x, 'E2     :', 3i6)",   d_dr_a(0:2,  0)
	print, format="(8x, 'E1     :', 3i6)",   d_dr_a(0:2,  1)
	print, format="(8x, 'E0     :', 3i6)",   d_dr_a(0:2,  2)
	print, format="(8x, 'NS0_ew :', 3i6)",   d_dr_a(0:2, 10)
	print, format="(8x, 'H16    :', 3i6)",   d_dr_a(0:2, 18)
	print, format="(8x, 'NS0_ns :', 3i6)",   d_dr_a(0:2, 19)
	print, format="(8x, 'NS7    :', 3i6)",   d_dr_a(0:2, 26)
	print, format="(8x, 'NS11   :', 3i6)",   d_dr_a(0:2, 30)
	print, format="(8x, 'NS16   :', 3i6)",   d_dr_a(0:2, 35)
	print, format="(8x, 'NS20   :', 3i6)",   d_dr_a(0:2, 39)
	print, format="(8x, 'NS45   :', 3i6)",   d_dr_a(0:2, 43)
	print, ' '
;	stop
    endif

; Conversion des corectifs de position en metres en metres
    dr_a = 0.001 *  dr_a

; Choix des coordonnees de la source de calibration 
	; (ou de recalibration si  i_recalib = 1)
    if (i_source_cal  eq  0) then begin 	; autocalibration sur le soleil
	    ; L'auto-calibration sur le soleil est usuellement appliquee au
	    ;   soleil lui meme, le meme jour, ou un jour tres voisin. Il suf-
	    ;   firait donc dans ce cas d'identifier  dec_cal  et  hmer_cal  a
	    ;   dec_obj  et  hmer_obj.
	    ; Toutefois, pour preserver la possibilite, a des fins de controle,
	    ;   de recalibrer un Cygne a partir d'une recalibration "auto" 
	    ;	faite sur le soleil, on determine ici la position du soleil de
	    ;   facon independante, supposant simplement que la date de reca-
	    ;   libration sur le soleil est tres voisine de la date de l'obser-
	    ;	vation a recalibrer. Les lignes suivantes sont repoduites de
	    ;	INIT_MALAX_2D.
;     Calcul du numero du jour dans l'annee
	m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
	n = 0
	if (imois eq 1) then  goto, a3
	im1 = imois - 1
	for k = 0, im1-1 do n = n + m(k)
a3:	n = n + ijour		; n  est le numero du jour dans l'annee.
;     Calcul heure meridien et declinaison du soleil
	a = 2 * !pi / 365.25
	delta = !pi / 180. * 23.43 * sin(a * (n - 80))
	if (delta ge 0) then begin
	    ddeg = fix(delta)
	    dmin = fix(60 * (delta - ddeg))
	    dsec = fix(3600 * (delta - ddeg - float(dmin)/60))
	    dec_cal = [ddeg, dmin, dsec]
	endif
	if (delta lt 0) then begin
	    delta = - delta
	    ddeg = fix(delta)
	    dmin = fix(60 * (delta - ddeg))
	    dsec = fix(3600 * (delta - ddeg - float(dmin)/60))
	    dec_cal = - [ddeg, dmin, dsec]
	endif
	ahmer = 11.854 + 0.125 * sin(a * n)  +  0.1617 * sin(2 * a * (n+9))
	ahheu = fix(ahmer)
	ahmin = fix(60 * (ahmer - ahheu))
	ahsec = fix(3600 * (ahmer - ahheu - float(ahmin)/60))
	hmer_cal = [ahheu, ahmin, ahsec]
    endif	; fin de calcul pour le soleil (approximatif s'il n'est pas la
		;   source observee, recalibree et corrigee des positions 
		;   d'antennes).
    if (i_source_cal  eq  1 ) then begin 	; Cygne
	dec_cal  = [40, 44, 46]			; precision non necessaire.
	hmer_cal = [19, 59, 36]			; ------------------------
    endif
    if (i_source_cal  eq  2) then begin 		; Vierge
	dec_cal  = [12, 22, 26]			; precision non necessaire.
	hmer_cal = [12, 30, 58]			; ------------------------
    endif
    if (i_source_cal  eq  3) then begin 		; Hydre
	dec_cal  = [-12, -6, -17]		; precision non necessaire.
	hmer_cal = [09,  18,  15]		; ------------------------
    endif

; Parametres de position de la source de calibration (le suffixe 0 caracterise
	; la source de calibration)
    dec0  = !pi/180 * $
	    ( dec_cal(0) + float( dec_cal(1)) / 60 + float( dec_cal(2)) / 3600)
    hmer0 =  hmer_cal(0) + float(hmer_cal(1)) / 60 + float(hmer_cal(2)) / 3600
    ah_cal = h_cal(0) + float(h_cal(1)) / 60
    ah0 = !pi/12  * (ah_cal - hmer0)	; angle horaire de calibration (rad).
    sind0 = sin(dec0)		& cosd0 = cos(dec0)
    sinh0 = sin(ah0 )		& cosh0 = cos(ah0 )

; Parametres de position de la source observee (soleil ou source de controle)
    dec = !pi/180 * $
	      (dec_obj(0) + float( dec_obj(1)) / 60 + float( dec_obj(2)) /3600)
    ahmer_obj = $
	      hmer_obj(0) + float(hmer_obj(1)) / 60 + float(hmer_obj(2)) /3600
    ah  = !pi/12  * (ihm(0) + float(ihm(1)) / 60 - ahmer_obj)	; angle horaire
    sind = sin(dec)		& cosd = cos(dec)
    sinh = sin(ah)		& cosh = cos(ah)

; Calcul des vecteurs unitaires de visee
    uu  = [sinh  * cosd ,  cosh  * cosd ,  sind]
    uu0 = [sinh0 * cosd0,  cosh0 * cosd0,  sind0]
    icon = 0
    if (icon eq 1) then begin
	print, 'Composantes des vecteurs de visee :'
	print, '    vers objet              : ', uu
	print, '    vers source calibration : ', uu0
	stop
    endif


    isaut = 1			; saut de la boucle avec formulation indicee.
    if (isaut eq 1) then goto, a2
; Boucle sur les  nbre_harm (576, 648 ou 720) harmoniques de harm_N
;     Tableaux de verification
	t_D_D0 = [0, 0, 0]
	t_cor = [0]
	n_cor = 0
	t_phi = [0]
; Boucle sur les harmoniques (ancienne formulation avec des indices)
    for i = 0, nbre_harm - 1   do begin
	n_cor = n_cor + 1		; nbre d'harm corriges.
;     Calcul de (base vraie - base supposee)
	D_D0 = dr_a(*, correl(1, i)) - dr_a(*, correl(0, i))
	t_D_D0 = [[t_D_D0], [D_D0]]	; remplissage du tableau de (D-D0) pour
					;   tous les harmoniques.
	icon = 0
	if (icon eq 1) then begin
	    print, 'D_D0 :', D_D0
	    stop
	endif

;     Calcul du dephasage supplementaire
	ac = 3e8			; vitesse de la lumiere, m/sec.
	al = ac / freq / 1e6		; longueur d'onde, en metres.
	if (iflag eq 0) then  phi_e = 2*!pi / al * total(D_D0 * (uu - uu0))
	if (iflag eq 1) then  phi_e = 2*!pi / al * total(D_D0 *  uu)
        t_cor = [t_cor, i]
	t_phi = [t_phi, nint(180/!pi*phi_e)]	; construit le tableau des pha-
						; ses des nbre_harm harmoiques
						; en degres.
	i_c = complex(0, 1)
	coeff_corr = exp(- i_c * phi_e)	    ; signe - car coeff de correction.
;     Correction de l'harmonique
	harm_N(i) = coeff_corr * harm_N(i)
    endfor
	    ; t_cor, n_cor inutilises dans la suite
; Fin de l'ancienne boucle
a2: J_M = 0	; fin du saut de la boucle avec formulation indicee.

; Boucle avec indices implicites (modif du 1er oct 04)
    
    t_D_D0 = dr_a(*, correl(1, *)) - dr_a(*, correl(0, *))
	; t_D_D0  = base vraie - base supposee. C'est un fltarr(3, nbre_harm).
	;   le nbre d'harmoniques est donc gere automatiquement.
;  Calcul du dephasage supplementaire
    i_c = complex(0, 1)
    ac  = 3e8				; vitesse de la lumiere, m/sec.
    al  = ac / freq / 1e6		; longueur d'onde, en metres.
    if (iflag eq 0) then  t_phi_e = 2*!pi / al * transpose(uu-uu0) # t_D_D0
    if (iflag eq 1) then  t_phi_e = 2*!pi / al * transpose(uu    ) # t_D_D0
	; uu-uu0 est un vecteur ligne (3) et t_D_D0 est une matrice (3 colonnes
	;   et 648 lignes). Le produit # ci-dessus somme donc sur l'indice des
	;   3 dimensions spatiales, et on obtient un tableau avec un seul 
	;   indice, de 0 a 647.
    t_coeff_corr = exp(- i_c * t_phi_e) ; signe - car coeff de correction.
;  Correction de l'harmonique
    harm_N  = t_coeff_corr * harm_N	; a ce stade harm_N = complexarr(1,648)
    harm_N = reform(harm_N)
    
    t_phi = nint(180/!pi * t_phi_e)		; en degres.

; Fin pratique de CORR_POS_ANT (controles seuls apres)..

    icon = 0
    if (icon eq 1) then begin
	a_t_D_D0 = reform(sqrt(t_D_D0(0, *)^2 + t_D_D0(1, *)^2 + $
						t_D_D0(2, *)^2))
	print, ' '
	print, 'CORR_POS_ANT :'
	print, '    freq =', freq, '     lambda =', al
	print, '    decl objet :', nint(dec_obj)
	print, '    decl calib :', dec_cal
	print, ' '
	db_max = max(a_t_D_D0, ip)
;	print, ' '
;	print, '    t_phi :'
;	print,      t_phi
	print, 'Corrections de phases :'
;	print, '     E1   H1  ', t_phi(506)
	print, '     E1   H15 ', t_phi(520)
	print, '     E1   H16 ', t_phi(521)
	print, ' '
	print, '     E2   E1  ', t_phi(487)
	print, '     E2   H1  ', t_phi(488)
	print, '     E2   H2  ', t_phi(489)
	print, '     E2   H15 ', t_phi(502)
	print, '     E2   H16 ', t_phi(503)
	print, ' '
	print, '    NS0   NS1 ', t_phi(27)
	print, '    NS0   NS23', t_phi(571)
	print, '    NS0   NS45', t_phi(572)
	print, ' '
	print, '    NS45  NS23', t_phi(481)
	print, '    ----  NS22', t_phi(480)
	print, '    ----  NS21', t_phi(479)

;   Trace des corrections de longueur de base
	ch_freq = string(nint(freq)) + 'MHz : '
;     NS0 a NS23 avec les EW
	window, 0
	plot, a_t_D_D0(0:431), xstyle=1, ystyle=1
	xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_freq + $
	    'abs(corrections de base) pour les NS0 a 23 avec les EW'
;     NS45 avec les NS,  E210 avec les EW,  NS8 et NS0 avec le NS
	window, 1
	amax = max(a_t_D_D0(450 : 575), min = amin)	& da = amax - amin
	y1 = 0		& y2 = amax + 0.05 * da
	absc = indgen(575-450+1) + 450
	plot, absc, a_t_D_D0(450 : 575), xstyle=1, yrange=[y1, y2], ystyle=1
	xyouts, 0.5, 0.97, /normal, alignment=0.5,  ch_freq + $
	    'idem pour les ant. de ref NS45, E2, E1, E0, NS8, NS0'
	x_E2  = [486, 486]	& ch_E2 = 'E2'		& xE2  = 486
	x_E1  = [504, 504]	& ch_E1 = 'E1'		& xE1  = 504
	x_E0  = [522, 522]	& ch_E0 = 'E0'		& xE0  = 522
	x_NS8 = [540, 540]	& ch_NS8 = 'NS8'	& xNS8 = 540
	x_NS0 = [558, 558]	& ch_NS0 = 'NS0'	& xNS0 = 558
	y_ant = [0.1 * da, amax - 0.2 * da]
	ylab = amax - 0.1 * da
	oplot, x_E2 , y_ant & xyouts,xE2 ,ylab,/data,alignment=0.5, ch_E2
	oplot, x_E1 , y_ant & xyouts,xE1 ,ylab,/data,alignment=0.5, ch_E1
	oplot, x_E0 , y_ant & xyouts,xE0 ,ylab,/data,alignment=0.5, ch_E0
	oplot, x_NS8, y_ant & xyouts,xNS8,ylab,/data,alignment=0.5, ch_NS8
	oplot, x_NS0, y_ant & xyouts,xNS0,ylab,/data,alignment=0.5, ch_NS0
;     les AA (a faire)

;   Trace des corrections de phase
;     NS0 a NS23 avec les EW
	window, 2
	plot, t_phi(0:431), xstyle=1, ystyle=1
	xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_freq + $
	    'Corrections de phase) pour les NS0 a 23 avec les EW'
	oplot, [0, 575], [0, 0]
;     NS45 avec les NS,  E210 avec les EW,  NS8 et NS0 avec le NS
	window, 3
	amax = max(t_phi(450 : 575), min = amin)	& da = amax - amin
	y1 = amin - 0.05 * da		& y2 = amax + 0.05 * da
	absc = indgen(575-450+1) + 450
	plot, absc, t_phi(450 : 575), xstyle=1, yrange=[y1, y2], ystyle=1
	xyouts, 0.5, 0.97, /normal, alignment=0.5,  ch_freq + $
	    'idem pour les ant. de ref NS45, E2, E1, E0, NS8, NS0'
	x_E2  = [486, 486]	& ch_E2 = 'E2'		& xE2  = 486
	x_E1  = [504, 504]	& ch_E1 = 'E1'		& xE1  = 504
	x_E0  = [522, 522]	& ch_E0 = 'E0'		& xE0  = 522
	x_NS8 = [540, 540]	& ch_NS8 = 'NS8'	& xNS8 = 540
	x_NS0 = [558, 558]	& ch_NS0 = 'NS0'	& xNS0 = 558
	y_ant = [amin + 0.1 * da,  amax - 0.2 * da]
	ylab = amax - 0.1 * da
	oplot, x_E2 , y_ant & xyouts,xE2 ,ylab,/data,alignment=0.5, ch_E2
	oplot, x_E1 , y_ant & xyouts,xE1 ,ylab,/data,alignment=0.5, ch_E1
	oplot, x_E0 , y_ant & xyouts,xE0 ,ylab,/data,alignment=0.5, ch_E0
	oplot, x_NS8, y_ant & xyouts,xNS8,ylab,/data,alignment=0.5, ch_NS8
	oplot, x_NS0, y_ant & xyouts,xNS0,ylab,/data,alignment=0.5, ch_NS0
	oplot, [0, 575], [0, 0]
;     les AA (a faire)
	stop
    endif

a1: J_M = 0	; fin de saut du programme quand il n'y a rien a faire (les
		;   corrections d'irregularites de reseau sont dans le Temps 
		;   Reel).

    end		; fin de CORR_POS_ANT.

; DEBUT ESPACE COMMENTAIRES ET ARCHIVES 

; Rangement des harmoniques dans harm_N
 	;  NS0  avec E2, E1, H1 a H16		  	  0 a  17
	;  NS1  ---- ------------------------------      18 a  35
	;  NS8  ---- ------------------------------	144 a 161
	;  NS23 ---- ------------------------------     414 a 431
	;  NS45	---- ------------------------------     432 a 449

	; jusqu'au 7 oct 98 inclus:
	;  E0	---- NS0  a NS17			450 a 467
	;  --   ---- NS10 a NS23                        468 a 481
	;  --	---- NS45                               482
	;  --	---- NS7  a NS9                         483 a 485
	; a partir du 8 oct 98 inclus:
	;  NS45	---- NS0  a NS17			450 a 467
	;  --   ---- NS10 a NS23                        468 a 481
	;  --	---- NS45                               482
	;  --	---- NS7  a NS9                         483 a 485

	;  E2	---- E2, E1, H1 a H16			486 a 503
	;  E1	---- E2, E1, H1 a H16			504 a 521
	;  E0	---- E2, E1, H1 a H16			522 a 539
	;  NS8	---- NS0  a NS17			540 a 557
	;  NS0	---- NS10 a NS23 et NS45		558 a 572
	;  ---	---- NS7 a NS9				573 a 575

	;  AA1  ---- NS0 a NS17			576 a 593
	;  AA2  ---- ----------			594 a 611
	;  AA3  ---- ----------			612 a 629
	;  AA4  ---- ----------			630 a 647

	;  XX1  ---- YY1			648 a 665
	;  XX2  ---- YY2			666 a 683
	;  XX3  ---- YY3			684 a 701
	;  XX4  ---- YY4			702 a 719

; ESPACE-ARCHIVE DES POSITIONS D"ANTENNES D'APRES ESSAIS SUR SOURCES
;
;   Valeurs originales mesurees sur le terrain
;	[  -80,     127,     114], $    ; E2  	 mesure sur terrain
;	[  -43,      -9,     -64], $    ; E1
;	[  -23,     -44,     -41], $    ; E0
;	[  -45,     -42,     -38], $    ; H1
;	[  -88,     -31,     -39], $    ; H2
;	[ -108,     -49,     -27], $    ; H3
;	[  -41,     -50,     -31], $    ; H4
;	[  -54,     -74,     -27], $    ; H5	mesure sur terrain
;	[  -55,     -90,     -16], $    ; H6
;	[   -6,    -101,     -12], $    ; H7
;	[    0,       0,       0], $    ; NS0_ew   mesure sur terrain
;       [    7,     -44,       8], $    ; H9  
;       [   17,     -55,       1], $    ; H10 
;       [   49,     -76,      16], $    ; H11 
;       [   15,     -77,      12], $    ; H12 
;	[   25,     -73,      31], $    ; H13 
;	[   41,     -56,      51], $    ; H14 
;	[   44,     -42,      20], $    ; H15  	 mesure sur terrain
;	[ -123,     -35,      51], $    ; H16 	 mesure sur terrain
;	[    0,       0,       0], $    ; NS0_ns mesure sur terrain
;	[   -4,       4,       1], $    ; NS1 
;	[   -7,       9,       1], $    ; NS2 
;	[  -10,      21,       9], $    ; NS3 
;	[  -14,      25,      10], $    ; NS4 
;	[  -17,      30,      10], $    ; NS5 
;	[  -21,      34,      11], $    ; NS6 
;	[  -24,      39,      11], $    ; NS7 
;	[  -27,      50,      19], $    ; NS8 
;	[  -30,      55,      20], $    ; NS9 
;	[  -34,      52,      13], $    ; NS10
;	[  -37,      57,      14], $    ; NS11
;	[  -41,      61,      14], $    ; NS12
;	[  -44,      73,      22], $    ; NS13
;	[  -47,      77,      23], $    ; NS14
;	[  -50,      89,      31], $    ; NS15
;	[  -54,     100,      39], $    ; NS16
;	[  -57,     105,      39], $    ; NS17
;	[  -61,     116,      47], $    ; NS18
;	[  -64,     118,      50], $    ; NS19
;	[  -67,     132,      56], $    ; NS20
;	[  -70,     139,      54], $    ; NS21
;	[  -73,     145,      67], $    ; NS22
;	[  -78,     152,      65], $    ; NS23
;	 -150,     332,     154]]       ; NS45    mesure sur terrain

;    end		; fin de CORR_POS_ANT.    date_cor_cal  iflag

;_____________________________________________________________________________


PRO CORR_POS_ANT_0, $
	i_source,  h_cal,		      $ ; entree
	date_obs,  dec_obj,  hmer_obj,        $	; ------
	ih, im,				      $	; ------
	correl, freq, 			      $	: ------
	harm_N  				; entree et sortie

; Creation 2 juillet 03, non actualis'e pour les antennes AA.
; But : corriger les harmoniques du defaut de correction de mouvement diurne
;	du a des ereurs de position des antennes d'extension, les autres anten-
;	nes etant supposees bien placees (ce qui n'est pas le cas d'apres
;	l'analyse des positions d'antennes mesurees par Champion.

; Programme successeur : CORR_POS_ANT.PRO

; Notations : 
; i_source	  identification de la source de calibration,
; ih_cal, im_cal  heure centrale de l'intervalle de calibration (en pratique
;		    l'heure de debut est acceptable, en TS
; dec_obj, hmer_obj  decinaison et heure de passage au meridien de l'objet 
;		    observ'e (soleil ou source de controle (TS ou TU)
; ih, im	  heures, minutes de la scrutation traitee (TS ou TU).
;

; POSITION DU PROBLEME :
; La position de certaines antennes, notamment E2 et NS45, est imparfaitement 
;   connue. Il est resulte que la correction de poursuite des franges est
;   incorrecte et introduit une phase supplementaire :
;		phi_e = 2*pi/lambda * (D - D0).uc	(1)
;	avec :  D   base reelle (ant de reference -> ant de reseau)
;		D0  base supposee
;		uc  vecteur unitaire de visee vers le centre de la source
;   On adopte le systeme habituel dans le calcul des phases :
;	. x dans le pan de l'equateur vers l'ouest de Nancay
;	. y ------------------------------ le sud  ---------
;	. z parallele a l'axe des poles.
; La formule 1) est valable pour un reseau correctement phas'e. Si le reseau
;   a ete phas'e en ignorant les irregularites d'implantetion de santennes, 
;   les phases instrumentales apparentes obtenues par la procedure de calibra-
;   tion ne sont pas phi_i mais :
;		phi_i' = phi_i + 2*pi/lambda * (D - D0).uc0
;   ou uc0 est la visee vers le centre du Cygne pendant l'intervalle de cali-
;   bration. La procedure de correction de poursuite des franges (qui ignore
;   les irregulatites d'implantation produit alors une phase supplementaire :
;		phi_e' = 2*pi/lambda * (D - D0).(uc - uc0)	(2)
;
; Tant que la procedure de calibration n'aura pas ete modifiee pour inclure les
;   irregularites d'implantation, c'est la formule (2) qui doit etre utilisee.


    print, '      Correction des erreurs de position des antennes'

; Definition de la date apres laquelle les calibrations sont faites en tenant 
	; compte des irregulatite de position des antennes, et comparaison
	; avec la date d'observation
    date_cor_cal = [01, 10, 2003]	; on espere le 1 oct 2003.
;  Bricolage sur la date d'observation (annees sur 2 chiffres)
    ijour = date_obs(0)    & imois = date_obs(1)    & ian = date_obs(2)
    if (ian gt 1980) then begin
	; on ne fait rien, la date est complete.
    endif else begin		; la date est exprimee sur 2 chiffres
	if (ian lt 50) then  ian = ian + 2000
	if (ian gt 50) then  ian = ian + 1900
    endelse

;  Calcul des dates juliennes et test
    day_cor_cal = julday(date_cor_cal(1), date_cor_cal(0), date_cor_cal(2))
    day_obs      = julday(imois, ijour, ian)
    if (day_obs lt day_cor_cal) then iflag = 0	; avant calibration corrigee 
						;   des irregularites d'implan-
						;   tation des antennes,
    if (day_obs ge day_cor_cal) then iflag = 1	; apres ...
    

; Definition de la position reelle des antennes en metres
	; Pour chaque antenne on definit : 
	;	position reelle - position supposee avec un pas regulier
	; Ainsi dr_a est l'oppose de l'erreur faite sur la position des anten-
	;   nes, en les supposant a des positions theoriques correspondant a 
	;   des pas reguliers des reseaux EW et NS.
	; Les positions reelles (par rapport aux positions theoriques corres-
	;   pondant a des pas reguliers) sont donnees en centimetres, dans
	;   le repere equatorial de Nancay (qui n'est pas le systeme projete
	;   sur le soleil) :
	;	. x dans le pan de l'equateur vers l'ouest de Nancay
	;	. y ------------------------------ le sud  ---------
	;	. z parallele a l'axe des poles.
	;   Les composantes suivant z restent inconnues en l'absence de l'uti-
	;     lisation de sources a des declinaisons differentes dce celle du 
	;     Cygne.
 
    dr_a = fltarr(3, 44)
; Valeurs reelles
    dr_a(0,  0) = 0.01 * [ 33, -16,   0] * 1.0	; E2 trop a l'ouest (metres)
    dr_a(0,  1) = 0.01 * [  0,   0,   0]	; E1
    dr_a(0,  2) = 0.01 * [  0,   0,   0]	; E0
    dr_a(0, 43) = 0.01 * [  9, -10,   0] * 1.0	; NS45 trop a l'ouest et trop
						;   pres centre de la Terre.
; Valeurs d'essai
;    dr_a(0,  0) = 0.01 * [110,  0,   0]	; E2 trop a l'ouest (metres)
;    dr_a(0, 43) = 0.01 * [ 50, -5,   0]	; NS45 trop a l'ouest.

    if (i_source eq 1) then begin 		; Cygne
	dec_cal  = [40, 44, 25]			; precision non necessaire.
	hmer_cal = [19, 59, 36]			; ------------------------
    endif

; Parametres de position de la source de calibration
    dec0  = !pi/180 * $
	    ( dec_cal(0) + float( dec_cal(1)) / 60 + float( dec_cal(2)) / 3600)
    hmer0 =  hmer_cal(0) + float(hmer_cal(1)) / 60 + float(hmer_cal(2)) / 3600
    ah_cal = h_cal(0) + float(h_cal(1)) / 60
    ah0 = !pi/12  * (ah_cal - hmer0)	; angle horaire de calibration (rad).
    sind0 = sin(dec0)		& cosd0 = cos(dec0)
    sinh0 = sin(ah0 )		& cosh0 = cos(ah0 )

; Parametres de position de la source observee (soleil ou source de controle)
    dec = !pi/180 * $
	      (dec_obj(0) + float( dec_obj(1)) / 60 + float( dec_obj(2)) /3600)
    ahmer_obj = $
	      hmer_obj(0) + float(hmer_obj(1)) / 60 + float(hmer_obj(2)) /3600
    ah  = !pi/12  * (ih + float(im) / 60 - ahmer_obj)	; angle horaire
    sind = sin(dec)		& cosd = cos(dec)
    sinh = sin(ah)		& cosh = cos(ah)

; Boucle sur les 576 harmoniques de harm_N
;     Tableaux de verification
	t_D_D0 = [0, 0, 0]
	t_cor = [0]
	n_cor = 0
	t_phi = [0]
    for i = 0, 575 do begin
	if ( ((correl(0, i) ne  0) and (correl(1, i) ne  0)) and  $	; E2
	     ((correl(0, i) ne  1) and (correl(1, i) ne  1)) and  $	; E1
	     ((correl(0, i) ne  2) and (correl(1, i) ne  2)) and  $	; E0
	     ((correl(0, i) ne 43) and (correl(1, i) ne 43)) )   $	; N45
					then goto, a1	; vers fin de boucle.
	n_cor = n_cor + 1		; nbre d'harm corriges.
;     Calcul de (base vraie - base supposee)
	D_D0 = dr_a(*, correl(1, i)) - dr_a(*, correl(0, i))
	t_D_D0 = [t_D_D0, D_D0]
;     Calcul des vecteurs unitaires de visee
	uu   = [sinh  * cosd ,  cosh  * cosd ,  sind]
	uu0 = [sinh0 * cosd0,  cosh0 * cosd0,  sind0]
;     Calcul du dephasage supplementaire
	ac = 3e8			; vitesse de la lumiere, m/sec.
	al = ac / freq / 1e6		; longueur d'onde, en metres.
	if (iflag eq 0) then  phi_e = 2*!pi / al * total(D_D0 * (uu - uu0))
	if (iflag eq 1) then  phi_e = 2*!pi / al * total(D_D0 *  uu)
        t_cor = [t_cor, i]
	t_phi = [t_phi, nint(180/!pi*phi_e)]
	if ( (correl(0, i) eq  0)  or  (correl(1, i) eq  0) ) then  begin
				ch_format = "('phi saut   E2 =', i4, ' deg')"
;	    print, format=ch_format, nint(180/!pi * phi_e)
	endif
	if ( (correl(0, i) eq 43)  or  (correl(1, i) eq 43) ) then  begin
				ch_format = "('phi saut NS45 =', i4, ' deg')"
;	    print, format=ch_format, nint(180/!pi * phi_e)
	endif
	i_c = complex(0, 1)
	coeff_corr = exp(- i_c * phi_e)	    ; signe - car coeff de correction.
;     Correction de l'harmonique
	harm_N(i) = coeff_corr * harm_N(i)
a1:	J_M = 0     
    endfor

    icon = 0
    if (icon eq 1) then begin
	print, ' '
	print, 'CORR_POS_ANT :'
	print, '    freq =', freq, '     lambda =', al
	print, '    decl objet :', dec_obj
	print, '    decl calib :', dec_cal
	print, ' '
	print, '    t_D_D0, max, min : ', max(t_D_D0), min(t_D_D0)
	print, ' '
	print, '    t_phi :'
	print,      t_phi
	stop
    endif

    end		; fin de CORR_POS_ANT_0 .

;______________________________________________________________________________

PRO CORR_GAIN_ANT,  $
	n_image,		      $	; entree.
	phi_ew_ns,    phi_w_e, 	      $	; ------
	g_flag,  g_amp,  g_phi,	      $	;  
	correl,			      $	; ------
	harm_N				; entree et sortie

; Creation 20 mai 03
; Modifications :
; 04 jan 13	extension au cas des antennes AA
; 04 sep 21	. refonte pour traiter toutes les antennes
;		. introduction de phi_ew_ns, decalage d'ensemble entre les EW 
;		    et les NS.
; 05 jan 24	erreur corrigee : les gains des antennes a ne pas corriger 
;		   n'etaient mis a 1 que pour n_image=1.
; 05 fev 9	ajout de  phi_w_e  a la liste d'entree. On corrige chaque 1/2
;		  reseau de la moitie de cette difference 
; 05 fev 23     trouve une erreur (copier-coller + faute de frappe) dans la 
;		  modif des harm de E0, qui affectait les harm NS de NS8 :
; 		    harm_N(522) = harm_N(522 : 539) * fac_cor	
;		  au lieu de 
;		    harm_N(539) = harm_N(531 : 539) * fac_cor
;		  rappel : E0	---- E2, E1, H1 a H16		522 a 539

; Notations :
;  g_flag	drapeau d'utilisation du gain declare pour chaque antenne
;  g_amp	module du gain d'antenne a compenser
;  g_phi	phase  ----------------------------- (degres)
;  gain_c	gain complexe

; But correction manuelle et pragmatique des gains d'antennes dont le gain est
;  . soit mal determine dans la calibration,
;  . soit rapidement instable dans le temps,
;  ces correction seront en pratique limite a quelques antennes.

    nbre_harm = n_elements(harm_N)

    i_c = complex(0, 1)

; Calcul du gain complexe
    gain_c = g_amp * exp(i_c * !pi/180 * g_phi)

; Mise a 1 des gains non modifies
    dom_0 = where(g_flag eq 0, ic0)
    dom_1 = where(g_flag eq 1, ic1)
    if (ic0 gt 0) then  gain_c(dom_0) = 1
; Impression des modifications
    if (n_image eq 1) then begin 
	if (ic0 gt 0) then begin
;	    print, '      Numeros des antennes de gain non modifies'
;	    print, dom_0
;	    gain_c(dom_0) = 1	; doit etre hors du if (n_image eq 1). Erreur 
				;   trouvee le 24 jan 05.
	endif
	if (ic1 eq 0) then  print, 'pas de modification manuelle de gains ' + $
	    'd''antennes'
	if (ic1 gt 0) then begin  
 	    print, '      Numeros des antennes de gain modifies'
	    print, dom_1	
	endif
    endif

; Calcul de harm_N produit par le reseau imparfaitement phas'e.
	; Rappel du l'utilisation de correl dans RH_MALC_IM_2D :
	;    bew =   xant(correl(1, *)) - xant(correl(0, *)) 
	;    bns =   yant(correl(1, *)) - yant(correl(0, *))
	; La base est orientee de l'antenne de reference vers l'antenne de 
	;   reseau. L'indice 0 correspond a la reference, l'indice 1 au reseau.
	; La phase phi d'un harm est phase(ant de res) - phase(ant ref), donc:
    harm_N = harm_N / ( conj( gain_c(correl(0, *)) ) * $
			      gain_c(correl(1, *)) )
	; formule reprise se SIMUL_HARM_N, mais avec une division puisqu'il 
	;   s'agit de corriger des gains observes.

; Correction (purement pragmatique) du dephasage general entre EW et NS
    harm_N(0) = harm_N(0:449) * exp(i_c * !pi/180 * (-phi_ew_ns))
	; signe - devant  phi_ew_ns  puisqu'il s'agit de corriger cette phase.
	;
	; Rappel : dans rh_dp_calib,  phi_ew_ns  et  phi_w_e  sont ajoutes aux
	;	phases apparentes g_phi, et tout est corrige en bloc dans
	;	CORR_GAIN_ANT.
    ch_format = $
	'(6x, "Correction generale des ant EW par rapport aux NS : ", ' + $
	'i4, " degres")'
    if (n_image eq 1) then  print, format=ch_format, phi_ew_ns

; Correction (purement pragmatique) du dephasage entre les 1/2 reseaux E et W
	; Pour ne pas decaler l'ensemble du reseau EW par rapport aux NS, on
	; corrige la moitie W de  -phi_w_e / 2  et la moitie E de  +phi_w_e / 2
	;
	; Rappel : dans rh_dp_calib,  phi_ew_ns  et  phi_w_e  sont ajoutes aux
	;	phases apparentes g_phi, et tout est coorige en bloc dans
	;	CORR_GAIN_ANT.
;  Correction des harmoniques "2D" :  moitie E puis moitie W
    p2 = phi_w_e / 2
    fac_cor = exp(- i_c * !pi/180 * p2)
	; signe  "-"  puisqu'il s'agit de corriger cette phase.
    for k = 0, 24 do begin
	harm_N(18*K    ) = harm_N(18*k    : 18*k +  8) / fac_cor
 	harm_N(18*K + 9) = harm_N(18*k + 9: 18*k + 17) * fac_cor
    endfor

;  Correction des series de E2, E1, E0
    fac_cor = exp(i_c * !pi/180 * (-phi_w_e))
    harm_N(495) = harm_N(495 : 503) * fac_cor	; 1/2 serie de E2
    harm_N(513) = harm_N(513 : 521) * fac_cor	; ------------ E1
    harm_N(522) = harm_N(522 : 539) * fac_cor	; ------------ E0
	; erreur (copier-coller + faute de frappe) trouvee le 23 fev 2006 : 
	;     harm_N(522) = harm_N(522 : 539) * fac_cor	; ------------ E0
	;   au lieu de 
	;     harm_N(539) = harm_N(531 : 539) * fac_cor	; ------------ E0
	;  rappel : E0	---- E2, E1, H1 a H16		522 a 539

; Rangement des harmoniques dans harm_N
 	;  NS0  avec E2, E1, H1 a H16	 	  0 a  17
	;  NS1  ---- ----------------------      18 a  35
	;  NS8  ---- ----------------------	144 a 161
	;  NS23 ---- ----------------------     414 a 431
	;  NS45	---- ----------------------     432 a 449

	; jusqu'au 7 oct 98 inclus:
	;  E0	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485
	; a partir du 8 oct 98 inclus:
	;  NS45	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485

	;  E2	---- E2, E1, H1 a H16		486 a 503
	;  E1	---- E2, E1, H1 a H16		504 a 521
	;  E0	---- E2, E1, H1 a H16		522 a 539
	;  NS8	---- NS0  a NS17		540 a 557
	;  NS0	---- NS10 a NS23 et NS45	558 a 572
	;  ---	---- NS7 a NS9			573 a 575

	;  AA1  ---- NS0 a NS17			576 a 593   complete 13 jan 04
	;  AA2  ---- ----------			594 a 611
	;  AA3  ---- ----------			612 a 629
	;  AA4  ---- ----------			630 a 647

    end			; fin de  CORR_GAIN_ANT.
;______________________________________________________________________________

PRO CORR_GAIN_ANT_3,  $
	g_E2,      g_E1,    g_E0,    g_H2,    g_H4,   g_NS0_ew,    $ ; entree
	g_H15,    g_H16,					   $ ;
	g_NS0_ns,  g_NS8,   g_NS21,  g_NS22,    g_NS23,   g_NS45,  $ ; ------
	g_AA1,     g_AA2,   g_AA3,   g_AA4,			   $ ; ------
	correl,						           $ ; ------
	harm_N						; entree et sortie.

; Creation 20 mai 03
; Modifications :
; 04 jan 13	extension au cas des antennes AA
; 04 sep 21	. refonte pour traiter toutes les antennes
;		. introduction de phi_ew_ns, decalage d'ensemble entre les EW 
;		    et les NS.
;		. abandon de la presente version rebaptisee  CORR_GAIN_ANT_3.

; But correction manuelle et pragmatique de certaines antennes dont le gain est
;  . soit mal determine dans la calibration,
;  . soit rapidement instable dans le temps,
;  tant que le reseau n'est pas fiabilis'e.

    nbre_harm = n_elements(harm_N)

    i_c = complex(0, 1)

    i_E2 = nint(g_E2(0))
    a_E2 = g_E2(1)
    p_E2 = g_E2(2) * !pi/180		; en radians
    gc_E2 = a_E2 * exp(i_c * p_E2)	; gc_  comme gain complexe, pour ne pas
					;   ecraser l'entree.


    i_E1 = nint(g_E1(0))
    a_E1 = g_E1(1)
    p_E1 = g_E1(2) * !pi/180		; en radians
    gc_E1 = a_E1 * exp(i_c * p_E1)

    i_E0 = nint(g_E0(0))
    a_E0 = g_E0(1)
    p_E0 = g_E0(2) * !pi/180		; en radians
    gc_E0 = a_E0 * exp(i_c * p_E0)

    i_H2 = nint(g_H2(0))
    a_H2 = g_H2(1)
    p_H2 = g_H2(2) * !pi/180		; en radians
    gc_H2 = a_H2 * exp(i_c * p_H2)

    i_H4 = nint(g_H4(0))
    a_H4 = g_H4(1)
    p_H4 = g_H4(2) * !pi/180		; en radians
    gc_H4 = a_H4 * exp(i_c * p_H4)

    i_NS0_ew = nint(g_NS0_ew(0))
    a_NS0_ew = g_NS0_ew(1)
    p_NS0_ew = g_NS0_ew(2) * !pi/180		; en radians
    gc_NS0_ew = a_NS0_ew * exp(i_c * p_NS0_ew)

    i_H16 = nint(g_H16(0))
    a_H16 = g_H16(1)
    p_H16 = g_H16(2) * !pi/180		; en radians
    gc_H16 = a_H16 * exp(i_c * p_H16)

    i_H15 = nint(g_H15(0))
    a_H15 = g_H15(1)
    p_H15 = g_H15(2) * !pi/180		; en radians
    gc_H15 = a_H15 * exp(i_c * p_H15)

    i_NS0_ns = nint(g_NS0_ns(0))
    a_NS0_ns = g_NS0_ns(1)
    p_NS0_ns = g_NS0_ns(2) * !pi/180		; en radians
    gc_NS0_ns = a_NS0_ns * exp(i_c * p_NS0_ns)

    i_NS8 = nint(g_NS8(0))
    a_NS8 = g_NS8(1)
    p_NS8 = g_NS8(2) * !pi/180		; en radians
    gc_NS8 = a_NS8 * exp(i_c * p_NS0_ns)

    i_NS21 = nint(g_NS21(0))
    a_NS21 = g_NS21(1)
    p_NS21 = g_NS21(2) * !pi/180		; en radians
    gc_NS21 = a_NS21 * exp(i_c * p_NS21)

    i_NS22 = nint(g_NS22(0))
    a_NS22 = g_NS22(1)
    p_NS22 = g_NS22(2) * !pi/180		; en radians
    gc_NS22 = a_NS22 * exp(i_c * p_NS22)

    i_NS23 = nint(g_NS23(0))
    a_NS23 = g_NS23(1)
    p_NS23 = g_NS23(2) * !pi/180		; en radians
    gc_NS23 = a_NS23 * exp(i_c * p_NS23)

    i_NS45 = nint(g_NS45(0))
    a_NS45 = g_NS45(1)
    p_NS45 = g_NS45(2) * !pi/180		; en radians
    gc_NS45 = a_NS45 * exp(i_c * p_NS45)

    i_AA1 = nint(g_AA1(0))
    a_AA1 = g_AA1(1)
    p_AA1 = g_AA1(2) * !pi/180		; en radians
    gc_AA1 = a_AA1 * exp(i_c * p_AA1)

    i_AA2 = nint(g_AA2(0))
    a_AA2 = g_AA2(1)
    p_AA2 = g_AA2(2) * !pi/180		; en radians
    gc_AA2 = a_AA2 * exp(i_c * p_AA2)

    i_AA3 = nint(g_AA3(0))
    a_AA3 = g_AA3(1)
    p_AA3 = g_AA3(2) * !pi/180		; en radians
    gc_AA3 = a_AA3 * exp(i_c * p_AA3)

    i_AA4 = nint(g_AA4(0))
    a_AA4 = g_AA4(1)
    p_AA4 = g_AA4(2) * !pi/180		; en radians
    gc_AA4 = a_AA4 * exp(i_c * p_AA4)

; Rangement des harmoniques dans harm_N
 	;  NS0  avec E2, E1, H1 a H16	 	  0 a  17
	;  NS1  ---- ----------------------      18 a  35
	;  NS8  ---- ----------------------	144 a 161
	;  NS23 ---- ----------------------     414 a 431
	;  NS45	---- ----------------------     432 a 449

	; jusqu'au 7 oct 98 inclus:
	;  E0	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485
	; a partir du 8 oct 98 inclus:
	;  NS45	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485

	;  E2	---- E2, E1, H1 a H16		486 a 503
	;  E1	---- E2, E1, H1 a H16		504 a 521
	;  E0	---- E2, E1, H1 a H16		522 a 539
	;  NS8	---- NS0  a NS17		540 a 557
	;  NS0	---- NS10 a NS23 et NS45	558 a 572
	;  ---	---- NS7 a NS9			573 a 575

	;  AA1  ---- NS0 a NS17			576 a 593   complete 13 jan 04
	;  AA2  ---- ----------			594 a 611
	;  AA3  ---- ----------			612 a 629
	;  AA4  ---- ----------			630 a 647

    if (i_E2 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(0 + 18*i) = harm_N(0 + 18*i) / gc_E2
	harm_N(486) = harm_N(486 : 503) / conj(gc_E2)		; E2 a H16
	harm_N(504) = harm_N(504) / gc_E2			; E1
	harm_N(522) = harm_N(522) / gc_E2			; E0
    endif

    if (i_E1 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(1 + 18*i) = harm_N(1 + 18*i) / gc_E1
	harm_N(487) = harm_N(487) / gc_E1			; E2 
	harm_N(504) = harm_N(504 : 521) / conj(gc_E1)		; E2 a H16
	harm_N(523) = harm_N(523) / gc_E1			; E0
    endif

    if (i_E0 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(2 + 18*i) = harm_N(2 + 18*i) / gc_E0
	harm_N(522) = harm_N(522 : 539) / conj(gc_E0)		; E2 a H16
    endif

    if (i_H2 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(3 + 18*i) = harm_N(3 + 18*i) / gc_H2
	harm_N(489) = harm_N(489) / gc_H2			; E2
	harm_N(507) = harm_N(507) / gc_H2			; E1
 	harm_N(525) = harm_N(525) / gc_H2			; E0
   endif

    if (i_H4 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(5 + 18*i) = harm_N(5 + 18*i) / gc_H4
	harm_N(491) = harm_N(491) / gc_H4			; E2
	harm_N(509) = harm_N(509) / gc_H4			; E1
 	harm_N(527) = harm_N(527) / gc_H4			; E0
   endif

    if (i_NS0_ew eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(9 + 18*i) = harm_N(9 + 18*i) / gc_NS0_ew
	harm_N(503 - 8) = harm_N(503 - 8) / gc_NS0_ew			; E2
	harm_N(521 - 8) = harm_N(521 - 8) / gc_NS0_ew			; E1
	harm_N(539 - 8) = harm_N(539 - 8) / gc_NS0_ew			; E0
    endif

    if (i_H15 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(16 + 18*i) = harm_N(0 + 18*i) / gc_H15
	harm_N(502) = harm_N(502) / gc_H15			; E2
	harm_N(520) = harm_N(520) / gc_H15			; E1
 	harm_N(538) = harm_N(538) / gc_H15			; E0
   endif

    if (i_H16 eq 1) then begin
	for i=0, 24 do $					; NS0 a NS45
	    harm_N(17 + 18*i) = harm_N(0 + 18*i) / gc_H16
	harm_N(503) = harm_N(503) / gc_H16			; E2
	harm_N(521) = harm_N(521) / gc_H16			; E1
 	harm_N(539) = harm_N(539) / gc_H16			; E0
   endif

    if (i_NS0_ns eq 1) then begin
	harm_N(0) = harm_N(0 : 17     ) / conj(gc_NS0_ns)	; E2 a H16
	harm_N(450) = harm_N(450      ) /      gc_NS0_ns		; NS45
	harm_N(558) = harm_N(558 : 575) / conj(gc_NS0_ns)	; NS7 a NS23
    endif

    if (i_NS8 eq 1) then begin
	harm_N(144) = harm_N(144 : 161) / conj(gc_NS8)		; E2 a H16
	harm_N(458) = harm_N(458) / gc_NS8			; NS45
	harm_N(484) = harm_N(484) / gc_NS8			; NS45
	harm_N(540) = harm_N(540 : 557) / conj(gc_NS8)		; NS0 a NS17
	harm_N(574) = harm_N(574) / gc_NS8			; NS0
    endif

    if (i_NS21 eq 1) then begin
	harm_N(378) = harm_N(378 : 395) / conj(gc_NS21)		; E2 a H18
	harm_N(479) = harm_N(479) / gc_NS21			; NS45
	harm_N(569) = harm_N(569) / gc_NS21			; NS0_ns
    endif

    if (i_NS22 eq 1) then begin
	harm_N(396) = harm_N(396 : 413) / conj(gc_NS22)		; E2 a H18
	harm_N(480) = harm_N(480) / gc_NS22			; NS45
	harm_N(570) = harm_N(570) / gc_NS22			; NS0_ns
    endif

    if (i_NS23 eq 1) then begin
	harm_N(414) = harm_N(414 : 431) / conj(gc_NS23)		; E2 a H18
	harm_N(481) = harm_N(481) / gc_NS23			; NS45
	harm_N(571) = harm_N(571) / gc_NS23			; NS0_ns
    endif

    if (i_NS45 eq 1) then begin
	harm_N(432) = harm_N(432 : 449) / conj(gc_NS45)		; E2 a H16
	harm_N(450) = harm_N(450 : 485) / conj(gc_NS45)		; ns0 a NS23
	harm_N(572) = harm_N(572      ) /      gc_NS45		; NS7 a NS23
    endif

    if (nbre_harm gt 576) then begin
	if (i_AA1 eq 1) then  harm_N(576:593) = harm_N(576:593) / conj(gc_AA1)
	if (i_AA2 eq 1) then  harm_N(594:611) = harm_N(594:611) / conj(gc_AA2)
	if (i_AA3 eq 1) then  harm_N(612:629) = harm_N(612:629) / conj(gc_AA3)
	if (i_AA4 eq 1) then  harm_N(630:647) = harm_N(630:647) / conj(gc_AA4)
    endif

    end			; fin de  CORR_GAIN_ANT.

	;  AA1  ---- NS0 a NS17			576 a 593   complete 13 jan 04
	;  AA2  ---- ----------			594 a 611
	;  AA3  ---- ----------			612 a 629
	;  AA4  ---- ----------			630 a 647
;______________________________________________________________________________

PRO CORR_ROT_DEP_NP, $
    n_image,				      $	; entree.
    date_obs,  type_obs,  type_calib,	      $	; ------
    i_corr_rot_NS0,			      $	; ------
    rotew,  rotns,  ah_dep,  delta,  freq,    $	; ------
    harm_N, 				      $	; ------ et sortie.
    a_H2, a_NS0					; sortie (radians),

; Creation 9 avril 03.

; But : corriger les harmoniques non polar de la rotation des dipoles de H2, 
;	H4, NS0 et/ou du depointage des antennes lunettes.

; Modifications :
; 04 jan 14	extension aux antennes AA.

; Procedures appelantes :
;	RH_DPATCHFITS_NRH, CALIBRATION 

; POSITION DU PROBLEME DE LA CORRECTION DES HARMONIQUES pour la rotation des
;   dipoles (H2, H4, NS0) et le depointage des antennes H (4 nov 02)
; A) anciennes sources de controle -> nov 02, et meme au dela, jusqu'a la 
;	refonte du temps reel pour supprimer les "corrections" fausses a l'ini-
;	tialisation (-> 16 avr 2003) :
;    . reseau H depointe de 90 min sur le Cygne. L'angle "a" dont sont tournes 
;	 les dipoles (vu de derriere et dans le sens direct) est :
;	      sin(a) = sin(delta) * sin(a_H_dep)     (a_H_dep > 0 vers l'ouest)
;    . NS0 tournee de pi/4 dans le sens inverse vu de derriere (mais H2 et H4
;	 ne sont pas tournees)
;    . la correction des harmoniques pour la rotation de NS0 et le depointage 
;	 des H est faite par le programme d'observation en modifiant les gains:
;	 - non polar : 
;	   . antennes H : on multiplie les gains par cosa,
;	   . NS0_ew     : -------------------------- cos(45),
;	   . NS0_ns     : ----------------------------------
;	   . E012, NS1 a NS45  --------------------- cosa.  Imitation abusive 
;			 	de ce qui est fait en polar. Inutile et faux.
;	   consequences pour les harmoniques :
;	   . NS0_ns avec E2,  E1  :  faux par facteur  1/cosa.
;	   . NS0_ns ---- H        :  ----------------  cos(45+a) / (cosa*cos45)
;	   . NS1-45 ---- E2,  E1  :  ----------------  1/cosa^2.
;	   . NS1-45 ---- H        :  ----------------  1/cosa
;	   . NS1-45 ---- NS0_ew   :  ----------------  1/cosa
;	   . NS45   ---- NS0_ns   :  ----------------  1/cosa
;	   . NS45   ---- NS1 a 23 :  ----------------  1/cosa^2
;	   . E210   ---- E2 et E1 :  ----------------  1/cosa^2
;	   . E210   ---- H1 a H16 :  ----------------  1/cosa
;	   . NS8    ---- NS0_ns   :  ----------------  1/cosa
;	   . NS8    ---- NS1-NS17 :  ----------------  1/cosa^2
;	   . NS0_ns ---- NS7-NS45 :  ----------------  1/cosa 
;	   . on ne tient pas compte du dephasage de depointage des H, dont le
;	       centre de phase est deplac'e (15 a 20 deg ?).
;	 - polar :
;	   . antennes H : les gains polar n'etant pas definis (ou pas utilises)
;	       on utilise leurs gains non polar (?) et on modifie les gains 
;	       polar de E2, E1, E0, NS1 a NS23.
;	   . NS0_ns  : on multilpie par  sin(45)  et on ajoute une phase 90.
;	       Le gain est donc multilplie par i sin(45). Les harm seront donc
;	       divises par conj(i * sin45) = -i * sin45. 
;	       Or il faudrait diviser par i * sin45 pour des H non depointees.
;	       Ca fait en gros une faute de signe.
;	   . E2, E1, E0, NS1 a NS23 et NS45 : on multiplie par par sina et on 
;	       retire  une phase 90 pour un depointage W.
;		=> on multiplie leur gain polar par  -i * sina. Les harm avec
;	       les H sont divises par i * sina (sina>0), ce qui est un debut
;	       correct.	       
;	   consequences sur les harmoniques resultants :
;	   . NS0_ns (ant de ref) avec E2, E1, (ant de reseau) : divises par
;	       (-i*sin45) * cosa alors qu'ils devraient etre divises par 
;	       ( i*sin45), donc faux par un facteur -1/cosa = -1.07
;	   . NS0_ns avec les H :  divises par (-i sin45) * cosa , alors qu'ils
;	       devraient etre divises par i * sin(a + 45), donc faux par un
;	       facteur (i sin(a+45)) / (-i * sin45 * cosa) = 
;					= - sin(45+a) / (sin45 * cosa)
;		a) depointage W (a = +15deg) : faux par facteur -1.27
;		b) ---------- E  a = -15 deg : ---------------- -0.73
;	   . NS1 a NS23  avec E2 et E1 : divises par (i*sina) * cosa
;	       alors qu'ils devraient etre inchanges, donc faux par un facteur
;	       - i / (sina * cosa) = - 4*i , mais  nuls de toutes facons.
;	   . NS1 a NS23 avec les H (sauf NS0_ew) : divises par (i * sina)*cosa
;	       au lieu de  i * sina  => faux par un facteur 1/cosa .
;	   . NS1 a NS23 ---- NS0_ew : divises par (i * sina) * cos45  au lieu
;	       de  i*sin(-45) = -i * sin45,  donc faux par un facteur 
;		    -i * sin45 / (i * sina * cos45) = -1 / sina = - 3.86
;	   . NS45 avec NS0_ns   : divise  par (i * sina) * cos45 alors qu'il
;		devrait etre divise par i*sin(-45)=-i*sin45  donc faux par un
;		facteur  -i*sin45 / (i * sina * cos45) = -1/sina = + 3.86
;	   . NS45 avec les autres NS 	 : nuls de toutes facons
;	   . E210 avec E2 et E1      	 : ---------------------
;	   . E210 avec H1 a H7, H9 a H16 : divises par i * sina * cosa
;		au lieu de i * sina  => faux par un facteur 1 / cosa
;	   . E210 avec NS0_ew 		 : divises par i * sina * cos45
;		au lieu de i * sin(-45)  => faux par un facteur 
;		-i * sin45 / (i * sina * cos45) = -1/sina
;	   . NS8 avec NS0_ns : divise par (i * sina) * cos45 au lieu de
;	       i * sin(-45) = - i * sin45 , donc faux par un facteur 
;	      -i * sin45 / (i * sina * cos45) = -1 / sina
;	   . NS0_ns avec les NS : divises par (-i * sin45) * cosa  alors qu'ils
;	       devraient etre divises par  i*sin45 , donc faux par un facteur
;	       i * sin45 / (-i * sin45 * cosa) = -1/cosa = -0.97 .
;	   Recapitulation pour CALIBRATION_P (anciennes sources de controle)
;	   . NS0_ns   avec E2, E1 : diviser par  - 1 / cosa
;	   . NS0_ns   ---- les H  : -----------  - sin(45+a) / (sin45 * cosa)
;	   . NS1-45   ---- E2, E1 : -----------  - i / (sina * cosa)  mais nuls
;	   . NS1-45   ---- les H  : -----------    1 / cosa
;	   . NS1-45   ---- NS0_ew : -----------  - 1 / sina
;	   . NS45     ---- NS0_ns : -----------  - 1 / sina
;	   . NS45     ---- NS1-23 : nuls
;	   . E210     ---- E2, E1 : ----
;	   . E210     ---- H1 H16 : diviser par    1 / cosa
;	   . E210     ---- NS0_ew : -----------  - 1 / sina
;	   . NS8      ---- NS0_ns : -----------  - 1 / sina
;	   . NS0_ns   ---- NS7-45 : -----------  - 1 / cosa
;	   . on ne tient pas compte non plus du dephasage du au deplacement des
;	       antennes H.
;
; B) Sources de controle posterieures a la refonte du temps reel (16 avr 03) :
;      . NS0 tournee de a_NS0 (le sens changera a la date jul_rot)
;      . reseau H depointe, H2, H4 et non tournees,
;      . harmoniques corriges du mouvement diurne,
;      . pas de modification des gains des antennes a l'initialisation pour 
;	   tenir compte de la rotation des antennes.
;      . antennes AA pour des observations posterieures a jan 04
;      CE CAS NE SE PRESENTE PAS JUSQU'A LA REFONTE DU TEMPS REEL : il ne peut
;      y avoir d'observations de transition pour les sources de controle (sans
;      les corrections fausses a l'initialisation du temps reel) car il faut
;      depointer le reseau H et cela ne peut etre fait en decouplant le micro 
;      pointage et le maxion.
;
;    Notations : . a rotation des dipoles du reseau H du au depointage
;		   sina  = sin(a)      cosa  = cos(a)
;		 . sinns = sin(a_NS0)  cosns = cos(a_NS0)
;		 . sinew = sin(a_H2 )  cosew = cos(a_H2 )   (inutilises ici).
;    - non polar, harmoniques :
;	. NS0_ns  avec  E2, E1     :  diviser par cosns
;	. ------  ----  H1 a H16   :  ------- --- cos(-a_NS0 + a) * lobe_H
;	. NS1-45  ----  E2, E1     :  	    inchanges
;	. NS1-45  ----  H1 a H16   :  ------- --- cos(a)          * lobe_H
;	. NS1-45  ----  NS0_ew     :  ------- --- cosns
;	. NS45    ----  NS0_ns     :  ----------- cosns
;	. NS45    ----  NS1 a NS23 :              inchanges
;	. E210    ----  H1 a H16   :  ----------- cos(a)          * lobe_H
;	. E210    ----  NS0_ew     :  ----------- cosns
;	. NS8     ----  NS0_ns     :  ----------- cosns
;	. NS8     ----  NS1 a NS17 :              inchanges
;	. NS0_ns  ----  NS7 a NS45 :  ----------- cosns
;	. AA1 2 3 4 --  NS0_ns	   ;  ----------- cosns
;    - polar : les harmoniques n'impliquant pas les H ou NS0 sont nuls
;	. NS0_ns  avec  E2, E1     :  diviser par  -i sinns
;	. ------  ----  H1 a H16   :  ------- ---   i sin(-a_NS0 + a) * lobe_H
;	. NS1-45  ----  E2, E1     :  	          inchanges, nuls
;	. NS1-45  ----  H1 a H16   :  ------- ---   i sina            * lobe_H
;	. NS1-45  ----  NS0_ew     :  ------- ---   i sinns
;	. NS45    ----  NS0_ns     :  -----------   i sinns
;	. NS45    ----  NS1 a NS23 :               inchanges, nuls
;	. E210    ----  H1 a H16   :  -----------   i sina            * lobe_H
;	. E210    ----  NS0_ew     :  -----------   i sinns
;	. NS8     ----  NS0_ns     :  -----------   i sinns
;	. NS8     ----  NS1 a NS17 :              inchanges nuls
;	. NS0_ns  ----  NS7 a NS45 :  -----------  -i sinns
;	. AA1 2 3 4 --  NS0_ns	   :  -----------   i sinns
;       Rem : lobe_H contient le dephasage de depointage, du au leger change-
;	   ment de position des antennes.


; C) Sources de calibration posterieures a nov 02, en pratique a partir de
;      fev 03. Jusqu'a la refonte du temps reel, ce mode d'observation est 
;      obtenu en decouplant le micro pointage et le maxion, et est identifie
;      par type_obs=2 dans RH_DP_CALIB (observations dites de transition).
;      Les conditions sont :
;      . NS0 tournee, 
;      . reseau H pointe, H2, H4 et tournees dans le sens oppose a NS0 (actuel)
;	   ou dans le meme sens (apres fev 2003)
;      . harmoniques corriges du mouvement diurne
;      . pas de modification des gains des antennes a l'initialisation pour 
;	   tenir compte de la rotation des antennes,
;      . antennes AA apres jan 2004.
;    Notations : . a rotation des dipoles du reseau H du au depointage
;		   sina  = sin(a)      cosa  = cos(a)
;		 . sinns = sin(a_NS0)  cosns = cos(a_NS0)
;		 . sinew = sin(a_H2 )  cosew = cos(a_H2 )  .
;    - non polar, harmoniques :
;	. NS0_ns   avec E2 E1 H1  : diviser par  cosns
;       . -----    ---- H2        : inchange, (nul  ou  rien a corriger)
;       . -----    ---- H3        : diviser par  cosns
;       . -----    ---- H4        : inchange, (nul  ou  rien a corriger)
;       . -----    ---- H5 a H16  : diviser par  cosns
;       . NS1-45   avec E2 E1 H1  : inchange
;       . -----    ---- H2        : diviser par  cosew
;       . -----    ---- H3        : inchange
;       . -----    ---- H4        : diviser par  cosew
;       . -----    ---- H5 a H7   : inchanges
;       . -----    ---- NS0_ew    : diviser par  cosns
;       . -----    ---- H9 a H16  : inchanges
;       . NS45     ---- NS0_ns    : -----------  cosns
;       . NS45     ---- NS1-23    : inchanges
;       . E210     ---- H2 et H4  : diviser par  cosew
;       . E210     ---- NS0_ew    : -----------  cosns
;       . NS8      ---- NS0_ns    : -----------  cosns
;       . NS0_ns   ---- NS1-45    : -----------  cosns
;	. AA1 2 3 4 --- NS0_ns    : -----------  cosns
;    - polar : tous les harmoniques sont nuls, sauf impliquant H2, H4 et NS0.
;	 	on pose sinew = sin(a_H2), et sinns = sin(a_NS0)
;	 . NS0_ns   avec E2 E1 H1  : diviser par  -i * sinns
;	 . ------   ---- H2        : -----------   i * sin(a_H2 - a_NS0)  soit:
;						   i  (actuel), puis rien (nul)
;	 . ------   ---- H3	   : -----------  -i * sinns
;	 . ------   ---- H4        : -----------   i (actuel), puis rien (nul)
;	 . ------   ---- H5 a H16  : -----------  -i * sinns
;	 . NS1_45   ---- E2 E1 H1  : inchanges (nuls)
;	 . ------   ---- H2        : diviser par   i * sinew
;	 . ------   ---- H3	   ; inchange  (nul)
;	 . ------   ---- H4        : diviser par   i * sinew
;	 . ------   ---- H5 a H7   : inchanges (nuls)
;	 . ------   ---- NS0_ew    : diviser par   i * sinns
;	 . ------   ---- H9 a H16  : inchanges (nuls)
;	 . NS45     ---- NS0_ns    : diviser par   i * sinns
;	 . NS45     ---- NS1-23    : nuls, inchanges
;	 . E210     ---- H2 et H4  : diviser par   i * sinew
;	 . E210     ---- NS0_ew    : -----------   i * sinns
;	 . NS8      ---- NS0_ns    : -----------   i * sinns
;	 . NS0_ns   ---- NS1-45    : -----------  -i * sinns
;
; Au total on obtient ainsi les harmoniques avec le niveau qu'ils auraient avec
; des antennes non tournees, sauf pour les 2 harmoniques (NS0, H2) et (NS0, H4)
; qui sont eventuellement nuls pour les observations de calibration posterieu-
; res a nov 02.
; Ca fait en tout 84 cas particuliers bien chiants a verifier un par un.

; FIN DE POSITION DU PROBLEME DE LA CORRECTION DES HARMONIQUES


    ; Rangement des harmoniques dans harm_N
 	;  NS0  avec E2, E1, H1 a H16	  	  0 a  17
	;  NS1  ---- ----------------------      18 a  35
	;  NS8  ---- ----------------------	144 a 161
	;  NS23 ---- ----------------------     414 a 431
	;  NS45	---- ----------------------     432 a 449

	; jusqu'au 7 oct 98 inclus:
	;  E0	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485
	; a partir du 8 oct 98 inclus:
	;  NS45	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485

	;  E2	---- E2, E1, H1 a H16		486 a 503
	;  E1	---- E2, E1, H1 a H16		504 a 521
	;  E0	---- E2, E1, H1 a H16		522 a 539
	;  NS8	---- NS0  a NS17		540 a 557
	;  NS0	---- NS10 a NS23 et NS45	558 a 572
	;  ---	---- NS7 a NS9			573 a 575

	;  AA1  ---- NS0 a NS17			576 a 593
	;  AA2  ---- ----------			594 a 611
	;  AA3  ---- ----------			612 a 629
	;  AA4  ---- ----------			630 a 647
;   -----------------------------------------------------------------

; DEBUT DE LA PARTIE ACTIVE DE CORR_ROT_DEP_NP

; Distinction entre les differentes observation de calibration et de controle
	; Corrections a faire ailleurs :
	; . CALIBRATION et CALIBRATION_P : date_obs  (date_rot n'y figure pas)
	; .
    nbre_harm = n_elements(harm_N)
    date_rot       = [10, 02, 2003]	; a_NS0 = +45    apres cette date.
    date_corr_gain = [16, 04, 2003]	; date de modification du temps reel
					;   pour supprimer les modifications 
					;   des tables de gain pour "corriger"
					;   la rotation et le depointage des 
					;   antennes.
    jul_corr_gain  = julday(date_corr_gain(1), date_corr_gain(0),   $
							     date_corr_gain(2))
    jul_rot = julday(date_rot(1), date_rot(0), date_rot(2))
    jul_obs = julday(date_obs(1), date_obs(0), date_obs(2))

    if (rotew eq 0) then begin
	a_H2 = 0
	a_H4 = 0
    endif
    if (rotns eq 0) then $
	a_NS0 = 0
    if (rotew eq 1) then begin
	a_H2 =  !pi/180 * 45	; >0  =  sens direct vu de derriere l'antenne.
	a_H4 =  !pi/180 * 45
    endif
    if (rotns eq 1) then begin
	if(jul_obs lt jul_rot) then  a_NS0 = - !pi/180 * 45
	if(jul_obs ge jul_rot) then  a_NS0 =   !pi/180 * 45
						; P. Picard a tenu sa promesse.
    endif

    a_H_dep = asin(sin(delta) * sin(ah_dep))		; radians.
	; >0 pour un depointage W.  a_H_dep est non nul pour les sources de
	;   controle, et dans ce cas rotew = 0.
    a_H_dep_deg = 180/!pi * a_H_dep
    ch_format = "(6x, 'Rotation des dipoles des H par depointage =', " + $
	"f5.1, ' degres (>0 pour sens ')"
    if (n_image eq 1) then begin
	print, format=ch_format, a_H_dep_deg
	print, '        direct vu de derriere)'
	ch_format ="('              rotation de H2 H4  et NS0 : " + $
		"rotew =', i2, '    rotns =', i2)" 
	print, '        (impression par CORR_ROT_DEP_NP dans ' + $
							'RH_CORR_ANTENNES)'
;	print, format = ch_format, rotew, rotns
    endif
	; Rappel : dans la cas d'observations de calibration intermediaires 
	;    avec decouplage du maxion et du micro-pointage, rotew et rotns
	;    sont mis a 1 dans RH_DP_CALIB (ligne 412). Inutile de verifier.

    if ((abs(ah_dep) le 0.1) and (n_image eq 1)) then begin
							; en principe : gt 0 .
	print, '      Pas de correction de depointage des antennes H'
    endif

; Correction de la perte de niveau des harmoniques non polar, due au lobe des
	;   antennes H si elles sont depointees
	; On represente la coupe du lobe en angle horaire des antennes H par
	;   une fonction quadratique dont la 1/2 largeur a mi puissance est
	;   L2 (en degres).
	; On suppose que le dephasage de depointage est du a la variation de
	;   la longueur des bases. Pour la calculer on suppose que le centre
	;   de phase des antennes H coincide avec leur dipole, donc situe a
	;   une distance e de l'intersection des axes de rotation.
    i_saut = 0			; 0 sauf pour essais
    if ((i_saut eq 0) and (abs(ah_dep) gt 0.1))  then begin
			; en principe : abs(ah_dep) gt 0 .
;     Calcul du lobe des antennes H et du dephasage du au depointage
	L2 =  50			; 1/2 largeur a mi puissance (degres).
	Lr = !pi/180 * L2
	dteta = acos(cos(ah_dep) * cos(delta)^2 + sin(delta)^2)
	    ; angle entre les axes de antennes pointees et les axes des anten-
	    ;   nes depointees.
	lobe = 1 - 0.5 * (dteta/Lr)^2
	if (n_image eq 1) then begin
	    print, '      Debut de correction du lobe des antennes H ' + $
		'depointees  :'
	    ch_format = "(8x, 'angle de depointage  =', f6.1, ' deg   " + $
		"(>0 pour W)')"
	    print, format=ch_format, 180/!pi * ah_dep 
	    ch_format = "(8x, 'valeur lobe depointe =', f7.2)"
	    print, format=ch_format, lobe
	endif
;     Calcul du dephasage de pointage
	    ; Calcul algebrique du 20 nov 02 : on admet que le point ou la 
	    ;   phase du rayonnement incident est egale a celle du signal qui
	    ;   commence sa propagation guidee dans le cable est voisin du 
	    ;	dipole. En appellant e l'ecart entre ce point et l'intersec-
	    ;	tion des axes de rotation en angle horaire et en declinaison, 
	    ;	le dephasage de depointage phi_dep (attribu'e a 'antenne de-
	    ;	pointee et qui s'ajoute a la phase instrumentale qui resulte 
	    ;	des inegalites de longueur des cables de connexion au corre-
	    ;	lateur et des differences des distances focale) est :
	    ;		phi_dep = - 2*pi*e/lambda * ah_dep^2 * cosd^2
	    ; Il est toujours negatif puisque le depointage recule un peu 
	    ;   l'antenne de sa position pointee. Il est evidemment quadratique
	    ;   puisque l'antenne se depointe sur un cercle tangent tangent au
	    ;   plan d'onde incident.
	    ; Changer e0, e1, e2 dans CORR_ROY_DEP_NP et CORR_ROY_DEP_P.
	    ;   e0 determin'e le 9 sep 03, utilisant la recalibration du 26 aug
	    ;	03 (sans depointage) pour le cygne du 26 aug 03 (depointe)
;	e0 = 0.15			; en metres, e pour 300 MHz. 0.2, 0.8 ?
;	e1 = 0				; provisoire
;	e2 = 0				; ----------
;	ef = e0 + e1 * (freq - 300) / 150  + e2 * ((freq - 300) / 150)^2
	    ; ef est calcule comme un developpement limite par rapport a une
	    ;   variable de frequence reduite (freq - 300) / 150 qui est sans 
	    ;   dimension. 
	    ; Ainsi e1 et e2 soient aussi exprimes en metres. On s'attend a ce
	    ;   qu'ils soienr nettement plus petits que e0.
;     Valeurs (metres) de ef selon resultats du 9 sep 03 (voir CORR_DEP.TXT)
	    ; utilisant la recalibration du cygne du 26 aug 03 (point'e) sur
	    ; le cygne du 31 aug 03 (depointage stabilise apres 17:40)
	    ;  freq    151     164     237     327    411     432
	    ;   ef     0.5     0.4     0.4    -0.4    0.15    0.15
;     Valeurs de ef (metres) avec Cygne du 22 jun 03 (recalib a 16:15, quand
	    ; le depointage est nul, avec ah_dep forc'e a 0 dans CALIBRATION
	    ; (il est delare 90 min E dans l'entete).
	    ;  freq    151     164     237     327    411     432
	    ;   ef    xxx      0.4    0.25    0.35   0.10    0.10
;     Valeurs adoptees (metres) pour ef
	if (abs(freq - 151) lt 2)  then  ef =  0.5	; 151
	if (abs(freq - 164) lt 2)  then  ef =  0.40
	if (abs(freq - 237) lt 2)  then  ef =  0.25	; 237
	if (abs(freq - 327) lt 2)  then  ef = -0.35
	if (abs(freq - 411) lt 2)  then  ef =  0.10	; 411
	if (abs(freq - 432) lt 2)  then  ef =  0.10
	ac = 3e8			; vitesse lumiere (m/sec).
	lambda = ac / (freq * 1e6)
	phi_dep = - 2*!pi * ef / lambda * (ah_dep * cos(delta))^2
	phi_sup = 0 ; 15		; en degres. 0 SAUF POUR ESSAIS.
	phi_dep = phi_dep + !pi/180 * phi_sup
	i_c = complex (0, 1)
	lobe = lobe * exp(i_c * phi_dep)
	ch_format = "(8x, 'phase de depointage  =', i4, ' deg     (s ajoute" +$
		" a la phase des antennes H)')"
	if (n_image eq 1) then print, format=ch_format, nint(180/!pi * phi_dep)
	lobe_H = lobe		; lobe_H notation inutilsee par ailleurs.
;     Correction des harmoniques impliquant les antennes H
	    ; On saute partout H8 = NS0_ew  qui n'est pas depointee.
	for j = 0, 24 do begin				; NS0 a NS23 et NS45.
	  harm_N( 2 + 18*j) =  harm_N( 2 + 18*j  :   8 + 18*j) / lobe ; H 1- 7
	  harm_N(10 + 18*j) =  harm_N(10 + 18*j  :  17 + 18*j) / lobe ; H 9-16
	endfor
	harm_N(488) = harm_N(488 : 494) / lobe		; E2 avec H1 a H7.
	harm_N(496) = harm_N(496 : 503) / lobe		; -- ---- H9 a H16.

	harm_N(506) = harm_N(506 : 512) / lobe		; E1 ---- H1 a H7.
	harm_N(514) = harm_N(514 : 521) / lobe		; -- ---- H9 a H16.

	harm_N(524) = harm_N(524 : 530) / lobe		; E0 ---- H1 a H7.
	harm_N(532) = harm_N(532 : 539) / lobe		; -- ---- H9 a H16.
	if (n_image eq 1) then $
	    print, '      Fin de correction du lobe des antennes H depointees'
    endif
; Fin de correction du lobe des antennes H et du dephasage de depointage

; Poursuite de CORR_ROT_DEP_NP

; CORRECTION DU NIVEAU DES HARMONIQUES NON POLAR LIEE A LA ROTATION DES DIPOLES

; Correction des harmoniques non polar pour les sources de controle faites 
	; avant la refonte du temps reel pour supprimer les modifications
	; (fausses) de gain et "corriger" rotation et depoinrage (oct 03 ?) :
	; . rotew = 0, rotns = 1,   
	; . a_H_dep non nul et >0 vers ouest, rotation due au depointage
	; . corrections incorrectes faites pendant l'observation
	; Le 29 avr 03 on supprime la condition  (abs(a_H_dep) gt 0.1)  pour 
	;   pouvoir traiter des observations non depointees destinees a la 
	;   mise au point.
;   if ((rotew eq 0) and (rotns eq 1) and (abs(a_H_dep) gt 0.1)  $
    if ((rotew eq 0) and (rotns eq 1) 				 $
		     and (jul_obs lt jul_corr_gain)) then begin
	if (n_image eq 1) then begin
	    print, $
	    '      Debut correction des harm non polar sources de controle' + $
		' anterieures a la'
	    print, '        refonte du temps reel (faite le 16 avr 2003).'
	endif
	    ; Rappel harmoniques non polar :
	    ; NS0_ns avec E2,  E1  :  diviser par   1 / cosa.
	    ; NS0_ns ---- H1 a H16 :  -----------   cos(45+a) / (cosa*cos45)
	    ; NS1-45 ---- E2,  E1  :  -----------   1 / cosa^2.
	    ; NS1-45 ---- H        :  -----------   1 / cosa
	    ; NS1-45 ---- NS0_ew   :  -----------   1 / cosa
	    ; NS45   ---- NS0_ns   :  -----------   1 / cosa
	    ; NS45   ---- NS1 a 23 :  ------------  1 / cosa^2
	    ; E210   ---- E2 et E1 :  ------------  1 / cosa^2
	    ; E210   ---- H1 a H16 :  ------------  1 / cosa
	    ; NS8    ---- NS0_ns   :  ------------  1 / cosa
	    ; NS8    ---- NS1-NS17 :  ------------  1 / cosa^2
	    ; NS0_ns ---- NS7-NS45 :  ------------  1 / cosa 

	cosa   = cos(        a_H_dep)
	cos45  = cos(!pi/4          )
	cos45a = cos(!pi/4 + a_H_dep)

	harm_N(0) = harm_N(0: 1) *  cosa		   ; NS0_ns  avec E2 E1
	harm_N(2) = harm_N(2:17) * (cosa * cos45) / cos45a ; NS0_ns  H1 a H16

	for j = 1, 24 do begin			; NS1-45  avec E2, E1 et 
						;	  ---- H1, H16,  NS0_ew
	    harm_N(18*j    ) = harm_N(18*j     : 18*j +  1) * cosa^2
	    harm_N(18*j + 2) = harm_N(18*j + 2 : 18*j + 17) * cosa
	endfor

	harm_N(450) = harm_N(450    ) * cosa	; NS45   avec NS0_ns
	harm_N(451) = harm_N(451:485) * cosa^2	; ----   ---- NS1 a NS23

	harm_N(486) = harm_N(486:487) * cosa^2	; E2     ---- E2 et E1
	harm_N(488) = harm_N(488:503) * cosa    ; --     ---- H1 a  H16

	harm_N(504) = harm_N(504:505) * cosa^2	; E1     ---- E2 et E1
	harm_N(506) = harm_N(506:521) * cosa    ; --     ---- H1 a  H16
	
	harm_N(522) = harm_N(522:523) * cosa^2	; E0     ---- E2 et E1
	harm_N(524) = harm_N(524:539) * cosa    ; --     ---- H1 a  H16
	
	harm_N(540) = harm_N(540    ) * cosa	; NS8    ---- NS0_ns
	harm_N(541) = harm_N(541:557) * cosa^2	; NS8    ---- NS1 a NS17

	harm_N(558) = harm_N(558:575) * cosa	; NS0_ns ---- NS7 a NS45
	if (n_image eq 1) then $
	    print, '      Fin de correction des harmoniques non polar.'
    endif	; fin de correction des harmoniques non polar des anciennes 
		;   sources de controle.


; Correction des harmoniques non polar pour les sources de controle posterieu-
	; res a la refonte du temps reel (16 avr 03) : 
	; . rotew = 0, rotns = 1,  
	; . a_H_dep non nul, >0 vers ouest,
	; . sans corrections pendant l'observation.
	; . antennes AA apres janvier 2004.
	; Le 29 avr 03 on supprime la condition  (abs(a_H_dep) gt 0.1)  pour 
	;   pouvoir traiter des observations non depointees destinees a la 
	;   mise au point.
    i_saut = 0		; 0 sauf pour essais
;   if ((rotew eq 0)  and  (rotns eq 1)  and  (abs(a_H_dep) gt 0.1)  and  $
    if ((rotew eq 0)  and  (rotns eq 1)  and  (jul_obs ge jul_corr_gain)  $
		      and  (i_saut eq 0) ) then begin
	if (n_image eq 1) then begin
	    print, '      Debut correction harm non polar sources de ' + $
		'controle posterieures a la '
	    print, '        refonte du temps reel (16 avr 2003) : '
	    ch_format ="('             rotew = 0,  rotns = 1,  antennes H " + $
		" depointage =', i4, ' deg.')"
	    print, format=ch_format, nint(180/!pi * ah_dep)
	    print, '        (impression par CORR_ROT_DEP_NP dans ' + $
							'RH_CORR_ANTENNES)'
	endif
	    ; Rappel des notations : 
	    ; . a rotation des dipoles du reseau H du au depointage
	    ;	    sina  = sin(a)      cosa  = cos(a)
	    ; . sinns = sin(a_NS0)  cosns = cos(a_NS0)
	    ; . sinew = sin(a_H2 )  cosew = cos(a_H2 )   (inutilises ici).
	    ; On ne fait plus figurer lobe_H puisque la correction a ete faite
	    ;   plus haut.
	    ;
	    ; Non polar, harmoniques :
	    ; . NS0_ns  avec  E2, E1     :  diviser par cosns
	    ; . ------  ----  H1 a H16   :  ------- --- cos(-a_NS0 + a) = cosb
	    ; . NS1-45  ----  E2, E1     :  	    inchanges
	    ; . NS1-45  ----  H1 a H16   :  ------- --- cosa
	    ; . NS1-45  ----  NS0_ew     :  ------- --- cosns
	    ; . NS45    ----  NS0_ns     :  ----------- cosns
	    ; . NS45    ----  NS1 a NS23 :              inchanges
	    ; . E210    ----  H1 a H16   :  ----------- cosa
	    ; . E210    ----  NS0_ew     :  ----------- cosns
	    ; . NS8     ----  NS0_ns     :  ----------- cosns
	    ; . NS8     ----  NS1 a NS17 :              inchanges
	    ; . NS0_ns  ----  NS7 a NS45 :  ----------- cosns

	cosns = cos(a_NS0)
	cosa  = cos(a_H_dep)		; a_H_dep rotation de depointsge (a ne
	cosb  = cos(-a_NS0 + a_H_dep)	;   pas confondre avec ah_dep).
	if (i_corr_rot_NS0 eq 0) then begin	; essais seulement.
	    cosns = 1
	    cosb  = cos(a_H_dep)
	endif


	harm_N(0) = harm_N(0: 1) / cosns	; NS0_ns  avec E2, E1.
	harm_N(2) = harm_N(2:17) / cosb		; NS0_ns  avec H1 a H16

	for j = 1, 24 do begin			; NS1-45  ---- H1 a H7
	    harm_N(18*j +  2) = harm_N(18*j +  2 : 18*j +  8) / cosa
	endfor
	for j = 1, 24 do begin			; NS1-45  ---- NS0_ew
	    harm_N(18*j + 9) = harm_N(18*j + 9) / cosns
	endfor
	for j = 1, 24 do begin			; NS1-45  ---- H9 a H16
	    harm_N(18*j + 10) = harm_N(18*j + 10 : 18*j + 17) / cosa
	endfor

	harm_N(450) = harm_N(450    ) / cosns	; NS45   avec NS0_ns

	harm_N(488) = harm_N(488:494) / cosa    ; E2     ---- H1 a  H7
	harm_N(495) = harm_N(495    ) / cosns   ; E2     ---- NS0_ew
	harm_N(496) = harm_N(496:503) / cosa    ; E2     ---- H9 a  H16

	harm_N(506) = harm_N(506:512) / cosa    ; E1     ---- H1 a  H7
	harm_N(513) = harm_N(513    ) / cosns   ; E1     ---- NS0_ew
	harm_N(514) = harm_N(514:521) / cosa    ; E1     ---- H9 a  H16
	
	harm_N(524) = harm_N(524:530) / cosa    ; E0     ---- H1 a  H7
	harm_N(531) = harm_N(531    ) / cosns   ; E0     ---- NS0_ew
	harm_N(532) = harm_N(532:539) / cosa    ; E0     ---- H9 a  H16
	
	harm_N(540) = harm_N(540    ) / cosns	; NS8    ---- NS0_ns

	harm_N(558) = harm_N(558:575) / cosns	; NS0_ns ---- NS7 a NS45

	if (nbre_harm gt 576) then begin
	    harm_N(576) = harm_N(576) / cosns	; AA1 avec NS0_ns
	    harm_N(594) = harm_N(594) / cosns	; AA2 -----------
	    harm_N(612) = harm_N(612) / cosns	; AA3 -----------
	    harm_N(630) = harm_N(630) / cosns	; AA4 -----------
	endif

;     Poursuite de CORR_ROT_DEP_NP

;     CORRECTIONS SUPPLEMENTAIRES, EXPERIMENTALES ET PRAGMATIQUES de harm_N_np,
	    ; purement internes a CORR_ROT_DEP_NP
	    ; essais du 29 avril 03 sur Cygne du 25 avril 03)
	i_c = complex(0, 1)
;      NS0_ns avec les EW
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 180			; 180 => OK, sauf a 151 ou il faut 0.
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de NS0_ns avec les EW')"
		if (n_image eq 1) then print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N(1) = e_iphi * harm_N(1:17)   	   ; avec E1, H1 a H16
	endif
	    ; semble ok avec i_c.
;      NS0_ns avec NS7 a NS45
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 90				; 90 OK.
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de NS0_ns avec NS7 a 23')"
		if (n_image eq 1) then print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N(573) = e_iphi * harm_N(573 : 575)   ; avec NS7  a NS9
	    harm_N(558) = e_iphi * harm_N(558 : 571)   ; ---- NS10 a NS23
	endif
;      E2 avec les H
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 180			; sans conclusion
		ch_format = $
		    "(6x,'Addition phase supplementaire', " + $
		    "i4, ' deg aux harm de E2 avec les H')"
		if (n_image eq 1) then print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N(488) = e_iphi * harm_N(488 : 503)
	endif
;      E1 avec les H
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 30 + 180	; 180 meilleur compromis pour toutes es freq.
				; 164 : 210
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de E1 avec les H')"
		if (n_image eq 1) then print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N(506) = e_iphi * harm_N(506 : 521)
	    harm_N(513) = - harm_N(513)	; chgt signe avec NS0_ew OK.
	endif
;      E0 avec les H
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi =  55 + 180	; 180 meilleur compromis a toutes les freq.
				; 164 : 235 deg 
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de E0 avec les H')"
		if (n_image eq 1) then print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N(524) = e_iphi * harm_N(524 : 539)	; E0
	endif
;      NS45 avec les NS
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 30	
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de NS45 avec les NS')"
		if (n_image eq 1) then print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N(450) = e_iphi * harm_N(450 : 485)	; NS45
	endif

	if (n_image eq 1) then $
	    print, '      Fin de correction des harmoniques non polar.'
    endif	; fin de correction pour les harm non polar des sources de con-
		;   trole posterieures a la refonte du temps reel (16 avr 03, 
		;   suppression des corrections de gains qui tenaient (mal) 
		;   compte des rotations et depointages).  


; Poursuite de CORR_ROT_DEP_NP

; Correction des harmoniques non polar pour les sources destinees a faire une
	; calibration, faites :
	; . avant la refonte du temps reel (16 avr 03) mais en decouplant micro
	;     pointage et maxion (type_obs=2 dans RH_DP_CALIB)
	; . apres la refonte du temps reel (16 avr 03)
	; Les conditions sont :
	; . rotew = 1, rotns = 1,  a_H_dep = 0 ,
	; . correction du mouvement diurne,
	; . pas de modification des gains complexes a l'initialisation de 
	;     l'observation pour "tenir compte" de la rotation des dipoles.
	; . antennes AA apres janvier 2004.
	; Il y aura deux cas :
	; . a_NS0 = -45		avant fev 03,
	; . a_NS0 = +45		apres fev 03 (modif de NS0).
	; Rem : il n'y a pas d'observations avec les H depointees et H2 et H4
	;	tournees. 
	; Rappel des notations : 
	; . a rotation des dipoles du reseau H du au depointage
	;	sina  = sin(a)      cosa  = cos(a)
	; . sinns = sin(a_NS0)      cosns = cos(a_NS0)
	; . sinew = sin(a_H2 )      cosew = cos(a_H2 )  .
	;
	; Harmoniques non polar :
	; . NS0_ns   avec E2 E1 H1  : diviser par  cosns
	; . -----    ---- H2        : inchange, (nul  ou  rien a corriger)
	; . -----    ---- H3        : diviser par  cosns
	; . -----    ---- H4        : inchange, (nul  ou  rien a corriger)
	; . -----    ---- H5 a H16  : diviser par  cosns
	; . NS1-45   avec E2 E1 H1  : inchange
	; . -----    ---- H2        : diviser par  cosew
	; . -----    ---- H3        : inchange
	; . -----    ---- H4        : diviser par  cosew
	; . -----    ---- H5 a H7   : inchanges
	; . -----    ---- NS0_ew    : diviser par  cosns
	; . -----    ---- H9 a H16  : inchanges
	; . NS45     ---- NS0_ns    : -----------  cosns
	; . NS45     ---- NS1-23    : inchanges
	; . E210     ---- H2 et H4  : diviser par  cosew
	; . E210     ---- NS0_ew    : -----------  cosns
	; . NS8      ---- NS0_ns    : -----------  cosns
	; . NS0_ns   ---- NS1-45    : -----------  cosns

    i_saut = 0		; 0 sauf pour essais.
    if ((rotew eq 1) and (rotns eq 1) and (abs(a_H_dep) lt 0.05) and $
			(i_saut eq 0)) then begin
	    ; Rem : il n'y a pas lieu de distinguer les observations de cali-
	    ;	    bration de transition (pour lesquelles rotew=rotns dans 
	    ;	    l'en-tete du fichier, mais sont ensuite remis a 1) des 
	    ;	    observations de calibration definitives (ou rotew=rotns=1
	    ;	    dans l'entete), car elles sont indiscernables a ce stade 
	    ;	    => jul_corr_gain n'intervient pas.
	    ;   Il y a seulement une question garde-fou dans RH_DP_CALIB.
	    ; Rem : on admet que ce cas est reconnu par l'absence de depointage
	    ;   du reseau EW et simultanement roew = rotns = 1 .
	if (n_image eq 1) then begin
	    print, '      Debut correction harm non polar sources de ' + $
		'calibration posterieures a la'
	    print, '        refonte du temps reel (16 avr 2003) :'
	    print, '          . rotew = 1, rotns = 1,  a_H_dep = 0'
	    print, '          . pas de modification des gains complexes' +$
					' a l''initialisation'
	endif 
	cosns  = cos(a_NS0)
	cosew2 = cos(a_H2)	
	cosew4 = cos(a_H4)
	if (i_corr_rot_NS0 eq 0) then  cosns = 1	; essais seulement.

	harm_N(0) = harm_N(0: 2) / cosns	; NS0_ns  avec E2, E1, H1.
	harm_N(4) = harm_N(4   ) / cosns	; ------------ H3
	harm_N(6) = harm_N(6:17) / cosns	; ------------ H5 a H16

	for j = 1, 24 do begin			; NS1-45  avec H2, H4 et NS0_ew
	    harm_N(18*j + 3) = harm_N(18*j + 3) / cosew2	; H2
	    harm_N(18*j + 5) = harm_N(18*j + 5) / cosew4	; H4
	    harm_N(18*j + 9) = harm_N(18*j + 9) / cosns		; NS0_ew
	endfor

	harm_N(450) = harm_N(450) / cosns	; NS45   avec NS0_ns

	harm_N(489) = harm_N(489) / cosew2	; E2     ---- H2
	harm_N(491) = harm_N(491) / cosew4	; --     ---- H4
	harm_N(495) = harm_N(495) / cosns	; --     ---- NS0_ew

	harm_N(507) = harm_N(507) / cosew2	; E1     ---- H2
	harm_N(509) = harm_N(509) / cosew4	; --     ---- H4
	harm_N(513) = harm_N(513) / cosns	; --     ---- NS0_ew
	
	harm_N(525) = harm_N(525) / cosew2	; E0     ---- H2
	harm_N(527) = harm_N(527) / cosew4	; --     ---- H4
	harm_N(531) = harm_N(531) / cosns	; --     ---- NS0_ew
	
	harm_N(540) = harm_N(540) / cosns	; NS8    ---- NS0_ns

	harm_N(558) = harm_N(558:575) / cosns	; NS0_ns ---- NS7 a 45

	if (nbre_harm gt 576) then begin
	    harm_N(576) = harm_N(576) / cosns	; AA1 avec NS0_ns
	    harm_N(594) = harm_N(594) / cosns	; AA2 -----------
	    harm_N(612) = harm_N(612) / cosns	; AA3 -----------
	    harm_N(630) = harm_N(630) / cosns	; AA4 -----------
	endif

	if (n_image eq 1) then $
	    print, '      Fin de correction des harmoniques non polar.'
    endif	; fin de correction des harmoniques des sources de calibration
		;   posterieures a nov 02.

    end		; fin de CORR_ROT_DEP_NP.
;______________________________________________________________________________


PRO CORR_ROT_DEP_P, $
    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),


; Creation 10 avril 03.

; Modifications :
; 03 avr 11: - ajout du calcul du lobe repris de CORR_ROT_DEP_NP de facon a
;		 utiliser la procedure de facon independante de cette derniere.
; 04 jan 14: - extension aux antennes AA.

; But : corriger les harmoniques polar de la rotation des dipoles et/ou du
;	depointage des antennes lunettes.

; Notations :
; harm_N_p      la procedure etant reporise de CALIBRATION_P, qui utilise 
;		  harm_N_np et harm_N_p, le suffixe _p est conserve pour ne
;		  pas avoir a retoucher de nombreuses lignes. 
;		  CALIBRATION n'utilise que harm_N_np et le suffixe _np n'appa-
;		  rait pas danx CORR_ROT_DEP_NP .

; Voir commenraires generaux sur la position du probleme dans CORR_ROT_DEP_NP.
;		   

; Distinction entre les differentes observations de calibration et de controle
	; (reprise de CALIBRATION)
	; Rem : corriger  date_rot  et  date_corr_gain  dans CORR_ROT_DEP_NP.
    nbre_harm = n_elements(harm_N_p)
    date_rot       = [10, 02, 2003]	; a_NS0 = +45  apres cette  date.
    date_corr_gain = [16, 04, 2003]
	; apres cette date plus de modification des tables de gain pour corri-
	; ger (incorrectement) la rotation et le depointage des antennes.
	; Definition identique dans  CORR_ROT_DEP_NP . 
    jul_corr_gain  = julday(date_corr_gain(1),  date_corr_gain(0),  $
							date_corr_gain(2))
    jul_rot = julday(date_rot(1), date_rot(0), date_rot(2))
    jul_obs = julday(date_obs(1), date_obs(0), date_obs(2))

    if (rotew eq 0) then begin
	a_H2  = 0
	a_H4  = 0
    endif
    if (rotns eq 0) then $
	a_NS0 = 0
    if (rotew eq 1) then begin
	a_H2  =   !pi/180 * 45	; >0  =  sens direct vu de derriere l'antenne.
	a_H4  =   !pi/180 * 45
    endif
    if (rotns eq 1) then begin
	if(jul_obs lt jul_rot) then  a_NS0 = - !pi/180 * 45
	if(jul_obs ge jul_rot) then  a_NS0 =   !pi/180 * 45	
					; P. Picard sa promesse debut fev 03.
    endif
    a_H_dep = asin(sin(delta) * sin(ah_dep))		; radians.
	; >0 pour un depointage W.  a_H_dep est non nul pour les sources de
	;   controle, et dans ce cas rotew = 0.
    a_H_dep_deg = 180/!pi * a_H_dep
    ch_format = "('      rotation des dipoles des H par depointage =', " + $
	"f6.2, ' degres (>0 pour ')"
    if (n_image eq 1) then begin
	print, format=ch_format, a_H_dep_deg
	print, '        sens direct vu de derriere)'
	if (type_calib eq 1) then begin
	    ch_format = "('              rotation de H2 H4  et NS0 : " + $
		" rotew =', i2, '    rotns =', i2)"
	    print, format = ch_format, rotew, rotns
	endif
	if (type_calib eq 2) then $
	    print, '              rotation de H2 H4  et NS0 non indiquees' + $
		' dans entete'
    endif
; Fin de distinction entre les differentes observations calibration / controle

    ; Rangement des harmoniques dans harm_N
 	;  NS0  avec E2, E1, H1 a H16		  0 a  17
	;  NS1  ---- ----------------------      18 a  35
	;  NS8  ---- ----------------------	144 a 161
	;  NS23 ---- ----------------------     414 a 431
	;  NS45	---- ----------------------     432 a 449

	; jusqu'au 7 oct 98 inclus:
	;  E0	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485
	; a partir du 8 oct 98 inclus:
	;  NS45	---- NS0  a NS17		450 a 467
	;  --   ---- NS10 a NS23		468 a 481
	;  --	---- NS45			482
	;  --	---- NS7  a NS9			483 a 485

	;  E2	---- E2, E1, H1 a H16		486 a 503
	;  E1	---- E2, E1, H1 a H16		504 a 521
	;  E0	---- E2, E1, H1 a H16		522 a 539
	;  NS8	---- NS0  a NS17		540 a 557
	;  NS0	---- NS10 a NS23 et NS45	558 a 572
	;  ---	---- NS7 a NS9			573 a 575

	;  AA1  ---- NS0 a NS17			576 a 593
	;  AA2  ---- ----------			594 a 611
	;  AA3  ---- ----------			612 a 629
	;  AA4  ---- ----------			630 a 647

; Poursuite de CORR_ROT_DEP_P

; Correction de la perte de niveau des harmoniques polar, due au lobe des
	;   antennes H si elles sont depointees
	; On represente la coupe du lobe en angle horaire des antennes H par
	;   une fonction quadratique dont la 1/2 largeur a mi puissance est
	;   L2 (en degres).
	; On suppose que le dephasage de depointage est du a la variation de
	;   la longueur des bases. Pour la calculer on suppose que le centre
	;   de phase des antennes H coincide avec leur dipole, donc situe a
	;   une distance D de l'inyersection des axes de rotation.
    i_saut = 0			; 0 sauf pour essais.
    if ((i_saut eq 0) and (abs(ah_dep) gt 0.1)) then begin	
		; en principe : abs(ah_dep) gt 0 .
;     Calcul du lobe des antennes H et du dephasage du au depointage
	L2 =  50			; 1/2 largeur a mi puissance (degres).
	Lr = !pi/180 * L2
	dteta = acos(cos(ah_dep) * cos(delta)^2 + sin(delta)^2)
	    ; angle entre les axes de antennes pointees et les axes des anten-
	    ;   nes depointees.
	lobe = 1 - 0.5 * (dteta/Lr)^2
	print, '      Debut de correction du lobe des antennes H depointees  :'
	ch_format = "(8x, 'angle de depointage  =', f6.1, ' deg   " + $
		"(>0 pour W)')"
	print, format=ch_format, 180/!pi * ah_dep 
	ch_format = "(8x, 'valeur lobe depointe =', f7.2)"
	print, format=ch_format, lobe
;     Calcul du dephasage de pointage
	    ; Calcul algebrique du 20 nov 02 : on admet que le point ou la 
	    ;   phase du rayonnement incident est egale a celle du signal qui
	    ;   commence sa propagation guidee dans le cable est voisin du
	    ;   dipole. En appellant e l'ecart entre ce point et l'intersection
	    ;   des axes de rotation en angle horaire et en declinaison, le 
	    ;   dephasage de depointage phi_dep (attribu'e a 'antenne depointee
	    ;	et qui s'ajoute a la phase instrumentale qui resulte des inega-
	    ;	lites de longueur des cables de connexion au correlateur et des
	    ;	differences des distances focale) est :
	    ;		phi_dep = - 2*pi*e/lambda * ah_dep^2 * cosd^2
	    ; Il est toujours negatif puisque le depointage recule un peu 
	    ;   l'antenne de sa position pointee. Il est evidemment quadratique
	    ;   puisque l'antenne se depointe sur un cercle tangent tangent au
	    ;   plan d'onde incident.
	    ; Changer e0, E1, e2 dans CORR_ROY_DEP_NP et CORR_ROY_DEP_P.
;	e0 = 0.0			; en metres, e pour 300 MHz. 0.8 ?
;	e1 = 0				; provisoire
;	e2 = 0				; ----------
;	ef = e0 + e1 * (freq - 300) / 150  + e2 * ((freq - 300) / 150)^2
	    ; ef est calcule comme un developpement limite par rapport a une
	    ;   variable de frequence reduite (freq - 300) / 150 qui est sans 
	    ;   dimension. 
	    ; Ainsi e1 et e2 soient aussi exprimes en metres. On s'attend a ce
	    ;   qu'ils soienr nettement plus petits que e0.
;     Calcul de ef selon resultats du 9 sep 03 (voir dans CORR_DEP.TXT)
	if (abs(freq - 151) lt 2)  then  ef =  0.5
	if (abs(freq - 164) lt 2)  then  ef =  0.4
	if (abs(freq - 237) lt 2)  then  ef =  0.4
	if (abs(freq - 327) lt 2)  then  ef = -0.4
	if (abs(freq - 411) lt 2)  then  ef =  0.15
	if (abs(freq - 432) lt 2)  then  ef =  0.15
	ac = 3e8			; vitesse lumiere (m/sec).
	lambda = ac / (freq * 1e6)
	phi_dep = - 2*!pi * ef / lambda * (ah_dep * cos(delta))^2
	phi_sup = 0			; en degres. 0 SAUF POUR ESSAIS.
	phi_dep = phi_dep + !pi/180 * phi_sup
	i_c = complex (0, 1)
	lobe = lobe * exp(i_c * phi_dep)
	ch_format = "(8x, 'phase de depointage  =', i4, ' deg     (s ajoute" +$
		" a la phase des antennes H)')"
	print, format=ch_format, nint(180/!pi * phi_dep)
	lobe_H = lobe
;     Correction des harmoniques
	    ; On saute partout H8 = NS0_ew  qui n'est pas depointee.
	for j = 0, 24 do begin			; NS0 a NS23 et NS45.
						; boucle : H1 a H7 et H9 a H16.
	    harm_N_p( 2 + 18*j) =  harm_N_p( 2 + 18*j  :   8 + 18*j) / lobe_H
	    harm_N_p(10 + 18*j) =  harm_N_p(10 + 18*j  :  17 + 18*j) / lobe_H
	endfor
	harm_N_p(488) = harm_N_p(488 : 494) / lobe_H	; E2 avec H1 a H7.
	harm_N_p(496) = harm_N_p(496 : 503) / lobe_H	; -- ---- H9 a H16.

	harm_N_p(506) = harm_N_p(506 : 512) / lobe_H	; E1 ---- H1 a H7.
	harm_N_p(514) = harm_N_p(514 : 521) / lobe_H	; -- ---- H9 a H16.

	harm_N_p(524) = harm_N_p(524 : 530) / lobe_H	; E0 ---- H1 a H7.
	harm_N_p(532) = harm_N_p(532 : 539) / lobe_H	; -- ---- H9 a H16.
    endif
; Fin de correction du lobe des antennes H et du dephasage de depointage

; Poursuite de CORR_ROT_DEP_P

; CORRECTION DU NIVEAU DES HARMONIQUES POLAR LIEE A LA ROTATION DES DIPOLES

; Correction des harmoniques polar pour les sources de controle faites 
	; avant la refonte du temps reel pour supprimer les modifications 
	; (fausses) de gain et "corriger" rotation et depointage (oct 03 ?) : 
	; . rotew = 0, rotns = 1,   
	; . a_H_dep non nul et >0 vers ouest,
	; . corrections incorrectes faites pendant l'observation
	; . pas d'antennes AA
	; Le 29 avr 03 on supprime la condition  (abs(a_H_dep) gt 0.1)  pour 
	;   pouvoir traiter des observations non depointees destinees a la 
	;   mise au point. Remis en service le 30 sept 03 pour traiter la polar
	;   d'observations pointees (sans modifier ici les harm polar), pour
	;   mesurer la position des dipoles des antennes H.
    if ((rotew eq 0) and (rotns eq 1)  and  (abs(a_H_dep) gt 0.05)  $
;   if ((rotew eq 0) and (rotns eq 1)				   $
	and  (jul_obs lt jul_corr_gain)  and  (type_obs eq 1) ) then begin
	    ; La condition (type_obs eq 1), qui exclut les observations de
	    ;   calibration de transition (H2 et H4 tournees mais rotew = rotns
	    ;	= 1 dans l'entete de fichier d'observation) est superflue.
	print, '      Debut correction des harm polar pour la rotation des' + $
		' dipoles pour sources'
	print, '        de controle anterieures a la refonte du temps ' + $
		'reel (16 avr 2003).'
	    ; Rappel (repris de CORR_ROT_DEP_NP)
	    ; . NS0_ns   avec E2, E1 : diviser par  - 1 / cosa
	    ; . NS0_ns   ---- les H  : -----------  - sin(45+a) / (sin45*cosa)
	    ; . NS1-45   ---- E2, E1 : -----------  - i / (sina*cosa) mais nuls
	    ; . NS1-45   ---- les H  : -----------    1 / cosa
	    ; . NS1-45   ---- NS0_ew : -----------  - 1 / sina
	    ; . NS45     ---- NS0_ns : -----------  - 1 / sina
	    ; . NS45     ---- NS1-23 : nuls
	    ; . E210     ---- E2, E1 : ----
	    ; . E210     ---- H1 H16 : diviser par    1 / cosa
	    ; . E210     ---- NS0_ew : -----------  - 1 / sina
	    ; . NS8      ---- NS0_ns : -----------  - 1 / sina
	    ; . NS0_ns   ---- NS7-45 : -----------  - 1 / cosa

	cosa   = cos(        a_H_dep)	; a_H_dep : totation dipole antenne H.
	sina   = sin(        a_H_dep)
	sin45  = sin(!pi/4          )
	sin45a = sin(!pi/4 + a_H_dep)
	i_c    = complex(0, 1)

	harm_N_p(0) = harm_N_p(0: 1) * (-cosa)		   ; NS0_ns  avec E2 E1
	harm_N_p(2) = harm_N_p(2:17) * (-sin45 *cosa) / sin45a ; NS0_ns  H1-16

	for j = 1, 24 do begin			; NS1-45  avec E2, E1 et 
						;	  ---- H1, H16,  NS0_ew
	    harm_N_p(18*j    ) = harm_N_p(18*j     : 18*j +  1) * i_c*sina*cosa
	    harm_N_p(18*j + 2) = harm_N_p(18*j + 2 : 18*j +  8) *   cosa
	    harm_N_p(18*j + 9) = harm_N_p(18*j + 9            ) * (-sina)
	    harm_N_p(18*j +10) = harm_N_p(18*j +10 : 18*j + 17) *   cosa
	endfor

	harm_N_p(450) = harm_N_p(450    ) * (-sina)	; NS45   avec NS0_ns

	harm_N_p(488) = harm_N_p(488:494) *   cosa    ; E2     avec H1 a  H7
	harm_N_p(495) = harm_N_p(495    ) * (-sina)   ; --     ---- NS0_ew
	harm_N_p(496) = harm_N_p(496:503) *   cosa    ; --     ---- H9 a  H16

	harm_N_p(506) = harm_N_p(506:512) *   cosa    ; E1     avec H1 a  H7
	harm_N_p(513) = harm_N_p(513    ) * (-sina)   ; --     ---- NS0_ew
	harm_N_p(514) = harm_N_p(514:521) *   cosa    ; --     ---- H9 a  H16
	
	harm_N_p(524) = harm_N_p(524:530) *   cosa    ; E0     avec H1 a  H7
	harm_N_p(532) = harm_N_p(532:539) * (-sina)   ; --     ---- NS0_ew
	harm_N_p(532) = harm_N_p(532:539) *   cosa    ; --     ---- H9 a  H16
	
	harm_N_p(540) = harm_N_p(540    ) * (-sina)	; NS8      avec NS0_ns

	harm_N_p(558) = harm_N_p(558:575) * (-cosa)	; NS0_ns   ---- NS7-45

	    ; Rem : il n'y a pas d'antennes AA pour ces observations anciennes.

;     CORRECTIONS SUPPLEMENTAIRES, EXPERIMENTALES ET PRAGMATIQUES de harm_N_p
	    ;   purement internes a CORR_ROT_DEP_P.
	    ; Essais du 11 avril 03 sur Cygne du 9 avril 03)
;      NS0_ns avec les EW
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 180			; 180 => OK, sauf a 151 ou il faut 0.
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de NS0_ns avec les EW')"
		print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N_p(1) = e_iphi * harm_N_p(1:17)   	   ; avec E1, H1 a H16
	endif
	    ; semble ok avec i_c.
;      NS0_ns avec NS7 a NS45
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 90				; 90 OK.
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de NS0_ns avec NS7 a 23')"
		print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N_p(573) = e_iphi * harm_N_p(573 : 575)   ; avec NS7  a NS9
	    harm_N_p(558) = e_iphi * harm_N_p(558 : 571)   ; ---- NS10 a NS23
	endif
;      E2 avec les H
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 180			; sans conclusion
		ch_format = $
		    "(6x,'Addition phase supplementaire', " + $
		    "i4, ' deg aux harm de E2 avec les H')"
		print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N_p(488) = e_iphi * harm_N_p(488 : 503)
	endif
;      E1 avec les H
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi = 30 + 180	; 180 meilleur compromis pour toutes es freq.
				; 164 : 210
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de E1 avec les H')"
		print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N_p(506) = e_iphi * harm_N_p(506 : 521)
	    harm_N_p(513) = - harm_N_p(513)	; chgt signe avec NS0_ew OK.
	endif
;      E0 avec les H
	i_cor_sup = 0	; EN PRINCIPE 0 .
	if (i_cor_sup eq 1) then begin
	    phi =  55 + 180	; 180 meilleur compromis a toutes les freq.
				; 164 : 235 deg 
		ch_format = $
		    "(6x,'Addition phase supplementaire ', " + $
		    "i4, ' deg aux harm de E0 avec les H')"
		print, format=ch_format, phi
	    e_iphi = exp(i_c * phi * !pi/180)
	    harm_N_p(524) = e_iphi * harm_N_p(524 : 539)	; E0
	endif

	print, '      Fin de correction des harmoniques polar.'
    endif	; fin de correction des harmoniques polar des anciennes 
		;   sources de controle.

	; Rem du 11 avril 03 sur le Cygne du 9 avril 03 :
	; . NS0_ew enorme avec E0 mais normale avec E1 a 164


; Poursuite de CORR_ROT_DEP_P

; Correction des harmoniques polar pour les sources de controle posterieures
	; a la refonte du temps reel (16 avr 03) : 
	; . rotew = 0, rotns = 1,  
	; . a_H_dep non nul, >0 vers ouest,
	; . sans corrections pendant l'observation.
	;
	; Rappel (repris de CORR_ROT_DEP_NP) : 
	;  . a rotation des dipoles du reseau H du au depointage
	;    sina  = sin(a)      cosa  = cos(a)
	;  . sinns = sin(a_NS0)  cosns = cos(a_NS0)
	;  . sinew = sin(a_H2 )  cosew = cos(a_H2 )   (inutilises ici).
	; Harmoniques polar (on ne fait plus figurer lobe_H puisque la correc-
	;    tion a ete faite plus haut) :
	;  . NS0_ns  avec  E2, E1     :  diviser par  -i sinns
	;  . ------  ----  H1 a H16   :  ------- ---   i sin(-a_NS0 + a) 
	;							= i sinb
	;  . NS1-45  ----  E2, E1     :  	          inchanges, nuls
	;  . NS1-45  ----  H1 a H16   :  ------- ---   i sina
	;  . NS1-45  ----  NS0_ew     :  ------- ---   i sinns
	;  . NS45    ----  NS0_ns     :  -----------   i sinns
	;  . NS45    ----  NS1 a NS23 :               inchanges, nuls
	;  . E210    ----  H1 a H16   :  -----------   i sina
	;  . E210    ----  NS0_ew     :  -----------   i sinns
	;  . NS8     ----  NS0_ns     :  -----------   i sinns
	;  . NS8     ----  NS1 a NS17 :              inchanges nuls
	;  . NS0_ns  ----  NS7 a NS45 :  -----------  -i sinns
	;  . AA1 2 3 4 --  NS0_ns     :  diviser par   i sinns


	; Le 29 avr 03 on supprime la condition  (abs(a_H_dep) gt 0.1)  pour 
	;   pouvoir traiter des observations non depointees destinees a la 
	;   mise au point. Remis en service le 30 sept 03 pour traiter la polar
	;   d'observations pointees (sans modifier ici les harm polar), pour
	;   mesurer la position des dipoles des antennes H.

    if ((rotew eq 0)  and  (rotns eq 1)  and  (abs(a_H_dep) gt 0.05)  and  $
;   if ((rotew eq 0)  and  (rotns eq 1)  and  				  $
	  (jul_obs ge jul_corr_gain)  and  (type_obs eq 1) )  then begin
	    ; Rem : la condition (type_obs eq 1), qui exclut les observations
	    ;        de calibration de transition (antennes H tournees mais 
	    ;	     rotew = rotns = 1 dans l'entete)  est superflue.
	    ;
	print, '      Debut correction des harm polar pour la rotation des' + $
		' dipoles pour sources'
	print, '        de controle posterieures a la refonte du temps ' + $
		'reel (16 avr 2003) :'
	ch_format ="('          rotew = 0,  rotns = 1,   depointage " + $
	    "antennes H =', i4, ' deg')"
	print, format=ch_format, nint(180/!pi * ah_dep)

;      Ajout d'un multiple de pi/2 a la phase pour E2 E1 E0 avec les H : .
	i_cor_sup = 0	; EN PRINCIPE 0, sauf pour essais.
	if (i_cor_sup eq 1) then begin
	    phi = (35 + 180) * !pi/180
		ch_format = $
		    "(6x,'Attention addition phase supplementaire de', " + $
		    "i4, ' aux harm de E2  E1  E0 avec les H')"
		print, format=ch_format, phi
	    e_iphi = exp(i_c * phi)
	    harm_N_p(488) = e_iphi * harm_N_p(488 : 503)	; E2
	    harm_N_p(506) = e_iphi * harm_N_p(506 : 521)	; E1
	    harm_N_p(524) = e_iphi * harm_N_p(524 : 539)	; E0
	endif

	sinns  = sin(a_NS0)
	sina   = sin(a_H_dep)
	sinb   = sin(-a_NS0 + a_H_dep)
	sinew2 = sin(a_H2)
	sinew4 = sin(a_H4)
	if (i_corr_rot_NS0 eq 0) then begin	; essais seulement.
	    sinns = 1
	    sinb  = sin(a_H_dep)
	endif
	i_c    = complex(0, 1)		; et non (1, 0) !! trouv'e le 1 jul 03

	harm_N_p(0) = harm_N_p(0: 1) / (-i_c*sinns)	; NS0_ns  avec E2, E1.
	harm_N_p(2) = harm_N_p(2:17) / ( i_c*sinb)	; NS0_ns  avec H1 a H16

	for j = 1, 24 do begin				; NS1-45  ---- H1 a H7
	    harm_N_p(18*j +  2) = harm_N_p(18*j +  2 : 18*j +  8) / (i_c*sina)
	endfor
	for j = 1, 24 do begin				; NS1-45  ---- NS0_ew
	    harm_N_p(18*j + 9) = harm_N_p(18*j + 9) / (i_c*sinns)
	endfor
	for j = 1, 24 do begin				; NS1-45  ---- H9 a H16
	    harm_N_p(18*j + 10) = harm_N_p(18*j + 10 : 18*j + 17) / (i_c*sina)
	endfor

	harm_N_p(450) = harm_N_p(450    ) / (i_c*sinns)	; NS45   avec NS0_ns

	harm_N_p(488) = harm_N_p(488:494) / (i_c*sina ) ; E2     ---- H1 a  H7
	harm_N_p(495) = harm_N_p(495    ) / (i_c*sinns) ; --     ---- NS0_ew
	harm_N_p(496) = harm_N_p(496:503) / (i_c*sina ) ; --     ---- H9 a  H16

	harm_N_p(506) = harm_N_p(506:512) / (i_c*sina ) ; E1     ---- H1 a  H7
	harm_N_p(513) = harm_N_p(513    ) / (i_c*sinns) ; --     ---- NS0_ew
	harm_N_p(514) = harm_N_p(514:521) / (i_c*sina ) ; --     ---- H9 a  H16
	
	harm_N_p(524) = harm_N_p(524:530) / (i_c*sina ) ; E0     ---- H1 a  H7
	harm_N_p(531) = harm_N_p(531    ) / (i_c*sinns) ; --     ---- NS0_ew
	harm_N_p(532) = harm_N_p(532:539) / (i_c*sina ) ; --     ---- H9 a  H16
	
	harm_N_p(540) = harm_N_p(540    ) / (i_c*sinns) ; NS8    ---- NS0_ns

	harm_N_p(558) = harm_N_p(558:575) / (-i_c*sinns); NS0_ns ---- NS7 a 45

	if (nbre_harm gt 576) then begin
	    harm_N_p(576) = harm_N_p(576) / (i_c*sinns)	; AA1 avec NS0_ns
	    harm_N_p(594) = harm_N_p(594) / (i_c*sinns) ; AA2 -----------
	    harm_N_p(612) = harm_N_p(612) / (i_c*sinns) ; AA3 -----------
	    harm_N_p(630) = harm_N_p(630) / (i_c*sinns) ; AA4 -----------
	endif

	print, '      Fin de correction des harmoniques polar.'
    endif	; fin de correction pour les harm non polar des sources de con-
		;   trole posterieures a nov 02 (rotew=rotns=0,  


; Poursuite de CORR_ROT_DEP_P

; Correction des harmoniques polar pour les sources de calibration faites :
	; . avant la refonte du temps reel (16 avr 03) mais en decouplant micro
	;     pointage et maxion (type_obs=2 dans RH_DP_CALIB)
	; . apres la refonte du temps reel (16 avr 03)
	; Les conditions sont :
	; . rotew = 1, rotns = 1,  a_H_dep = 0 ,
	; . correction du mouvement diurne,
	; . pas de modification des gains complexes a l'initialisation de 
	;     l'observation pour "tenir compte" de la rotation des dipoles.
	; Il y aura deux cas :
	; . a_H2 = a_H4 = - a_NS0 = +45		avant fev 03,
	; . a_H2 = a_H4 =   a_NS0 = +45		apres fev 03 (modif de NS0).
	; Rem : il n'y a pas d'observations avec les H depointees et H2 et H4
	;	tournees. 
	; Rappel harmoniques polar :
	;	 on pose sinew = sin(a_H2), et sinns = sin(a_NS0)
	; . NS0_ns   avec E2 E1 H1  : diviser par  -i * sinns
	; . ------   ---- H2        : -----------   i * sin(a_H2 - a_NS0) soit:
	;					    i (actuel), puis rien (nul)
	; . ------   ---- H3	    : -----------  -i * sinns
	; . ------   ---- H4        : -----------   i (actuel), puis rien (nul)
	; . ------   ---- H5 a H16  : -----------  -i * sinns
	; . NS1_45   ---- E2 E1 H1  : inchanges (nuls)
	; . ------   ---- H2        : diviser par   i * sinew
	; . ------   ---- H3	    ; inchange  (nul)
	; . ------   ---- H4        : diviser par   i * sinew
	; . ------   ---- H5 a H7   : inchanges (nuls)
	; . ------   ---- NS0_ew    : diviser par   i * sinns
	; . ------   ---- H9 a H16  : inchanges (nuls)
	; . NS45     ---- NS0_ns    : diviser par   i * sinns
	; . NS45     ---- NS1-23    : nuls, inchanges
	; . E210     ---- H2 et H4  : diviser par   i * sinew
	; . E210     ---- NS0_ew    : -----------   i * sinns
	; . NS8      ---- NS0_ns    : -----------   i * sinns
	; . NS0_ns   ---- NS1-45    : -----------  -i * sinns
	; . AA1 2 3 4 --- NS0_ns    : -----------   i * sinns
    if ((rotew eq 1) and (rotns eq 1) and (abs(a_H_dep) lt 0.05)) then begin
	    ; Rem : il n'y a pas lieu de distinguer les observations de cali-
	    ;	    bration de transition (pour lesquelles rotew=rotns=0 dans 
	    ;       l'en-tete du fichier, mais sont ensuite remis a 1) des 
	    ;	    observations de calibration definitives (ou rotew=rotns=1
	    ;	    dans l'en-tete), car elles sont indiscernables a ce stade,
	    ;	    => jul_corr_gain n'intervient pas.
	    ;   La question garde-fou sur le decouplage du maxion et du micro-
	    ;	  pointage a deja ete posee dans RH_DP_CALIB. On ne la repose 
	    ;	  pas ici.
	    ;
	print, '      Debut correction des harm polar pour la rotation des' + $
		' dipoles pour sources'
	print, '        de calibration posterieures a la refonte du temps ' + $
		'reel (16 avr 2003) :'
	print, '          rotew = 1, rotns = 1,  a_H_dep = 0'
	print, '          pas de modification des gains ' + $
					'complexes a l''initialisation' 
	sinew2 = sin(a_H2)
	sinew4 = sin(a_H4)
	sinns  = sin(a_NS0)
	if (i_corr_rot_NS0 eq 0) then  sinns = 1	; essais seulement
	i_c    = complex(0, 1)	

	harm_N_p(0) = harm_N_p(0: 2) / (-i_c * sinns)   ; NS0_ns  avec E2 E1 H1
	harm_N_p(3) = harm_N_p(3   ) / ( i_c        )   ; ------------ H2
	harm_N_p(4) = harm_N_p(4   ) / (-i_c * sinns)   ; ------------ H3
	harm_N_p(5) = harm_N_p(3   ) / ( i_c        )   ; ------------ H4
	harm_N_p(6) = harm_N_p(6:17) / (-i_c * sinns)   ; ------------ H5 a H16

	for j = 1, 24 do begin			; NS1-45  avec H2, H4 et NS0_ew
	    harm_N_p(18*j + 3) = harm_N_p(18*j + 3) / (i_c * sinew2)   ; H2
	    harm_N_p(18*j + 5) = harm_N_p(18*j + 5) / (i_c * sinew4)   ; H4
	    harm_N_p(18*j + 9) = harm_N_p(18*j + 9) / (i_c * sinns )   ; NS0_ew
	endfor

	harm_N_p(450) = harm_N_p(450) / ( i_c * sinns)	; NS45   avec NS0_ns

	harm_N_p(489) = harm_N_p(489) / ( i_c * sinew2)	; E2     avec H2
	harm_N_p(491) = harm_N_p(491) / ( i_c * sinew4)	; --     ---- H4
	harm_N_p(495) = harm_N_p(495) / ( i_c * sinns)	; --     ---- NS0_ew

	harm_N_p(507) = harm_N_p(507) / ( i_c * sinew2)	; E1     ---- H2
	harm_N_p(509) = harm_N_p(509) / ( i_c * sinew4)	; --     ---- H2
	harm_N_p(513) = harm_N_p(513) / ( i_c * sinns)	; --     ---- NS0_ew
	
	harm_N_p(525) = harm_N_p(525) / ( i_c * sinew2)	; E0     ---- H2
	harm_N_p(527) = harm_N_p(527) / ( i_c * sinew4)	; --     ---- H4
	harm_N_p(531) = harm_N_p(531) / ( i_c * sinns)	; --     ---- NS0_ew
	
	harm_N_p(540) = harm_N_p(540) / ( i_c * sinns)	; NS8    ---- NS0_ns

	harm_N_p(558) = harm_N_p(558:575) /(-i_c*sinns) ; NS0_ns ---- NS7->NS45

	if (nbre_harm gt 576) then begin
	    harm_N_p(576) = harm_N_p(576) / (i_c*sinns)	; AA1 avec NS0_ns
	    harm_N_p(594) = harm_N_p(594) / (i_c*sinns) ; AA2 -----------
	    harm_N_p(612) = harm_N_p(612) / (i_c*sinns) ; AA3 -----------
	    harm_N_p(630) = harm_N_p(630) / (i_c*sinns) ; AA4 -----------
	endif

	print, '      Fin de correction des harmoniques polar.'
    endif	; fin de correction des harmoniques des sources de calibration
		;   posterieures a nov 02.

    end		; fin de CORR_ROT_DEP_P

;______________________________________________________________________________

PRO RH_CORR_ANTENNES

; Creation 18 sept 2003
; But : compiler l'ensemble des procedures ci_dessus.

    J_M = 0
    end