This page is for writing explanations or plans which we are not confident about and may be subject to change. For instance, a possibe course of action to carry out a particular type of measurement or the plan to follow to identify a noise source.It's also for temporary random notes.

I haven't seen a report about the temperature around the vacuum chambers during O3GK, so I took a look to the data and post it here.

O3GK happened from April 7, 8:00 UTC to April 21, 0:00 UTC 2020.

Temperatures are approximate within ±0.1 °C.


Temperature (°C)















See pictures attached.

Temperature we need for BS and SR3.

Given the fact that

we decided to adjust the amount of ballast mass in BS and SR3.

The amount of ballast mass necessary for the adjustment depends on two elements, the temperature and the buoyancy correction. The latter depends also on the temperature.

With the aim of measuring the bouyancy effect I requested to have the same temperature as in O3GK (klog ) on the day of the venting. This was requested because I assumed keeping such a temperature during O4 would be easy to achive. However, on the day of the venting we had a different temperature (klog ) that I wrongly assumed it was the one we had in O3GK:












yet to be checked



yet to be checked



yet to be checked

Because I measured the bouyancy effect during the venting, for Type-B work it would be better to have the same temperture we had during venting, not during O3GK.



  1. Check the temperature, take note of it and tell Yokozawa-san in case it's not good.
  2. Set the suspension in SAFE mode.
  3. Use the IP horizontal FRs to set the IP very close to the setpoint.
  4. What is the appropriate position of GAS filters in this stage? It does not matter.
  5. Make sure the suspension goes to ALIGNED state without problems. For reference take note of
    1. The amount of IM-Y actuation required to reach such a state and
    2. The IM-Y displacement.
  6. Take note of the oplev setpoints.

Remove LVDT-actuator units

  1. Lock the suspension in such a position and take note of the position according to LVDTs.

  2. Remove the LVDT-actuator units and disassemble them one by one. Take notes and pictures.

Install F0 yaw motor

  1. Lock F0-Y with cable ties.
  2. Install the motor as usual. Make sure it's functional.
  3. Move the motor until the oplev signal is roughly close to zero yaw.
  4. Turn in on the control system:
    • GAS: DC and AC.
    • IM: DC (oplev) and AC.
    • BS optic: AC.
  5. Offload IM-Y actuation onto F0-Y motor.

Ballast mass adjustment

Proceed with this task.

This is Type B oplev diagonalization procedure I need:

QPDs calibration factors

