Skip to content
Snippets Groups Projects
Commit 5d950448 authored by Stefano Di Frischia's avatar Stefano Di Frischia
Browse files

L2SS-578: correct delay calculations

parent 480c80f0
No related branches found
No related tags found
1 merge request!228Resolve L2SS-578 "Precise hbat delay steps"
......@@ -115,16 +115,16 @@ class Beam(lofar_device):
polarised_delays = numpy.tile(delays, 2) # output dims -> 96x32
# Add signal input delay
summed_delays = numpy.add(polarised_delays,HBAT_signal_input_delays)
calibrated_delays = numpy.add(polarised_delays, HBAT_signal_input_delays)
# Find the right delay step by looking for the closest match in property RECV-> HBAT_bf_delay_step_delays
HBAT_bf_delays = numpy.zeros((96,32), dtype=numpy.int64)
distance = lambda x , y : numpy.absolute(x-y)
for tile in range(96):
for at in range(32):
delay = summed_delays[tile,at]
delay = calibrated_delays[tile,at]
step = min(HBAT_bf_delay_step_delays,key=partial(distance,delay))
HBAT_bf_delays[tile,at] = numpy.int64(delay / step)
HBAT_bf_delays[tile,at] = numpy.where(HBAT_bf_delay_step_delays==step)[0][0]
return HBAT_bf_delays
def _HBAT_set_pointing(self, pointing_direction: numpy.array, timestamp: datetime.datetime = datetime.datetime.now()):
......
......@@ -44,11 +44,8 @@ class TestDeviceBeam(AbstractTestBases.TestDeviceBase):
# verify if values are actually transformed
HBAT_delays_flat = self.proxy.HBAT_delays(numpy.array([["J2000","0deg","0deg"]] * 96).flatten())
HBAT_delays = numpy.array(HBAT_delays_flat).reshape(96,16)
HBAT_signal_input_delays = numpy.zeros((96,32), dtype=numpy.float64)
HBAT_signal_input_delays = numpy.zeros((96,32), dtype=numpy.float64) # Property of Beam-device
HBAT_bf_delay_step_delays = recv_proxy.HBAT_bf_delay_step_delays
HBAT_bf_delays = self.proxy._calculate_HBAT_bf_delays(HBAT_delays, HBAT_signal_input_delays, HBAT_bf_delay_step_delays)
self.assertNotEqual(HBAT_delays, HBAT_bf_delays)
# Verify delays changed (to be discussed)
#self.assertFalse((HBAT_delays_r1==HBAT_delays_r2).all())
......@@ -71,11 +71,3 @@ class TestBeamDevice(base.TestCase):
# verify property is retrieved (workaround)
HBAT_signal_input_delays = beam.Beam.HBAT_signal_input_delays.default_value
self.assertTrue((HBAT_signal_input_delays==numpy.zeros((96,32), dtype=numpy.float64)).all())
# verify if values are actually transformed
HBAT_delays_flat = proxy.HBAT_delays(numpy.array([["J2000","0deg","0deg"]] * 96).flatten())
HBAT_delays = numpy.array(HBAT_delays_flat).reshape(96,16)
HBAT_bf_delays = beam.Beam._calculate_HBAT_bf_delays(HBAT_delays, HBAT_signal_input_delays)
self.assertNotEqual(HBAT_delays, HBAT_bf_delays)
self.assertTrue(HBAT_bf_delays[0][0]==numpy.int64((HBAT_delays[0][0]+HBAT_signal_input_delays[0][0])/0.5e-09))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment