-------------------------------------------------------------------------------
--                                                                           --
--                          Experiment Source Code                           --
--              Delta NMR Experiment & Machine Control Interface             --
--                                                                           --
--                     Copyright (c) 2000 JEOL Ltd                           --
--                            All Rights Reserved                            --
--                                                                           --
-------------------------------------------------------------------------------
-- HELP.eng: spin echo
-- Category: solids, spin echo, solids relaxation

header
	filename        => "BABA-TQ_3D";
	sample_id       => "";
	comment         => "BABA-TQ_2D";
    process   		=  "1d_solid.list";
	include "header_solid";
end header;

instrument
	include "instrument_solid";
end instrument;

acquisition
    x_domain     => "Proton";
    x_offset     => 7[ppm];
    x_sweep      => 100[kHz];
    x_points     => 2048;
    scans        => 60;
    x_prescans   => 6;
    mod_return   => 1;
    y_domain     =  x_domain;
    y_offset     =  x_offset * 3;
    y_sweep      => 70[kHz];
    y_dwell      =? 1 / y_sweep;
    y_points     => 16;
    z_domain     =  x_domain;
    z_offset     =  x_offset * 2;
    z_sweep      => 35[kHz];
    z_dwell      =? 1 / z_sweep;
    z_points     => 16;
    x_acq_time   =? x_points / x_sweep;
    x_resolution =? 1 / x_acq_time;
    x_dwell      =? 1 / x_sweep;
    y_acq_time   =? y_points / y_sweep;
    y_resolution =? 1 / y_acq_time;

end acquisition;

