Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #15
0
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)