We have made another round of modifications to the ISS second loop board to have a bit of more gain at 1kHz.
Boost 1 zero was increased by a factor of 2, BOOST 2 was added, and a bit of phase compensation for high frequency to allow us to push the UGF to 20kHz-ish (details of the mod will be attached to this entry).
In the attached, black is the measurement from yesterday at 50W, 7dB of VGA gain, boost on.
Blue is today with 13dB of VGA gain, first boost on.
Red is today with 13dB of VGA gain, second boost on.
All in all, the modifications bought us about 13dB at 1kHz.
If we really need more, we should be able to push the UGF even higher, but that needs some serious thinking.
Here is a measurement of the open loop transfer function with SR785 at the floor. The UGF was at 18 kHz and the phase margin was roughly 50 deg.
The data, plotting script and figure are attached as a zipped file.
Boost 2 and boost 3 have been rewired in series to yield a double integrator. Each of them has a 50Hz pole and unity gain at 2kHz. The model has been changed to enable stages 2 and 3 simultaneously with the boost 2 switch. This boost does not work without boost 1. It would generate a notch near 2kHz but together with boost 1 the two zeroes become complex. Therefore engaging boost 2 will enforce boost 1.
At 1kHz the higher bandwidth increases the gain by 2. The higher frequency knee in boost 1 adds another factor of 2. The second boost adds 1-2dB at 1kHz and and additional 20dB at 100Hz.
A new filter modules has been added after the integrator of the AC coupling, called DRIVE. This allows the an easy hold of this output, when the AC coupling is off.
After giving BRSX a day to cool off, I went to EX this morning to see if I could recover it. This required stopping the Beckhoff and recentering the damper assembly, the latter is not trivial. There are a few variables that need to be cleared in the Beckhoff, and they are kind of buried. But, the EX BRS is functional again, commissioners/operators can return the SEI_CONF to the WINDY state.
While I was there, I used a left over iLIGO hockey puck to damp the BRS down enough to re-engage the damping. I couldn't find Krishna's diagnostic plot, but the driftmon overview gives enough information, when the BRS is rung up enough to see on the driftmon (this plot is usually flat, it only goes sinusoidal if the BRS is rung up a lot). For future reference, you can do this by holding a mass above or below the beam, depending on the direction of the driftmon. Watch the driftmon signal and when it starts swinging in a positive direction (when it's at it's largest negative value of the sine wave) hold the mass above the right (-X) part of the horizontal part of the BRS vacuum can. Hold the mass below the can when the driftmon starts moving the other direction.
In order to combat the weirdness with the diode chiller temperature not reaching its desired set point of 20 degC, I raised the set point to 21 degC. This seems to have brought the chiller temperature to ~19 degC. Trending the diode chiller temperature, one can see that there's an oscillation in the actual temperature. It might be to fool the system we ought to change the temperature set point to 22 degC. From the trend data one can easily see the temperature oscillations that are apparent when one looks at the chiller control panel.
Filed FRS #6292.
Nutsinee, Kiwamu,
This is a belated log.
In this past Tuesday, we went to the HWS table and checked two things in order to study unexplained behavior seen by HWSY (29738). No major conclusion yet.
By the way, we (re-)found that a green beam coming down to the same HWSY path was clipped at its bottom part.
During the activity, we stopped the HWSY camera code and left it off. At around 5:00 UTC (or 22:00 local), we started the code again. Because we had removed and re-attached the harmant plate, we started the code with a new template this time.
Computed coherences for a 10 minutes period starting at 05:00 UTC, September 22nd.
https://ldas-jobs.ligo.caltech.edu/~gabriele.vajente/bruco_1158555617/
In the low frequency, there's coherence with MICH/SRCL (fig. 1), angular signals (fig. 2) and ITMY L2 control (fig. 3, not sure what is the control topology, maybe this is ok)
One very interesting thing: there is a significant broadband coherence with IMC_DOF_4_P (fig. 4) and with IMC-PWR_IN (fig. 5)
Lines at 57 Hz and 114 Hz are coherent with magnetometers.
We did a TCS tuning test at 50W starting at 6:56 UTC. The CO2X power was decreased from the nominal 400 mW to 0. During the test, we have monitored the frequency and intensity noise couplings to DARM by injecting broadband noise. I will analyze and post the results tomorrow, but it seems like that a small CO2X value is better fore laser noise couplings.
During the test, we tried to compensate for varing optical gain by changing the CAL-CS sensing gain setting. There was a period where we had a 80 Mpc range which was due to uncompensated change in the optical gain induced by the thermal transient. However, we believe that the range will be better with the fine tuned CO2s. Unfortunately, the laser tripped shortely after the test. We did not get a chance to examine the improvement.
Looks like the diode chiller tripped this time. Not sure why. The Epics alarm was triggered. More later. For reasons unknown at the moment, the diode chiller suffered a temperature transient at around 1:20 am local time. Most likely the transient triggered a chiller error because it exceeded the maximum temperature limit of the chiller. Chiller room temperature plot is also attached. Around 6 am (local) Tuesday morning, the diode chiller temperature took a dive to 18.5 degC on average with excursions as low as 17.9 degC. The diode chiller low temperature limit is set to 18 degC. So this would explain why the chiller tripped.
We moved the IMC offsets, injecting lines in PIT and YAW on the IMC PZT around 400 Hz, and saw the improvement in the red trace on the second attachment.
Tonight we did a few more measurements to try to understand the jitter coupling:
Jenne, Sheila, Kiwamu, Terra, Lisa We had another long lock at 50W tonight (7 hours so far), and we did several things (list below). MICH feed forward retuning and IMC WFS offset adjustment had a clear impact on the noise; the IMC WFS offset tuning reduced several peaks in the noise between 500 Hz and 1kHz, and kept the noise above 4 kHz at the minimum. The noise floor is still significantly higher than it should be in the 500Hz-1kHz region, so there is clearly more to do there. Also, unclear at this point how stable these offsets actually are. Here is the full list of things we did/tried:
Title: 09/21/2016, Evening Shift 23:00 – 07:00 (16:00 - 00:00) All times in UTC (PT) State of H1: IFO is locked. Environmental conditions are good. Wind and microseism are low. The seismic band being somewhat elevated in X & Y is subsiding. Commissioning: On going commissioning Outgoing Operator: Ed Activity Log: All Times in UTC (PT) 23:00 (16:00) Start of shift Title: 09/21/2006, Evening Shift 23:00 – 07:00 (16:00 – 00:00) All times in UTC (PT) Support: Jenne, Sheila, Lisa, Kiwamu Incoming Operator: N/A Shift Detail Summary: Good Shift. Had one lockloss at beginning of the shift. IFO locked for ~7 hours, most at 50W NOMINAL_LOW_NOISE. Commissioning work continues apace.
Kiwamu, Darkhan,
Summary
EPICS records used for calculation of the DARM time-dependent parameters have been updated with the values calculated using the most recent DARM model configuration parameters for ER10.
All κ's except for κPU calculated in the CAL-CS model are within reasonable ranges (see attachment 1):
κTST ≈ 0.75
κPU ≈ -0.25
κc ≈ 1.2
fc ≈ 345 Hz
We will investigate why κPU calculations are incorrect.
Details
The H1 DARM model parameters used for generation of the EPICS values are
Runs/PreER10/Common/params/IFOindepParams.conf
Runs/PreER10/H1/params/H1params.conf
Runs/PreER10/H1/params/H1params_2016-09-19.conf
Output files: raw EPICS values, a verbose log and a Matlab file with EP# variables (T1500377-08, Table 2) were committed to the calibration SVN (rev. 3335):
Runs/PreER10/H1/Scripts/CAL_EPICS
./callineParams_20160919.m
./20160921_H1_CAL_EPICS_VALUES.txt
./D20160921_H1_CAL_EPICS_VALUES.m
./20160921_H1_CAL_EPICS_verbose.log
./writeH1_CAL_EPICS.m
Runs/O2/Common/Scripts/CAL_EPICS/writeO2_TDEP_EPICS.m
The changes were accepted in SDF_OVERVIEW (safe.snap and OBSERVE.snap). For ER9 EPICS see LHO alogs 28180, 29104.
Since we have started putting the ALS and SEI_BS nodes into their nominal states, I have uncommented them from the list of monitored nodes for the main IFO guardian.
Recall (alog 28280) that they were commented out before ER9, and have remained so, so that we could set the Observation Intent bit when the IFO was being left alone, so that the analysis teams could check their pipelines. Now we're back in the state of being ready to monitor those nodes, I've uncommented them.
As we wind down on creating new nodes, perhaps TJ can do an audit of all the nodes that should be monitored, and make sure that they are being watched by the main IFO guardian. There shouldn't be anything left that we want un-monitored, except the SDF. We're still not quite ready for that.
Here is a frequency noise coupling transfer function during tonight's lock.
I calibrated REFL9 into watts using a the factor 2900 V/W (from the diode to the output of the demodulator) and 12 dB, −21 dB, and 2 V/V for the analog and digital signal gains.
If the loop is shot-noise-limited (with 4.6 mW on the diode), this implies a noise of about 40 pW/Hz1/2. This would imply a noise in DARM that is more than a factor of 10 below DARM shot noise.
Daniel and I spent some time looking at the various CARM error and control signals we have on hand.
Here we have referred the fast (ao) control signal back to the error point in watts. The horizontal line is the shot noise for 5 mW.
The slow control signal (LSC-REFL_SERVO_SLOW) would also probably work as a proxy for the error point, once properly referred. The error readback (LSC-REFL_SERVO_ERR) is heavily contaminated by some kind of white noise. Ditto LSC-REFL_A_RF9_I_ERR.
[JeffK, Sheila, Jenne]
The bounce mode has been giving us extra trouble today. In the end, we used a very fine bandwidth spectrum to confirm that it really was ITMY's bounce mode (as the monitor bar graph was telling us). We tried out some different phases, and ended up with some settings that are now working. When I went to put the new settings into the guardian, I found that these exact filters had once been used for ITMY, but had been commented out and changed. I'm not sure how long ago this happened, but it was at least before Sheila made the gain=-1 filters, so that the numerical gain is positive for all test masses, since that filter wasn't included in the commented-out settings.
So. Why did the damping phase change some time ago, and why did it change back? Unknown.
J. Kissel, S. Dwyer First attachment -- a screen cap the currently functional Bounce and Roll mode damping settings that work as Jenne describes above. One potential cause Shiela and I explored: we're using DARM_CTRL as our error signal for the bounce mode damping. We've always assumed that the DARM open loop gain is large enough that the open loop gain of the bounce mode damping loop is unaffected by changes in the DARM filter, D, or the DARM plant, or sensing function, C. Given recent, uncompensated issues with SRC cavity detuning cause optical spring changes in the plant, the DARM open loop gain near 10 [Hz] has been questionably low. We've been struggling with interferometric SRC alignment signal, and therefore leaving SRC angular control essentially off recently. This implies the SRC detuning can be changing from lock-stretch to lock-stretch, which means the DARM optical plant is changing from lock-stretch to lock-stretch. And if the overall DARM open loop gain is low enough, then the phase impacts of this change in optical plant will change the phase necessary to damp the bounce modes. The second attachment compares Kiwamu's DARM OLG TFs taken on 2016-09-16 vs 2016-09-21, and indeed, the open loop gain magnitude is only ~4 to 5 at 10 [Hz], and once can clearly see substantial phase differences between the two measurements. The third attachment shows the loop math to aide the following proof of how the two loops are coupled: C = DARM IFO plant, or sensing function D = DARM filter bank A = ISC L to TST L DARM super-actuator TF V = Bounce mode damping filter alpha = TOP V to TST L actuation function xi = coupling from TST L to DARM Delta L_{res} = Delta L_{V} + Delta L_{ctrl} = Delta L_{V} + A D C Delta L_{res} d_{ctrl} = D C Delta L_{res} --> Delta L_{res} = d_{ctrl} / (D C) d_{ctrl} / (D C) = Delta L_{V} + A D C d_{ctrl} / (D C) d_{ctrl} = D C Delta L_{V} + A D C d_{ctrl} G_{darm} = - A D C (1 + G_{darm}) d_{ctrl} = D C Delta L_{V} d_{ctrl} / Delta L_{V} = D C / (1 + G_{darm}) --> G_{V} = alpha xi beta D C / (1 + G_{darm}) --> IF G_{darm} << 1, then G_{V} ~ alpha xi beta D C and we have dependence on the changes in the optical plant of DARM. --> IF G_{darm} >> 1, then G_{V} ~ alpha xi beta D C / G = alpha xi beta / A and we have the scenario we have always assumed was happening. Now that Jenne's just restored old damping, this is less of a suspicion, but I wanted to write it down so that we keep this sort of loop inter-dependence in mind.
Nothing here looks out of the ordinary.
Attached is the OLTF in two configurations with 7dB VGA gain.
50W (actually 48W), AC coupling OFF, and boost ON (solid line)
50W (actually 48W), AC coupling ON, boost OFF (dashed).
UGF is about 9kHz with phase margin of 40 deg or so (boost ON) or 50 (boost OFF).
Boost buys us about 9dB more gain at 1kHz.
I asked Kiwamu to do an analog measurement up to higher frequency on the floor.
Here is a transfer fucntion with SR785 to check the high frequency portion.
Also, the attached zip contains the data, plot script, and figure.
Taking this data I looked at modifications to the ISS board to increase its bandwidth. The attached plot shows:
Adding the 20kHz zero is a no brainer, since it only requires to limit the dominant pole in the circuit. It improves the phase margin over the measured curve and allows the ugf up to move to 20kHz. This will increase the ISS gain by 2 at 1kHz. The increased ugf and phase margin will in turn allow us to move the knee of the boost higher with the option to add a second boost. The later two solutions will add another gain of 2 at 1kHz.
We engage the ISS boost twice today in low noise, and did not see any impact on the DARM noise. We expected an improvement at 1 kHz at least. Attached are before and after spectra of the in and out of loop diodes (at least that's what I think the new cahnnel names mean). If it is correct that INNER means in loop and outer means out of loop, we are sensor noise limited at 100 Hz with the boost on.
I've stepped all four ring heaters consecutively tonight by 4 W each to identify which test mass belongs to the new 17783 Hz/47.7 kHz PI mode (alogs 29820 and 29838). The shift in frequencies of the test masses is dominated by a change in the Young's modulus which we can alter via the ring heater power; by stepping each ring heater and finding which causes a larger relative frequency shift of the mode in question, we can identify which test mass the mode is from. See T1600080 and LLO alog 18002 for more info. All power changes below were applied to both top and bottom ring heater. All times UTC.
ETMX: 0.75 --> 2.75 @ 9:29 --> 0.75 @ 9:48
ETMY: 0 --> 2 @ 9:49 --> 0 @ 10:08
ITMX: 0.25 --> 2.25 @ 10:08 --> 0.25 @ 10:29
ITMY: 1.25 --> 3.25 @ 10:31 --> 1.25 @ 10:41
Note we just lost lock around 10:42, probably due to these ITM steps.
Ring heater tests indicate that the new 17783 Hz (aliased from 47753 Hz) belongs to ITMY, in agreement with Slawek's prediction.
Below shows the relative frequency shifting of one mode per test mass and mystery 17783 Hz mode ('o') during the ITM ring heater steps. ITMX was stepped up first then stepped down at the same time ITMY was stepped up. As expected, the 15518 Hz mode on ITMY rises slightly with the ITMY ring heater increase. At the same time, we see a drop in 17783 Hz; since 17783 Hz is the aliased-down frequency, we see it decrease as the 47.7 kHz mode shifts upwards.
I've set up damping settings for 17783 Hz on MODE 7. I tried many times to drive it up but got little response; as seen in Slawek's mechanical mode shape simulations, there is poor overlap with ESD actuation. Recently we were unable to damp 18041 Hz (aliased down from 47.5 kHz); ultimately we had to change ring heater power to avoid.
Lisa, Kiwamu,
We think that the calibration has been wrong and therefore it lifted up the noise floor below 300 Hz. We need another set of eyes tomorrow to doublecheck our theory (we are currently too sleepy to do systematic investigation).
In short, we believe that the sign of ETMY L3 stage in CALCS (or somewhere else similar to it) is wrong which is exactly the same situation as what happened in this past July (28396).
Because I knew that our DARM open loop model is accurate and consistent with the recent measurement (29748), I made a calibration filter for DARM_IN1 which converts DARM_IN1 to DARM displacement as opposed to the use of both DARM_IN1 and DARM_OUT. Here is a comparison of the CALCS spectrum against the spectrum derived from DARM_IN1.
As shown in the plot, the CAL CS spectrum overestimates the noise floor below 300 Hz or so. This is exactly the same behavior as what we have experienced in this past July. In addition, we have noticed that the noise floor of CALCS changed as a function of the DARM control gain which should not happen in the calibration scheme used in CAL CS. Also, when we flipped the sign of the EY L3 stage in CAL CS, the leve of the noise floor became identical to the one derived by DARM_IN1 and also became insensitive to the control gain. This increased our confidence that the L3 sign was wrong in CALCS.
We are leaving the L3 stage gain flipped (DRIVEALIGN_GAIN -30 --> +30) for the night. If our theory is correct, we regain the binary range back to ~60 Mpc with this change.
Also, we took a DARM open loop and PCAL sweep measurement within the same lock stretch. We did not analyze them yet, but they are available at:
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Measurements/PCAL/2016-09-21_H1_PCAL2DARMTF_4to1200Hz.xml
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Measurements/DARMOLGTFs/2016-09-21_H1_DARM_OLGTF_4to1200Hz.xml
Also, my code which generated the calibration filter for DARM_IN1, as well as, the generated filter are available at:
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Scripts/ControlRoomCalib/CalibrateH1DARM_IN1.m
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Scripts/ControlRoomCalib/DARM_IN1_calib.txt
I don't know what was decided this morning, but somehow we ended up with the wrong actuator sign in the front-end calibration again. So I reinstated the sign flip in the drivealign calibration filter.
After we fixed the sign flip on the night, the Pcal to CAL-CS transfer function looked indeed correct. See the attatched screenshot below.
The transfer function from Pcal to CAL-CS is almost unity in magnitude and zero in phase which double-confirms that the sign flip was the right action. The dtt template was updated with the latest DELTAL_EXTERNAL whitening filter, known delays.
The dtt file can be found at:
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Measurements/PCAL/2016-09-21_H1_PCAL2DARMTF_4to1200Hz.xml
The matlab script which produced the calibration filter can be found at:
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Scripts/ControlRoomCalib/H1_pcal2darm_correction.m
Finally the calibration filter in ascii formt is available at:
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Scripts/ControlRoomCalib/pcal2darm_calib.txt
By the way, in the script, I needed to add an additional minus sign in order to get the resulting phase close to zero rather than close to 180 deg. I feel like this is one of theose things we had found during O1, but I can't recall what introduced a minus sign. In addition, the calibration filter currently does not include the effect of the supernyquist poles of OMC DCPDs which introduces a phase delay at high frequencies.
The open loop transfer function(s) can be now analyzed by a copy of Evan G's code,
/ligo/svncommon/CalSVN/aligocalibration/trunk/Runs/PreER10/H1/Scripts/DARMOLGTFs/compareDARMOLGTFs.m
The attached are the resulting figures from the code. I have not adjusted kappas or examined each piece of the DARM loop yet, but the model showed a good agreement with the measurement-- no crazy bug so far in the model.
Kiwamu I, Jeff K, Darkhan T,
Overview
Today we looked at the calibration line coherence values calculated in the front end. We discovered that in the front-end model with the currently used averaging parameters the coherence value is updated once every 10 seconds (first 1.5 minutes in Fig. 1).
We propose modifying the averaging code to improve coherence calculation and avoid potential aliasing (see details).
Details
A front-end model that calculates coherence uses N data points taken every Scycles computational cycles to calculate cross-spectral density of the signals. Scycles is controlled by an EPICS record $(IFO):CAL-CS_TDEP_COH_STRIDE
(or simply STRIDE
): Scycles = FE_RATE * STRIDE
. There are drawbacks associated with this approach:
STRIDE
seconds;
We can deal with the first problem listed above by reducing STRIDE
. On Fig. 1 we show coherence values for N = 10 and STRIDE
set to 10, 5, 1, 1/16 and again 1. Notice that this test was done when the IFO was not locked, thus we do not expect a coherence of ~1. When STRIDE
is set to 1/16, we can see that the number of averages must be increased in order to include actual fluctuations in the signals (in the last 2.5 minutes N = 120).
Fig. 1
Several minutes later IFO locked (at t = -5 in Fig. 2) and the coherence became ~0.8. After we set the line amplitude to its nominal value we got coherence of ~1.
Fig. 2
Next, to avoid aliasing we should use all data points (equivalent to setting STRIDE = 1/FE_RATE
in the current code) and increase N accordingly. Thus to integrate over 10 seconds and avoid aliasing the current code will require O(FE_RATE
* 10) = O(160k) operations per cycle and a buffer for 160k values, which is unnecessary expensive.
A following minor modification of the averaging code can solve the issue described above. Instead of adding every Scycles'th data point into the averaging buffer, we could insert an average of Scycles values. E.g. buffer_and_average()
can be modified as follows:
...
static int mini_sum = 0;
...
//Increment cycle count
mini_sum += data;
cycle_counter++;
if (cycle_counter >= cycles_between_data) {
buffer[current_pointer] = mini_sum / ((double) cycles_between_data);
current_pointer++;
cycle_counter = 0;
mini_sum = 0;
}
...
With this modification and N = 160, STRIDE = 1/16 (Scycles = 1024), the coherence will be calculated with 10 second integration and will require O(160) operations per cycle, and the coherence value will be updated every 1/16 of a second.
Jeff K, Kiwamu I, Joe B, Darkhan T,
The modifications suggested above have been implemented at LHO (the modification was implemented during a bug fix, LHO alog 29876). The modifications also include an increased max buffer size:
...
#define MAX_SIZE 256
...
static double mini_sum = 0;
...
//Increment cycle count
mini_sum += data;
cycle_counter++;
if (cycle_counter >= cycles_between_data) {
buffer[current_pointer] = mini_sum / ((double) cycles_between_data);
current_pointer++;
cycle_counter = 0;
mini_sum = 0;
}
...
The changes have been committed to cds_user_apps
repository, r14301.
Following is how coherence was calculated for locked but with high noise floor at lower frequencies (see attached displacement ASD during this measurement), so only PCAL_LINE2 (at 331.9 Hz) has coherence of ~1, and all three of the ~35 Hz lines do not have good coherence:
Fig. 1
The coherences were calculated with H1:CAL-CS_TDEP_COH_STRIDE
set to 1/16 and H1:CAL-CS_TDEP_COH_BUFFER_SIZE
(N in the original alog) set to 80 (at [-4, -2] min time interval) and 160 (at [-2, 1] min time interval). With H1:CAL-CS_TDEP_COH_BUFFER_SIZE
set to 160, each of the coherence calculations include data points from past 10 seconds.
Attached is a plot of the DARM time-dependent parameters calculated in the front-end when the IFO noise floor was reasonably low (at about 23 UTC). Notice that Y-axis for coherence is zoomed to 1 for a better detail.
It seems that the ER9 Matlab DARM model parameters for H1 that was used for calculation of current TDEP EPICS values needs an update. The ESD sign is opposite to the one in the DARM model. Calculation of κPU is hugely biased due to the wrong sign of κTST and it's magnitude being incorrect by an order of magnitude.
During last night's lock stretches the sign of κTST calculated in the front-end was positive (see attachment 2), opposite to the currently calculated value. A possible explanation for this is that L3 stage sign flip commisioning activities are underway (see LHO alog 29860).