Ejemplo n.º 1
0
 def setup(self):
     super(BC11Section, self).setup()
     aperature = srwlib.SRWLOptA('c', 'a', self.detector_edge_length, 0, 0,
                                 0)
     aperature_params = [0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0]
     lens = srwlib.SRWLOptL(self.focal_length, self.focal_length)
     lens_params = [0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0]
     drift = srwlib.SRWLOptD(self.focal_length)
     drift_params = [0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0]
     self.__optics = srwlib.SRWLOptC(
         [aperature, lens, drift],
         [aperature_params, lens_params, drift_params])
Ejemplo n.º 2
0
def set_optics(v=None):
    el = []
    el.append(srwlib.SRWLOptA("r", "a", 0.0002, 0.001, 0.0, 0.0))
    el.append(srwlib.SRWLOptD(6.9))
    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.0031415926, _amp_coef=1.0, _size_x=0.00094, _size_y=0.001))
    el.append(srwlib.SRWLOptD(2.5))
    el.append(srwlib.SRWLOptA("r", "a", 0.0002, 0.001, 0.0, 0.0))
    el.append(srwlib.SRWLOptD(4.4))
    el.append(srwlib.SRWLOptA("r", "a", 5e-05, 0.001, 0.0, 0.0))
    el.append(srwlib.SRWLOptD(1.1))
    el.append(srwlib.srwl_opt_setup_CRL(2, 4.20756805e-06, 0.00731294, 1, 0.001, 0.0024, 0.0015, 1, 8e-05, 0, 0))
    el.append(srwlib.srwl_opt_setup_CRL(2, 4.20756805e-06, 0.00731294, 1, 0.001, 0.0014, 0.0005, 6, 8e-05, 0, 0))
    el.append(srwlib.SRWLOptD(9.1))
    el.append(srwlib.SRWLOptA("r", "a", 0.0014, 0.0002, 0.0, 0.0))
    el.append(srwlib.SRWLOptL(3.24479, 1e+23, 0.0, 0.0))
    el.append(srwlib.SRWLOptD(3.5))
    el.append(srwlib.SRWLOptA("r", "a", 1e-05, 1e-05, 0.0, 0.0))
    el.append(srwlib.SRWLOptD(0.7))

    pp = []
    pp.append([0, 0, 1.0, 0, 0, 2.5, 5.0, 1.5, 2.5])

    pp.append([0, 0, 1.0, 1, 0, 1.0, 1.0, 1.0, 1.0])
    if ifnMirror1:
        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, 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, 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, 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, 0, 0, 0.3, 2.0, 0.5, 1.0])

    return srwlib.SRWLOptC(el, pp)
Ejemplo n.º 3
0
        def _createABCDbeamline(A, B, C, D):
            """
            #Use decomposition of ABCD matrix into kick-drift-kick Pei-Huang 2017 (https://arxiv.org/abs/1709.06222)
            #Construct corresponding SRW beamline container object
            #A,B,C,D are 2x2 matrix components.
            """

            f1 = B / (1 - A)
            L = B
            f2 = B / (1 - D)

            optLens1 = srwlib.SRWLOptL(f1, f1)
            optDrift = srwlib.SRWLOptD(L)
            optLens2 = srwlib.SRWLOptL(f2, f2)

            propagParLens1 = [0, 0, 1., 0, 0, 1, 1, 1, 1, 0, 0, 0]
            propagParDrift = [0, 0, 1., 0, 0, 1, 1, 1, 1, 0, 0, 0]
            propagParLens2 = [0, 0, 1., 0, 0, 1, 1, 1, 1, 0, 0, 0]

            return srwlib.SRWLOptC(
                [optLens1, optDrift, optLens2],
                [propagParLens1, propagParDrift, propagParLens2])
Ejemplo n.º 4
0
 def __init__(self, f):
     self.length = 0
     self._srwc = srwlib.SRWLOptC(
         [srwlib.SRWLOptL(f, f)],
         [[0, 0, 1., 0, 0, 1., 1., 1., 1., 0, 0, 0]])
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)