diff --git a/examples/asc_test/master2.py b/examples/asc_test/master2.py index 206c83e0a44ba717f80ed0ac5f991efe3dd866b8..2e16b9f71dbb52d1268f71215d27f720cd0d8449 100644 --- a/examples/asc_test/master2.py +++ b/examples/asc_test/master2.py @@ -53,19 +53,91 @@ def main(): print "--------------------------------------------------------" print " 5. checking wavefront tilt for ITM/ETM tilt of 0.1nrad" + # this does not work yet due to the scale command #kat.PDrefl_p.enabled = False #kat.PDrefl_q.enabled = False kat.ETM.phi=result['phi_tuned'] - - out = tilt(kat) - #(tilt_l, tilt_u) = asc_tilt.run(kat) + tilt(kat) + + print "--------------------------------------------------------" + print " 6. wavefront tilt from center of gravity calculation" + gravity_tilt(kat) + + +def gravity_tilt(tmpkat): + kat = copy.deepcopy(tmpkat) + def compute_gravity_tilt(tmpkat): + kat = copy.deepcopy(tmpkat) + out = kat.run(printout=0,printerr=0) + + # compute x range in meters + y1 = out["b1"] + y2 = out["b1_1k"] + # position on detector 2 (as m/w0y) + x1 = np.sum(out.x*y1)/np.sum(y1) + # position on detector 2 (as m/w0y) + x2 = np.sum(out.x*y2)/np.sum(y2) + # calibrate in meter by mutliplying with w0y + # and compute the angle geometrically + w0=out["w0y"][0] + detector_distance = 1000.0 + tilt=w0*(x2-x1)/detector_distance + print " Wavefront tilt : %g nrad" % tilt + + code_WFS1 = """ + beam b1 nWFS1 + beam b1_1k nL1_in + bp w0y y w0 nWFS1 + """ + code_WFS2 = """ + m md 0 1 0 nWFS2 nWFS2b + s sd 1k nWFS2b nWFS2c + beam b1 nWFS2* + beam b1_1k nWFS2c + bp w0y y w0 nWFS2 + """ + code_xaxis= """ + xaxis b1 y lin -40 40 800 + put b1_1k y $x1 + yaxis abs + """ + + print " WFS1:" + print " ITM ybeta 0.1nm" + kat.parseKatCode(code_WFS1) + kat.parseKatCode(code_xaxis) + kat.spo1.L=1000.0 + kat.ITM.ybeta=1e-10 + kat.ETM.ybeta=0.0 + compute_gravity_tilt(kat) + print " ETM ybeta 0.1nm" + kat.ITM.ybeta=0.0 + kat.ETM.ybeta=-1e-10 + compute_gravity_tilt(kat) + + print " WFS1:" + print " ITM ybeta 0.1nm" + kat = copy.deepcopy(tmpkat) + kat.parseKatCode(code_WFS2) + kat.parseKatCode(code_xaxis) + kat.spo1.L=1.0e-9 + kat.ITM.ybeta=1e-10 + kat.ETM.ybeta=0.0 + compute_gravity_tilt(kat) + print " ETM ybeta 0.1nm" + kat.ITM.ybeta=0.0 + kat.ETM.ybeta=-1e-10 + compute_gravity_tilt(kat) + + def tilt(tmpkat): + kat = copy.deepcopy(tmpkat) def compute_tilt(tmpkat): kat = copy.deepcopy(tmpkat) @@ -86,9 +158,6 @@ def tilt(tmpkat): print " Tilt (lower - car), mean: %e m/deg, stddev %e m/deg" % (np.mean(tilt_l), np.std(tilt_l)) return (np.mean(tilt_l), np.mean(tilt_u)) - - kat = copy.deepcopy(tmpkat) - code_WFS1 = """ beam PDrefl_car 0 nWFS1 beam PDrefl_up 9M nWFS1 @@ -102,7 +171,6 @@ def tilt(tmpkat): beam PDrefl_low -9M nWFS2 bp w0y y w0 nWFS2 """ - code_comm = """ xaxis PDrefl_car y lin -1 1 100 put PDrefl_up y $x1 @@ -116,15 +184,12 @@ def tilt(tmpkat): kat.parseKatCode(code_WFS1) kat.ITM.ybeta=1e-10 kat.ETM.ybeta=0.0 - (a1, a2) = compute_tilt(kat) print " ETM ybeta 0.1nm" kat.ITM.ybeta=0.0 - kat.ETM.ybeta=1e-10 + kat.ETM.ybeta=-1e-10 (a3, a4) = compute_tilt(kat) - - print " WFS2:" print " ITM ybeta 0.1nm" @@ -133,18 +198,14 @@ def tilt(tmpkat): kat.parseKatCode(code_WFS2) kat.ITM.ybeta=1e-10 kat.ETM.ybeta=0.0 - (a5, a6) = compute_tilt(kat) print " ETM ybeta 0.1nm" kat.ITM.ybeta=0.0 - kat.ETM.ybeta=1e-10 + kat.ETM.ybeta=-1e-10 (a6, a7) = compute_tilt(kat) - out={} - return (out) - #return (tilt_l, tilt_u) - + return if __name__ == '__main__': main()