54 lines
2.1 KiB
Python
54 lines
2.1 KiB
Python
lat = 0.01
|
|
sample = 1000
|
|
ELECTRON_CHARGE = 1.60217663e-19
|
|
BPM1 = "SARBD02-DBPM010:Y1-RT"
|
|
BPM2 = "SARBD02-DBPM040:Y1-RT"
|
|
DISP_BPM1 = "SARBD02-DBPM010:DISPERSION-OP" #198.0 mm natural disp. Holylist
|
|
DISP_BPM2 = "SARBD02-DBPM040:DISPERSION-OP" #397.8 mm natural disp. Holylist
|
|
SFB_BEAM_DUMP = "SFB_BEAM_DUMP_AR:ONOFF1"
|
|
LASING_OFF = "Undulators/K_AR_lasing_off.py"
|
|
LASING_ON = "Undulators/K_AR_taper.py"
|
|
BUNCH_CHARGE = "SARBD02-DBPM010:Q1-AVG"
|
|
ELECTRON_ENERGY = "SARCL02-MBND100:P-READ"
|
|
ENE_BPM1 = "SARBD02-DBPM010:PULSE-ENE-OP"
|
|
ENE_BPM2 = "SARBD02-DBPM040:PULSE-ENE-OP"
|
|
ERR_BPM1 = "SARBD02-DBPM010:PULSE-ENE-ERR-OP"
|
|
ERR_BPM2 = "SARBD02-DBPM040:PULSE-ENE-ERR-OP"
|
|
y_bpm1 = ChannelDouble(BPM1, BPM1)
|
|
y_bpm2 = ChannelDouble(BPM2, BPM2)
|
|
y_bpm2.monitored = True
|
|
y_bpm1.initialize()
|
|
y_bpm2.initialize()
|
|
y_averager_bpm1 = create_averager(y_bpm1, sample, lat)
|
|
y_averager_bpm2 = create_averager(y_bpm2, sample, lat)
|
|
feedback_state_init = caget(SFB_BEAM_DUMP)
|
|
caput(SFB_BEAM_DUMP, 0)
|
|
bpm1_las_on = y_averager_bpm1.read()
|
|
bpm2_las_on = y_averager_bpm2.read()
|
|
run(LASING_OFF)
|
|
time.sleep(1.0)
|
|
bpm1_las_off = y_averager_bpm1.read()
|
|
bpm2_las_off = y_averager_bpm2.read()
|
|
run(LASING_ON)
|
|
caput(SFB_BEAM_DUMP, feedback_state_init)
|
|
y_bpm1.close()
|
|
y_bpm2.close()
|
|
bunch_charge = caget(BUNCH_CHARGE)
|
|
ene_elect = caget(ELECTRON_ENERGY)
|
|
disp1 = caget(DISP_BPM1) * 1000
|
|
disp2 = caget(DISP_BPM2) * 1000
|
|
ene_bunch = ene_elect * 1e6 * bunch_charge * 1e-12
|
|
dy_bpm1 = bpm1_las_off.mean - bpm1_las_on.mean
|
|
dy_bpm2 = bpm2_las_off.mean - bpm2_las_on.mean
|
|
pulse_energy_bpm1 = dy_bpm1 / disp1 * ene_bunch * 1000
|
|
pulse_energy_bpm2 = dy_bpm2 / disp2 * ene_bunch * 1000
|
|
dy_bpm1_stdev = bpm1_las_off.stdev + bpm1_las_on.stdev
|
|
dy_bpm2_stdev = bpm2_las_off.stdev + bpm2_las_on.stdev
|
|
pulse_energy_bpm1_stdev = dy_bpm1_stdev / disp1 * ene_bunch * 1000
|
|
pulse_energy_bpm2_stdev = dy_bpm2_stdev / disp2 * ene_bunch * 1000
|
|
print(pulse_energy_bpm1, pulse_energy_bpm1_stdev)
|
|
print(pulse_energy_bpm2, pulse_energy_bpm2_stdev)
|
|
caput(ENE_BPM1, pulse_energy_bpm1)
|
|
caput(ERR_BPM1, pulse_energy_bpm1_stdev)
|
|
caput(ENE_BPM2, pulse_energy_bpm2)
|
|
caput(ERR_BPM2, pulse_energy_bpm2_stdev) |