-------------------------------------------------------------------------------
--                                                                           --
--                          Experiment Source Code                           --
--              Delta NMR Experiment & Machine Control Interface             --
--                                                                           --
--                     Copyright (c) 2005 JEOL Ltd                           --
--                            All Rights Reserved                            --
--                                                                           --
-------------------------------------------------------------------------------

header
    filename  			=> "hetcor_cpnoe_rinept_2d";
    sample_id 			=> "";
    comment   			=> "";
    process     		=> "1d_solid.list";
    include "header_solid";
end header;

instrument
    include "instrument_solid";
end instrument;

acquisition
	x_domain			=>	"Proton";
	x_offset			=>	5[ppm];
	x_sweep				=>	100[kHz];
	x_points			=>	1024;
	scans				=>	8;
	x_prescans			=>	0;
	mod_return			=>	2;

	y_domain			=>	"Carbon13";
	y_offset			=>	100[ppm];
	y_sweep				=>	250[ppm];
	y_points			=>	32;

	include "acquisition_solid";

	y_acq_time			=?	y_points / y_sweep;
	y_resolution			=?	1 / y_acq_time;
	y_dwell				=?	1 / y_sweep;

end acquisition;

pulse
	collect COMPLEX,OBS COMPLEX,IRR;
	initial_wait		=	10.0[ms];

	irr_domain       	= y_domain;
	irr_offset       	= y_offset;

Pulse_Setup	=? "-----------Setup hard pulses-----------";

        obs_width_90	=> x90;
        obs_width_180	=> x90*2;
        obs_amp_pulse	=> 100[%];

	irr_width_90	=> irr90;
	irr_width_180	=> irr90*2;
	irr_amp_pulse	=> 100[%];

CP1_Setup	=? "-----------Setup first cp-----------";

	obs_shape_cp        = "RAMP_cp";
	contact_time        => 2[ms], 0[us]->100[ms] : 10[us], help "contact time";
	obs_amp_cp          => 1[%], 0[%]->100[%] : 10[m%], help "CP amplitude of irr channel";
        obs_amp_grad        => 0[%], -100[%]->100[%] : 0.1[%], help "irr CP sweep range (-irr_amp_grad/2->+irr_amp_grad)";

	irr_shape_cp        = "RAMP_cp";
	irr_amp_cp          => 1[%], 0[%]->100[%] : 10[m%], help "amplitude of obs channel";
	irr_amp_grad        => 0[%], -100[%]->100[%] : 0.1[%], help "obs CP sweep range (-obs_amp_grad/2->+obs_amp_grad)";

CP2_Setup	=? "-----------Setup second cp-----------";

	obs_shape_cp2		= "RAMP_cp2";
	contact_time2        => 2[ms], 0[us]->100[ms] : 10[us], help "contact time";
	obs_amp_cp2          => obs_amp_cp, 0[%]->100[%] : 10[m%], help "CP amplitude of irr channel";
	obs_amp_grad2	    => -obs_amp_grad;

	irr_shape_cp2        = "RAMP_cp2";
	irr_amp_cp2          => irr_amp_cp, 0[%]->100[%] : 10[m%], help "amplitude of obs channel";
	irr_amp_grad2		=> -irr_amp_grad;

IRRdec_Setup	=? "-----------Setup IRR dec-----------";

	irr_noise	=> "WALTZ", ("CW","TPPM","WALTZ");
	when irr_noise /= "CW" do
		irr_width_nominal90	=> 25[us];
	end when;
	when irr_noise = "TPPM" do
		irr_phs_tppm        => 15[deg], help "decoupling sequence phase modulation";
	end when;
	irr_amp_dec	=>	10[%];
	irr_pwidth	=	if irr_noise = "CW" then 0[us]
				else irr_width_nominal90;

OBSdec_Setup	=? "-----------Setup OBS dec-----------";

    obs_noise           => "CW", ("CM", "CW", "SPINAL64", "SPINAL64_vp", "swfTPPM", "TPPM", "XiX","WALTZ"), help "decoupling sequence";
    obs_amp_dec         => 5[%], 0[%]->100[%] : 10[m%], help "amplitude of decoupling";
    when obs_noise /= "CW" and obs_noise /= "XIX" do
        obs_width_nominal90 => 5[us], help "modulation pulse width for decoupling";
    end when;
    when obs_noise = "CM" or obs_noise = "SPINAL64_vp" or obs_noise = "swfTPPM" or obs_noise = "TPPM" do
        obs_phs_tppm        => 15[deg], help "decoupling sequence phase modulation";
    end when;
    when obs_noise = "XiX" do
        obs_width_xix       => 5[us], help "XiX modulation pulse width: should be optimized around 1.85*tr";
    end when;
    obs_pwidth          =  if obs_noise = "CW"
                           then 0[us]
                           else if obs_noise = "XiX"
                           then obs_width_xix
                           else obs_width_nominal90;

HORROR_Setup	=? "-----------Setup HORROR-----------";

	tau_total				=> 100[ms];
	tau_rr					= tau_total/4;
	obs_amp_rr				=> 10[%];

INEPTR_Setup	=? "-----------INEPTR-----------";
	tau1			=>	100[us];
	tau2			=>	100[us];

IRRdec2_Setup	=? "-----------Setup IRR dec2-----------";

	irr_amp_cwdec	=>	10[%];

