def set_optics(v=None): el = [] el.append(srwlib.SRWLOptD(1e-16)) el.append(srwlib.SRWLOptD(6.866)) ifnMirror1 = "mirror_1d.dat" if ifnMirror1: hProfDataMirror1 = srwlib.srwl_uti_read_data_cols(ifnMirror1, "\t", 0, 1) el.append(srwlib.srwl_opt_setup_surf_height_1d(hProfDataMirror1, _dim="x", _ang=0.0436332, _amp_coef=1.0, _size_x=0.001, _size_y=0.001)) el.append(srwlib.SRWLOptD(20.634)) el.append(srwlib.SRWLOptG(_mirSub=srwlib.SRWLOptMirPl(_size_tang=0.2, _size_sag=0.015, _nvx=0.0, _nvy=0.99991607766, _nvz=-0.0129552165771, _tvx=0.0, _tvy=0.0129552165771), _m=1.0, _grDen=1800.0, _grDen1=0.08997, _grDen2=3.004e-06, _grDen3=9.73e-11, _grDen4=0.0)) el.append(srwlib.SRWLOptA("r", "a", 0.015, 0.00259104331543, 0.0, 0.0)) el.append(srwlib.SRWLOptD(34.63)) el.append(srwlib.SRWLOptA("r", "a", 0.01832012956, 0.02, 0.0, 0.0)) el.append(srwlib.SRWLOptMirEl(_p=89.63, _q=8.006, _ang_graz=0.0436332, _size_tang=0.42, _size_sag=0.02, _nvx=0.999048222947, _nvy=0.0, _nvz=-0.0436193560953, _tvx=-0.0436193560953, _tvy=0.0)) el.append(srwlib.SRWLOptD(8.006)) el.append(srwlib.SRWLOptA("r", "a", 0.0015, 0.0015, 0.0, 0.0)) el.append(srwlib.SRWLOptD(6.01)) el.append(srwlib.SRWLOptA("r", "a", 0.0130858068286, 0.003, 0.0, 0.0)) el.append(srwlib.SRWLOptMirEl(_p=6.01, _q=0.911, _ang_graz=0.0872665, _size_tang=0.3, _size_sag=0.05, _nvx=0.996194694832, _nvy=0.0, _nvz=-0.0871557800056, _tvx=-0.0871557800056, _tvy=0.0)) el.append(srwlib.SRWLOptD(0.5)) el.append(srwlib.SRWLOptMirEl(_p=6.51, _q=0.411, _ang_graz=0.0872665, _size_tang=0.3, _size_sag=0.05, _nvx=0.0, _nvy=0.996194694832, _nvz=-0.0871557800056, _tvx=0.0, _tvy=-0.0871557800056)) el.append(srwlib.SRWLOptD(0.411)) pp = [] pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) if ifnMirror1: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 1, 0, 1.2, 3.5, 1.2, 3.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 1, 0, 3.0, 1.0, 3.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 0.4, 1.0, 0.4, 1.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 1, 0, 2.0, 1.0, 2.0, 1.0]) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([0, 0, 1.0, 0, 1, 0.07, 1.5, 0.07, 6.0]) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] names = ['M1', 'M1_M2', 'M2', 'M2_Watchpoint', 'Watchpoint'] for el_name in names: if el_name == 'M1': # M1: ellipsoidMirror 28.5m el.append( srwlib.SRWLOptMirEl( _p=v.op_M1_p, _q=v.op_M1_q, _ang_graz=v.op_M1_ang, _size_tang=v.op_M1_size_tang, _size_sag=v.op_M1_size_sag, _nvx=v.op_M1_nvx, _nvy=v.op_M1_nvy, _nvz=v.op_M1_nvz, _tvx=v.op_M1_tvx, _tvy=v.op_M1_tvy, _x=v.op_M1_x, _y=v.op_M1_y, )) pp.append(v.op_M1_pp) elif el_name == 'M1_M2': # M1_M2: drift 28.5m el.append(srwlib.SRWLOptD(_L=v.op_M1_M2_L, )) pp.append(v.op_M1_M2_pp) elif el_name == 'M2': # M2: ellipsoidMirror 29.5m el.append( srwlib.SRWLOptMirEl( _p=v.op_M2_p, _q=v.op_M2_q, _ang_graz=v.op_M2_ang, _size_tang=v.op_M2_size_tang, _size_sag=v.op_M2_size_sag, _nvx=v.op_M2_nvx, _nvy=v.op_M2_nvy, _nvz=v.op_M2_nvz, _tvx=v.op_M2_tvx, _tvy=v.op_M2_tvy, _x=v.op_M2_x, _y=v.op_M2_y, )) pp.append(v.op_M2_pp) elif el_name == 'M2_Watchpoint': # M2_Watchpoint: drift 29.5m el.append(srwlib.SRWLOptD(_L=v.op_M2_Watchpoint_L, )) pp.append(v.op_M2_Watchpoint_pp) elif el_name == 'Watchpoint': # Watchpoint: watch 37.5m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] el.append( srwlib.SRWLOptMirEl(_p=50.0, _q=0.4, _ang_graz=0.003, _size_tang=0.2, _size_sag=0.01, _nvx=0.0, _nvy=0.999995500003, _nvz=-0.0029999955, _tvx=0.0, _tvy=-0.0029999955)) el.append(srwlib.SRWLOptD(0.2)) el.append( srwlib.SRWLOptMirEl(_p=50.0, _q=0.2, _ang_graz=0.003, _size_tang=0.2, _size_sag=0.01, _nvx=0.999995500003, _nvy=0.0, _nvz=-0.0029999955, _tvx=-0.0029999955, _tvy=0.0)) el.append(srwlib.SRWLOptD(0.4)) opMask = setup_mask() el.append(opMask) el.append(srwlib.SRWLOptD(0.2)) pp = [] pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) #mirror pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) #drift pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) #mirror pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) #drift pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) #mask pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) #drift pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) #final return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] names = [ 'VFM', 'VFM_HFM', 'HFM', 'HFM_Watchpoint', 'Watchpoint', 'Watchpoint_Mask', 'Mask', 'Watchpoint2' ] for el_name in names: if el_name == 'VFM': # VFM: ellipsoidMirror 50.0m el.append( srwlib.SRWLOptMirEl( _p=v.op_VFM_p, _q=v.op_VFM_q, _ang_graz=v.op_VFM_ang, _size_tang=v.op_VFM_size_tang, _size_sag=v.op_VFM_size_sag, _nvx=v.op_VFM_nvx, _nvy=v.op_VFM_nvy, _nvz=v.op_VFM_nvz, _tvx=v.op_VFM_tvx, _tvy=v.op_VFM_tvy, _x=v.op_VFM_x, _y=v.op_VFM_y, )) pp.append(v.op_VFM_pp) elif el_name == 'VFM_HFM': # VFM_HFM: drift 50.0m el.append(srwlib.SRWLOptD(_L=v.op_VFM_HFM_L, )) pp.append(v.op_VFM_HFM_pp) elif el_name == 'HFM': # HFM: ellipsoidMirror 50.2m el.append( srwlib.SRWLOptMirEl( _p=v.op_HFM_p, _q=v.op_HFM_q, _ang_graz=v.op_HFM_ang, _size_tang=v.op_HFM_size_tang, _size_sag=v.op_HFM_size_sag, _nvx=v.op_HFM_nvx, _nvy=v.op_HFM_nvy, _nvz=v.op_HFM_nvz, _tvx=v.op_HFM_tvx, _tvy=v.op_HFM_tvy, _x=v.op_HFM_x, _y=v.op_HFM_y, )) pp.append(v.op_HFM_pp) elif el_name == 'HFM_Watchpoint': # HFM_Watchpoint: drift 50.2m el.append(srwlib.SRWLOptD(_L=v.op_HFM_Watchpoint_L, )) pp.append(v.op_HFM_Watchpoint_pp) elif el_name == 'Watchpoint': # Watchpoint: watch 50.4m pass elif el_name == 'Watchpoint_Mask': # Watchpoint_Mask: drift 50.4m el.append(srwlib.SRWLOptD(_L=v.op_Watchpoint_Mask_L, )) pp.append(v.op_Watchpoint_Mask_pp) elif el_name == 'Mask': # Mask: mask 50.6m el.append( srwlib.srwl_opt_setup_mask( _delta=v.op_Mask_delta, _atten_len=v.op_Mask_atten_len, _thick=v.op_Mask_thick, _grid_sh=v.op_Mask_grid_sh, _grid_dx=v.op_Mask_grid_dx, _grid_dy=v.op_Mask_grid_dy, _pitch_x=v.op_Mask_pitch_x, _pitch_y=v.op_Mask_pitch_y, _grid_nx=v.op_Mask_grid_nx, _grid_ny=v.op_Mask_grid_ny, _mask_Nx=v.op_Mask_mask_Nx, _mask_Ny=v.op_Mask_mask_Ny, _grid_angle=v.op_Mask_gridTiltAngle, _hx=v.op_Mask_hx, _hy=v.op_Mask_hy, _mask_x0=v.op_Mask_mask_x0, _mask_y0=v.op_Mask_mask_y0, )) pp.append(v.op_Mask_pp) elif el_name == 'Watchpoint2': # Watchpoint2: watch 50.6m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] for el_name in names: if el_name == 'Aperture': # Aperture: aperture 20.0m el.append( srwlib.SRWLOptA( _shape=v.op_Aperture_shape, _ap_or_ob='a', _Dx=v.op_Aperture_Dx, _Dy=v.op_Aperture_Dy, _x=v.op_Aperture_x, _y=v.op_Aperture_y, )) pp.append(v.op_Aperture_pp) elif el_name == 'Aperture_HFM': # Aperture_HFM: drift 20.0m el.append(srwlib.SRWLOptD(_L=v.op_Aperture_HFM_L, )) pp.append(v.op_Aperture_HFM_pp) elif el_name == 'HFM': # HFM: sphericalMirror 42.0m el.append( srwlib.SRWLOptMirSph( _r=v.op_HFM_r, _size_tang=v.op_HFM_size_tang, _size_sag=v.op_HFM_size_sag, _nvx=v.op_HFM_nvx, _nvy=v.op_HFM_nvy, _nvz=v.op_HFM_nvz, _tvx=v.op_HFM_tvx, _tvy=v.op_HFM_tvy, _x=v.op_HFM_x, _y=v.op_HFM_y, )) pp.append(v.op_HFM_pp) elif el_name == 'Watchpoint': # Watchpoint: watch 42.0m pass elif el_name == 'Watchpoint_Watchpoint2': # Watchpoint_Watchpoint2: drift 42.0m el.append(srwlib.SRWLOptD(_L=v.op_Watchpoint_Watchpoint2_L, )) pp.append(v.op_Watchpoint_Watchpoint2_pp) elif el_name == 'Watchpoint2': # Watchpoint2: watch 55.0m pass elif el_name == 'SSA': # SSA: aperture 55.0m el.append( srwlib.SRWLOptA( _shape=v.op_SSA_shape, _ap_or_ob='a', _Dx=v.op_SSA_Dx, _Dy=v.op_SSA_Dy, _x=v.op_SSA_x, _y=v.op_SSA_y, )) pp.append(v.op_SSA_pp) elif el_name == 'SSA_Watchpoint3': # SSA_Watchpoint3: drift 55.0m el.append(srwlib.SRWLOptD(_L=v.op_SSA_Watchpoint3_L, )) pp.append(v.op_SSA_Watchpoint3_pp) elif el_name == 'Watchpoint3': # Watchpoint3: watch 66.0m pass elif el_name == 'KB_Aperture': # KB_Aperture: aperture 66.0m el.append( srwlib.SRWLOptA( _shape=v.op_KB_Aperture_shape, _ap_or_ob='a', _Dx=v.op_KB_Aperture_Dx, _Dy=v.op_KB_Aperture_Dy, _x=v.op_KB_Aperture_x, _y=v.op_KB_Aperture_y, )) pp.append(v.op_KB_Aperture_pp) elif el_name == 'KB_Aperture_KBh': # KB_Aperture_KBh: drift 66.0m el.append(srwlib.SRWLOptD(_L=v.op_KB_Aperture_KBh_L, )) pp.append(v.op_KB_Aperture_KBh_pp) elif el_name == 'KBh': # KBh: ellipsoidMirror 66.5m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBh_p, _q=v.op_KBh_q, _ang_graz=v.op_KBh_ang, _size_tang=v.op_KBh_size_tang, _size_sag=v.op_KBh_size_sag, _nvx=v.op_KBh_nvx, _nvy=v.op_KBh_nvy, _nvz=v.op_KBh_nvz, _tvx=v.op_KBh_tvx, _tvy=v.op_KBh_tvy, _x=v.op_KBh_x, _y=v.op_KBh_y, )) pp.append(v.op_KBh_pp) elif el_name == 'KBh_Sample': # KBh_Sample: drift 66.5m el.append(srwlib.SRWLOptD(_L=v.op_KBh_Sample_L, )) pp.append(v.op_KBh_Sample_pp) elif el_name == 'Sample': # Sample: watch 67.0m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] names = [ 'M1', 'M1_Grating', 'Grating', 'GA', 'GA_M3A', 'M3A', 'M3', 'M3_SSA', 'SSA', 'SSA_KBAperture', 'KBAperture', 'KBh', 'KBh_KBv', 'KBv', 'KBv_Sample', 'Sample' ] for el_name in names: if el_name == 'M1': # M1: mirror 34.366m mirror_file = v.op_M1_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by M1 beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_1d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t", 0, 1), _dim=v.op_M1_dim, _ang=abs(v.op_M1_ang), _amp_coef=v.op_M1_amp_coef, _size_x=v.op_M1_size_x, _size_y=v.op_M1_size_y, )) pp.append(v.op_M1_pp) elif el_name == 'M1_Grating': # M1_Grating: drift 34.366m el.append(srwlib.SRWLOptD(_L=v.op_M1_Grating_L, )) pp.append(v.op_M1_Grating_pp) elif el_name == 'Grating': # Grating: grating 55.0m mirror = srwlib.SRWLOptMirPl( _size_tang=v.op_Grating_size_tang, _size_sag=v.op_Grating_size_sag, _nvx=v.op_Grating_nvx, _nvy=v.op_Grating_nvy, _nvz=v.op_Grating_nvz, _tvx=v.op_Grating_tvx, _tvy=v.op_Grating_tvy, _x=v.op_Grating_x, _y=v.op_Grating_y, ) el.append( srwlib.SRWLOptG( _mirSub=mirror, _m=v.op_Grating_m, _grDen=v.op_Grating_grDen, _grDen1=v.op_Grating_grDen1, _grDen2=v.op_Grating_grDen2, _grDen3=v.op_Grating_grDen3, _grDen4=v.op_Grating_grDen4, )) pp.append(v.op_Grating_pp) elif el_name == 'GA': # GA: aperture 55.0m el.append( srwlib.SRWLOptA( _shape=v.op_GA_shape, _ap_or_ob='a', _Dx=v.op_GA_Dx, _Dy=v.op_GA_Dy, _x=v.op_GA_x, _y=v.op_GA_y, )) pp.append(v.op_GA_pp) elif el_name == 'GA_M3A': # GA_M3A: drift 55.0m el.append(srwlib.SRWLOptD(_L=v.op_GA_M3A_L, )) pp.append(v.op_GA_M3A_pp) elif el_name == 'M3A': # M3A: aperture 89.63m el.append( srwlib.SRWLOptA( _shape=v.op_M3A_shape, _ap_or_ob='a', _Dx=v.op_M3A_Dx, _Dy=v.op_M3A_Dy, _x=v.op_M3A_x, _y=v.op_M3A_y, )) pp.append(v.op_M3A_pp) elif el_name == 'M3': # M3: ellipsoidMirror 89.63m el.append( srwlib.SRWLOptMirEl( _p=v.op_M3_p, _q=v.op_M3_q, _ang_graz=v.op_M3_ang, _size_tang=v.op_M3_size_tang, _size_sag=v.op_M3_size_sag, _nvx=v.op_M3_nvx, _nvy=v.op_M3_nvy, _nvz=v.op_M3_nvz, _tvx=v.op_M3_tvx, _tvy=v.op_M3_tvy, _x=v.op_M3_x, _y=v.op_M3_y, )) pp.append(v.op_M3_pp) elif el_name == 'M3_SSA': # M3_SSA: drift 89.63m el.append(srwlib.SRWLOptD(_L=v.op_M3_SSA_L, )) pp.append(v.op_M3_SSA_pp) elif el_name == 'SSA': # SSA: aperture 97.636m el.append( srwlib.SRWLOptA( _shape=v.op_SSA_shape, _ap_or_ob='a', _Dx=v.op_SSA_Dx, _Dy=v.op_SSA_Dy, _x=v.op_SSA_x, _y=v.op_SSA_y, )) pp.append(v.op_SSA_pp) elif el_name == 'SSA_KBAperture': # SSA_KBAperture: drift 97.636m el.append(srwlib.SRWLOptD(_L=v.op_SSA_KBAperture_L, )) pp.append(v.op_SSA_KBAperture_pp) elif el_name == 'KBAperture': # KBAperture: aperture 103.646m el.append( srwlib.SRWLOptA( _shape=v.op_KBAperture_shape, _ap_or_ob='a', _Dx=v.op_KBAperture_Dx, _Dy=v.op_KBAperture_Dy, _x=v.op_KBAperture_x, _y=v.op_KBAperture_y, )) pp.append(v.op_KBAperture_pp) elif el_name == 'KBh': # KBh: ellipsoidMirror 103.646m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBh_p, _q=v.op_KBh_q, _ang_graz=v.op_KBh_ang, _size_tang=v.op_KBh_size_tang, _size_sag=v.op_KBh_size_sag, _nvx=v.op_KBh_nvx, _nvy=v.op_KBh_nvy, _nvz=v.op_KBh_nvz, _tvx=v.op_KBh_tvx, _tvy=v.op_KBh_tvy, _x=v.op_KBh_x, _y=v.op_KBh_y, )) pp.append(v.op_KBh_pp) elif el_name == 'KBh_KBv': # KBh_KBv: drift 103.646m el.append(srwlib.SRWLOptD(_L=v.op_KBh_KBv_L, )) pp.append(v.op_KBh_KBv_pp) elif el_name == 'KBv': # KBv: ellipsoidMirror 104.146m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBv_p, _q=v.op_KBv_q, _ang_graz=v.op_KBv_ang, _size_tang=v.op_KBv_size_tang, _size_sag=v.op_KBv_size_sag, _nvx=v.op_KBv_nvx, _nvy=v.op_KBv_nvy, _nvz=v.op_KBv_nvz, _tvx=v.op_KBv_tvx, _tvy=v.op_KBv_tvy, _x=v.op_KBv_x, _y=v.op_KBv_y, )) pp.append(v.op_KBv_pp) elif el_name == 'KBv_Sample': # KBv_Sample: drift 104.146m el.append(srwlib.SRWLOptD(_L=v.op_KBv_Sample_L, )) pp.append(v.op_KBv_Sample_pp) elif el_name == 'Sample': # Sample: watch 104.557m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] names = [ 'ApM1', 'M1', 'M1_Watchpoint', 'Watchpoint', 'ApKB', 'VFM', 'VFM_HFM', 'HFM', 'HFM_Sample', 'Sample' ] for el_name in names: if el_name == 'ApM1': # ApM1: aperture 270.0m el.append( srwlib.SRWLOptA( _shape=v.op_ApM1_shape, _ap_or_ob='a', _Dx=v.op_ApM1_Dx, _Dy=v.op_ApM1_Dy, _x=v.op_ApM1_x, _y=v.op_ApM1_y, )) pp.append(v.op_ApM1_pp) elif el_name == 'M1': # M1: mirror 270.0m mirror_file = v.op_M1_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by M1 beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_1d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t", 0, 1), _dim=v.op_M1_dim, _ang=abs(v.op_M1_ang), _amp_coef=v.op_M1_amp_coef, _size_x=v.op_M1_size_x, _size_y=v.op_M1_size_y, )) pp.append(v.op_M1_pp) elif el_name == 'M1_Watchpoint': # M1_Watchpoint: drift 270.0m el.append(srwlib.SRWLOptD(_L=v.op_M1_Watchpoint_L, )) pp.append(v.op_M1_Watchpoint_pp) elif el_name == 'Watchpoint': # Watchpoint: watch 928.3m pass elif el_name == 'ApKB': # ApKB: aperture 928.3m el.append( srwlib.SRWLOptA( _shape=v.op_ApKB_shape, _ap_or_ob='a', _Dx=v.op_ApKB_Dx, _Dy=v.op_ApKB_Dy, _x=v.op_ApKB_x, _y=v.op_ApKB_y, )) pp.append(v.op_ApKB_pp) elif el_name == 'VFM': # VFM: ellipsoidMirror 928.3m el.append( srwlib.SRWLOptMirEl( _p=v.op_VFM_p, _q=v.op_VFM_q, _ang_graz=v.op_VFM_ang, _size_tang=v.op_VFM_size_tang, _size_sag=v.op_VFM_size_sag, _nvx=v.op_VFM_nvx, _nvy=v.op_VFM_nvy, _nvz=v.op_VFM_nvz, _tvx=v.op_VFM_tvx, _tvy=v.op_VFM_tvy, _x=v.op_VFM_x, _y=v.op_VFM_y, )) pp.append(v.op_VFM_pp) mirror_file = v.op_VFM_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by VFM beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_1d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t", 0, 1), _dim=v.op_VFM_dim, _ang=abs(v.op_VFM_ang), _amp_coef=v.op_VFM_amp_coef, )) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) elif el_name == 'VFM_HFM': # VFM_HFM: drift 928.3m el.append(srwlib.SRWLOptD(_L=v.op_VFM_HFM_L, )) pp.append(v.op_VFM_HFM_pp) elif el_name == 'HFM': # HFM: ellipsoidMirror 928.9m el.append( srwlib.SRWLOptMirEl( _p=v.op_HFM_p, _q=v.op_HFM_q, _ang_graz=v.op_HFM_ang, _size_tang=v.op_HFM_size_tang, _size_sag=v.op_HFM_size_sag, _nvx=v.op_HFM_nvx, _nvy=v.op_HFM_nvy, _nvz=v.op_HFM_nvz, _tvx=v.op_HFM_tvx, _tvy=v.op_HFM_tvy, _x=v.op_HFM_x, _y=v.op_HFM_y, )) pp.append(v.op_HFM_pp) mirror_file = v.op_HFM_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by HFM beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_1d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t", 0, 1), _dim=v.op_HFM_dim, _ang=abs(v.op_HFM_ang), _amp_coef=v.op_HFM_amp_coef, )) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) elif el_name == 'HFM_Sample': # HFM_Sample: drift 928.9m el.append(srwlib.SRWLOptD(_L=v.op_HFM_Sample_L, )) pp.append(v.op_HFM_Sample_pp) elif el_name == 'Sample': # Sample: watch 930.0m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] names = [ 'S0', 'S0_HFM', 'HFM', 'HFM_S1', 'S1', 'S1_DCM_C1', 'DCM_C1', 'DCM_C2', 'DCM_C2_At_BPM1', 'At_BPM1', 'At_BPM1_Before_SSA', 'Before_SSA', 'SSA', 'SSA_AKB', 'AKB', 'AKB_KBV', 'KBV', 'KBV_KBH', 'KBH', 'KBH_At_Sample', 'At_Sample' ] for el_name in names: if el_name == 'S0': # S0: aperture 33.1798m el.append( srwlib.SRWLOptA( _shape=v.op_S0_shape, _ap_or_ob='a', _Dx=v.op_S0_Dx, _Dy=v.op_S0_Dy, _x=v.op_S0_x, _y=v.op_S0_y, )) pp.append(v.op_S0_pp) elif el_name == 'S0_HFM': # S0_HFM: drift 33.1798m el.append(srwlib.SRWLOptD(_L=v.op_S0_HFM_L, )) pp.append(v.op_S0_HFM_pp) elif el_name == 'HFM': # HFM: sphericalMirror 34.2608m el.append( srwlib.SRWLOptMirSph( _r=v.op_HFM_r, _size_tang=v.op_HFM_size_tang, _size_sag=v.op_HFM_size_sag, _nvx=v.op_HFM_nvx, _nvy=v.op_HFM_nvy, _nvz=v.op_HFM_nvz, _tvx=v.op_HFM_tvx, _tvy=v.op_HFM_tvy, _x=v.op_HFM_x, _y=v.op_HFM_y, )) pp.append(v.op_HFM_pp) elif el_name == 'HFM_S1': # HFM_S1: drift 34.2608m el.append(srwlib.SRWLOptD(_L=v.op_HFM_S1_L, )) pp.append(v.op_HFM_S1_pp) elif el_name == 'S1': # S1: aperture 35.6678m el.append( srwlib.SRWLOptA( _shape=v.op_S1_shape, _ap_or_ob='a', _Dx=v.op_S1_Dx, _Dy=v.op_S1_Dy, _x=v.op_S1_x, _y=v.op_S1_y, )) pp.append(v.op_S1_pp) elif el_name == 'S1_DCM_C1': # S1_DCM_C1: drift 35.6678m el.append(srwlib.SRWLOptD(_L=v.op_S1_DCM_C1_L, )) pp.append(v.op_S1_DCM_C1_pp) elif el_name == 'DCM_C1': # DCM_C1: crystal 36.4488m crystal = srwlib.SRWLOptCryst( _d_sp=v.op_DCM_C1_d_sp, _psi0r=v.op_DCM_C1_psi0r, _psi0i=v.op_DCM_C1_psi0i, _psi_hr=v.op_DCM_C1_psiHr, _psi_hi=v.op_DCM_C1_psiHi, _psi_hbr=v.op_DCM_C1_psiHBr, _psi_hbi=v.op_DCM_C1_psiHBi, _tc=v.op_DCM_C1_tc, _ang_as=v.op_DCM_C1_ang_as, ) crystal.set_orient( _nvx=v.op_DCM_C1_nvx, _nvy=v.op_DCM_C1_nvy, _nvz=v.op_DCM_C1_nvz, _tvx=v.op_DCM_C1_tvx, _tvy=v.op_DCM_C1_tvy, ) el.append(crystal) pp.append(v.op_DCM_C1_pp) elif el_name == 'DCM_C2': # DCM_C2: crystal 36.4488m crystal = srwlib.SRWLOptCryst( _d_sp=v.op_DCM_C2_d_sp, _psi0r=v.op_DCM_C2_psi0r, _psi0i=v.op_DCM_C2_psi0i, _psi_hr=v.op_DCM_C2_psiHr, _psi_hi=v.op_DCM_C2_psiHi, _psi_hbr=v.op_DCM_C2_psiHBr, _psi_hbi=v.op_DCM_C2_psiHBi, _tc=v.op_DCM_C2_tc, _ang_as=v.op_DCM_C2_ang_as, ) crystal.set_orient( _nvx=v.op_DCM_C2_nvx, _nvy=v.op_DCM_C2_nvy, _nvz=v.op_DCM_C2_nvz, _tvx=v.op_DCM_C2_tvx, _tvy=v.op_DCM_C2_tvy, ) el.append(crystal) pp.append(v.op_DCM_C2_pp) elif el_name == 'DCM_C2_At_BPM1': # DCM_C2_At_BPM1: drift 36.4488m el.append(srwlib.SRWLOptD(_L=v.op_DCM_C2_At_BPM1_L, )) pp.append(v.op_DCM_C2_At_BPM1_pp) elif el_name == 'At_BPM1': # At_BPM1: watch 38.6904m pass elif el_name == 'At_BPM1_Before_SSA': # At_BPM1_Before_SSA: drift 38.6904m el.append(srwlib.SRWLOptD(_L=v.op_At_BPM1_Before_SSA_L, )) pp.append(v.op_At_BPM1_Before_SSA_pp) elif el_name == 'Before_SSA': # Before_SSA: watch 50.6572m pass elif el_name == 'SSA': # SSA: aperture 50.6572m el.append( srwlib.SRWLOptA( _shape=v.op_SSA_shape, _ap_or_ob='a', _Dx=v.op_SSA_Dx, _Dy=v.op_SSA_Dy, _x=v.op_SSA_x, _y=v.op_SSA_y, )) pp.append(v.op_SSA_pp) elif el_name == 'SSA_AKB': # SSA_AKB: drift 50.6572m el.append(srwlib.SRWLOptD(_L=v.op_SSA_AKB_L, )) pp.append(v.op_SSA_AKB_pp) elif el_name == 'AKB': # AKB: aperture 62.488m el.append( srwlib.SRWLOptA( _shape=v.op_AKB_shape, _ap_or_ob='a', _Dx=v.op_AKB_Dx, _Dy=v.op_AKB_Dy, _x=v.op_AKB_x, _y=v.op_AKB_y, )) pp.append(v.op_AKB_pp) elif el_name == 'AKB_KBV': # AKB_KBV: drift 62.488m el.append(srwlib.SRWLOptD(_L=v.op_AKB_KBV_L, )) pp.append(v.op_AKB_KBV_pp) elif el_name == 'KBV': # KBV: ellipsoidMirror 62.663m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBV_p, _q=v.op_KBV_q, _ang_graz=v.op_KBV_ang, _size_tang=v.op_KBV_size_tang, _size_sag=v.op_KBV_size_sag, _nvx=v.op_KBV_nvx, _nvy=v.op_KBV_nvy, _nvz=v.op_KBV_nvz, _tvx=v.op_KBV_tvx, _tvy=v.op_KBV_tvy, _x=v.op_KBV_x, _y=v.op_KBV_y, )) pp.append(v.op_KBV_pp) elif el_name == 'KBV_KBH': # KBV_KBH: drift 62.663m el.append(srwlib.SRWLOptD(_L=v.op_KBV_KBH_L, )) pp.append(v.op_KBV_KBH_pp) elif el_name == 'KBH': # KBH: ellipsoidMirror 63.0m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBH_p, _q=v.op_KBH_q, _ang_graz=v.op_KBH_ang, _size_tang=v.op_KBH_size_tang, _size_sag=v.op_KBH_size_sag, _nvx=v.op_KBH_nvx, _nvy=v.op_KBH_nvy, _nvz=v.op_KBH_nvz, _tvx=v.op_KBH_tvx, _tvy=v.op_KBH_tvy, _x=v.op_KBH_x, _y=v.op_KBH_y, )) pp.append(v.op_KBH_pp) elif el_name == 'KBH_At_Sample': # KBH_At_Sample: drift 63.0m el.append(srwlib.SRWLOptD(_L=v.op_KBH_At_Sample_L, )) pp.append(v.op_KBH_At_Sample_pp) elif el_name == 'At_Sample': # At_Sample: watch 63.3m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] # S0: aperture 33.1798m el.append(srwlib.SRWLOptA("r", "a", 0.002, 0.001, 0.0, 0.0)) el.append(srwlib.SRWLOptD(1.081)) # HFM: sphericalMirror 34.2608m el.append(srwlib.SRWLOptMirSph(_r=8871.45, _size_tang=0.95, _size_sag=0.005, _nvx=0.999996875002, _nvy=0.0, _nvz=-0.00249999739583, _tvx=0.00249999739583, _tvy=0.0, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(1.407)) # S1: aperture 35.6678m el.append(srwlib.SRWLOptA("r", "a", 0.0024, 0.0015, 0.0, 0.0)) el.append(srwlib.SRWLOptD(0.781)) # DCM: C1: crystal 36.4488m opCr = srwlib.SRWLOptCryst(_d_sp=3.13557135638, _psi0r=-1.53227839905e-05, _psi0i=3.59410775406e-07, _psi_hr=-8.10706354484e-06, _psi_hi=2.50931132347e-07, _psi_hbr=-8.10706354484e-06, _psi_hbi=2.50931132347e-07, _tc=0.01, _ang_as=0.0) # Set crystal orientation: opCr.set_orient(-0.968973817886, 2.59635532439e-08, -0.247163387763, -0.247163387763, 6.62271741473e-09) el.append(opCr) # DCM: C2: crystal 36.4488m opCr = srwlib.SRWLOptCryst(_d_sp=3.13557135638, _psi0r=-1.53227839905e-05, _psi0i=3.59410775406e-07, _psi_hr=-8.10706354484e-06, _psi_hi=2.50931132347e-07, _psi_hbr=-8.10706354484e-06, _psi_hbi=2.50931132347e-07, _tc=0.01, _ang_as=0.0) # Set crystal orientation: opCr.set_orient(0.968973817886, 0.0, -0.247163387763, 0.247163387763, 0.0) el.append(opCr) el.append(srwlib.SRWLOptD(2.2416)) # At BPM1: watch 38.6904m el.append(srwlib.SRWLOptD(11.9668)) # Before SSA: watch 50.6572m # SSA: aperture 50.6572m el.append(srwlib.SRWLOptA("r", "a", 5e-05, 0.003, 0.0, 0.0)) el.append(srwlib.SRWLOptD(11.8308)) # AKB: aperture 62.488m el.append(srwlib.SRWLOptA("r", "a", 0.003, 0.000875, 0.0, 0.0)) el.append(srwlib.SRWLOptD(0.175)) # KBV: ellipsoidMirror 62.663m el.append(srwlib.SRWLOptMirEl(_p=63.913, _q=0.637, _ang_graz=0.0025, _size_tang=0.35, _size_sag=0.003, _nvx=0.0, _nvy=0.999996875002, _nvz=-0.00249999739583, _tvx=0.0, _tvy=-0.00249999739583, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(0.337)) # KBH: ellipsoidMirror 63.0m el.append(srwlib.SRWLOptMirEl(_p=12.3428, _q=0.3, _ang_graz=0.0025, _size_tang=0.3, _size_sag=0.003, _nvx=0.999996875002, _nvy=0.0, _nvz=-0.00249999739583, _tvx=-0.00249999739583, _tvy=0.0, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(0.3)) # At Sample: watch 63.3m pp = [] # S0 pp.append([0, 0, 1.0, 0, 0, 1.1, 7.0, 1.3, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # HFM pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # S1 pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # DCM: C1 pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # DCM: C2 pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # At BPM1 pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # Before SSA # SSA pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # AKB pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # KBV pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # KBH pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 4, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # At Sample # final post-propagation pp.append([0, 0, 1.0, 0, 1, 0.5, 1.0, 0.2, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): """ Function from Sirepo's SRW code """ el = [] pp = [] names = [ 'Elliptical_Cylinder', 'Elliptical_Cylinder_Elliptical_Cylinder2', 'Elliptical_Cylinder2', 'Elliptical_Cylinder2_Watchpoint', 'Watchpoint' ] for el_name in names: if el_name == 'Elliptical_Cylinder': # Elliptical_Cylinder: ellipsoidMirror 28.5m el.append( srwlib.SRWLOptMirEl( _p=v.op_Elliptical_Cylinder_p, _q=v.op_Elliptical_Cylinder_q, _ang_graz=v.op_Elliptical_Cylinder_ang, _size_tang=v.op_Elliptical_Cylinder_size_tang, _size_sag=v.op_Elliptical_Cylinder_size_sag, _nvx=v.op_Elliptical_Cylinder_nvx, _nvy=v.op_Elliptical_Cylinder_nvy, _nvz=v.op_Elliptical_Cylinder_nvz, _tvx=v.op_Elliptical_Cylinder_tvx, _tvy=v.op_Elliptical_Cylinder_tvy, _x=v.op_Elliptical_Cylinder_x, _y=v.op_Elliptical_Cylinder_y, )) pp.append(v.op_Elliptical_Cylinder_pp) elif el_name == 'Elliptical_Cylinder_Elliptical_Cylinder2': # Elliptical_Cylinder_Elliptical_Cylinder2: drift 28.5m el.append( srwlib.SRWLOptD( _L=v.op_Elliptical_Cylinder_Elliptical_Cylinder2_L, )) pp.append(v.op_Elliptical_Cylinder_Elliptical_Cylinder2_pp) elif el_name == 'Elliptical_Cylinder2': # Elliptical_Cylinder2: ellipsoidMirror 29.5m el.append( srwlib.SRWLOptMirEl( _p=v.op_Elliptical_Cylinder2_p, _q=v.op_Elliptical_Cylinder2_q, _ang_graz=v.op_Elliptical_Cylinder2_ang, _size_tang=v.op_Elliptical_Cylinder2_size_tang, _size_sag=v.op_Elliptical_Cylinder2_size_sag, _nvx=v.op_Elliptical_Cylinder2_nvx, _nvy=v.op_Elliptical_Cylinder2_nvy, _nvz=v.op_Elliptical_Cylinder2_nvz, _tvx=v.op_Elliptical_Cylinder2_tvx, _tvy=v.op_Elliptical_Cylinder2_tvy, _x=v.op_Elliptical_Cylinder2_x, _y=v.op_Elliptical_Cylinder2_y, )) pp.append(v.op_Elliptical_Cylinder2_pp) elif el_name == 'Elliptical_Cylinder2_Watchpoint': # Elliptical_Cylinder2_Watchpoint: drift 29.5m el.append( srwlib.SRWLOptD(_L=v.op_Elliptical_Cylinder2_Watchpoint_L, )) pp.append(v.op_Elliptical_Cylinder2_Watchpoint_pp) elif el_name == 'Watchpoint': # Watchpoint: watch 37.5m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] # M1: mirror 34.366m ifnMirror1 = "mirror_1d.dat" if ifnMirror1: assert os.path.isfile(ifnMirror1), "Missing input file mirror_1d.dat, required by M1 beamline element" hProfDataMirror1 = srwlib.srwl_uti_read_data_cols(ifnMirror1, "\t", 0, 1) el.append(srwlib.srwl_opt_setup_surf_height_1d(hProfDataMirror1, _dim="x", _ang=0.0436332, _amp_coef=1.0, _size_x=0.001, _size_y=0.001)) el.append(srwlib.SRWLOptD(20.634)) # Grating: grating 55.0m el.append(srwlib.SRWLOptG(_mirSub=srwlib.SRWLOptMirPl(_size_tang=0.2, _size_sag=0.015, _nvx=0.0, _nvy=0.99991607766, _nvz=-0.0129552165771, _tvx=0.0, _tvy=0.0129552165771, _x=0.0, _y=0.0), _m=1.0, _grDen=1800.0, _grDen1=0.08997, _grDen2=3.004e-06, _grDen3=9.73e-11, _grDen4=0.0)) # GA: aperture 55.0m el.append(srwlib.SRWLOptA("r", "a", 0.015, 0.00259104331543, 0.0, 0.0)) el.append(srwlib.SRWLOptD(34.63)) # M3A: aperture 89.63m el.append(srwlib.SRWLOptA("r", "a", 0.01832012956, 0.02, 0.0, 0.0)) # M3: ellipsoidMirror 89.63m el.append(srwlib.SRWLOptMirEl(_p=89.63, _q=8.006, _ang_graz=0.0436332, _size_tang=0.42, _size_sag=0.02, _nvx=0.999048222947, _nvy=0.0, _nvz=-0.0436193560953, _tvx=-0.0436193560953, _tvy=0.0, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(8.006)) # SSA: aperture 97.636m el.append(srwlib.SRWLOptA("r", "a", 0.0015, 0.0015, 0.0, 0.0)) el.append(srwlib.SRWLOptD(6.01)) # KBAperture: aperture 103.646m el.append(srwlib.SRWLOptA("r", "a", 0.0130858068286, 0.003, 0.0, 0.0)) # KBh: ellipsoidMirror 103.646m el.append(srwlib.SRWLOptMirEl(_p=6.01, _q=0.911, _ang_graz=0.0872665, _size_tang=0.3, _size_sag=0.05, _nvx=0.996194694832, _nvy=0.0, _nvz=-0.0871557800056, _tvx=-0.0871557800056, _tvy=0.0, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(0.5)) # KBv: ellipsoidMirror 104.146m el.append(srwlib.SRWLOptMirEl(_p=6.51, _q=0.411, _ang_graz=0.0872665, _size_tang=0.3, _size_sag=0.05, _nvx=0.0, _nvy=0.996194694832, _nvz=-0.0871557800056, _tvx=0.0, _tvy=-0.0871557800056, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(0.411)) # Sample: watch 104.557m pp = [] # M1 if ifnMirror1: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.2, 3.5, 1.2, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # Grating pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # GA pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # M3A pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # M3 pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 3.0, 1.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # SSA pp.append([0, 0, 1.0, 0, 0, 0.4, 1.0, 0.4, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # KBAperture pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # KBh pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 2.0, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # KBv pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # Sample # final post-propagation pp.append([0, 0, 1.0, 0, 1, 0.07, 1.5, 0.07, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] # VFM: ellipsoidMirror 50.0m el.append( srwlib.SRWLOptMirEl(_p=50.0, _q=0.4, _ang_graz=0.003, _size_tang=0.2, _size_sag=0.01, _nvx=0.0, _nvy=0.999995500003, _nvz=-0.0029999955, _tvx=0.0, _tvy=-0.0029999955, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(0.2)) # HFM: ellipsoidMirror 50.2m el.append( srwlib.SRWLOptMirEl(_p=50.0, _q=0.2, _ang_graz=0.003, _size_tang=0.2, _size_sag=0.01, _nvx=0.999995500003, _nvy=0.0, _nvz=-0.0029999955, _tvx=-0.0029999955, _tvy=0.0, _x=0.0, _y=0.0)) el.append(srwlib.SRWLOptD(0.2)) # Watchpoint: watch 50.4m el.append(srwlib.SRWLOptD(0.2)) # Mask: mask 50.6m el.append( srwlib.srwl_opt_setup_mask(_delta=1.0, _atten_len=1.0, _thick=1.0, _grid_sh=0, _grid_dx=5e-06, _grid_dy=5e-06, _pitch_x=2e-05, _pitch_y=2e-05, _grid_nx=21, _grid_ny=21, _mask_Nx=1024, _mask_Ny=1024, _grid_angle=0.436332312999, _hx=7.32e-07, _hy=7.32e-07, _mask_x0=0.0, _mask_y0=0.0)) # Watchpoint: watch 50.6m pp = [] # VFM pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # HFM pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Watchpoint pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Mask pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Watchpoint # final post-propagation pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] # S0: aperture 31.5m el.append(srwlib.SRWLOptA("r", "a", 0.001, 0.00042, 0.0, 0.0)) el.append(srwlib.SRWLOptD(1.5)) # VCM: sphericalMirror 33.0m el.append( srwlib.SRWLOptMirSph(_r=19000.0, _size_tang=0.5, _size_sag=0.01, _nvx=0.0, _nvy=0.99999846875, _nvz=-0.00174999910677, _tvx=0.0, _tvy=0.00174999910677, _x=0.0, _y=0.0)) ifnSphMirror1 = "LCLS_SOMS_height_prof_1d_3x_ns.dat" if ifnSphMirror1: assert os.path.isfile( ifnSphMirror1 ), "Missing input file LCLS_SOMS_height_prof_1d_3x_ns.dat, required by VCM beamline element" hProfDataSphMirror1 = srwlib.srwl_uti_read_data_cols( ifnSphMirror1, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataSphMirror1, _dim="y", _ang=0.00175, _amp_coef=0.9999)) el.append(srwlib.SRWLOptD(21.0)) # S0H: aperture 54.0m el.append(srwlib.SRWLOptA("r", "a", 6e-05, 0.001, 0.0, 0.0)) el.append(srwlib.SRWLOptD(1.0)) # Watchpoint: watch 55.0m # HCM: sphericalMirror 55.0m el.append( srwlib.SRWLOptMirSph(_r=14000.0, _size_tang=0.5, _size_sag=0.01, _nvx=0.99999846875, _nvy=0.0, _nvz=-0.00174999910677, _tvx=0.00174999910677, _tvy=0.0, _x=0.0, _y=0.0)) ifnSphMirror2 = "LCLS_SOMS_height_prof_1d_3x_ns.dat" if ifnSphMirror2: assert os.path.isfile( ifnSphMirror2 ), "Missing input file LCLS_SOMS_height_prof_1d_3x_ns.dat, required by HCM beamline element" hProfDataSphMirror2 = srwlib.srwl_uti_read_data_cols( ifnSphMirror2, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataSphMirror2, _dim="x", _ang=0.00175, _amp_coef=1.0)) el.append(srwlib.SRWLOptD(40.0)) # Ap. KB: aperture 95.0m el.append(srwlib.SRWLOptA("r", "a", 0.001, 0.001, 0.0, 0.0)) el.append(srwlib.SRWLOptD(2.4)) # VKB: ellipsoidMirror 97.4m el.append( srwlib.SRWLOptMirEl(_p=32.0, _q=2.6, _ang_graz=0.003, _size_tang=0.4, _size_sag=0.01, _nvx=0.0, _nvy=0.999995500003, _nvz=-0.0029999955, _tvx=0.0, _tvy=0.0029999955, _x=0.0, _y=0.0)) ifnElMirror3 = "LCLS_SOMS_height_prof_1d_3x_ns.dat" if ifnElMirror3: assert os.path.isfile( ifnElMirror3 ), "Missing input file LCLS_SOMS_height_prof_1d_3x_ns.dat, required by VKB beamline element" hProfDataElMirror3 = srwlib.srwl_uti_read_data_cols( ifnElMirror3, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataElMirror3, _dim="y", _ang=0.003, _amp_coef=1.0)) el.append(srwlib.SRWLOptD(0.6)) # Watchpoint: watch 98.0m # HKB: ellipsoidMirror 98.0m el.append( srwlib.SRWLOptMirEl(_p=38.0, _q=2.0, _ang_graz=0.003, _size_tang=0.3, _size_sag=0.01, _nvx=0.999995500003, _nvy=0.0, _nvz=-0.0029999955, _tvx=-0.0029999955, _tvy=0.0, _x=0.0, _y=0.0)) ifnElMirror4 = "LCLS_SOMS_height_prof_1d_3x_ns.dat" if ifnElMirror4: assert os.path.isfile( ifnElMirror4 ), "Missing input file LCLS_SOMS_height_prof_1d_3x_ns.dat, required by HKB beamline element" hProfDataElMirror4 = srwlib.srwl_uti_read_data_cols( ifnElMirror4, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataElMirror4, _dim="x", _ang=0.003, _amp_coef=1.0)) el.append(srwlib.SRWLOptD(2.0)) # Sample: watch 100.0m pp = [] # S0 pp.append([ 0, 0, 1.0, 0, 0, 4.0, 30.0, 1.3, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # VCM pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) if ifnSphMirror1: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # S0H pp.append([ 0, 0, 1.0, 0, 0, 0.5, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Watchpoint # HCM pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) if ifnSphMirror2: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Ap. KB pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # VKB pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) if ifnElMirror3: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Watchpoint # HKB pp.append([ 0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) if ifnElMirror4: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([ 0, 0, 1.0, 1, 0, 0.2, 6.0, 1.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Sample # final post-propagation pp.append([ 0, 0, 1.0, 0, 0, 0.1, 1.0, 0.15, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): """ Function from Sirepo's SRW code, based on https://www.sirepo.com/srw#/beamline/HLLFYnur """ el = [] pp = [] names = [ 'Fixed_Mask', 'Fixed_Mask_Ap_M1', 'Ap_M1', 'M1', 'M1_M2', 'M2', 'M2_Before_Grating', 'Before_Grating', 'After_Grating', 'After_Grating_Before_H_Slit', 'Before_H_Slit', 'H_Slit', 'H_Slit_Aux_1', 'Aux_1', 'Aux_1_Before_V_Slit', 'Before_V_Slit', 'V_Slit', 'V_Slit_Aux_2', 'Aux_2', 'Aux_2_Before_KBV', 'Before_KBV', 'KBV', 'KBV_KBH', 'KBH', 'After_KBH', 'After_KBH_Sample', 'Sample' ] for el_name in names: if el_name == 'Fixed_Mask': # Fixed_Mask: aperture 18.75m el.append( srwlib.SRWLOptA( _shape=v.op_Fixed_Mask_shape, _ap_or_ob='a', _Dx=v.op_Fixed_Mask_Dx, _Dy=v.op_Fixed_Mask_Dy, _x=v.op_Fixed_Mask_x, _y=v.op_Fixed_Mask_y, )) pp.append(v.op_Fixed_Mask_pp) elif el_name == 'Fixed_Mask_Ap_M1': # Fixed_Mask_Ap_M1: drift 18.75m el.append(srwlib.SRWLOptD(_L=v.op_Fixed_Mask_Ap_M1_L, )) pp.append(v.op_Fixed_Mask_Ap_M1_pp) elif el_name == 'Ap_M1': # Ap_M1: aperture 27.25m el.append( srwlib.SRWLOptA( _shape=v.op_Ap_M1_shape, _ap_or_ob='a', _Dx=v.op_Ap_M1_Dx, _Dy=v.op_Ap_M1_Dy, _x=v.op_Ap_M1_x, _y=v.op_Ap_M1_y, )) pp.append(v.op_Ap_M1_pp) elif el_name == 'M1': # M1: ellipsoidMirror 27.25m el.append( srwlib.SRWLOptMirEl( _p=v.op_M1_p, _q=v.op_M1_q, _ang_graz=v.op_M1_ang, _size_tang=v.op_M1_size_tang, _size_sag=v.op_M1_size_sag, _nvx=v.op_M1_nvx, _nvy=v.op_M1_nvy, _nvz=v.op_M1_nvz, _tvx=v.op_M1_tvx, _tvy=v.op_M1_tvy, _x=v.op_M1_x, _y=v.op_M1_y, )) pp.append(v.op_M1_pp) mirror_file = v.op_M1_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by M1 beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_2d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t"), _dim=v.op_M1_dim, _ang=abs(v.op_M1_ang), _amp_coef=v.op_M1_amp_coef, )) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) elif el_name == 'M1_M2': # M1_M2: drift 27.25m el.append(srwlib.SRWLOptD(_L=v.op_M1_M2_L, )) pp.append(v.op_M1_M2_pp) elif el_name == 'M2': # M2: mirror 29.35m mirror_file = v.op_M2_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by M2 beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_2d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t"), _dim=v.op_M2_dim, _ang=abs(v.op_M2_ang), _amp_coef=v.op_M2_amp_coef, _size_x=v.op_M2_size_x, _size_y=v.op_M2_size_y, )) pp.append(v.op_M2_pp) elif el_name == 'M2_Before_Grating': # M2_Before_Grating: drift 29.35m el.append(srwlib.SRWLOptD(_L=v.op_M2_Before_Grating_L, )) pp.append(v.op_M2_Before_Grating_pp) elif el_name == 'Before_Grating': # Before_Grating: watch 29.75m pass elif el_name == 'After_Grating': # After_Grating: watch 29.75m pass elif el_name == 'After_Grating_Before_H_Slit': # After_Grating_Before_H_Slit: drift 29.75m el.append(srwlib.SRWLOptD(_L=v.op_After_Grating_Before_H_Slit_L, )) pp.append(v.op_After_Grating_Before_H_Slit_pp) elif el_name == 'Before_H_Slit': # Before_H_Slit: watch 36.25m pass elif el_name == 'H_Slit': # H_Slit: aperture 36.25m el.append( srwlib.SRWLOptA( _shape=v.op_H_Slit_shape, _ap_or_ob='a', _Dx=v.op_H_Slit_Dx, _Dy=v.op_H_Slit_Dy, _x=v.op_H_Slit_x, _y=v.op_H_Slit_y, )) pp.append(v.op_H_Slit_pp) elif el_name == 'H_Slit_Aux_1': # H_Slit_Aux_1: drift 36.25m el.append(srwlib.SRWLOptD(_L=v.op_H_Slit_Aux_1_L, )) pp.append(v.op_H_Slit_Aux_1_pp) elif el_name == 'Aux_1': # Aux_1: watch 36.5m pass elif el_name == 'Aux_1_Before_V_Slit': # Aux_1_Before_V_Slit: drift 36.5m el.append(srwlib.SRWLOptD(_L=v.op_Aux_1_Before_V_Slit_L, )) pp.append(v.op_Aux_1_Before_V_Slit_pp) elif el_name == 'Before_V_Slit': # Before_V_Slit: watch 41.25m pass elif el_name == 'V_Slit': # V_Slit: aperture 41.25m el.append( srwlib.SRWLOptA( _shape=v.op_V_Slit_shape, _ap_or_ob='a', _Dx=v.op_V_Slit_Dx, _Dy=v.op_V_Slit_Dy, _x=v.op_V_Slit_x, _y=v.op_V_Slit_y, )) pp.append(v.op_V_Slit_pp) elif el_name == 'V_Slit_Aux_2': # V_Slit_Aux_2: drift 41.25m el.append(srwlib.SRWLOptD(_L=v.op_V_Slit_Aux_2_L, )) pp.append(v.op_V_Slit_Aux_2_pp) elif el_name == 'Aux_2': # Aux_2: watch 41.35m pass elif el_name == 'Aux_2_Before_KBV': # Aux_2_Before_KBV: drift 41.35m el.append(srwlib.SRWLOptD(_L=v.op_Aux_2_Before_KBV_L, )) pp.append(v.op_Aux_2_Before_KBV_pp) elif el_name == 'Before_KBV': # Before_KBV: watch 69.334m pass elif el_name == 'KBV': # KBV: ellipsoidMirror 69.334m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBV_p, _q=v.op_KBV_q, _ang_graz=v.op_KBV_ang, _size_tang=v.op_KBV_size_tang, _size_sag=v.op_KBV_size_sag, _nvx=v.op_KBV_nvx, _nvy=v.op_KBV_nvy, _nvz=v.op_KBV_nvz, _tvx=v.op_KBV_tvx, _tvy=v.op_KBV_tvy, _x=v.op_KBV_x, _y=v.op_KBV_y, )) pp.append(v.op_KBV_pp) mirror_file = v.op_KBV_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by KBV beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_2d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t"), _dim=v.op_KBV_dim, _ang=abs(v.op_KBV_ang), _amp_coef=v.op_KBV_amp_coef, )) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) elif el_name == 'KBV_KBH': # KBV_KBH: drift 69.334m el.append(srwlib.SRWLOptD(_L=v.op_KBV_KBH_L, )) pp.append(v.op_KBV_KBH_pp) elif el_name == 'KBH': # KBH: ellipsoidMirror 69.628m el.append( srwlib.SRWLOptMirEl( _p=v.op_KBH_p, _q=v.op_KBH_q, _ang_graz=v.op_KBH_ang, _size_tang=v.op_KBH_size_tang, _size_sag=v.op_KBH_size_sag, _nvx=v.op_KBH_nvx, _nvy=v.op_KBH_nvy, _nvz=v.op_KBH_nvz, _tvx=v.op_KBH_tvx, _tvy=v.op_KBH_tvy, _x=v.op_KBH_x, _y=v.op_KBH_y, )) pp.append(v.op_KBH_pp) mirror_file = v.op_KBH_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by KBH beamline element'.format(mirror_file) el.append( srwlib.srwl_opt_setup_surf_height_2d( srwlib.srwl_uti_read_data_cols(mirror_file, "\t"), _dim=v.op_KBH_dim, _ang=abs(v.op_KBH_ang), _amp_coef=v.op_KBH_amp_coef, )) pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) elif el_name == 'After_KBH': # After_KBH: watch 69.628m pass elif el_name == 'After_KBH_Sample': # After_KBH_Sample: drift 69.628m el.append(srwlib.SRWLOptD(_L=v.op_After_KBH_Sample_L, )) pp.append(v.op_After_KBH_Sample_pp) elif el_name == 'Sample': # Sample: watch 69.75m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] pp = [] names = ['Crystal', 'Crystal_s2_on_2nd_crystal', 's2_on_2nd_crystal_Crystal2', 'Crystal2', 'Crystal2_s3_on_1st_mirror', 's3_on_1st_mirror_Elliptical_Cylinder', 'Elliptical_Cylinder', 'CRL_s4_on_slit', 's4_on_slit', 's4_on_slit_Aperture', 'Aperture', 'Aperture_s5_on_2nd_mirror', 's5_on_2nd_mirror', 'Elliptical_Cylinder2', 'Elliptical_Cylinder2_CRL', 'CRL_s6_on_3rd_crystal', 's6_on_3rd_crystal', 's6_on_3rd_crystal_Crystal3', 'Crystal3', 'Crystal3_s7_on_4th_crystal', 's7_on_4th_crystal', 'Crystal4', 'Crystal4_on_detector', 'on_detector'] for el_name in names: if el_name == 'Crystal': # Crystal: crystal 140.1m crystal = srwlib.SRWLOptCryst( _d_sp=v.op_Crystal_d_sp, _psi0r=v.op_Crystal_psi0r, _psi0i=v.op_Crystal_psi0i, _psi_hr=v.op_Crystal_psiHr, _psi_hi=v.op_Crystal_psiHi, _psi_hbr=v.op_Crystal_psiHBr, _psi_hbi=v.op_Crystal_psiHBi, _tc=v.op_Crystal_tc, _ang_as=v.op_Crystal_ang_as, ) crystal.set_orient( _nvx=v.op_Crystal_nvx, _nvy=v.op_Crystal_nvy, _nvz=v.op_Crystal_nvz, _tvx=v.op_Crystal_tvx, _tvy=v.op_Crystal_tvy, ) el.append(crystal) pp.append(v.op_Crystal_pp) elif el_name == 'Crystal_s2_on_2nd_crystal': # Crystal_s2_on_2nd_crystal: drift 140.1m el.append(srwlib.SRWLOptD( _L=v.op_Crystal_s2_on_2nd_crystal_L, )) pp.append(v.op_Crystal_s2_on_2nd_crystal_pp) elif el_name == 's2_on_2nd_crystal_Crystal2': # s2_on_2nd_crystal_Crystal2: drift 140.11788537m el.append(srwlib.SRWLOptD( _L=v.op_s2_on_2nd_crystal_Crystal2_L, )) pp.append(v.op_s2_on_2nd_crystal_Crystal2_pp) elif el_name == 'Crystal2': # Crystal2: crystal 140.11788538m crystal = srwlib.SRWLOptCryst( _d_sp=v.op_Crystal2_d_sp, _psi0r=v.op_Crystal2_psi0r, _psi0i=v.op_Crystal2_psi0i, _psi_hr=v.op_Crystal2_psiHr, _psi_hi=v.op_Crystal2_psiHi, _psi_hbr=v.op_Crystal2_psiHBr, _psi_hbi=v.op_Crystal2_psiHBi, _tc=v.op_Crystal2_tc, _ang_as=v.op_Crystal2_ang_as, ) crystal.set_orient( _nvx=v.op_Crystal2_nvx, _nvy=v.op_Crystal2_nvy, _nvz=v.op_Crystal2_nvz, _tvx=v.op_Crystal2_tvx, _tvy=v.op_Crystal2_tvy, ) el.append(crystal) pp.append(v.op_Crystal2_pp) elif el_name == 'Crystal2_s3_on_1st_mirror': # Crystal2_s3_on_1st_mirror: drift 140.11788538m el.append(srwlib.SRWLOptD( _L=v.op_Crystal2_s3_on_1st_mirror_L, )) pp.append(v.op_Crystal2_s3_on_1st_mirror_pp) elif el_name == 's3_on_1st_mirror_Elliptical_Cylinder': # s3_on_1st_mirror_Elliptical_Cylinder: drift 140.13788537m el.append(srwlib.SRWLOptD( _L=v.op_s3_on_1st_mirror_Elliptical_Cylinder_L, )) pp.append(v.op_s3_on_1st_mirror_Elliptical_Cylinder_pp) elif el_name == 'Elliptical_Cylinder': # Elliptical_Cylinder: ellipsoidMirror 140.13788538m el.append(srwlib.SRWLOptMirEl( _p=v.op_Elliptical_Cylinder_p, _q=v.op_Elliptical_Cylinder_q, _ang_graz=v.op_Elliptical_Cylinder_ang, _size_tang=v.op_Elliptical_Cylinder_size_tang, _size_sag=v.op_Elliptical_Cylinder_size_sag, _nvx=v.op_Elliptical_Cylinder_nvx, _nvy=v.op_Elliptical_Cylinder_nvy, _nvz=v.op_Elliptical_Cylinder_nvz, _tvx=v.op_Elliptical_Cylinder_tvx, _tvy=v.op_Elliptical_Cylinder_tvy, _x=v.op_Elliptical_Cylinder_x, _y=v.op_Elliptical_Cylinder_y, )) pp.append(v.op_Elliptical_Cylinder_pp) elif el_name == 'CRL_s4_on_slit': # CRL_s4_on_slit: drift 140.13788538m el.append(srwlib.SRWLOptD( _L=v.op_CRL_s4_on_slit_L, )) pp.append(v.op_CRL_s4_on_slit_pp) elif el_name == 's4_on_slit': # s4_on_slit: watch 140.437856138m pass elif el_name == 's4_on_slit_Aperture': # s4_on_slit_Aperture: drift 140.437856138m el.append(srwlib.SRWLOptD( _L=v.op_s4_on_slit_Aperture_L, )) pp.append(v.op_s4_on_slit_Aperture_pp) elif el_name == 'Aperture': # Aperture: aperture 140.437856138m el.append(srwlib.SRWLOptA( _shape=v.op_Aperture_shape, _ap_or_ob='a', _Dx=v.op_Aperture_Dx, _Dy=v.op_Aperture_Dy, _x=v.op_Aperture_x, _y=v.op_Aperture_y, )) pp.append(v.op_Aperture_pp) elif el_name == 'Aperture_s5_on_2nd_mirror': # Aperture_s5_on_2nd_mirror: drift 140.437856138m el.append(srwlib.SRWLOptD( _L=v.op_Aperture_s5_on_2nd_mirror_L, )) pp.append(v.op_Aperture_s5_on_2nd_mirror_pp) elif el_name == 's5_on_2nd_mirror': # s5_on_2nd_mirror: watch 140.737826895m pass elif el_name == 'Elliptical_Cylinder2': # Elliptical_Cylinder2: ellipsoidMirror 140.737826895m el.append(srwlib.SRWLOptMirEl( _p=v.op_Elliptical_Cylinder2_p, _q=v.op_Elliptical_Cylinder2_q, _ang_graz=v.op_Elliptical_Cylinder2_ang, _size_tang=v.op_Elliptical_Cylinder2_size_tang, _size_sag=v.op_Elliptical_Cylinder2_size_sag, _nvx=v.op_Elliptical_Cylinder2_nvx, _nvy=v.op_Elliptical_Cylinder2_nvy, _nvz=v.op_Elliptical_Cylinder2_nvz, _tvx=v.op_Elliptical_Cylinder2_tvx, _tvy=v.op_Elliptical_Cylinder2_tvy, _x=v.op_Elliptical_Cylinder2_x, _y=v.op_Elliptical_Cylinder2_y, )) pp.append(v.op_Elliptical_Cylinder2_pp) elif el_name == 'Elliptical_Cylinder2_CRL': # Elliptical_Cylinder2_CRL: drift 140.737826895m el.append(srwlib.SRWLOptD( _L=v.op_Elliptical_Cylinder2_CRL_L, )) pp.append(v.op_Elliptical_Cylinder2_CRL_pp) elif el_name == 'CRL_s6_on_3rd_crystal': # CRL_s6_on_3rd_crystal: drift 140.75m el.append(srwlib.SRWLOptD( _L=v.op_CRL_s6_on_3rd_crystal_L, )) pp.append(v.op_CRL_s6_on_3rd_crystal_pp) elif el_name == 's6_on_3rd_crystal': # s6_on_3rd_crystal: watch 140.757826895m pass elif el_name == 's6_on_3rd_crystal_Crystal3': # s6_on_3rd_crystal_Crystal3: drift 140.757826895m el.append(srwlib.SRWLOptD( _L=v.op_s6_on_3rd_crystal_Crystal3_L, )) pp.append(v.op_s6_on_3rd_crystal_Crystal3_pp) elif el_name == 'Crystal3': # Crystal3: crystal 140.757826895m crystal = srwlib.SRWLOptCryst( _d_sp=v.op_Crystal3_d_sp, _psi0r=v.op_Crystal3_psi0r, _psi0i=v.op_Crystal3_psi0i, _psi_hr=v.op_Crystal3_psiHr, _psi_hi=v.op_Crystal3_psiHi, _psi_hbr=v.op_Crystal3_psiHBr, _psi_hbi=v.op_Crystal3_psiHBi, _tc=v.op_Crystal3_tc, _ang_as=v.op_Crystal3_ang_as, ) crystal.set_orient( _nvx=v.op_Crystal3_nvx, _nvy=v.op_Crystal3_nvy, _nvz=v.op_Crystal3_nvz, _tvx=v.op_Crystal3_tvx, _tvy=v.op_Crystal3_tvy, ) el.append(crystal) pp.append(v.op_Crystal3_pp) elif el_name == 'Crystal3_s7_on_4th_crystal': # Crystal3_s7_on_4th_crystal: drift 140.757826895m el.append(srwlib.SRWLOptD( _L=v.op_Crystal3_s7_on_4th_crystal_L, )) pp.append(v.op_Crystal3_s7_on_4th_crystal_pp) elif el_name == 's7_on_4th_crystal': # s7_on_4th_crystal: watch 140.775712275m pass elif el_name == 'Crystal4': # Crystal4: crystal 140.775712275m crystal = srwlib.SRWLOptCryst( _d_sp=v.op_Crystal4_d_sp, _psi0r=v.op_Crystal4_psi0r, _psi0i=v.op_Crystal4_psi0i, _psi_hr=v.op_Crystal4_psiHr, _psi_hi=v.op_Crystal4_psiHi, _psi_hbr=v.op_Crystal4_psiHBr, _psi_hbi=v.op_Crystal4_psiHBi, _tc=v.op_Crystal4_tc, _ang_as=v.op_Crystal4_ang_as, ) crystal.set_orient( _nvx=v.op_Crystal4_nvx, _nvy=v.op_Crystal4_nvy, _nvz=v.op_Crystal4_nvz, _tvx=v.op_Crystal4_tvx, _tvy=v.op_Crystal4_tvy, ) el.append(crystal) pp.append(v.op_Crystal4_pp) elif el_name == 'Crystal4_on_detector': # Crystal4_on_detector: drift 140.775712275m el.append(srwlib.SRWLOptD( _L=v.op_Crystal4_on_detector_L, )) pp.append(v.op_Crystal4_on_detector_pp) elif el_name == 'on_detector': # on_detector: watch 150.0m pass pp.append(v.op_fin_pp) return srwlib.SRWLOptC(el, pp)
def set_optics(v=None): el = [] # ApM1: aperture 270.0m el.append(srwlib.SRWLOptA("r", "a", 0.01, 0.0009, 0.0, 0.0)) # M1: mirror 270.0m ifnMirror1 = "mirror2_1d.dat" if ifnMirror1: assert os.path.isfile( ifnMirror1 ), "Missing input file mirror2_1d.dat, required by M1 beamline element" hProfDataMirror1 = srwlib.srwl_uti_read_data_cols( ifnMirror1, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataMirror1, _dim="y", _ang=0.0018, _amp_coef=1.0, _size_x=0.0, _size_y=0.0)) el.append(srwlib.SRWLOptD(658.3)) # Watchpoint: watch 928.3m # ApKB: aperture 928.3m el.append(srwlib.SRWLOptA("r", "a", 0.0018, 0.0018, 0.0, 0.0)) # VFM: ellipsoidMirror 928.3m el.append( srwlib.SRWLOptMirEl(_p=928.3, _q=1.7, _ang_graz=0.0036, _size_tang=0.5, _size_sag=0.01, _nvx=0.0, _nvy=0.999993520007, _nvz=-0.00359999222401, _tvx=0.0, _tvy=-0.00359999222401, _x=0.0, _y=0.0)) ifnElMirror2 = "mirror2_1d.dat" if ifnElMirror2: assert os.path.isfile( ifnElMirror2 ), "Missing input file mirror2_1d.dat, required by VFM beamline element" hProfDataElMirror2 = srwlib.srwl_uti_read_data_cols( ifnElMirror2, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataElMirror2, _dim="y", _ang=0.0036, _amp_coef=1.0)) el.append(srwlib.SRWLOptD(0.6)) # HFM: ellipsoidMirror 928.9m el.append( srwlib.SRWLOptMirEl(_p=928.9, _q=1.1, _ang_graz=0.0036, _size_tang=0.5, _size_sag=0.01, _nvx=0.999993520007, _nvy=0.0, _nvz=-0.00359999222401, _tvx=-0.00359999222401, _tvy=0.0, _x=0.0, _y=0.0)) ifnElMirror3 = "mirror2_1d.dat" if ifnElMirror3: assert os.path.isfile( ifnElMirror3 ), "Missing input file mirror2_1d.dat, required by HFM beamline element" hProfDataElMirror3 = srwlib.srwl_uti_read_data_cols( ifnElMirror3, "\t", 0, 1) el.append( srwlib.srwl_opt_setup_surf_height_1d(hProfDataElMirror3, _dim="x", _ang=0.0036, _amp_coef=1.0)) el.append(srwlib.SRWLOptD(1.1)) # Sample: watch 930.0m pp = [] # ApM1 pp.append([ 0, 0, 1.0, 1, 0, 2.0, 5.0, 2.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # M1 if ifnMirror1: pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Watchpoint # ApKB pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # VFM pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) if ifnElMirror2: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # HFM pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) if ifnElMirror3: pp.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) pp.append([ 0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) # Sample # final post-propagation pp.append([ 0, 0, 1.0, 1, 0, 0.06, 3.0, 0.1, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]) return srwlib.SRWLOptC(el, pp)