I wrote a python script for A2L measurement.
Currently it is really primitive, but I tested the basic functionality of the script.
We already have A2L script(at /cvs/cds/rtcds/caltech/c1/scripts/A2L) that uses ezlockin, but python is more stable and easy to read.
A2L measurement method:
1. Dither a optic using software oscillator in LOCKIN and demodulate the length signal by that frequency.
2. Change coil output gains to change the pivot of the dithering and do step 1.
3. Coil output gain set that gives the smallest demodulated magnitude tells you where the current beam spot is.
Say you are dithering the optic in PIT and changing the coil gains keeping UL=UR and LL=LL.
If the coil gain set UL=UR=1.01, LL=LR=-0.99 gives you demodulated magnitude 0, that means the current beam spot is 1% upper than the center, compared to 1/2 of UL-LL length.
You do the same thing for YAW to find horizontal position of the beam.
Description of the script:
Currently, the script lives at /cvs/cds/caltech/users/yuta/scripts/A2L.py
If you run;
./A2L.py MC1 PIT
it gives you vertical position of the beam at MC1.
It changes the TO_COIL matrix gain by "DELTAGAINS", turns on the oscillator, and get X_SIN, X_COS from C1IOO_LOCKIN.
Plots DELTAGAINS vs X_SIN/X_COS and fit them by y=a+bx+cx^2.(Ideally, c=0)
Rotates (X_SIN, X_COS) vectors to get I-phase and Q-phase.
Rotation angle is given by;
which gives Q 0 slope(Ideally, Q=0).
x-intercept of DELTAGAINS vs I plot gives the beam position.
Checking the script:
1. I used the same setup when I checked LOCKIN(see elog #3857). C1:SUS-MC2_ULCOIL output goes directly to C1:IOO-LOCKIN_SIG input.
2. Set oscillator frequency to 18.13Hz, put 18.13Hz band-pass filter to C1:IOO-LOCKIN_SIG filter module, and put 1Hz low-pass filter to C1:IOO-LOCKIN_X_SIN/X_COS filter modules.
Drive frequency 18.13Hz is same as the previous script(/cvs/cds/rtcds/caltech/c1/scripts/A2L/A2L_MC2).
3. Ran the script. Checked that Q~0 and rot=-35deg.
4. Put phase shifting filter to C1:IOO-LOCKIN_SIG filter module and checked Q~0 and rotation angle.
5. Put some noise in C1:SUS-MC2_ULCOIL by adding SUSPOS feedback signal and ran the script.(Attachment #1)
During the measurement, the damping servo was off, so SUSPOS feedback signal can be treated as noise.
The result from the test measurement seems reasonable.
I think I can apply it to the real measurement, if MCL signal is not so noisy.[status: yellow]
- add calculating coherence procedure, averaging procedure to the script
- add setting checking procedure to the script
- apply it to real A2L measurement
Bay the way:
Computers in the control room is being so slow (rossa, allegra, op440m, rosalba). I don't know why.
./A2L.py MC1 PIT