[Difx-users] Handling lin-pol data with difx2fits

Leonid Petrov Leonid.Petrov at lpetrov.net
Wed Apr 10 23:40:44 EDT 2019


Dear colleagues,

  DiFX has a bug and does not propagate polarization labels to the 
output FITS-IDI. The fix is rather trivial. 

  However when I discussed this issue with Rick Perley, he pointed out 
that another fix is needed as well. According to famous AIPS 114 memo, 
page 8, horizontal and vertical polarizations shall be labeled X and Y:

X Horizontal linear
Y Vertical linear

i.e. fixed in the topo-centric, site-dependent coordinate system.

  This is contrary to the IAU 1976 resolution that defines X polarization
along direction to the Northern Pole and Y polarization along the 
right ascension axis (East), i.e. rotating in the topo-centric, 
site-dependent coordinate system.

  I suggest to rename the polarizations recorded at the VLBI stations as 

H Horizontal linear
V Vertical linear

  and reserve X and Y labels for space telescopes.

  In addition to just complying with the IAU nomenclature, it reduces chances 
of misunderstanding in communication with station personnel: who knows which 
polarization a station guy considers as "X", but unless he is operating an 
orbiting VLBI telescope, horizontal and vertical polarizations are unambiguous.

  Any objections? Other thoughts?

  Since we only started using FITS-IDI data with lin-pol, this change will
be relatively painless.

Leonid
2019.04.10_23:34:51

------------------------------------ Patch ---------------------------------

--- applications/difx2fits/src/fitsAN.c~	2019-04-06 21:14:14.733263707 -0400
+++ applications/difx2fits/src/fitsAN.c	2019-04-06 21:44:13.932896491 -0400
@@ -106,8 +106,22 @@
 	stop  = D->mjdStop  - (int)D->mjdStart; 
 
 	arrayId1 = 1;
-	polTypeA = 'R';
+	polTypeA = 'R'; /* Default */
 	polTypeB = 'L';
+	if ( D->nPolar == 1 )
+	{
+             polTypeA = D->polPair[0];
+	      polTypeB = '?'; /* Mark missing polarization */
+        }        
+        {
+             polTypeA = D->polPair[0];
+	      polTypeB = D->polPair[1];
+        }
+        if ( polTypeA == 'X' ) { polTypeA = 'H'; } /* Rename linear polarizations */
+        if ( polTypeA == 'Y' ) { polTypeA = 'V'; }
+        if ( polTypeB == 'X' ) { polTypeB = 'H'; }
+        if ( polTypeB == 'Y' ) { polTypeB = 'V'; }
+
 	time = 0.5 * (stop + start);
 	timeInt = stop - start;
 	for(bandId = 0; bandId < nBand; ++bandId)



More information about the Difx-users mailing list