[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