MISC_Setup	=? "-----------Setup Miscellaneous-----------";

	t1		=> 0[us];
	tau_noe		=> 0.1[s];
	z_filter	=> 1[ms];

	relaxation_delay	=> 5.0[s], help"inter-pulse delay";
	repetition_time		=?	relaxation_delay + x_acq_time,				help "relaxation_delay+x_acq_time";

	obs_atn				=>	xatn,										help "attenuator of obs";
	irr_atn				=>	irratn,										help "attenuator of irr";

	obs_phs_rd_rfdr		=	{  0};


	obs_phs_prep		=	{270};
	irr_phs_prep		=	{ 90};
	obs_phs_cp1		    =	{  0};
	irr_phs_cp1		    =	{  0};
	irr_phs_store		=	{270};

	obs_phs_rrx	    	=	{  0};
	obs_phs_rry		    =	{ 90};

	irr_phs_restore		=	{{  0,180},{ 90,270}}.ystep(180%2);
	obs_phs_dec	    	=	{  0};

	obs_phs_cp2		    =	{  0};
	irr_phs_cp2	    	=	{ 90};

	irr_phs_cw		    =	{ 90};
     obs_phs_acq		    =	{  0,180}.ystep(180%2);

	irr_phs_store2		=	{180};

	irr_phs_inept90_1	=	{16(  0),16(180)};
	obs_phs_inept180_1	=	{2(  0),2(180)};
	irr_phs_inept180_1	=	{2(  0),2(180)};
	obs_phs_inept90_2	=	{8(  0),8( 90),8(180),8(270)};
	irr_phs_inept90_2	=	{4( 90),4(270)};
	obs_phs_inept180_2	=	{2(2(  0),2(180)),2(2( 90),2(270))};
	irr_phs_inept180_2	=	{2(  0),2(180)};

	irr_phs_dec		=	{  0};
	obs_phs_acq2		=	{2(  0,180),2(180,  0),2( 90,270),2(270, 90)}.ystep(180%2);

	include "pulse_solid";

	module_config = "solid_sample continuous_fid";

begin
    initial_wait;
    relaxation_delay;

parallel
justify trailing
	obs_width_90,	(obs.gate,	obs.phs.obs_phs_prep,	obs.amp.obs_amp_pulse,	obs.atn.obs_atn);
justify trailing
	irr_width_90,	(irr.gate,	irr.phs.irr_phs_prep,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);
end parallel;

	contact_time, (obs.GATE, obs.PHS.obs_phs_cp1, obs.shape.{obs_shape_cp,"obs"}, obs.ATN.obs_atn,
		       irr.GATE, irr.PHS.irr_phs_cp1, irr.SHAPE.{irr_shape_cp,"irr"}, irr.ATN.irr_atn);
	irr_width_90,	(irr.gate,	irr.phs.irr_phs_store,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);

	tau_rr,	(obs.gate,	obs.phs.obs_phs_rrx,	obs.amp.obs_amp_rr,	obs.atn.obs_atn);
	tau_rr,	(obs.gate,	obs.phs.obs_phs_rry,	obs.amp.obs_amp_rr,	obs.atn.obs_atn);
	tau_rr,	(obs.gate,	obs.phs.obs_phs_rrx,	obs.amp.obs_amp_rr,	obs.atn.obs_atn);
	tau_rr,	(obs.gate,	obs.phs.obs_phs_rry,	obs.amp.obs_amp_rr,	obs.atn.obs_atn);

	irr_width_90,	(irr.gate,	irr.phs.irr_phs_restore,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);

	t1 ystep 1/y_sweep, (obs.GATE, obs.PHS.obs_phs_dec, obs.AMP.obs_amp_dec, obs.ATN.obs_atn, obs.noise.obs_noise);

	contact_time2, (obs.GATE, obs.PHS.obs_phs_cp2, obs.shape.{obs_shape_cp2, "obs"}, obs.ATN.obs_atn,
			irr.GATE, irr.PHS.irr_phs_cp2, irr.SHAPE.{irr_shape_cp2, "irr"}, irr.ATN.irr_atn);

	on(irr.GATE, irr.PHS.irr_phs_cw, irr.AMP.irr_amp_cwdec, irr.ATN.irr_atn);
	acq( dead_time, delay, obs_phs_acq );
	off(irr.GATE, irr.PHS.irr_phs_cw, irr.AMP.irr_amp_cwdec, irr.ATN.irr_atn);

	irr_width_90,	(irr.gate,	irr.phs.irr_phs_store2,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);
	z_filter;
	irr_width_90,	(irr.gate,	irr.phs.irr_phs_inept90_1,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);

	tau1;

parallel
justify center
	obs_width_180,	(obs.gate,	obs.phs.obs_phs_inept180_1,	obs.amp.obs_amp_pulse,	obs.atn.obs_atn);
justify center
	irr_width_180,	(irr.gate,	irr.phs.irr_phs_inept180_1,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);
end parallel;

	tau1;

parallel
justify center
	obs_width_90,	(obs.gate,	obs.phs.obs_phs_inept90_2,	obs.amp.obs_amp_pulse,	obs.atn.obs_atn);
justify center
	irr_width_90,	(irr.gate,	irr.phs.irr_phs_inept90_2,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);
end parallel;

	tau2;

parallel
justify center
	obs_width_180,	(obs.gate,	obs.phs.obs_phs_inept180_2,	obs.amp.obs_amp_pulse,	obs.atn.obs_atn);
justify center
	irr_width_180,	(irr.gate,	irr.phs.irr_phs_inept180_2,	irr.amp.irr_amp_pulse,	irr.atn.irr_atn);
end parallel;

	tau2;

	on(irr.GATE, irr.PHS.irr_phs_dec, irr.AMP.irr_amp_dec, irr.ATN.irr_atn, irr.NOISE.irr_noise);
	acq( dead_time, delay, obs_phs_acq2 );
	off(irr.GATE, irr.PHS.irr_phs_dec, irr.AMP.irr_amp_dec, irr.ATN.irr_atn, irr.NOISE.irr_noise);

end pulse;