From d8ad5e91f4231ea4ea4247e82bdb037c0a53ba50 Mon Sep 17 00:00:00 2001
From: Pieter Donker <donker@astron.nl>
Date: Mon, 22 Feb 2016 11:11:47 +0000
Subject: [PATCH] Task #8966: add more logging

---
 MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc | 34 ++++++++++++++++++++
 MAC/APL/PAC/ITRFBeamServer/src/BeamServer.h  |  2 +-
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc
index 107ec5784d7..1c1d08bf26f 100644
--- a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc
+++ b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc
@@ -812,6 +812,10 @@ GCFEvent::TResult BeamServer::beamalloc_state(GCFEvent& event, GCFPortInterface&
 
 		LOG_INFO_STR("Subscribing to subarray: " << subscribe.name);
 		LOG_DEBUG_STR("subbands= " << subscribe.subbandset);
+        if (!_isCalTableValid(itsBeamTransaction.getBeam()->antennaSetName(), itsBeamTransaction.getBeam()->bandName())) {
+            LOG_INFO_STR("No valid CalTable available for this beam, using default");
+        }
+
 		itsCalServer->send(subscribe);
 		itsConnectTimer->setTimer(5.0);
 	}
@@ -1562,6 +1566,36 @@ complex<double>	BeamServer::_getCalFactor(const string& antennaSet, const string
 	return (result);
 }
 
+//
+// _getCalFactor(rcumode, rcu, subbandNr)
+//
+bool BeamServer::_isCalTableValid(const string& antennaSet, const string& band)
+{
+    bool result;
+
+    result = false;
+    if (band == "10_90") {
+        if      (antennaSet == "LBA_INNER") { if (itsCalTable_LBA_INNER_10_90) result = true; }
+        else if (antennaSet == "LBA_OUTER") { if (itsCalTable_LBA_OUTER_10_90) result = true; }
+        else if (antennaSet == "LBA_SPARSE_EVEN") { if(itsCalTable_LBA_SPARSE_EVEN_10_90) result = true; }
+        else if (antennaSet == "LBA_SPARSE_ODD") { if(itsCalTable_LBA_SPARSE_ODD_10_90) result = true; }
+        else if (antennaSet == "LBA_X") { if(itsCalTable_LBA_X_10_90) result = true; }
+        else if (antennaSet == "LBA_Y") { if(itsCalTable_LBA_Y_10_90) result = true; }
+    }
+    else if (band == "30_90") {
+        if      (antennaSet == "LBA_INNER") { if(itsCalTable_LBA_INNER_30_90) result = true; }
+        else if (antennaSet == "LBA_OUTER") { if(itsCalTable_LBA_OUTER_30_90) result = true; }
+        else if (antennaSet == "LBA_SPARSE_EVEN") { if(itsCalTable_LBA_SPARSE_EVEN_30_90)result = true; }
+        else if (antennaSet == "LBA_SPARSE_ODD") { if(itsCalTable_LBA_SPARSE_ODD_30_90)  result = true; }
+        else if (antennaSet == "LBA_X") { if(itsCalTable_LBA_X_30_90) result = true; }
+        else if (antennaSet == "LBA_Y") { if(itsCalTable_LBA_Y_30_90) result = true; }
+    }
+    else if (band == "110_190") { if(itsCalTable_HBA_110_190) result = true; }
+    else if (band == "170_230") { if(itsCalTable_HBA_170_230) result = true; }
+    else if (band == "210_250") { if(itsCalTable_HBA_210_250) result = true; }
+	return (result);
+}
+
 void BeamServer::_loadCalTable(const string& antennaSet, const string& band, uint nrRSPBoards)
 {
 	StatCal**	tableHandle(0);
diff --git a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.h b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.h
index 0bb20151f5d..a01bd15bc72 100644
--- a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.h
+++ b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.h
@@ -181,7 +181,7 @@ private:
 	// RCU calibration
 	std::complex<double>	_getCalFactor(const string& antennaSet, const string& band, uint rcu, uint subbandNr);
 	void 					_loadCalTable(const string& antennaSet, const string& band, uint nrRSPBoards);
-
+    bool                    _isCalTableValid(const string& antennaSet, const string& band);
 	// ### data members ###
 
 	// 'constant' containing the current number of bits each datasample has.
-- 
GitLab