pulsesequence() { double slpwrR = getval("slpwrR"), slpwR = getval("slpwR"), mixR = getval("mixR"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), selfrq = getval("selfrq"), gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), gzlvlzq1 = getval("gzlvlzq1"), phincr1 = getval("phincr1"); char selshapeA[MAXSTR],selshapeB[MAXSTR], slpatR[MAXSTR], zqfpat1[MAXSTR], alt_grd[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatR",slpatR); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat1",zqfpat1); getstr("alt_grd",alt_grd); if (strcmp(slpatR,"cw") && strcmp(slpatR,"troesy") && strcmp(slpatR,"dante")) abort_message("SpinLock pattern %s not supported!.\n", slpatR); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ assign(ct,v17); ifzero(ssctr); assign(v17,v13); elsenz(ssctr); /* purge option does not adjust v13 during steady state */ sub(ssval, ssctr, v13); endif(ssctr); /* Beginning phase cycling */ dbl(v13,v1); /* v1 = 0 2 */ hlv(v13,v13); dbl(v13,v20); /* v20 = 00 22 */ hlv(v13,v13); dbl(v13,v6); /* v6 = 0000 2222 */ hlv(v13,v13); dbl(v13,v7); /* v7 = 00000000 22222222 */ assign(v1,oph); if (getflag("Gzqfilt")) add(v7,oph,oph); /* CYCLOPS */ assign(v13,v14); /* v14 = 8x0 8x1 8x2 8x3 */ if (getflag("Gzqfilt")) hlv(v13,v14); /* v14 = 16x0 16x1 16x2 16x3 */ add(v1,v14,v1); add(v20,v14,v20); add(v6,v14,v6); add(v7,v14,v7); add(oph,v14,oph); /* add(oph,v18,oph); add(oph,v19,oph); */ assign(zero,v9); mod2(ct,v2); /* 01 01 */ hlv(ct,v11); hlv(v11,v11); mod2(v11,v11); dbl(v11,v11); /* 0000 2222 */ add(v11,v2,v11); mod4(v11,v11); /* 0101 2323 first echo in Excitation Sculpting */ hlv(ct,v4); mod2(v4,v4); /* 0011 */ hlv(ct,v12); hlv(v12,v12); hlv(v12,v12); dbl(v12,v12); add(v12,v4,v12); mod4(v12,v12); /* 0011 0011 2233 2233 second echo in Excitation Sculpting */ dbl(v2,v2); /* 0202 */ dbl(v4,v4); /* 0022 */ add(v2,v4,v4); /* 0220 correct oph for Excitation Sculpting */ add(oph,v4,oph); mod4(oph,oph); if (!strcmp(slpatR,"troesy")) assign(v20,v21); else add(v20,one,v21); if (alt_grd[0] == 'y') mod2(ct,v8); /* alternate gradient sign on even scans */ /* The following is for flipback pulse */ if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v5); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); ifzero(v8); zgradpulse(gzlvlA,gtA); elsenz(v8); zgradpulse(-gzlvlA,gtA); endif(v8); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v14,rof1,rof1); obspower(tpwr); ifzero(v8); zgradpulse(gzlvlA,gtA); elsenz(v8); zgradpulse(-gzlvlA,gtA); endif(v8); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); ifzero(v8); zgradpulse(gzlvlB,gtB); elsenz(v8); zgradpulse(-gzlvlB,gtB); endif(v8); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v6,rof1,rof1); obspower(slpwrR); ifzero(v8); zgradpulse(gzlvlB,gtB); elsenz(v8); zgradpulse(-gzlvlB,gtB); endif(v8); delay(gstab); if (selfrq != tof) obsoffset(tof); if (mixR > 0.0) { if (dps_flag) rgpulse(mixR,v21,0.0,0.0); else SpinLock(slpatR,mixR,slpwR,v21); } if (getflag("Gzqfilt")) { obspower(tpwr); rgpulse(pw,v7,rof1,rof1); ifzero(v8); zgradpulse(gzlvl1,gt1); elsenz(v8); zgradpulse(-gzlvl1,gt1); endif(v8); delay(gstab); obspower(zqfpwr1); ifzero(v8); rgradient('z',gzlvlzq1); elsenz(v8); rgradient('z',-gzlvlzq1); endif(v8); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); ifzero(v8); zgradpulse(-gzlvl2,gt2); elsenz(v8); zgradpulse(gzlvl2,gt2); endif(v8); obspower(tpwr); delay(gstab); if (getflag("flipback")) FlipBack(v14,v5); rgpulse(pw,v14,rof1,2.0e-6); } ExcitationSculpting(v11,v12,v8); delay(rof2); status(C); }
pulsesequence () { double gstab = getval("gstab"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gzlvlhs = getval("gzlvlhs"), wselpw = getval("wselpw"), wselpwr = getval("wselpwr"), mixN = getval("mixN"), prgtime = getval("prgtime"), prgpwr = getval("prgpwr"), phincr1 = getval("phincr1"); char wselshape[MAXSTR], sspul[MAXSTR],flipshape[MAXSTR], ESmode[MAXSTR], flipback[MAXSTR],prg_flg[MAXSTR],alt_grd[MAXSTR]; rof1 = getval("rof1"); if(rof1 > 2.0e-6) rof1 = 2.0e-6; getstr("wselshape", wselshape); getstr("flipshape", flipshape); getstr("prg_flg", prg_flg); getstr("alt_grd",alt_grd); if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v8); settable(t1,16,phi1); settable(t3,16,phi3); settable(t5,16,phi5); settable(t6,16,rec); settable(t9,16,phi9); sub(ct,ssctr,v12); getelem(t1,v12,v1); getelem(t3,v12,v3); getelem(t5,v12,v5); getelem(t9,v12,v9); getelem(t6,v12,oph); add(v1,one,v10); if (alt_grd[0] == 'y') mod2(ct,v6); /* alternate gradient sign on every 2nd transient */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ decpower(dpwr); obspower(tpwr); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); if (getflag("ESmode")) { rgpulse(pw,zero,rof1,rof1); ifzero(v6); zgradpulse(gzlvl1,gt1); elsenz(v6); zgradpulse(-1.0*gzlvl1,gt1); endif(v6); obspower(wselpwr); delay(gstab); shaped_pulse(wselshape,wselpw,v9,10.0e-6,rof1); ifzero(v6); zgradpulse(gzlvl1,gt1); elsenz(v6); zgradpulse(-1.0*gzlvl1,gt1); endif(v6); obspower(tpwr); delay(gstab); /* do mixing */ rgpulse(pw,zero,rof1,rof1); ifzero(v6); rgradient('z',gzlvlhs); /* make it compatible with cold probes */ elsenz(v6); rgradient('z',-1.0*gzlvlhs); endif(v6); delay(mixN); rgradient('z',0.0); delay(gstab); if (getflag("flipback")) FlipBack(v1,v8); rgpulse(pw,v1,rof1,rof1); ExcitationSculpting(v5,v3,v6); if (prg_flg[A] == 'y') /* optional purge pulse */ { obspower(prgpwr); add(v1,one,v1); rgpulse(prgtime,v1,rof1,rof2); } else delay(rof2); } else rgpulse(pw,v1,rof1,rof2); status(C); }
pulsesequence() { double prgtime = getval("prgtime"), prgpwr = getval("prgpwr"), phincr1 = getval("phincr1"); char sspul[MAXSTR],flipback[MAXSTR],ESmode[MAXSTR], prg_flg[MAXSTR],alt_grd[MAXSTR]; /* LOAD VARIABLES */ rof1 = getval("rof1"); if (rof1 > 2.0e-6) rof1=2.0e-6; getstr("sspul",sspul); getstr("flipback", flipback); getstr("prg_flg", prg_flg); getstr("alt_grd",alt_grd); getstr("ESmode",ESmode); if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v9); /* CALCULATE PHASECYCLE */ sub(ct,ssctr,v12); settable(t1,1,ph1); getelem(t1,v12,v1); settable(t2,16,ph2); getelem(t2,v12,v2); settable(t3,16,ph3); getelem(t3,v12,v3); settable(t4,4,ph4); getelem(t4,v12,v4); settable(t5,4,ph5); getelem(t5,v12,v5); settable(t6,16,phr); getelem(t6,v12,oph); if (alt_grd[0] == 'y') mod2(ct,v6); /* alternate gradient sign on every 2nd transient */ /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); if (getflag("ESmode")) { if (flipback[A] == 'y') FlipBack(v1,v9); /* water flipback pulse */ rgpulse(pw, v1, rof1, rof1); ExcitationSculpting(v2,v4,v6); if (prg_flg[A] == 'y') /* optional purge pulse */ { obspower(prgpwr); add(v1,one,v1); rgpulse(prgtime,v1,rof1,rof2); } else delay(rof2); } else rgpulse(pw,v1,rof1,rof2); status(C); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), trim = getval("trim"), mixT = getval("mixT"), gzlvlz = getval("gzlvlz"), gtz = getval("gtz"), flippw = getval("flippw"), phincr1 = getval("phincr1"); char slpatT[MAXSTR], alt_grd[MAXSTR], flipback[MAXSTR]; int phase1 = (int)(getval("phase")+0.5); /* LOAD AND INITIALIZE VARIABLES */ // (void) set_RS(0); /* set up random sampling */ getstr("slpatT",slpatT); getstr("flipback", flipback); getstr("alt_grd",alt_grd); /* alternate gradient sign on every 2nd transient */ if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); assign(ct,v17); initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); settable(t1,4,ph1); getelem(t1,v17,v6); settable(t2,4,ph2); getelem(t2,v17,v1); settable(t3,8,ph3); settable(t4,4,ph4); getelem(t4,v17,v13); settable(t5,4,ph5); getelem(t5,v17,v21); settable(t7,8,ph7); getelem(t7,v17,v7); settable(t8,4,ph8); getelem(t8,v17,v8); settable(t11,16,phs8); getelem(t11,v6,v3); /* 1st echo in ES */ settable(t12,16,phs9); getelem(t12,v6,v4); /* 2nd exho in ES */ settable(t13,4,rec_cor); getelem(t13,v6,v9); assign(v1,oph); if (getflag("zfilt")) getelem(t3,v17,oph); if (phase1 == 2) {incr(v1); } add(v1, v14, v1); add(v6, v14, v6); add(oph,v14,oph); add(oph,v9,oph); mod4(oph,oph); /* correct oph for Excitation Sculpting */ /* The following is for flipback pulse */ if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v10); if (alt_grd[0] == 'y') mod2(ct,v2); /* alternate gradient sign on even scans */ /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); rgpulse(pw, v1, rof1, rof1); obspower(slpwrT); txphase(v13); if (d2 > 0.0) delay(d2 - rof1 - POWER_DELAY - (2*pw/PI)); else delay(d2); if (mixT > 0.0) { rgpulse(trim,v13,0.0,0.0); if (dps_flag) rgpulse(mixT,v21,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v21); } if ((getflag("zfilt")) && (getflag("PFGflg"))) { obspower(tpwr); rgpulse(pw,v7,1.0e-6,rof1); ifzero(v2); zgradpulse(gzlvlz,gtz); elsenz(v2); zgradpulse(-gzlvlz,gtz); endif(v2); delay(gtz/3); if (getflag("flipback")) FlipBack(v8,v10); rgpulse(pw,v8,rof1,2.0e-6); } ExcitationSculpting(v3,v4,v2); delay(rof2); status(C); }
void pulsesequence() { double mixN = getval("mixN"), gzlvlC = getval("gzlvlC"), gtC = getval("gtC"), gstab = getval("gstab"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), selfrq = getval("selfrq"), zqfpw3 = getval("zqfpw3"), zqfpwr3 = getval("zqfpwr3"), gzlvlzq3 = getval("gzlvlzq3"), mixNcorr, fbcorr, phincr1 = getval("phincr1"), flippw = getval("flippw"), sweeppw = getval("sweeppw"), sweeppwr = getval("sweeppwr"); char sweepshp[MAXSTR],alt_grd[MAXSTR], selshapeA[MAXSTR],flipback[MAXSTR], selshapeB[MAXSTR],zqfpat3[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtC = syncGradTime("gtC","gzlvlC",1.0); gzlvlC = syncGradLvl("gtC","gzlvlC",1.0); gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("sweepshp",sweepshp); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat3",zqfpat3); getstr("flipback", flipback); getstr("alt_grd",alt_grd); /* alternate gradient sign on every 2nd transient */ if (flipback[A] == 'y') fbcorr = flippw + 2.0*rof1; else fbcorr = 0.0; /* correck for flipback if used */ if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v12); mixNcorr = fbcorr; if (getflag("Gzqfilt")) mixNcorr += zqfpw3 + 2.0*rof1 + 4.0e-4; mixN = mixN-mixNcorr; assign(ct,v17); hlv(v17,v1); hlv(v1,v1); hlv(v1,v1); hlv(v1,v1); mod4(v1,v1); mod4(v17,v2); add(v1,v2,v2); hlv(v17,v3); hlv(v3,v3); mod4(v3,v3); add(v1,v3,v3); dbl(v3,v4); dbl(v2,oph); add(oph,v4,oph); add(oph,v1,oph); mod2(ct,v5); /* 01 01 */ hlv(ct,v7); hlv(v7,v7); mod2(v7,v7); dbl(v7,v7); /* 0000 2222 */ add(v7,v5,v7); mod4(v7,v7); /* 0101 2323 first echo in Excitation Sculpting */ hlv(ct,v11); mod2(v11,v11); /* 0011 */ hlv(ct,v8); hlv(v8,v8); hlv(v8,v8); dbl(v8,v8); add(v8,v11,v8); mod4(v8,v8); /* 0011 0011 2233 2233 second echo in Excitation Sculpting */ dbl(v5,v5); /* 0202 */ dbl(v11,v11); /* 0022 */ add(v5,v11,v11); /* 0220 correct oph for Excitation Sculpting */ add(oph,v11,oph); mod4(oph,oph); if (alt_grd[0] == 'y') mod2(ct,v10); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); if (getflag("cpmgflg")) { rgpulse(pw, v1, rof1, 0.0); cpmg(v1, v15); } else rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); ifzero(v10); zgradpulse(gzlvlA,gtA); elsenz(v10); zgradpulse(-gzlvlA,gtA); endif(v10); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v2,rof1,rof1); obspower(tpwr); ifzero(v10); zgradpulse(gzlvlA,gtA); elsenz(v10); zgradpulse(-gzlvlA,gtA); endif(v10); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); ifzero(v10); zgradpulse(gzlvlB,gtB); elsenz(v10); zgradpulse(-gzlvlB,gtB); endif(v10); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v3,rof1,rof1); obspower(tpwr); ifzero(v10); zgradpulse(gzlvlB,gtB); elsenz(v10); zgradpulse(-gzlvlB,gtB); endif(v10); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw,v1,rof1,rof1); obspower(sweeppwr); delay(0.31*mixN); ifzero(v10); zgradpulse(gzlvlC,gtC); elsenz(v10); zgradpulse(-gzlvlC,gtC); endif(v10); delay(gstab); shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); ifzero(v10); zgradpulse(-gzlvlC,gtC); elsenz(v10); zgradpulse(gzlvlC,gtC); endif(v10); delay(0.49*mixN); ifzero(v10); zgradpulse(-gzlvlC,2.0*gtC); elsenz(v10); zgradpulse(gzlvlC,2.0*gtC); endif(v10); delay(gstab); if (getflag("Gzqfilt")) { obspower(zqfpwr3); ifzero(v10); rgradient('z',gzlvlzq3); elsenz(v10); rgradient('z',-gzlvlzq3); endif(v10); delay(100.0e-6); shaped_pulse(zqfpat3,zqfpw3,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); } else shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); ifzero(v10); zgradpulse(gzlvlC,2.0*gtC); elsenz(v10); zgradpulse(-gzlvlC,2.0*gtC); endif(v10); delay(0.2*mixN); obspower(tpwr); if (flipback[A] == 'y') FlipBack(v1,v12); rgpulse(pw,v1,rof1,2.0e-6); ExcitationSculpting(v7,v8,v10); delay(rof2); status(C); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), gstab = getval("gstab"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), selfrq = getval("selfrq"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), zqfpw2 = getval("zqfpw2"), zqfpwr2 = getval("zqfpwr2"), gzlvlzq1 = getval("gzlvlzq1"), gzlvlzq2 = getval("gzlvlzq2"), phincr1 = getval("phincr1"); char slpatT[MAXSTR], selshapeA[MAXSTR], selshapeB[MAXSTR], zqfpat1[MAXSTR], zqfpat2[MAXSTR], flipback[MAXSTR], alt_grd[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatT",slpatT); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat1",zqfpat1); getstr("zqfpat2",zqfpat2); getstr("flipback", flipback); getstr("alt_grd",alt_grd); /* alternate gradient sign on every 2nd transient */ if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ assign(ct,v17); ifzero(ssctr); assign(v17,v13); elsenz(ssctr); /* purge option does not adjust v13 during steady state*/ sub(ssval, ssctr, v13); /* v13 = 0,...,ss-1 */ endif(ssctr); mod4(v13,v1); /* v1 = 0 1 2 3 */ hlv(v13,v13); hlv(v13,v13); mod4(v13,v11); /* v11 = 0000 1111 2222 3333 */ dbl(v1,oph); add(v11,oph,oph); add(v11,oph,oph); /* oph = 2v1 + 2v11 */ /* CYCLOPS */ hlv(v13,v13); hlv(v13,v14); add(v1,v14,v1); add(v11,v14,v11); add(oph,v14,oph); assign(v14,v21); add(one,v21,v21); add(two,v21,v12); if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v5); mod2(ct,v2); /* 01 01 */ hlv(ct,v4); hlv(v4,v4); mod2(v4,v4); dbl(v4,v4); /* 0000 2222 */ add(v4,v2,v4); mod4(v4,v4); /* 0101 2323 first echo in Excitation Sculpting */ hlv(ct,v7); mod2(v7,v7); /* 0011 */ hlv(ct,v9); hlv(v9,v9); hlv(v9,v9); dbl(v9,v9); add(v9,v7,v9); mod4(v9,v9); /* 0011 0011 2233 2233 second echo in Excitation Sculpting */ dbl(v2,v2); /* 0202 */ dbl(v7,v7); /* 0022 */ add(v2,v7,v7); /* 0220 correct oph for Excitation Sculpting */ add(oph,v7,oph); mod4(oph,oph); if (alt_grd[0] == 'y') mod2(ct,v10); /* alternate gradient sign on every 2nd transient */ /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); rgpulse(pw, v14, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); ifzero(v10); zgradpulse(gzlvlA,gtA); elsenz(v10); zgradpulse(-gzlvlA,gtA); endif(v10); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v1,rof1,rof1); obspower(tpwr); ifzero(v10); zgradpulse(gzlvlA,gtA); elsenz(v10); zgradpulse(-gzlvlA,gtA); endif(v10); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); ifzero(v10); zgradpulse(gzlvlB,gtB); elsenz(v10); zgradpulse(-gzlvlB,gtB); endif(v10); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v11,rof1,rof1); obspower(tpwr); ifzero(v10); zgradpulse(gzlvlB,gtB); elsenz(v10); zgradpulse(-gzlvlB,gtB); endif(v10); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw, v14, rof1, rof1); if (getflag("Gzqfilt")) { obspower(zqfpwr1); ifzero(v10); rgradient('z',gzlvlzq1); elsenz(v10); rgradient('z',-gzlvlzq1); endif(v10); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,v14,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); } obspower(slpwrT); ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-gzlvl1,gt1); endif(v10); delay(gstab); if (mixT > 0.0) { if (dps_flag) rgpulse(mixT,v21,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v21); } if (getflag("Gzqfilt")) { obspower(zqfpwr2); ifzero(v10); rgradient('z',gzlvlzq2); elsenz(v10); rgradient('z',-gzlvlzq2); endif(v10); delay(100.0e-6); shaped_pulse(zqfpat2,zqfpw2,v14,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); } obspower(tpwr); ifzero(v10); zgradpulse(gzlvl2,gt2); elsenz(v10); zgradpulse(-gzlvl2,gt2); endif(v10); delay(gstab); if (flipback[A] == 'y') FlipBack(v14,v5); rgpulse(pw,v14,rof1,2.0e-6); ExcitationSculpting(v4,v9,v10); delay(rof2); status(C); }