Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Steering is intended to calculate values for corrector magnets whose effect will be to a set of corrector magnets setting (BDES) values which, if implemented (trimmed), would reduce the RMS of the beam orbit as read by BPMs. The problem is steering only reads the existing BDES settings (BDES) of the correctors when it 's initializedbegins a calculation. From that point on, it thinks that the extant settings (BDESes) of the correctors are the values which it last calculateddon't change, even though the calculation may take a number of minutes. That means if steering takes a long time to calculate new settings, the real extant BDESes of the correctors in the db may have changed due to external influences, such as someone implementing a "bump", before steering has the chance to implement the values implied by the calculation it made. If the bump is "closed" (if its effect is local in the beamline), then it should be ok for steering to implement its correction even though the bump is in effect.

However, since steering has only recorded the extant corrector BDESes before it started its calculation, and the bump changed those values, and steering then implements its calculated change to the corrector settings assuming that
change is the change to the BDESes it recorded BDESes, the effect is to undo the BUMP.

By the way, steering does reacquire the extant BDESes at the beginning of each steering iterationsiteration, so it isn't true that over a long period of steering, such a as in GOF, that the real values drift from those steering has recorded. The problem is confined to the time it takes steering to make one orbit correction calculation.

Objective

make Make steering set the values of corrector magnets as changes from their extant values at the time of the implementation of the orbit correction solution
(when the user actually hits TRIM or in the case of AUTO steering immediately after the calculation has been completed; GOF uses AUTO steering), rather that as changes from values acquired from the database when steering was initialized.

...

So, one way to implement this fix is for str_cor_db_out to call str_cor_db_in (with the INIT param set false) immediately before using the BDES values to make the sum above.

Care however must be taken not to set the BDESes to values which exceed BMAX. This condition is nominally checked in each steering method's function (like STR_RMS and STR_SVD), but now, since it may have changed, it has to be checked again.