Reports until 12:53, Tuesday 07 October 2025
H1 ISC (GRD)
elenna.capote@LIGO.ORG - posted 12:53, Tuesday 07 October 2025 - last comment - 14:52, Tuesday 07 October 2025(87346)
Major Guardian Code Edit- ISC_LOCK ASC Filters now in lscparams dictionary

With help from TJ, I migrated a majority of the ASC filters controlled by ISC_LOCK into an lscparams dictionary called asc_filters, and edited the filter engagement/disengagement commands in the guardian to call from this dictionary. Along the way, I also edited the lscparams asc_gains dictionary, and removed commented out code that seemed unnecessary or out of date.

New practice: each dictionary entry in asc_filters includes ALL filter bank settings that should be ON at a given time, so all filters to be engaged as well as OUTPUT, DECIMATION (INPUT as well, if it is supposed to be on). When filter changes are made, we can use the command ezca.get_LIGOFilter([DOF]).only_on(*lscparams.asc_filters[DOF][P/Y][NAME]). The names of the filter settings are named after the guardian state in which they are engaged, with some small edits if one guardian state has multiple filter engagement steps.

Example:

In PREP_ASC_FOR_FULL_IFO, CSOFT P filters are set up, but the input is left off until engagement in ENGAGE_SOFT_LOOPS. Then, after the loop is engaged and converged, FM1 is disengaged. Finally, in POWER_25W, FM3 is engaged as a boost.

The dictionary is set up as:

'CSOFT':{'P':{'PREP_ASC_FOR_FULL_IFO': ['FM1', 'FM6', 'FM7', 'OUTPUT', 'DECIMATION'],
'ENGAGE_SOFT_LOOPS': ['FM1', 'FM6', 'FM7', 'INPUT', 'OUTPUT', 'DECIMATION'],
'ENGAGE_SOFT_LOOPS_final': ['FM6', 'FM7', 'INPUT', 'OUTPUT', 'DECIMATION'],
'POWER_25W': ['FM3', 'FM6', 'FM7', 'INPUT', 'OUTPUT', 'DECIMATION'],
},

In PREP_ASC:

ezca.get_LIGOFilter('ASC-CSOFT_P').only_on(*lscparams.asc_filters['CSOFT']['P']['PREP_ASC_FOR_FULL_IFO'])
 
In ENGAGE_SOFT_LOOPS:
 
ezca.get_LIGOFilter('ASC-CSOFT_P').only_on(*lscparams.asc_filters['CSOFT']['P']['ENGAGE_SOFT_LOOPS']) # turn on input
then
ezca.get_LIGOFilter('ASC-CSOFT_P').only_on(*lscparams.asc_filters['CSOFT']['P']['ENGAGE_SOFT_LOOPS_final']) # turn off FM1
 
In POWER_25W:
 
ezca.get_LIGOFilter('ASC-CSOFT_P').only_on(*lscparams.asc_filters['CSOFT']['P']['POWER_25W']) # engage resG
 
Note that the * allows the guardian to unpack the list of filters.
The overall purpose of this change is that we want other guardians to be able to change the ASC filter and gain setting. Specifically, at this time we are setting up the seismic guardian to call a "high bandwidth ASC" state which puts certain ASC loops in a higher gain state for certain earthquakes. Then, after the earthquake has passed, the seismic guardian will put the ASC back into low bandwidth.

Therefore, when we make adjustments to ASC filters or gains, we will need to edit the dictionaries in lscparams. This will ensure that any changes also get picked up by the seismic guardian.

These are things that are not yet controlled by this dictionary:

TJ is currently editing the seismic guardian to create the ASC higain state and then a state that takes ASC back to its lownoise state. Now, we can pull the gain and filters settings from these dictionaries!

Comments related to this report
elenna.capote@LIGO.ORG - 13:37, Tuesday 07 October 2025 (87349)

Two errors:

I made a typo that called "SRC2" instead of "SRC1", luckily this just caused a guardian error and not a lockloss. Fixed.

I missed a DHARD P filter engagement in RESONANCE, which meant that the guardian disengaged this filter later on. This surprisingly did not cause an error until LOWNOISE_ASC, when the final loop shaping engaged and caused a lockloss. Fixed.

elenna.capote@LIGO.ORG - 14:52, Tuesday 07 October 2025 (87354)

Success after second locking attempt. I checked in the changes to lscparams and ISC_LOCK into the SVN.