I've made v1 of of a blend for the SR3 Pitch Estimator. It is in the SUS SVN as described below
Design
This time I designed the OSEM path and set the MODEL path to be 1-OSEM_path.
This design is very simple to implement, hopefully it will work well and we can use this approach for other suspensions.
I designed a basic low-pass for the OSEM so that the DC position is maintained (same as yaw). This is probably not necessary because the damping filters are AC coupled, however it was useful to be able to compare the time traces when we were doing the development here, so I've included it for in the new one also. It may also be useful in case we try to do something more interesting than just AC coupled damping. The low-pass is a zero-pole pair so that it levels off to a transmission of 0.1. This is so the gap between the two resonant peaks will be well behaved. Those will cross at about 180 degrees of phase shift and make a sharp zero, and deep zeros seemed to be causing numerical issues when Oli was implementing the yaw blends. The flat bottom at 0.1 prevents that.
The next thing is to include OSEM signal at the pitch peaks. This is to help deal with errors in the models and with unmodeled inputs. At this point, the models Ivey has done for Oli's data look remarkably clean and tight, so the unmodeled inputs are my main concern. The various TFs of SR3 show that there are really just 2 modes which are mostly Pitch and those are the ones I've targeted. These blends are all based on the fits by Ivey (LHO log: 86430) and the data from Oli (LHO log 86203)
Figure 1: pitch blend filters
Figure 2: zoom in on pitch blend filters, the dashed lines are peaks of the 2 modes we are letting the OSEMs damp directly
Figure 3: OSEM path vs. the M1 plant, showing the overlap of the narrow peaks in the OSEM path with the lightly damped pitch plant modes
Figure 4: MODEL path vs. the M1 plant, showing the overlap of the very narrow notches in the MODEL path with the lightly damped pitch plant modes
Figure 5: Fit for the OSEM pitch Response of M1 to OSEM drive of pitch. The length damping is nominal (gain of 0.5) and the Pitch damping is set to 'light damping', ie 0.2 of nominal (0.1 overall)
figure 5 shows there are 4 modes visible in the M1 pitch -> pitch TFs. The first 2 are pretty well damped by the length damping control, so I'm going to let the estimator get those. I'm hoping that any unmodeled inputs will be damped by the length control, and any plant errors are small because of the length damping.
I've attached a pdf with a few other plots for reference.
Design script: blend_SR3_pitchv1.m
in the SUS_svn at .../HLTS/Common/FilterDesign/Estimator/ (revision 12601)
make_SR3_Pitch_blend.m: run this script to install the filters into the foton file for SR3.
This is a modification of the script make_SR3_yaw_blend.m
some other notes:
modes of the L/P plant for SR3, there are 2 combined modes, 2 mostly Pitch, and 2 mostly Length
L damping at nominal (0.5 overall)
P damping at 'light' (0.1 overall)
(Aug 5, 2025, Oli Pantane)
for the M1 L drive to M1 L OSEM, 4 peaks are visible
black looks like the nominal damped
peak #
1: 0.617
2: 0.734
3: 1.585
4: 2.977
in the M1 Pitch drive to M1 pitch OSEM, (L damping nominal, P 'light damping')
(to the fit)
1: 0.649 (data peak closer to 0.641)
2: 0.749 (data closer to 0.75)
3: 2.09
3: 3.44
The poles and zeros for the blend filters. Some of the Q's are pretty high, but our conversion to foton seems to be fine.
>> blend_SR3_pitchv1;
The OSEM filter is
poles:
ans =
-0.3142 + 0.0000i
-0.4377 +13.1246i
-0.4377 -13.1246i
-0.3602 +21.6112i
-0.3602 -21.6112i
zeros:
ans =
-2.0779 +20.2143i
-2.0779 -20.2143i
-3.6907 + 0.0000i
-4.0312 +12.2400i
-4.0312 -12.2400i
The MODEL filter is
poles:
ans =
-0.3142 + 0.0000i
-0.4377 +13.1246i
-0.4377 -13.1246i
-0.3602 +21.6112i
-0.3602 -21.6112i
zeros:
ans =
0.0000 + 0.0000i
-0.0803 +21.5959i
-0.0803 -21.5959i
-0.0970 +13.1319i
-0.0970 -13.1319i
I added the BS M1 Pit integrator turning on to the gen_PREP_MICH_ALIGN state of ALIGN_IFO, so that it gets turned on for both initial alignment as well as if we use CHECK_MICH_FRINGES during the full lock acquisition sequence. Hopefully during init align right now after maintenance we'll see that it's working well.
TJ and I confirmed that the integrator does now engage during MICH initial alignment! We ran the state twice to be sure.
Leo, Jennie, Camilla
Followed setup instructions from 80010, with 75mW injected in the SEED beam, we had 1mW on OPO_IR_PD_DC slightly lower than last time. Also took SQZ_FC to FC_MISALIGNED. And opened SQZ beam divertor and fast shutter. Have counts of ~60 on ASC-AS_A and B and 7e-4 on ASC-OMC-A and B NSUMs. Jennie took the OMC PZT down to zero to start and then ran a template userapps/../omc/h1/templates/OMC_scan_sqz_beam.xml.
Repeated mode scans with different ZM PSAMs offsets, the DC centering loops could account for the pitch change for PSAMs, for the extreme PSAMS values, I increased the servo limiter from 85 to 95.
Jennie and Leo have the data to analyze.
See the ndscope with the channels we used to monitor attached.
This template is saved in /ligo/home/jennifer.wright/Documents/OMC_scan/20250819_SQZ_beam_scan_with_ZM_changes.yaml
Following up on these OMC scans: attached is the table with all computed mode-mismatch values.
Leo, Jennie W., Camilla
Below is a plot of the OMC scans fitted with a surface polynomial.
The plot is from the presentation in T2500228, so the labels on axes will be different.
This can be plotted on Matlab simply using the following code block (requires Curve Fitting Toolbox to use fit()).
OMCX = [5.5, 4, 2.3, 3, 8.1, 2.3, 2.3, 6, 9.5, 6, 6, 9, 3, 8, 4, 9.5, 9.5];
OMCY = [-0.8, 0.34, 0.2, 0.85, -0.4, -0.1, 0.2, -0.4, -0.6, -4.5, -5.3, 2, 2, -2, -2, -5, -0.6];
OMCdata = [1-4.048/100, 1-3.412/100, 1-3.074/100, 1-3.234/100, 1-5.073/100, ...
1-3.176/100, 1-2.884/100, 1-2.174/100, 1-3.343/100, 1-9.490/100, 1-11.865/100, 1-6.282/100, 1-2.313/100, ...
1-3.013/100, 1-3.021/100, 1-9.179/100, 1-3.243/100];
omc = fit([transpose(OMCX), transpose(OMCY)], transpose(OMCdata), 'poly22');
p = plot(omc);
Like we did with SR3 (86070), I've updated the OSEM calibration for PR3. The updated OSEMINF values, along with the compensation gains that get put into the DAMP filter bank were calculated and put in (86222). Today I updated the PR3 OSEMINF gains and put the compensation gains into FM7 in the DAMP filter bank and turned them on. I've accepted these in the safe sdf.
The update to the OSEMINF calibration means that it will look like there is a change in alignment for PR3, but this is not real. Here is what the alignment change looks like: ndscope. These changes were made at 2025-08-19 16:27:57 UTC
OSEMINF changes
| OSEM | Old OSEMINF gain | New OSEMINF gain |
| T1 | 1.161 | 2.055 |
| T2 | 0.998 | 1.544 |
| T3 | 1.047 | 1.511 |
| LF | 1.171 | 1.862 |
| RT | 1.163 | 2.063 |
| SD | 1.062 | 1.639 |
The compensation gains put in in the DAMP filter bank are in FM7, and they are the following:
L: 0.596
T: 0.648
V: 0.617
R: 0.617
P: 0.670
Y: 0.596
Tue Aug 19 10:07:37 2025 INFO: Fill completed in 7min 33secs
Gerardo confirmed a good fill curbside. He also knocked some ice from the end of the discharge line.
I moved DM10 to the working platform on the +X+Y corner of BSC2 so we can get some dust readings up at that level in preparation for dome removal post O4. I was hoping to get it further away from the edge of the clean room, but the RS232 cable was stretched to its max. I velcrostripped and zip tied the unit as well as the cabled to keep things from falling off and to relieve stress. I also verified that the unit was still getting 2.8L/min since I had to disconnect and reconnect the vacuum hose. It looks to be running well and we can connect to it in epics.
Ops: Please note if this monitor starts to alarm.
WP12755 TW1 offload.
TJ, Erik, Dave:
Following the file copy to permanant storage last week, this morning at 08:15 (inbetween PEM mag injection and PCAL work) I restarted nds1 with its new daqdrc file. It is now no longer using the files on TW1 which frees them for deletion.
TJ tested the script which restarts the FOM ndscope processes, as previously reported we found that the nuc25 and nuc26 restarts did not work. Doing the restarts manually on the operator machines does work, running the full script on opslogin0 also works, investigation continues.
An attempt was made to swap the split whitening chassis that is currently used for the ASC-AS_C QPD (serial S1101627 in slot U26) with a standard whitening chassis. The current chassis is a split whitening chassis that needs to be modified back to a standard whitening chassis in support of BHD/JAC. While swapping the chassis, I noticed that cable ISC_445 was connected to old OMC PD inputs. I seem to have forgotten that one of these channels is now used for the OMC-REFL PD. The new whitening chassis cannot accommodate this without a new custom cable, so the changes were reverted. However, the new standard whitening chassis, serial S2101199, is now mounted in slot U26, whereas the split whitening has moved to slot U29.
TITLE: 08/19 Day Shift: 1430-2330 UTC (0730-1630 PST), all times posted in UTC
STATE of H1: Commissioning
OUTGOING OPERATOR: Ryan S
CURRENT ENVIRONMENT:
SEI_ENV state: CALM
Wind: 2mph Gusts, 1mph 3min avg
Primary useism: 0.01 μm/s
Secondary useism: 0.08 μm/s
QUICK SUMMARY: Locked for 3 hours. Magnetic injections are running to start our maintenance for the day.
Fire pumps are running for hydrant testing, bypassing cell phone alarms for this morning.
Bypass will expire:
Tue Aug 19 02:38:40 PM PDT 2025
For channel(s):
H0:FMC-CS_FIRE_PUMP_1
H0:FMC-CS_FIRE_PUMP_2
H0:VAC-MY_Y1_PT243B_PRESS_TORR
The Norco truck came onsite early today while we are still Observing and dropped our range by up to 20 Mpc as it went around the corner station. The truck arrived onsite at 13:58 UTC, and then passed through the gate and proceeded around the corner station at 14:01 UTC (ndscope).
Workstations were updated. This was an OS packages update. No conda packages were updated.
H1 had lost lock at 06:54 UTC (after 56:57 locked!) from an ETMX glitch. It later called for assistance at 09:53 UTC because it was unable to lock DRMI quick enough after having run an initial alignment. On the next attempt, PRMI was able to lock almost immediately, and I touched up PRM pitch alignment to make buildups look as good as possible while MICH ASC was running and before PRMI ASC offloaded. That seemed to be all it needed as DRMI locked very quickly after that.
I needed to fix a typo in LOWNOISE_ASC related to new SRC ASC offsets (alog86422) that caused a channel connection error when we got there, and accept these offsets in SDF (screenshot).
H1 returned to observing at 11:33 UTC.
This typo must have been some copy-paste error I made. Looking at the code now, it does not turn the offsets on, so I must have made a mistake in the ezca.switch command that Ryan undid (sorry!). The SDF diff was accepting that the offsets were OFF instead of ON (see this alog where I had accepted them ON). I want to clarify that the SRC1 offsets were OFF for this subsequent lock. I will make sure the error is fixed during maintenance today.
Fixed. We will have an SDF diff again when we relock to properly engage the offset.
TITLE: 08/18 Eve Shift: 2330-0500 UTC (1630-2200 PST), all times posted in UTC
STATE of H1: Observing at 22Mpc
INCOMING OPERATOR: Ryan S
SHIFT SUMMARY:
Notable news H1 has now been locked 55+hrs.
For those keeping track:
LOG:
H1 just hit 50hrs with the current lock!! (at about the same time a M5.6 Tonga earthquake passed by to add some drama! See the cyan colored trace in the attached photo.) :)
TITLE: 08/18 Eve Shift: 2330-0500 UTC (1630-2200 PST), all times posted in UTC
STATE of H1: Observing at 152Mpc
OUTGOING OPERATOR: Ryan C
CURRENT ENVIRONMENT:
SEI_ENV state: SEISMON_ALERT
Wind: 10mph Gusts, 5mph 3min avg
Primary useism: 0.04 μm/s
Secondary useism: 0.09 μm/s
QUICK SUMMARY:
H1 is minutes away from a 50hr lock (just as a M5.6 EQ is rolling in....we look like we are fine). Other than that, environmentally continues to get better with microseism coming down and winds also being low.
This morning a 6.2 magnitude earthquake near Vanuatu happened during the commissioning window, so we tested the asc gain reversion scripts Elenna came up with in this alog. It took a little longer than I would have liked to get the scripts working, so we didn't actually transition until basically the peak ground velocities, but the transition went pretty smoothly. I think this eq is tied for the biggest we stayed locked through for all of O4.
Attached image shows ground velocities on the top row (both peakmon and the ITMY Z STS 30-100mhz blrms, second row is the ISC_LOCK state, third and fourth show channels related to the asc transition. Fourth row is the first gain changed by the script CHARD Y, the third row is the SRCL FF gain, which is the last thing changed in the script. The dashed white vertical lines on the CHARD trace and the top row ground traces show the time the transition took to complete.
Even if the transition was a little late I think that this test likely still saved the lock, I have often seen on eqs like this that the IFO stays locked through the peak ground motion, but loses lock some time shortly after, while the eq is still ringing down.
There is still a lot of work to be done as the transition is currently handled by a couple of scripts on the ISI_CONFIG overview medm and the transition will knock us out of Observe, still unclear what the best way to automate this would be, but still a pretty good test.
It's been remarkable and wonderful to see how well we've been surviving earthquakes lately!
This is such a big win, that I suggest we not worry too much about if this pops us out of Observing. If we're able to automate saving the lock, and then going back to Observe when the ground motion is compatible with our usual loops, that's already a huge leap forward on improving our duty cycle.
I have updated ISC LOCK guardian and LSCPARAMS to have the gains for the lownoise ASC and length feedforwards as parameters in LSCPARAMS. Then, TJ helped me figure out how to import LSCPARAMS into these two scripts so it draws those gains from the parameters instead of having them hardcoded. This way, if we decide to update a feedforward or ASC gain, it will also be updated for the earthquake script.
This script also changes ASC filters, but an update to have those filters as parameters in LSCPARAMS is a much more involved change to ISC_LOCK, so I have to think about that one a bit. That means if we change ASC filters, we have to remember to update this script, for now.