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 srw_end_bl_call(): el2 = [] el2.append(srwlib.SRWLOptA("r", "a", 50000.0, 50000.0, 0.0, 0.0)) opMask = setup_mask() el2.append(srwlib.SRWLOptD(1e-32)) el2.append(opMask) el2.append(srwlib.SRWLOptD(0.2)) pp2 = [] pp2.append([0, 0, 1.0, 1, 0, 1, 1, 1, 1]) pp2.append([0, 0, 1.0, 1, 0, xRatio, 1 / xRatio, xRatio, 1 / yRatio]) pp2.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) #mask pp2.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0]) pp2.append([0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 1.0]) op2 = deepcopy(srwlib.SRWLOptC(el2, pp2)) int_ws2 = propogation(op2) mesh_ws2 = deepcopy(wfr2.mesh) print('.....', mesh_ws2.xStart, mesh_ws2.ny, '......') up.uti_plot2d1d( int_ws2, [mesh_ws2.xStart, mesh_ws2.xFin, mesh_ws2.nx], [mesh_ws2.yStart, mesh_ws2.yFin, mesh_ws2.ny], 0, 0, ['Horizontal Position', 'Vertical Position', ' After Propagation'], ['m', 'm', 'ph/s/.1%bw/mm^2'], True) up.uti_plot_show()
def set_optics(v=None): el = [] # Aperture: aperture 33.1798m el.append(srwlib.SRWLOptA("r", "a", 0.00025, 0.00025, 0.0, 0.0)) el.append(srwlib.SRWLOptD(11.8202)) # Watchpoint: watch 45.0m pp = [] # Aperture 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 # 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 = [] pp = [] names = ['S0', 'S0_HDM', 'HDM', 'HDM_S1', 'S1', 'S1_S2', 'S2', 'S2_CRL1', 'CRL1', 'CRL2', 'CRL2_KLA', 'KLA', 'KL', 'KL_S3', 'S3', 'S3_Sample', 'Sample'] for el_name in names: if el_name == 'S0': # S0: aperture 20.5m 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_HDM': # S0_HDM: drift 20.5m el.append(srwlib.SRWLOptD( _L=v.op_S0_HDM_L, )) pp.append(v.op_S0_HDM_pp) elif el_name == 'HDM': # HDM: mirror 27.4m mirror_file = v.op_HDM_hfn assert os.path.isfile(mirror_file), \ 'Missing input file {}, required by HDM 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_HDM_dim, _ang=v.op_HDM_ang, _amp_coef=v.op_HDM_amp_coef, _size_x=v.op_HDM_size_x, _size_y=v.op_HDM_size_y, )) pp.append(v.op_HDM_pp) elif el_name == 'HDM_S1': # HDM_S1: drift 27.4m el.append(srwlib.SRWLOptD( _L=v.op_HDM_S1_L, )) pp.append(v.op_HDM_S1_pp) elif el_name == 'S1': # S1: aperture 29.9m 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_S2': # S1_S2: drift 29.9m el.append(srwlib.SRWLOptD( _L=v.op_S1_S2_L, )) pp.append(v.op_S1_S2_pp) elif el_name == 'S2': # S2: aperture 34.3m el.append(srwlib.SRWLOptA( _shape=v.op_S2_shape, _ap_or_ob='a', _Dx=v.op_S2_Dx, _Dy=v.op_S2_Dy, _x=v.op_S2_x, _y=v.op_S2_y, )) pp.append(v.op_S2_pp) elif el_name == 'S2_CRL1': # S2_CRL1: drift 34.3m el.append(srwlib.SRWLOptD( _L=v.op_S2_CRL1_L, )) pp.append(v.op_S2_CRL1_pp) elif el_name == 'CRL1': # CRL1: crl 35.4m el.append(srwlib.srwl_opt_setup_CRL( _foc_plane=v.op_CRL1_foc_plane, _delta=v.op_CRL1_delta, _atten_len=v.op_CRL1_atten_len, _shape=v.op_CRL1_shape, _apert_h=v.op_CRL1_apert_h, _apert_v=v.op_CRL1_apert_v, _r_min=v.op_CRL1_r_min, _n=v.op_CRL1_n, _wall_thick=v.op_CRL1_wall_thick, _xc=v.op_CRL1_x, _yc=v.op_CRL1_y, )) pp.append(v.op_CRL1_pp) elif el_name == 'CRL2': # CRL2: crl 35.4m el.append(srwlib.srwl_opt_setup_CRL( _foc_plane=v.op_CRL2_foc_plane, _delta=v.op_CRL2_delta, _atten_len=v.op_CRL2_atten_len, _shape=v.op_CRL2_shape, _apert_h=v.op_CRL2_apert_h, _apert_v=v.op_CRL2_apert_v, _r_min=v.op_CRL2_r_min, _n=v.op_CRL2_n, _wall_thick=v.op_CRL2_wall_thick, _xc=v.op_CRL2_x, _yc=v.op_CRL2_y, )) pp.append(v.op_CRL2_pp) elif el_name == 'CRL2_KLA': # CRL2_KLA: drift 35.4m el.append(srwlib.SRWLOptD( _L=v.op_CRL2_KLA_L, )) pp.append(v.op_CRL2_KLA_pp) elif el_name == 'KLA': # KLA: aperture 44.5m el.append(srwlib.SRWLOptA( _shape=v.op_KLA_shape, _ap_or_ob='a', _Dx=v.op_KLA_Dx, _Dy=v.op_KLA_Dy, _x=v.op_KLA_x, _y=v.op_KLA_y, )) pp.append(v.op_KLA_pp) elif el_name == 'KL': # KL: lens 44.5m el.append(srwlib.SRWLOptL( _Fx=v.op_KL_Fx, _Fy=v.op_KL_Fy, _x=v.op_KL_x, _y=v.op_KL_y, )) pp.append(v.op_KL_pp) elif el_name == 'KL_S3': # KL_S3: drift 44.5m el.append(srwlib.SRWLOptD( _L=v.op_KL_S3_L, )) pp.append(v.op_KL_S3_pp) elif el_name == 'S3': # S3: aperture 48.0m el.append(srwlib.SRWLOptA( _shape=v.op_S3_shape, _ap_or_ob='a', _Dx=v.op_S3_Dx, _Dy=v.op_S3_Dy, _x=v.op_S3_x, _y=v.op_S3_y, )) pp.append(v.op_S3_pp) elif el_name == 'S3_Sample': # S3_Sample: drift 48.0m el.append(srwlib.SRWLOptD( _L=v.op_S3_Sample_L, )) pp.append(v.op_S3_Sample_pp) elif el_name == 'Sample': # Sample: watch 48.7m 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 == 'S1': # S1: aperture 26.62m 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_HCM': # S1_HCM: drift 26.62m el.append(srwlib.SRWLOptD(_L=v.op_S1_HCM_L, )) pp.append(v.op_S1_HCM_pp) elif el_name == 'HCM': # HCM: sphericalMirror 28.35m el.append( srwlib.SRWLOptMirSph( _r=v.op_HCM_r, _size_tang=v.op_HCM_size_tang, _size_sag=v.op_HCM_size_sag, _nvx=v.op_HCM_nvx, _nvy=v.op_HCM_nvy, _nvz=v.op_HCM_nvz, _tvx=v.op_HCM_tvx, _tvy=v.op_HCM_tvy, _x=v.op_HCM_x, _y=v.op_HCM_y, )) pp.append(v.op_HCM_pp) elif el_name == 'HCM_DCM_C1': # HCM_DCM_C1: drift 28.35m el.append(srwlib.SRWLOptD(_L=v.op_HCM_DCM_C1_L, )) pp.append(v.op_HCM_DCM_C1_pp) elif el_name == 'DCM_C1': # DCM_C1: crystal 30.42m 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 30.42m 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_HFM': # DCM_C2_HFM: drift 30.42m el.append(srwlib.SRWLOptD(_L=v.op_DCM_C2_HFM_L, )) pp.append(v.op_DCM_C2_HFM_pp) elif el_name == 'HFM': # HFM: sphericalMirror 32.64m 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 == 'After_HFM': # After_HFM: watch 32.64m pass elif el_name == 'After_HFM_CRL1': # After_HFM_CRL1: drift 32.64m el.append(srwlib.SRWLOptD(_L=v.op_After_HFM_CRL1_L, )) pp.append(v.op_After_HFM_CRL1_pp) elif el_name == 'CRL1': # CRL1: crl 34.15m el.append( srwlib.srwl_opt_setup_CRL( _foc_plane=v.op_CRL1_foc_plane, _delta=v.op_CRL1_delta, _atten_len=v.op_CRL1_atten_len, _shape=v.op_CRL1_shape, _apert_h=v.op_CRL1_apert_h, _apert_v=v.op_CRL1_apert_v, _r_min=v.op_CRL1_r_min, _n=v.op_CRL1_n, _wall_thick=v.op_CRL1_wall_thick, _xc=v.op_CRL1_x, _yc=v.op_CRL1_y, )) pp.append(v.op_CRL1_pp) elif el_name == 'CRL2': # CRL2: crl 34.15m el.append( srwlib.srwl_opt_setup_CRL( _foc_plane=v.op_CRL2_foc_plane, _delta=v.op_CRL2_delta, _atten_len=v.op_CRL2_atten_len, _shape=v.op_CRL2_shape, _apert_h=v.op_CRL2_apert_h, _apert_v=v.op_CRL2_apert_v, _r_min=v.op_CRL2_r_min, _n=v.op_CRL2_n, _wall_thick=v.op_CRL2_wall_thick, _xc=v.op_CRL2_x, _yc=v.op_CRL2_y, )) pp.append(v.op_CRL2_pp) elif el_name == 'CRL2_Before_SSA': # CRL2_Before_SSA: drift 34.15m el.append(srwlib.SRWLOptD(_L=v.op_CRL2_Before_SSA_L, )) pp.append(v.op_CRL2_Before_SSA_pp) elif el_name == 'Before_SSA': # Before_SSA: watch 94.5m pass elif el_name == 'SSA': # SSA: aperture 94.5m 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_Before_FFO': # SSA_Before_FFO: drift 94.5m el.append(srwlib.SRWLOptD(_L=v.op_SSA_Before_FFO_L, )) pp.append(v.op_SSA_Before_FFO_pp) elif el_name == 'Before_FFO': # Before_FFO: watch 109.0m pass elif el_name == 'AFFO': # AFFO: aperture 109.0m el.append( srwlib.SRWLOptA( _shape=v.op_AFFO_shape, _ap_or_ob='a', _Dx=v.op_AFFO_Dx, _Dy=v.op_AFFO_Dy, _x=v.op_AFFO_x, _y=v.op_AFFO_y, )) pp.append(v.op_AFFO_pp) elif el_name == 'FFO': # FFO: lens 109.0m el.append( srwlib.SRWLOptL( _Fx=v.op_FFO_Fx, _Fy=v.op_FFO_Fy, _x=v.op_FFO_x, _y=v.op_FFO_y, )) pp.append(v.op_FFO_pp) elif el_name == 'FFO_At_Sample': # FFO_At_Sample: drift 109.0m el.append(srwlib.SRWLOptD(_L=v.op_FFO_At_Sample_L, )) pp.append(v.op_FFO_At_Sample_pp) elif el_name == 'At_Sample': # At_Sample: watch 109.018163m 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 = [] pp = [] names = [ 'Crystal', 'Crystal_s2_on_2nd_crystal', 's2_on_2nd_crystal_Crystal2', 'Crystal2', 'Crystal2_s3_on_1st_mirror', 's3_on_1st_mirror', 's3_on_1st_mirror_Elliptical_Cylinder', 'CRL', 'CRL_s4_on_slit', 's4_on_slit', 's4_on_slit_Aperture', 'Aperture', 'Aperture_s5_on_2nd_mirror', 's5_on_2nd_mirror', 'CRL2', 'CRL2_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': # s3_on_1st_mirror: watch 140.13788537m pass 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 == 'CRL': # CRL: crl 140.13788538m el.append( srwlib.srwl_opt_setup_CRL( _foc_plane=v.op_CRL_foc_plane, _delta=v.op_CRL_delta, _atten_len=v.op_CRL_atten_len, _shape=v.op_CRL_shape, _apert_h=v.op_CRL_apert_h, _apert_v=v.op_CRL_apert_v, _r_min=v.op_CRL_r_min, _n=v.op_CRL_n, _wall_thick=v.op_CRL_wall_thick, _xc=v.op_CRL_x, _yc=v.op_CRL_y, )) pp.append(v.op_CRL_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 == 'CRL2': # CRL2: crl 140.737826895m el.append( srwlib.srwl_opt_setup_CRL( _foc_plane=v.op_CRL2_foc_plane, _delta=v.op_CRL2_delta, _atten_len=v.op_CRL2_atten_len, _shape=v.op_CRL2_shape, _apert_h=v.op_CRL2_apert_h, _apert_v=v.op_CRL2_apert_v, _r_min=v.op_CRL2_r_min, _n=v.op_CRL2_n, _wall_thick=v.op_CRL2_wall_thick, _xc=v.op_CRL2_x, _yc=v.op_CRL2_y, )) pp.append(v.op_CRL2_pp) elif el_name == 'CRL2_s6_on_3rd_crystal': # CRL2_s6_on_3rd_crystal: drift 140.737826895m el.append(srwlib.SRWLOptD(_L=v.op_CRL2_s6_on_3rd_crystal_L, )) pp.append(v.op_CRL2_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 = [] # 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 = [] # S0: aperture 20.5m el.append(srwlib.SRWLOptA("r", "a", 0.0002, 0.001, 0.0, 0.0)) el.append(srwlib.SRWLOptD(6.9)) # HDM: mirror 27.4m ifnMirror1 = "mirror_1d.dat" if ifnMirror1: assert os.path.isfile(ifnMirror1), "Missing input file mirror_1d.dat, required by HDM 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.0031415926, _amp_coef=1.0, _size_x=0.00094, _size_y=0.001)) el.append(srwlib.SRWLOptD(2.5)) # S1: aperture 29.9m el.append(srwlib.SRWLOptA("r", "a", 0.0002, 0.001, 0.0, 0.0)) el.append(srwlib.SRWLOptD(4.4)) # S2: aperture 34.3m el.append(srwlib.SRWLOptA("r", "a", 5e-05, 0.001, 0.0, 0.0)) el.append(srwlib.SRWLOptD(1.1)) # CRL1: crl 35.4m el.append(srwlib.srwl_opt_setup_CRL(2, 4.207568e-06, 0.007313, 1, 0.001, 0.0024, 0.0015, 1, 8e-05, 0.0, 0.0)) # CRL2: crl 35.4m el.append(srwlib.srwl_opt_setup_CRL(2, 4.207568e-06, 0.007313, 1, 0.001, 0.0014, 0.0005, 6, 8e-05, 0.0, 0.0)) el.append(srwlib.SRWLOptD(9.1)) # KLA: aperture 44.5m el.append(srwlib.SRWLOptA("r", "a", 0.0014, 0.0002, 0.0, 0.0)) # KL: lens 44.5m el.append(srwlib.SRWLOptL(3.24479, 1e+23, 0.0, 0.0)) el.append(srwlib.SRWLOptD(3.5)) # S3: aperture 48.0m el.append(srwlib.SRWLOptA("r", "a", 1e-05, 1e-05, 0.0, 0.0)) el.append(srwlib.SRWLOptD(0.7)) # Sample: watch 48.7m pp = [] # S0 pp.append([0, 0, 1.0, 0, 0, 2.5, 5.0, 1.5, 2.5, 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]) # HDM 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, 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]) # 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]) # S2 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]) # CRL1 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]) # CRL2 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]) # KLA 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]) # KL 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]) # S3 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, 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]) # Sample # final post-propagation pp.append([0, 0, 1.0, 0, 0, 0.3, 2.0, 0.5, 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 = [] pp = [] names = [ 'Fixed_Mask', 'Fixed_Mask_Ap_M1', 'Ap_M1', 'M1', 'M1_M2', 'M2', 'M2_Before_Grating', 'Before_Grating', 'Grating', 'Gr_Surf_Height_Err_Before_M3', 'Before_M3', 'M3', 'Lens_Before_Exit_Slit', 'Before_Exit_Slit', 'Exit_Slit', 'After_Exit_Slit', 'After_Exit_Slit_Before_ZP', 'Before_ZP', 'Ap_ZP', 'Zone_Plate', 'After_ZP', 'After_ZP_Watchpoint', 'Watchpoint' ] for el_name in names: if el_name == 'Fixed_Mask': # Fixed_Mask: aperture 20.0m 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 20.0m 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.75m 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: toroidalMirror 27.75m el.append( srwlib.SRWLOptMirTor( _rt=v.op_M1_rt, _rs=v.op_M1_rs, _size_tang=v.op_M1_size_tang, _size_sag=v.op_M1_size_sag, _x=v.op_M1_horizontalPosition, _y=v.op_M1_verticalPosition, _ap_shape=v.op_M1_ap_shape, _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, )) pp.append(v.op_M1_pp) elif el_name == 'M1_M2': # M1_M2: drift 27.75m el.append(srwlib.SRWLOptD(_L=v.op_M1_M2_L, )) pp.append(v.op_M1_M2_pp) ## elif el_name == 'M2': ## # M2: mirror 33.75m ## 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 33.75m 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 34.25m pass elif el_name == 'Grating': # Grating: grating 34.25m 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 == 'Gr_Surf_Height_Err_Before_M3': # Gr_Surf_Height_Err_Before_M3: drift 34.25m el.append(srwlib.SRWLOptD( _L=v.op_Gr_Surf_Height_Err_Before_M3_L, )) pp.append(v.op_Gr_Surf_Height_Err_Before_M3_pp) elif el_name == 'Before_M3': # Before_M3: watch 36.75m pass elif el_name == 'M3': # M3: toroidalMirror 36.75m el.append( srwlib.SRWLOptMirTor( _rt=v.op_M3_rt, _rs=v.op_M3_rs, _size_tang=v.op_M3_size_tang, _size_sag=v.op_M3_size_sag, _x=v.op_M3_horizontalPosition, _y=v.op_M3_verticalPosition, _ap_shape=v.op_M3_ap_shape, _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, )) pp.append(v.op_M3_pp) elif el_name == 'Lens_Before_Exit_Slit': # Lens_Before_Exit_Slit: drift 36.75m el.append(srwlib.SRWLOptD(_L=v.op_Lens_Before_Exit_Slit_L, )) pp.append(v.op_Lens_Before_Exit_Slit_pp) elif el_name == 'Before_Exit_Slit': # Before_Exit_Slit: watch 51.75m pass elif el_name == 'Exit_Slit': # Exit_Slit: aperture 51.75m el.append( srwlib.SRWLOptA( _shape=v.op_Exit_Slit_shape, _ap_or_ob='a', _Dx=v.op_Exit_Slit_Dx, _Dy=v.op_Exit_Slit_Dy, _x=v.op_Exit_Slit_x, _y=v.op_Exit_Slit_y, )) pp.append(v.op_Exit_Slit_pp) elif el_name == 'After_Exit_Slit': # After_Exit_Slit: watch 51.75m pass elif el_name == 'After_Exit_Slit_Before_ZP': # After_Exit_Slit_Before_ZP: drift 51.75m el.append(srwlib.SRWLOptD(_L=v.op_After_Exit_Slit_Before_ZP_L, )) pp.append(v.op_After_Exit_Slit_Before_ZP_pp) elif el_name == 'Before_ZP': # Before_ZP: watch 56.75m pass elif el_name == 'Ap_ZP': # Ap_ZP: aperture 56.75m el.append( srwlib.SRWLOptA( _shape=v.op_Ap_ZP_shape, _ap_or_ob='a', _Dx=v.op_Ap_ZP_Dx, _Dy=v.op_Ap_ZP_Dy, _x=v.op_Ap_ZP_x, _y=v.op_Ap_ZP_y, )) pp.append(v.op_Ap_ZP_pp) elif el_name == 'Zone_Plate': # Zone_Plate: zonePlate 56.75m el.append( srwlib.SRWLOptZP( _nZones=v.op_Zone_Plate_nZones, _rn=v.op_Zone_Plate_rn, _thick=v.op_Zone_Plate_thick, _delta1=v.op_Zone_Plate_delta1, _atLen1=v.op_Zone_Plate_atLen1, _delta2=v.op_Zone_Plate_delta2, _atLen2=v.op_Zone_Plate_atLen2, _x=v.op_Zone_Plate_x, _y=v.op_Zone_Plate_y, )) pp.append(v.op_Zone_Plate_pp) elif el_name == 'After_ZP': # After_ZP: watch 56.75m pass elif el_name == 'After_ZP_Watchpoint': # After_ZP_Watchpoint: drift 56.75m el.append(srwlib.SRWLOptD(_L=v.op_After_ZP_Watchpoint_L, )) pp.append(v.op_After_ZP_Watchpoint_pp) elif el_name == 'Watchpoint': # Watchpoint: watch 56.753227m pass pp.append(v.op_fin_pp) #print(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)