Skip to content
Snippets Groups Projects

L2SS-1010: Deal with unconnected antennas

Merged Jan David Mol requested to merge L2SS-1010-post-fixes into master
1 file
+ 22
1
Compare changes
  • Side-by-side
  • Inline
@@ -392,7 +392,15 @@ class AntennaField(lofar_device):
@@ -392,7 +392,15 @@ class AntennaField(lofar_device):
def read_Antenna_Cables_Loss_R(self):
def read_Antenna_Cables_Loss_R(self):
rcu_bands = self.read_attribute("RCU_band_select_RW")
rcu_bands = self.read_attribute("RCU_band_select_RW")
return numpy.array([cable_types[antenna].get_loss(self.Antenna_Type, rcu_band) for antenna, rcu_band in zip(self.Antenna_Cables, rcu_bands)])
 
control_to_recv_mapping = numpy.array(self.Control_to_RECV_mapping).reshape(-1,2)
 
recvs = control_to_recv_mapping[:, 0] # first column is RECV device number
 
 
# Unconnected antennas return RCU band 0, which does not exist. Return 0 loss for them instead.
 
return numpy.array([cable_types[cable].get_loss(self.Antenna_Type, rcu_band)
 
if recv > 0 else 0
 
for recv, cable, rcu_band in
 
zip(recvs, self.Antenna_Cables, rcu_bands)])
def read_Calibration_SDP_Signal_Input_Samples_Delay_R(self):
def read_Calibration_SDP_Signal_Input_Samples_Delay_R(self):
# Correct for signal delays in the cables
# Correct for signal delays in the cables
@@ -450,10 +458,23 @@ class AntennaField(lofar_device):
@@ -450,10 +458,23 @@ class AntennaField(lofar_device):
rcu_bands = self.read_attribute("RCU_band_select_RW")
rcu_bands = self.read_attribute("RCU_band_select_RW")
 
control_to_recv_mapping = numpy.array(self.Control_to_RECV_mapping).reshape(-1,2)
 
recvs = control_to_recv_mapping[:, 0] # first column is RECV device number
 
 
antenna_to_sdp_mapping = self.read_attribute("Antenna_to_SDP_Mapping_R")
 
# construct the subband weights based on the rcu_band of each antenna,
# construct the subband weights based on the rcu_band of each antenna,
# combining the relevant tables.
# combining the relevant tables.
subband_weights = numpy.zeros((self.read_attribute("nr_antennas_R"), 3), dtype=numpy.float64)
subband_weights = numpy.zeros((self.read_attribute("nr_antennas_R"), 3), dtype=numpy.float64)
for antenna_nr, rcu_band in enumerate(rcu_bands):
for antenna_nr, rcu_band in enumerate(rcu_bands):
 
# Skip antennas not connected to RECV. These do not have a valid RCU band selected.
 
if recvs[antenna_nr] == 0:
 
continue
 
 
# Skip antennas not connected to SDP. They must retain a weight of 0.
 
if antenna_to_sdp_mapping[antenna_nr, 1] == -1:
 
continue
 
subband_weights[antenna_nr, :] = rcu_band_to_caltable[rcu_band][antenna_nr, :]
subband_weights[antenna_nr, :] = rcu_band_to_caltable[rcu_band][antenna_nr, :]
return subband_weights
return subband_weights
Loading