WP 12696
ECR E2400330
Drawing D0901284-v5
Modified List T2500232
The following SUS SAT Amps were upgraded per ECR E2400330. Modification improves the whitening stage to reduce ADC noise from 0.05 to 10 Hz. The EY PUM and UIM SAT Amps were NOT upgraded.
| Suspension | Old | New | OSEM |
| ETMY MO | S1100098 | S1100088 | F1F2F3SD |
| ETMY MO/RO | S1100079 | S1100083 | RTLF/RTLF |
| ETMY RO | S1100087 | S1000281 | F1F2F3SD |
| TMSY | S1100172 | S1100148 | F1F2F3LF |
| TMSY | S1100107 | S1100172 | RTSD |
| MC1 | S1100128 | S1100118 | T1T2T3LF |
| MC1/MC3 | S1000292 | S1000287 | RTSD/T1T2 |
| MC3 | S1000297 | S1100119 | T3LFRTSD |
F. Clara, J. Kissel, O. Patane, M. Pirello
TJ noticed the DCPD signals rising ~25 minutes into the lock, we found this was a PI t 10.215kHz. Matt notes that we've seen this at the start of each lock even before we changed the ring heaters last. It just damps down again by itself, we expect as the HOM pass over it. Plots attached. This PI doesn't appear to be in our monitored PI list.
Francisco, Tooba, and I went to EY today to do an End Y PCAL End Station measurement.
We followed the Procedure outlined in T1500062-v19.
Beamspot before we started
Ran the following script & the out put follows:
(pcal_env) anthony.sanchez@cdsws31: python generate_measurement_data.py --WS PS4 --date 2025-07-21
/ligo/gitcommon/Calibration/pcal/O4/ES/scripts/pcalEndstationPy/generate_measurement_data.py:52: SyntaxWarning: invalid escape sequence '\R'
log_entry = f"{current_time} {command} \Results found here\: {results_path}\n"
Reading in config file from python file in scripts
../../../Common/O4PSparams.yaml
PS4 rho, kappa, u_rel on 2025-07-21 corrected to ES temperature 299.2 K :
-4.702207423037734 -0.0002694340454223 3.166921849830658e-05
Copying the scripts into tD directory...
Connected to nds.ligo-wa.caltech.edu
martel run
reading data at start_time: 1437237350
reading data at start_time: 1437237810
reading data at start_time: 1437238140
reading data at start_time: 1437238500
reading data at start_time: 1437238870
reading data at start_time: 1437239200
reading data at start_time: 1437239330
reading data at start_time: 1437240000
reading data at start_time: 1437240340
Ratios: -0.5346791724911457 -0.543267360018835
writing nds2 data to files
finishing writing
Background Values:
bg1 = 18.235622; Background of TX when WS is at TX
bg2 = 5.180516; Background of WS when WS is at TX
bg3 = 18.271548; Background of TX when WS is at RX
bg4 = 5.304736; Background of WS when WS is at RX
bg5 = 18.324199; Background of TX
bg6 = -0.468829; Background of RX
The uncertainty reported below are Relative Standard Deviation in percent
Intermediate Ratios
RatioWS_TX_it = -0.534679;
RatioWS_TX_ot = -0.543267;
RatioWS_TX_ir = -0.527180;
RatioWS_TX_or = -0.534309;
RatioWS_TX_it_unc = 0.063072;
RatioWS_TX_ot_unc = 0.066352;
RatioWS_TX_ir_unc = 0.058208;
RatioWS_TX_or_unc = 0.055534;
Optical Efficiency
OE_Inner_beam = 0.986071;
OE_Outer_beam = 0.983489;
Weighted_Optical_Efficiency = 0.984780;
OE_Inner_beam_unc = 0.047991;
OE_Outer_beam_unc = 0.047969;
Weighted_Optical_Efficiency_unc = 0.067854;
Martel Voltage fit:
Gradient = 1637.880346;
Intercept = 0.388593;
Power Imbalance = 0.984192;
Endstation Power sensors to WS ratios::
Ratio_WS_TX = -0.927690;
Ratio_WS_RX = -1.383303;
Ratio_WS_TX_unc = 0.053210;
Ratio_WS_RX_unc = 0.043963;
=============================================================
============= Values for Force Coefficients =================
=============================================================
Key Pcal Values :
GS = -5.135100; Gold Standard Value in (V/W)
WS = -4.702207; Working Standard Value
costheta = 0.988362; Angle of incidence
c = 299792458.000000; Speed of Light
End Station Values :
TXWS = -0.927690; Tx to WS Rel responsivity (V/V)
sigma_TXWS = 0.000494; Uncertainity of Tx to WS Rel responsivity (V/V)
RXWS = -1.383303; Rx to WS Rel responsivity (V/V)
sigma_RXWS = 0.000608; Uncertainity of Rx to WS Rel responsivity (V/V)
e = 0.984780; Optical Efficiency
sigma_e = 0.000668; Uncertainity in Optical Efficiency
Martel Voltage fit :
Martel_gradient = 1637.880346; Martel to output channel (C/V)
Martel_intercept = 0.388593; Intercept of fit of Martel to output (C/V)
Power Loss Apportion :
beta = 0.998844; Ratio between input and output (Beta)
E_T = 0.991787; TX Optical efficiency
sigma_E_T = 0.000336; Uncertainity in TX Optical efficiency
E_R = 0.992935; RX Optical Efficiency
sigma_E_R = 0.000337; Uncertainity in RX Optical efficiency
Force Coefficients :
FC_TxPD = 9.152859e-13; TxPD Force Coefficient
FC_RxPD = 6.233084e-13; RxPD Force Coefficient
sigma_FC_TxPD = 5.803098e-16; TxPD Force Coefficient
sigma_FC_RxPD = 3.482293e-16; RxPD Force Coefficient
data written to ../../measurements/LHO_EndY/tD20250722/
This produced:
Martel_Voltage_test.png
WS_at_TX.png
WS_at_RX.png
WS_at_RX_BOTH_BEAMS.png
These dont look unreasonable, so we ran the End station trends report script to give us the LHO_EndY_PD_ReportV5.pdf.
[Matt, Jenne, Elenna]
Matt and I tried running a new jitter training on CALIB STRAIN CLEAN, and noticed that we could likely subtract a bit more jitter noise from CLEAN, and also probably reinject less noise, especially around the power lines. We then reran a training on NOLINES to prepare to apply the new cleaning today.
Jenne then walked me through how to generate the script which would update the cleaning parameters. I copied over the old observe.snap file, in case I made a mistake and need to revert to the old coefficients.
Once we were in observing, I ran Jenne's template which checks how the cleaning is performing. It definitely looks like it is doing a good job. I accepted the new parameters. Once we are locked for a little longer, I will generate some comparison plots to the old cleaning parameters.
Here is a ratio comparison plot, showing the ratio of CLEAN / NOLINES for an observing time last night and today. We're still thermalizing, so this may change slightly. Matt and I adjusted the plot colors and alpha so the old cleaning is on the bottom and you can see where we are no longer injecting extra noise, and also where the cleaning has improved slightly, especially for the peaks at a few hundreds of Hz.
Ivey used the ISO calibration measurements that I took earlier (85906) to calculate what the OSEMINF gains should be on SR3 (85907), and this script also calculates what it thinks the compensation gain in the DAMP filter bank should be.
The next step is to use OLG TFs to measure what values we would use in the DAMP filter bank to compensate for the change in OSEMINF gains, and we can compare them to the calculated values to see how close they are.
I took two sets of OLG measurements for SR3:
- a set with the nominal OSEMINF gains
T1: 1.478
T2: 0.942
T3: 0.952
LF: 1.302
RT: 1.087
SD: 1.290
- a set with the OSEMINF gains changed to the values in 85907
T1: 3.213
T2: 1.517
T3: 1.494
LF: 1.733
RT: 1.494
SD: 1.793
Measurement settings:
- SR3 in HEALTH_CHECK but with damping loops on
- SR3 damping nominal (all -0.5)
- HAM5 in ISOLATED
Nominal gain set:
/ligo/svncommon/SusSVN/sus/trunk/HLTS/H1/SR3/SAGM1/Data/2025-07-22_1700_H1SUSSR3_M1_WhiteNoise_{L,T,V,R,P,Y}_0p02to50Hz_OpenLoopGainTF.xml r12478
New gain set:
/ligo/svncommon/SusSVN/sus/trunk/HLTS/H1/SR3/SAGM1/Data/2025-07-22_1800_H1SUSSR3_M1_WhiteNoise_{L,T,V,R,P,Y}_0p02to50Hz_OpenLoopGainTF.xml r12478
Once I had taken these measurements, I exported txt files for each dof's OLG and used one of my scripts, /ligo/svncommon/SusSVN/sus/trunk/HLTS/Common/MatlabTools/divide_traces_tfs.m to plot the OLG for each dof to compare the traces between OSEMINF gain differences and then divide the traces and grab an average of that, which will be the compensation gain put in as a filter in the DAMP filter bank (plots). The values I got for the compensation gains are below:
L: 0.740
T: 0.732
V: 0.548
R: 0.550
P: 0.628
Y: 0.757
| DOF | OLTF measured and calculated DAMP Compensation gains | ISO Calibration measurement calculated compensation gains (85907) | Percent difference (%) |
| L | 0.740 | 0.740 | 0.0 |
| T | 0.732 | 0.719 | 1.8 |
| V | 0.548 | 0.545 | 0.5 |
| R | 0.550 | 0.545 | 0.9 |
| P | 0.628 | 0.629 | 0.2 |
| Y | 0.757 | 0.740 | 2.3 |
These are pretty similar to what my script had found them to be last time before the satamp swap (85288), as well as being very similar to the values that Ivey's script had calculated.
Maybe the accuracy from Ivey's script means that in the future we don't need to run the double sets of OLG transfer functions and can jsut use the values that the script gives.
The compensation gains have been loaded into the SR3 DAMP filter bank in FM7 as well as being updated in the estimator damp banks for P and Y. They have been loaded in but of course, are currrently left off for nominal operations since the OSEMINF gains haven't been updated yet
The OSEMINF gains and these new DAMP compensating gains have been turned on together: 86070
Leo, Jennie, Camilla, WP 12694
Jennie followed instructions for set up in 85775. We removed the SQZ beam iris at the bottom of the LPM (added for alignment capture during OFI vent work). Then took beam profiles in this SQZ path of the SEED beam with various PSAMS settings, adjusted PSAMS settings as in 85775 and used the servo for nominal settings. All data is attached. Jennie then reverted settings back to nominal.
Leo, Jennie W., Camilla The attached pdf contains all the beam q parameters fitted to the collected beam width data. Only the 13.5% data was fitted, as the D4S data was too inconsistent to obtain confident q values. Fitting was performed with the a la mode beamPath.fitBeamWidth function. The attached q parameters were individually plotted using a la mode and verified for their data-fitting accuracy. As mentioned in the document, all q parameters are located immediately after the interaction with ZM5 (through the view of BM4 -> ZM4 -> ZM5 beam travel).
Leo, Jennie W., Camilla Attached is a plot of the q manifold from the q parameter data, which allows for characterizing the beam smoothly with respect to ZM4/5 strain gauge voltage values. The image is taken from the presentation uploaded to T2500228. The real plot will likely have slightly different labels to axes. Link to git code for plotting: https://git.ligo.org/leendert.schrader/alm-beam-simulation-for-sqz/-/tree/main
I did a sweep of the LVEA & found Camilla and Jennie W working on the Squeeze tables. Then needed 10-15 more minutes and ensured me that they'd turn off the lights once they were done making sure the Squeezer was Squoze.
We replaced the following supplies this maintenance period:
Mezannine in CER:
VDD-C5-U30 RHS -24 Digital S1201957 replaced with upgraded supply S1202024 per WP12688
VDD-C6-U42 RHS HAM6 OMC PZT HV Power Supply 110V 80mA replaced with HV spare supply due to unexplained tripping of original supply per WP12704
We also staged upgraded replacement supplies 4x in the CER Mezannine, 2x at EY, and 2x at EX.
F. Clara, M. Pirello, E. vonReis
Procedure checklist for both stations completed. No issues were identified at this time.
MY: Scroll pump hours: 89
Turbo pump hours: 226
Crash bearings: 100%
EY: Scroll pump hours: 88
Turbo pump hours: 1295
Crash bearings: 100%
Tue Jul 22 10:09:18 2025 INFO: Fill completed in 9min 14secs
Gerardo confirmed a good fill curbside.
Chris and I greased the fan bearings for the VEA spaces and alternated the fans. This has resulted in abnormalities in the temperature trending, but these changes will even out after a short period.
OSEM calibration of H1:SUS-SR3
Stage: M1
2025-07-22_1530 (UTC).
The suggested (calibrated) M1 OSEMINF gains are
(new T1) = 2.174 * (old T1) = 3.213
(new T2) = 1.610 * (old T2) = 1.517
(new T3) = 1.569 * (old T3) = 1.494
(new LF) = 1.331 * (old LF) = 1.733
(new RT) = 1.374 * (old RT) = 1.494
(new SD) = 1.390 * (old SD) = 1.793
To compensate for the OSEM gain changes, we estimate that the H1:SUS-SR3_M1_DAMP loops must be changed by factors of:
L gain = 0.740 * (old L gain)
T gain = 0.719 * (old T gain)
V gain = 0.545 * (old V gain)
R gain = 0.545 * (old R gain)
P gain = 0.629 * (old P gain)
Y gain = 0.740 * (old Y gain)
The calibration will change the apparent alignment of the suspension as seen by the at the M1 OSEMs
NOTE: The actual alignment of the suspension will NOT change as a result of the calibration process
The changes are computed as (osem2eul) * gain * inv(osem2eul).
Using the alignments from 2025-07-22_1530 (UTC) as a reference, the new apparent alingments are:
DOF Previous value New value Apparent change
---------------------------------------------------------------------------------
L -5.0 um -3.1 um +1.8 um
T -21.6 um -15.5 um +6.1 um
V 11.8 um 9.8 um -2.0 um
R -576.3 urad -327.5 urad +248.9 urad
P -266.5 urad -158.3 urad +108.2 urad
Y -585.0 urad -431.9 urad +153.1 urad
We have estimated a OSEM calibration of H1 SR3 M1 using HAM5 ST1 drives from 2025-05-21_0000 (UTC).
We fit the response M1_DAMP/HAM5_SUSPOINT between 5 and 15 Hz to get a calibration in [OSEM m]/[GS13 m]
This message was generated automatically by OSEM_calibration_SR3.py on 2025-07-22 16:24:05.000267+00:00 UTC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
EXTRA INFORMATION
The H1:SUS-SR3_M1_OSEMINF gains at the time of measurement were:
(old) T1: 1.478
(old) T2: 0.942
(old) T3: 0.952
(old) LF: 1.302
(old) RT: 1.087
(old) SD: 1.290
The matrix to convert from the old Euler dofs to the (calibrated) new Euler dofs is:
+0.74 -0.0 +0.0 -0.0 +0.0 -0.001
+0.0 +0.719 -0.0 +0.0 +0.0 -0.0
-0.0 +0.0 +0.545 -0.006 +0.0 +0.0
+0.0 +0.0 -1.209 +0.545 -0.003 -0.0
+0.0 +0.0 +0.18 -0.013 +0.629 -0.0
-0.148 +0.0 -0.0 +0.0 -0.0 +0.74
The matrix is used as (M) * (old EUL dof) = (new EUL dof)
The dof ordering is ('L', 'T', 'V', 'R', 'P', 'Y')
Please see the attached images of before calibrating and after calibrating.
Comparing these new OSEMINF gains to the gains we got last time we did this (84367) (before the satamp swap), they are pretty similar:
| OSEM | Previous Calculated OSEMINF gains (84367) | New Calculated OSEMINF gains (85907) | Percent difference (%) |
| T1 | 3.627 | 3.213 | 12.1 |
| T2 | 1.396 | 1.517 | 8.3 |
| T3 | 1.345 | 1.494 | 10.4 |
| LF | 1.719 | 1.733 | 0.8 |
| RT | 1.490 | 1.494 | 0.2 |
| SD | 1.781 | 1.793 | 0.6 |
So that's another indicator that the sat amp swap did not have much of an effect on the suspension response to suspoint excitations
The calibration values posted here are correct, but the theoretical alignment values are incorrect. See the corrected post from Sep 26th, 2025.
[CORRECTED LOGPOST LHO: 87162]
WP 12690 Gerardo M., Patrick T. "Update the PLC code on h0vacmr to reflect the current cabling of IP13 to Beckhoff terminal 25, channels 3 and 4." This work permit has been completed. The code is now at commit efc3db6abdaf3f286903a874e7f765e9d867f9f9. There are no issues to report.
This is part of the work we are doing for the Estimator. As part of that work, we are finetuning the OSEMINF gains, which we did previously for SR3 (84298), but since we've swapped the satamps we want to check how different these new values will be compared to the current gains as well as the gains we found that last time.
I ran excitations through the H1:ISI-HAM5_ISO_{X,Y,Z} filter banks with the settings of:
Measurements can be found at /ligo/svncommon/SusSVN/sus/trunk/HLTS/H1/SR3/Common/Data/2025-07-22_1530_H1ISIHAM5_ST1_WhiteNoise_ISO_{X,Y,Z}_0p05to40Hz_calibration.xml, svn revision r12476.
As per WP 12691 we moved the CDS/GC connection off of a temporary switch. This is a follow up to WP 12580 which had left us on a temporary switch. The new switch is a larger switch and all the phones can be plugged in now.
TITLE: 07/22 Day Shift: 1430-2330 UTC (0730-1630 PST), all times posted in UTC
STATE of H1: Lock Acquisition
OUTGOING OPERATOR: Ryan S
CURRENT ENVIRONMENT:
SEI_ENV state: CALM
Wind: 5mph Gusts, 2mph 3min avg
Primary useism: 0.02 μm/s
Secondary useism: 0.05 μm/s
QUICK SUMMARY: Locked for 9 hours, magnetic injections currently running. Long list of planned maintenance today, see the Trello for more details.
Workstations were updated and rebooted. This was an OS packages update. Conda packages were not updated.
TITLE: 07/22 Eve Shift: 2330-0500 UTC (1630-2200 PST), all times posted in UTC
STATE of H1: Lock Acquisition
INCOMING OPERATOR: Ryan S
SHIFT SUMMARY:
Every thing was locked and humming along until the sudden lockloss from the 6.5M Earthquake off coast of Russia.
Held in Down for ~2.5 hours while the Earth rang down.
Ran an Initial Alignment and H1 is currently at CARM_OffSET reduction.
Wind is vey low, ground motion has dropped should be a good night of locked IFO.
LOG:
No Log
@ 02:08:55 UTC Known Lockloss caused by a 6.5M Earthquake. I'm using the GEOFON site because USGS took ~ 10 min to report the quake.
Earthquake mode was activated, then less than 30 seconds later we were unlocked.
No earthquake was listed as incoming, Picket fence was lit up and had active ground motion.
Once the new satamps were installed, I ran the script satampswap_bestpossible_filterupdate_ECR_E2400330.py to update the compensation filters for these suspensions. These 'best possible' compensation gains come from the tests Jeff did on each satamp before installation, which are found in /ligo/svncommon/SusSVN/sus/trunk/electronicstesting/lho_electronics_testing/satamp/ECR_E2400330/Results/.
My input and the corresponding output is below:
oli.patane@cdsws27:/ligo/svncommon/SusSVN/sus/trunk/Common/PythonTools$ py satampswap_bestpossible_filterupdate_ECR_E2400330.py -o TMSY ETMY_M0_R0
All updated filters grabbed for TMSY
TMSY M1 F1 compensation filter updated to zpk([5.3],[0.0969],1,"n")
TMSY M1 F2 compensation filter updated to zpk([5.28],[0.0964],1,"n")
TMSY M1 F3 compensation filter updated to zpk([5.2],[0.095],1,"n")
TMSY M1 LF compensation filter updated to zpk([5.26],[0.096],1,"n")
TMSY M1 RT compensation filter updated to zpk([5.17],[0.0945],1,"n")
TMSY M1 SD compensation filter updated to zpk([5.26],[0.0961],1,"n")
write /opt/rtcds/userapps/release/sus/h1/filterfiles/H1SUSTMSY.txt
Done writing updated filters for TMSY
All updated filters grabbed for ETMY
ETMY R0 F1 compensation filter updated to zpk([5.2],[0.0951],1,"n")
ETMY R0 F2 compensation filter updated to zpk([5.2],[0.0951],1,"n")
ETMY R0 F3 compensation filter updated to zpk([5.25],[0.0959],1,"n")
ETMY R0 SD compensation filter updated to zpk([5.35],[0.098],1,"n")
ETMY M0 F1 compensation filter updated to zpk([5.31],[0.0971],1,"n")
ETMY M0 F2 compensation filter updated to zpk([5.27],[0.0965],1,"n")
ETMY M0 F3 compensation filter updated to zpk([5.22],[0.0955],1,"n")
ETMY M0 SD compensation filter updated to zpk([5.17],[0.0946],1,"n")
ETMY M0 LF compensation filter updated to zpk([5.2],[0.0951],1,"n")
ETMY M0 RT compensation filter updated to zpk([5.28],[0.0965],1,"n")
ETMY R0 LF compensation filter updated to zpk([5.29],[0.0967],1,"n")
ETMY R0 RT compensation filter updated to zpk([5.26],[0.0962],1,"n")
write /opt/rtcds/userapps/release/sus/h1/filterfiles/H1SUSETMY.txt
Done writing updated filters for ETMY
All done! Remember to double check and load in the filters for ['TMSY', 'ETMY_M0_R0']
oli.patane@cdsws27:/ligo/svncommon/SusSVN/sus/trunk/Common/PythonTools$ py satampswap_bestpossible_filterupdate_ECR_E2400330.py -o MC1 MC3
All updated filters grabbed for MC1
MC1 M1 RT compensation filter updated to zpk([5.13],[0.0937],1,"n")
MC1 M1 SD compensation filter updated to zpk([5.25],[0.096],1,"n")
MC1 M1 T1 compensation filter updated to zpk([5.26],[0.0962],1,"n")
MC1 M1 T2 compensation filter updated to zpk([5.18],[0.0947],1,"n")
MC1 M1 T3 compensation filter updated to zpk([5.32],[0.0972],1,"n")
MC1 M1 LF compensation filter updated to zpk([5.12],[0.0938],1,"n")
write /opt/rtcds/userapps/release/sus/h1/filterfiles/H1SUSMC1.txt
Done writing updated filters for MC1
All updated filters grabbed for MC3
MC3 M1 T3 compensation filter updated to zpk([5.32],[0.0972],1,"n")
MC3 M1 LF compensation filter updated to zpk([5.19],[0.0949],1,"n")
MC3 M1 RT compensation filter updated to zpk([5.35],[0.0979],1,"n")
MC3 M1 SD compensation filter updated to zpk([5.19],[0.0949],1,"n")
MC3 M1 T1 compensation filter updated to zpk([5.31],[0.097],1,"n")
MC3 M1 T2 compensation filter updated to zpk([5.24],[0.0958],1,"n")
write /opt/rtcds/userapps/release/sus/h1/filterfiles/H1SUSMC3.txt
Done writing updated filters for MC3
All done! Remember to double check and load in the filters for ['MC1', 'MC3']
After this I loaded in these new filters.