Beam splitter





  1. Copy the templates in /kagra/Dropbox/Subsystems/VIS/TypeBData/SRM/OPLEV/templates/ in a suitable directory
  2. Align the optic into a convenient orientation. This step requires additional explanation.
  3. Open SRM_TM_OPLEV_L_PREDIAG.xml and execute it.
  4. One commented matlab file.
  5. We need a diagnosis step here!
  6. (STEP 1) Excite TM-L with white noise and calculate the transfer function from y_len to x_len. The naming convention is very bad, so mind the names


    The TM-L mode at 0.658 Hz appears with high coherence. Yaw modes appear but have low coherence: TM-Y at 1.02Hz (#27) and 1.375 Hz (#32).

  7. At the resonance frequency of 0.65 Hz calculate and write down the following quantities:

    • theta_l = arctan( - x_len / y_len ); the sign of the ratio x_len / y_len can be read from the phase of the transfer function from y_len to x_len.

    • x_len, y_len.

    • x_tilt, y_tilt.

    • L = Eq. (15).

  8. (STEP 2) The same approach is used to to calculate theta_t. Excite TM-P with white noise and calculate the transfer function from y_tilt to x_tilt. The naming convention is still bad so keep minding the names:


    At the resonance frequency of 0.85 Hz calculate and write down the following quantities:

    • theta_t = arctan( - x_tilt / y_tilt ); the sign of the ratio x_tilt / y_tilt can be read from the phase of the transfer function.

    • x_len, y_len

    • x_tilt, y_tilt

  9. (STEP 3) Calculate the same angle by actuating in yaw. Both estimates should be similar. Excite TM-Y with white noise and calculate the transfer function from x_tilt to y_tilt (inverse of the one in item 2!). At the resonance frequency of 1 Hz or 1.38 Hz calculate and write down the following quatities:

    • theta_t = arctan( y_tilt / x_tilt ); the sign of the ratio y_tilt / x_tilt can be read from the phase of the transfer function.

    • x_len, y_len

    • x_tilt, y_tilt

    This estimate should be the same as the one calculated in the previous item. In case it's not the one measured in this item has preference.
  10. (STEP 4) Use Eq (20) in Terrence document to calculate beta. Use the recently calculated value of theta_t from (STEP 2/3) and the values of x_tilt, y_tilt and L calculated in (STEP 1).
  11. (STEP 5) Calculate L_beamP using Eq. (23) using theta_l from (STEP 1) and x_len and y_len from (STEP 2).

  12. (STEP 6) Calculate L_beamY using Eq. (23) using theta_l from (STEP 1) and x_len and y_len from (STEP 3).

  13. (STEP 7) Calculate Y using using Eq. (24) using x_tilt and y_tilt from (STEP 3).
  14. (STEP 8) Calculate P using using Eq. (24) using x_tilt and y_tilt from (STEP 2).
  15. (STEP 9) Calculate delta_Y using Eq. (21) L_beamY and Y.
  16. (STEP 10) Calculate delta_P using Eq. (22) L_beamP and P.

This is a notes about Guardian TODO list

  1. Modify real-time model. Add
    1. OBSERVATION filter bank for IM.
    2. Switch to transition from ALIGNED to OBSERVATION state.
  2. Add threshold definition channels for rms monitors.(This is for the criteria to go into CALM-DOWN state.)
  3. Add new filter names to vistools, wgich will generate whole set of useful functions to manipulate the filter block.
  4. Make the already function "engageControlSequence" turn the new filter banks on.
  5. Is there a "disengageControlSequence" function?
  6. Write a "gooToo" function to turn matrix switches on and off. It would work something like gooToo('OBSERVTION'), gooToo('ALIGNED'), etc.

The channel names for the new block are something like: K1:VIS-BS_OBSDAMP_P01_*

Here is an updated version of the TODO list:

  2. Move vistools_fake with the modifications into vistools or vistools_test.
  3. Define gootoo function. Do we need this?
  4. Put null filters in all new filter banks. What's the motivation?
  5. Modify beginControlSequence in order to allow selective disengagement of filters in payload and tower when going from ALIGNED to OBSERVATION state. (Used in OBS2PAY_TRIPPED also.)
  6. Modify disengageControlSequence in order to allow selective engagement of filters in payload and tower when going from OBSERVATION state to ALIGNED. (Used in OBS2PAY_TRIPPED also.)
  7. It will use default ramp values, we don't have to do anything extra (within enableControl --> visObj.dampRamp).

  8. Write function to switch martrix on or off using regular Guardian.
  9. Set the variable state='OBSERVATION'.
  10. When the system trips in OBSERVATION state it will go to
    1. an intermediate state (OBS2PAY_TRIPPED) and from there to PAYLOAD_TRIPPED if the payload is the one tripping.
    2. to TOWER_TRIPPED if if the tower is the one tripping.

Inertial damping switch in Type B memd screen: see klog 8825.

This is just a note about the switch that changes

Type A DARM transfer function measurements





See example in klog entry: 11595: /users/VISsvn/TFNoisebudget/ETMY/ETMY_MNYvsDARM20191117.xml

This entry is about Type B Guardian

The Guardian manual is here.

controls@k1ctr0:~$ userapps

From herer cd to vis/k1/guardian/

How to check the vistools functions

  1. controls@k1ctr0:~$ userapps
  2. From herer cd to vis/k1/guardian
  3. ipython
  4. from vistoolstest import *
  5. SR2=Vis('SR2') # This creates an instance of VisObj called SR2.

  6. dir(SR2) # This provides the list of functions in vistools.
  7. help(SR2.witRead) # Help for a particular python function.
  8. SR2.levels() # Provides a list of levels defined in SR2 instance.
  9. SR2.testPvs() # Provides a list of TEST channels.
  10. SR2.testPvs(['TM']) # Names of test channels in the 'TM' level; note the square brackets.
  11. SR2.testPvs(['TM','IP']) # Similar to the previous command.
  12. SR2.witPvs() # Names of witness channels, aka monitor channels.
  13. SR2.witPvs(['IP','IM']) # Similar to the previous command.
  14. SR2.dcctrlPvs() # Names of DC control channels in the tower part.
  15. SR2.dcctrlPvs(['BF']) # Similar to the previous command.
  16. SR2.setPvs() # Names of setpoints channels in the tower.
  17. SR2.olSetPvs() # Names of setpoints channels for the payload.
  18. SR2.olSetPvs(['IM']) # Similar to the command above.

The following lines are to create a guardian from a file. See Kokeyama-san's klog entry 906.

The name of the Guardian file is:


Creation and start medm Guardianscreen

After finishing the work it's convenient to destroy the fake Guardian by typing:



This entry is about IP LVDT correction with the seimometer signal

ther people have been working in the correction of the IL LVDT using the seismometer signal



In order to properly damp the motion of the IP we would like to estimate the motion of the IP table w.r.t. an inertial reference frame. However, we currently don't have an appropriate inertial sensor for this task. The aim of sensor correction is to use the readout of a seismometer on the ground in order to remove the contribution of the ground motion from the IP LVDT readout, which provides the relative displacement of the IP table with respecto to the ground.


Sensor correction requires an estimate of the ground motion in order to remove it from the IP LVDT signal. In reality, what is required is an estimate of the motion of the platform which supports IP at the top of the frame. An infinitely rigid frame the transfer function will be one.

Notes about the seismometer:

Notes about the filters

How to find whaty are DQ channels available

controls@k1ctr3|20190828> ssh k1sum0

controls@k1sum0:~$ conda activate ligo-summary-3.7

(ligo-summary-3.7) controls@k1sum0:~$ FrChannels /frame0/science/12510/K-K1_R-1251005728-32.gwf | grep DQ | more

SR2 GAS filter control

Date: 28-08-2019

Author: Fabian

Context: There's high coherence of the GAS LVDT with the vertical ground motion.

Directory: /kagra/Dropbox/Subsystems/VIS/TypeBData/SR2/Noise/Measurements/20190828/

File: SR2_ALIGNED_TM_OPLEV_ASD_190828.xml

The F0 transfer function measured on the 27th of July were not successful, therefore, I measured again for the sake of health. It tuned to be alright.

Resonant frequencies of the GAS filter transfer functions are:

Oplev control in SR3

Date: 19-08-2019

Author: Fabian

Context: On Friday Enomoto-kun implemented new filters for the SR3 optic local control. See klog entry 10014. The aim is to control lower frequency motion. What frequency?

Noise hunting in SR3 optics' residual motion

Date: 05-08-2019.

Author: Fabian.

Context: entry from 03-08-2019 and klog entries 9702 and 9755.

Following the plan for noise source identification I measured the coherence between the following degrees of freedom:

The highlights for the ALIGNED state are

Date: 03-08-2019.

Author: Fabian.

Context: klog entries 9702 and 9755.

On Friday afternoon I found high coherence between SR3 L and P degrees of freedom in at least two frequency bands, as measured by the oplev. High coherence is observed in both states ALIGNED and FLOAT.

Possible reasons for the high coherence are:

Plan for noise source identification.

Plan for reducing control noise

KAGRA/Subgroups/VIS/TypeB/NotesProvisional (last edited 2021-01-25 15:36:40 by fabian.arellano)