diff --git a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc index 107ec5784d7bc9677bd5b94c13b870ad316795ed..1c1d08bf26f7a940ee8cbbab212bf096a9a92457 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 0bb20151f5d44d882243e7d26d04ea915c3b5a04..a01bd15bc72dc9aff6ba11d9319baf8bfb73b934 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.