pulse
    collect COMPLEX,OBS COMPLEX COMPLEX;

    macro baba_exc( number_baba, obs_width_baba, obs_phs_exc, obs_amp_pulse, obs_atn, tau_baba ) is
        loop number_baba times
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
        end loop;
    end baba_exc;

    macro baba_rec( number_baba, obs_width_baba, obs_phs_rec, obs_amp_pulse, obs_atn, tau_baba ) is
        loop number_baba times
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
            tau_baba;
            obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
        end loop;
    end baba_rec;

    macro obs_rdrfdr( number_rd_rfdr_m, relaxation_delay_rfdr, number_rd_rfdr, tau_rdrfdr, obs_width_rd_rfdr, obs_phs_rd_rfdr, obs_amp_rd_rfdr, obs_atn ) is
        loop number_rd_rfdr_m times
            relaxation_delay_rfdr;
            loop number_rd_rfdr times
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
                tau_rdrfdr;
                obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn);
                tau_rdrfdr;
            end loop;
        end loop;
        relaxation_delay_rfdr;
    end obs_rdrfdr;

    macro acq( dead_time, delay, phase ) is
        dead_time, OBS.PHS.0;
        delay, (OBS.PHS.0, RCV.GATE);
        acquire (OBS.PHS.0, RCV.PHS.phase);
    end acq;

    experiment            =  "BABA-TQ-DQ-SQ";
    initial_wait          =  10[ms];
    pulse_setup           =? "-----------Setup hard pulses---------------";
    obs_width_90          => 1.1[us], help "90deg pulse width";
    obs_width_2q          => 1.6[us], help "90deg pulse width";
    obs_amp_pulse         => 100[%];
    irr_domain            =  x_domain;
    irr_offset            =  x_offset;
    baba_setup            =? "-----------Setup BABA ------------------";
    obs_width_baba        => 0.65[us], help "90deg pulse width";
    number_baba           => 1, help "number of baba cycle";
    spinning_freq         => 70[kHz], help "spinning frequency";
    tau_baba              =  1 / spinning_freq / 2 - obs_width_baba * 2;
    baba_duration         =? 8 * (1 / spinning_freq) * number_baba;
    obs_width_baba2       => 0.65[us], help "90deg pulse width";
    number_baba2          => 1, help "number of baba cycle";
    tau_baba2             =  1 / spinning_freq / 2 - obs_width_baba2 * 2;
    baba_duration2        =? 8 * (1 / spinning_freq) * number_baba2;
    z_filter              => 1[ms];
    misc_setup            =? "----------Setup Miscellaneous ------------";
    relaxation_delay      => 1.2[s], help "inter-pulse delay";
    repetition_time       =? relaxation_delay + x_acq_time, help "relaxation_delay+x_acq_time";
    obs_rdrfdr_setup      =? "--------Setup obs rdrfdr------------------";
    rd_rfdr               => FALSE;
    when rd_rfdr do
        obs_width_rd_rfdr     => x90 * 2;
        obs_amp_rd_rfdr       => 100[%], 0[%]->100[%] : 0.01[%], help "set ampliper for x pulse";
        number_rd_rfdr        => 1;
        number_rd_rfdr_m      => 1;
        tau_rdrfdr            =  (1 / spinning_freq - obs_width_rd_rfdr) / 2;
    end when;
    relaxation_delay_rfdr =  relaxation_delay / (number_rd_rfdr_m + 1);
    obs_phs_rd_rfdr       =  {0};
    obs_atn               => 7[dB], help "attenuator for x pulse";
    obs_phs_exc           =  {0..300 : 60, 30..330 : 60, 0..300 : 60, 30..330 : 60}.ystep(60 % 2);
    obs_phs_2q            =  ({{4(0), 2(0), 4(36), 2(36), 4(72), 2(72), 4(108), 2(108), 4(144), 2(144), 4(180), 2(180), 4(216), 2(216), 4(252), 2(252), 4(288), 2(288), 4(324), 2(324)}, {4(0), 2(0), 4(36), 2(36), 4(72), 2(72), 4(108), 2(108), 4(144), 2(144), 4(180), 2(180), 4(216), 2(216), 4(252), 2(252), 4(288), 2(288), 4(324), 2(324)}, {4(18), 2(18), 4(54), 2(54), 4(90), 2(90), 4(126), 2(126), 4(162), 2(162), 4(198), 2(198), 4(234), 2(234), 4(270), 2(270), 4(306), 2(306), 4(342), 2(342)}, {4(18), 2(18), 4(54), 2(54), 4(90), 2(90), 4(126), 2(126), 4(162), 2(162), 4(198), 2(198), 4(234), 2(234), 4(270), 2(270), 4(306), 2(306), 4(342), 2(342)}}).zstep(36 % 2);
    obs_phs_rec           =  {128(0), 32(0), 16(0), 4(0), 128(90), 32(90), 16(90), 4(90), 128(180), 32(180), 16(180), 4(180), 128(270), 32(270), 16(270), 4(270)};
    obs_phs_restore       =  {32(0), 16(0), 8(0), 4(0), 32(120), 16(120), 8(120), 4(120), 32(240), 16(240), 8(240), 4(240)};
    obs_phs_acq           =  ({2(0, 180), 0, 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 0, 2(120, 300), 120, 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 120, 2(240, 60), 240, 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 240, 2(180, 0), 180, 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 180, 2(300, 120), 300, 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 300, 2(60, 240), 60, 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 60}).ystep(180 % 2).zstep(180 % 2);
    mas_frequency         =  mas_spin_get;
    dead_time             =  if not auto_dwell
                             then 0.5 / x_sweep
                             else 0[us];
    delay                 =  if not auto_dwell
                             then 0.5 / x_sweep
                             else 0[us];
    module_config         =  "solid_sample";
begin
    initial_wait;
    when rd_rfdr do
        obs_rdrfdr( number_rd_rfdr_m, relaxation_delay_rfdr, number_rd_rfdr, tau_rdrfdr, obs_width_rd_rfdr, obs_phs_rd_rfdr, obs_amp_rd_rfdr, obs_atn );
    end when;
    when not rd_rfdr do
        relaxation_delay;
    end when;
    obs_width_90, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
    baba_exc( number_baba, obs_width_baba, obs_phs_exc, obs_amp_pulse, obs_atn, tau_baba );
    0[us] ystep 1 / y_sweep;
    obs_width_2q, (OBS.GATE, OBS.PHS.obs_phs_2q, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
    1 / spinning_freq - obs_width_2q zstep 1 / z_sweep;
    baba_rec( number_baba2, obs_width_baba2, obs_phs_rec, obs_amp_pulse, obs_atn, tau_baba2 );
    z_filter;
    obs_width_90, (OBS.GATE, OBS.PHS.obs_phs_restore, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn);
    acq( dead_time, delay, obs_phs_acq );
end pulse;