Skip to content
Snippets Groups Projects
Commit 0a3622ed authored by Jean-Baptiste Bayle's avatar Jean-Baptiste Bayle
Browse files

Merge branch '58-sidebands-are-not-correctly-computed-when-laser-locking-is-applied' into 'master'

Resolve "Sidebands are not correctly computed when laser locking is applied"

Closes #58

See merge request !84
parents 920324a4 e139cae3
No related branches found
No related tags found
1 merge request!84Resolve "Sidebands are not correctly computed when laser locking is applied"
Pipeline #149099 passed
...@@ -703,6 +703,17 @@ class Instrument: ...@@ -703,6 +703,17 @@ class Instrument:
logger.info("Simulating local beams") logger.info("Simulating local beams")
self.simulate_locking() self.simulate_locking()
## simulate sidebands
logger.debug("Computing upper sideband offsets for primary local beam")
self.local_usb_offsets = self.local_carrier_offsets \
+ self.modulation_freqs * (1 + self.clock_noise_offsets)
logger.debug("Computing upper sideband fluctuations for primary local beam")
self.local_usb_fluctuations = \
self.local_carrier_fluctuations \
+ self.modulation_freqs * (self.clock_noise_fluctuations + self.modulation_noises)
## Propagation to distant MOSA ## Propagation to distant MOSA
logger.info("Propagating local beams to distant MOSAs") logger.info("Propagating local beams to distant MOSAs")
...@@ -1310,8 +1321,6 @@ class Instrument: ...@@ -1310,8 +1321,6 @@ class Instrument:
Args: Args:
mosa: laser index mosa: laser index
""" """
sc = ForEachMOSA.sc
logger.info("Generating laser noise for laser %s", mosa) logger.info("Generating laser noise for laser %s", mosa)
self.laser_noises[mosa] = noises.laser(self.physics_fs, self.physics_size, self.laser_asds[mosa]) self.laser_noises[mosa] = noises.laser(self.physics_fs, self.physics_size, self.laser_asds[mosa])
...@@ -1322,14 +1331,6 @@ class Instrument: ...@@ -1322,14 +1331,6 @@ class Instrument:
self.local_carrier_fluctuations[mosa] = \ self.local_carrier_fluctuations[mosa] = \
self.laser_noises[mosa] + self.glitch_lasers[mosa] + self.tdir_tones[mosa] self.laser_noises[mosa] + self.glitch_lasers[mosa] + self.tdir_tones[mosa]
logger.debug("Computing upper sideband offsets for primary local beam %s", mosa)
self.local_usb_offsets[mosa] = self.offsets_freqs[mosa] \
+ self.modulation_freqs[mosa] * (1 + self.clock_noise_offsets[sc(mosa)])
logger.debug("Computing upper sideband fluctuations for primary local beam %s", mosa)
self.local_usb_fluctuations[mosa] = \
self.laser_noises[mosa] + self.glitch_lasers[mosa] + self.tdir_tones[mosa] \
+ self.modulation_freqs[mosa] * (self.clock_noise_fluctuations[sc(mosa)] + self.modulation_noises[mosa])
def lock_on_adjacent(self, mosa): def lock_on_adjacent(self, mosa):
"""Compute carrier and upper sideband offsets and fluctuations for laser locked to adjacent beam. """Compute carrier and upper sideband offsets and fluctuations for laser locked to adjacent beam.
...@@ -1355,20 +1356,6 @@ class Instrument: ...@@ -1355,20 +1356,6 @@ class Instrument:
+ self.central_freq * self.oms_ref_carrier_noises[mosa] \ + self.central_freq * self.oms_ref_carrier_noises[mosa] \
+ self.tdir_tones[mosa] + self.tdir_tones[mosa]
logger.debug("Computing upper sideband offsets for local beam %s "
"locked on adjacent beam %s", mosa, adjacent(mosa))
self.local_usb_offsets[mosa] = \
self.local_usb_offsets[adjacent(mosa)] \
+ self.offsets_freqs[mosa] * (1 + self.clock_noise_offsets[sc(mosa)])
logger.debug("Computing upper sideband fluctuations for local beam %s "
"locked on adjacent beam %s", mosa, adjacent(mosa))
adjacent_usb_fluctuations = self.local_usb_fluctuations[adjacent(mosa)] \
+ self.central_freq * self.backlink_noises[mosa]
self.local_usb_fluctuations[mosa] = adjacent_usb_fluctuations \
+ self.offsets_freqs[mosa] * self.clock_noise_fluctuations[sc(mosa)] \
+ self.central_freq * self.oms_ref_usb_noises[mosa] \
+ self.tdir_tones[mosa]
def lock_on_distant(self, mosa): def lock_on_distant(self, mosa):
"""Compute carrier and upper sideband offsets and fluctuations for locked laser to distant beam. """Compute carrier and upper sideband offsets and fluctuations for locked laser to distant beam.
...@@ -1403,29 +1390,6 @@ class Instrument: ...@@ -1403,29 +1390,6 @@ class Instrument:
+ self.central_freq * self.oms_isc_carrier_noises[mosa] \ + self.central_freq * self.oms_isc_carrier_noises[mosa] \
+ self.tdir_tones[mosa] + self.tdir_tones[mosa]
logger.debug("Computing upper sideband offsets for local beam %s "
"locked on distant beam %s", mosa, distant(mosa))
usb_offsets = self.local_usb_offsets[distant(mosa)]
distant_usb_offsets = \
-self.d_pprs[mosa] * self.central_freq \
+ (1 - self.d_pprs[mosa]) * self.interpolate(usb_offsets, -self.pprs[mosa])
self.local_usb_offsets[mosa] = distant_usb_offsets \
+ self.offsets_freqs[mosa] * (1 + self.clock_noise_offsets[sc(mosa)])
logger.debug("Computing upper sideband fluctuations for local beam %s "
"locked on distant beam %s", mosa, distant(mosa))
usb_fluctuations = \
self.local_usb_fluctuations[distant(mosa)] \
- (self.central_freq + self.local_usb_offsets[distant(mosa)]) \
* self.distant_ttls[distant(mosa)] / c
distant_usb_fluctuations = \
+ (1 - self.d_pprs[mosa]) * self.interpolate(usb_fluctuations, -self.pprs[mosa]) \
- (self.central_freq + self.local_usb_offsets[mosa]) * self.gws[mosa] \
- (self.central_freq + self.local_usb_offsets[mosa]) * self.local_ttls[mosa] / c
self.local_usb_fluctuations[mosa] = distant_usb_fluctuations \
+ self.offsets_freqs[mosa] * self.clock_noise_fluctuations[sc(mosa)] \
+ self.central_freq * self.oms_isc_usb_noises[mosa] \
+ self.tdir_tones[mosa]
def simulate_locking(self): def simulate_locking(self):
"""Simulate local beams from the locking configuration.""" """Simulate local beams from the locking configuration."""
......
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