BPMs

Device : LHC.OFSU
Property : Logging

You should retrieve the following values (currently updated every 10
seconds):
bpmNames_h
bpmNames_v
positions_h
positions_v
utcTime_s
utcTime_ms


I would make the suggestion that the following structure or something
similar is then sent over DIP:
BPM_Acquisition_time_s : utcTime_s
BPM_Acquisition_time_ms : utcTime_ms
BPM_Name #1: BPMSW.1L1
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1L1.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1L1.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1L1.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1L1.B2]]

BPM_Name #2: BPMSW.1R1
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1R1.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1R1.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1R1.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1R1.B2]]

BPM_Name #3: BPMSW.1L2
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1L2.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1L2.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1L2.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1L2.B2]]

BPM_Name #4: BPMSW.1R2
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1R2.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1R2.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1R2.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1R2.B2]]

BPM_Name #5: BPMSW.1L5
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1L5.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1L5.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1L5.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1L5.B2]]

BPM_Name #6: BPMSW.1R5
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1R5.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1R5.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1R5.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1R5.B2]]

BPM_Name #7: BPMSW.1L8
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1L8.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1L8.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1L8.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1L8.B2]]

BPM_Name #8: BPMSW.1R8
Beam1_h: positions_h[Index of bpmNames_h[BPMSW.1R8.B1]]
Beam1_v: positions_v[Index of bpmNames_v[BPMSW.1R8.B1]]
Beam2_h: positions_h[Index of bpmNames_h[BPMSW.1R8.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMSW.1R8.B2]]

BPM_Name #9: BPMWT.A4L5.B2
Beam2_h: positions_h[Index of bpmNames_h[BPMWT.A4L5.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMWT.A4L5.B2]]

BPM_Name #10: BPMWT.B4L5.B2
Beam2_h: positions_h[Index of bpmNames_h[BPMWT.B4L5.B2]]
Beam2_v: positions_v[Index of bpmNames_v[BPMWT.B4L5.B2]]

BPM_Name #11: BPMWT.A6L5.B2
positions_h[Index of bpmNames_h[BPMWT.A6L5.B2]]
positions_v[Index of bpmNames_v[BPMWT.A6L5.B2]]

BPM_Name #12: BPMWT.B6L5.B2
positions_h[Index of bpmNames_h[BPMWT.B6L5.B2]]
positions_v[Index of bpmNames_v[BPMWT.B6L5.B2]]

BPM_Name #13: BPMWT.A4R5.B1
positions_h[Index of bpmNames_h[BPMWT.A4R5.B1]]
positions_v[Index of bpmNames_v[BPMWT.A4R5.B1]]

BPM_Name #14: BPMWT.B4R5.B1
positions_h[Index of bpmNames_h[BPMWT.B4R5.B1]]
positions_v[Index of bpmNames_v[BPMWT.B4R5.B1]]

BPM_Name #15: BPMWT.A6R5.B1
positions_h[Index of bpmNames_h[BPMWT.A6R5.B1]]
positions_v[Index of bpmNames_v[BPMWT.A6R5.B1]]

BPM_Name #16: BPMWT.B6R5.B1
positions_h[Index of bpmNames_h[BPMWT.B6R5.B1]]
positions_v[Index of bpmNames_v[BPMWT.B6R5.B1]]


i.e. a total of 16 BPMs, of which 8 give positions for both beam1 AND
beam2 and the other 8 for EITHER beam1 OR beam2

Cheers,

Rhodri