From a64943458017adc00bdba8ca2cdd247b46c34011 Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Thu, 22 Mar 2012 13:50:39 +0000
Subject: [PATCH] Task #2880: Provide MSLofar with the anabeam direction type.

---
 RTCP/Storage/src/MeasurementSetFormat.cc | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/RTCP/Storage/src/MeasurementSetFormat.cc b/RTCP/Storage/src/MeasurementSetFormat.cc
index 42c13acc2e7..6a59e56526f 100644
--- a/RTCP/Storage/src/MeasurementSetFormat.cc
+++ b/RTCP/Storage/src/MeasurementSetFormat.cc
@@ -272,19 +272,29 @@ void MeasurementSetFormat::fillField(unsigned subarray)
   // Beam direction
   MVDirection radec(Quantity(itsPS.getBeamDirection(subarray)[0], "rad"), 
 		    Quantity(itsPS.getBeamDirection(subarray)[1], "rad"));
-  MDirection::Types beamDirectionType; // By default this is J2000
+  MDirection::Types beamDirectionType;
   MDirection::getType(beamDirectionType, itsPS.getBeamDirectionType(subarray));
   MDirection indir(radec, beamDirectionType);
   casa::Vector<MDirection> outdir(1);
   outdir(0) = indir;
 
+  // AnaBeam direction type
+  MDirection::Types anaBeamDirectionType;
+  if (itsPS.haveAnaBeam())
+    MDirection::getType(anaBeamDirectionType, itsPS.getAnaBeamDirectionType());
+
   // Put the direction into the FIELD subtable.
   MSLofarField msfield = itsMS->field();
   MSLofarFieldColumns msfieldCol(msfield);
 
   uInt rownr = msfield.nrow();
   ASSERT(rownr == 0); // can only set directionType on first row, so only one field per MeasurementSet for now
-  msfieldCol.setDirectionRef(beamDirectionType);
+
+  if (itsPS.haveAnaBeam())
+    msfieldCol.setDirectionRef(beamDirectionType, anaBeamDirectionType);
+  else
+    msfieldCol.setDirectionRef(beamDirectionType);
+
   msfield.addRow();
   msfieldCol.name().put(rownr, "BEAM_" + String::toString(subarray));
   msfieldCol.code().put(rownr, "");
@@ -302,9 +312,6 @@ void MeasurementSetFormat::fillField(unsigned subarray)
     // Analog beam direction
     MVDirection radec_AnaBeamDirection(Quantity(itsPS.getAnaBeamDirection()[0], "rad"),
   				       Quantity(itsPS.getAnaBeamDirection()[1], "rad"));
-    MDirection::Types anaBeamDirectionType; // By default this is J2000
-    MDirection::getType(anaBeamDirectionType, itsPS.getAnaBeamDirectionType());
-    ASSERT(anaBeamDirectionType == beamDirectionType); // we can only have one type in the direction column, since it is stored in the header
     MDirection anaBeamDirection(radec_AnaBeamDirection, anaBeamDirectionType);
     msfieldCol.tileBeamDirMeasCol().put(rownr, anaBeamDirection);
   } else {
-- 
GitLab