void pulsesequence() { // Define Variables and Objects and Get Parameter Values CP hx = getcp("HX",0.0,0.0,0,1); strncpy(hx.fr,"dec",3); strncpy(hx.to,"obs",3); putCmd("frHX='dec'\n"); putCmd("toHX='obs'\n"); PBOXPULSE shca = getpboxpulse("shcaX",0,1); strncpy(shca.ch,"obs",3); putCmd("chXshca ='obs'\n"); PBOXPULSE shco = getpboxpulse("shcoX",0,1); strncpy(shco.ch,"obs",3); putCmd("chXshco ='obs'\n"); PBOXPULSE shcaco = combine_PBOXPULSE(shca,shco,0,1); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); DSEQ mix = getdseq("Hmix"); strncpy(mix.t.ch,"dec",3); putCmd("chHmixtppm='dec'\n"); strncpy(mix.s.ch,"dec",3); putCmd("chHmixspinal='dec'\n"); double shcacolen = (shcaco.pw + 2.0*shcaco.t2)/2.0; double d22 = d2/2.0; // Set Constant-time Period for d2. if (d2_index == 0) d2_init = getval("d2"); double d2_ = (ni - 1)/sw1 + d2_init; putCmd("d2acqret = %f\n",roundoff(d2_,12.5e-9)); putCmd("d2dwret = %f\n",roundoff(1.0/sw1,12.5e-9)); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHX") + 2.0*shcaco.pw + 4.0*getval("pwX90"); d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = d2_ + getval("tZF") - getval("pwX90") + getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = d2_ + getval("tZF") - getval("pwX90") + getval("rd") + getval("ad") + at; d.c3 = d.c3 + (!strcmp(mix.seq,"tppm")); d.c3 = d.c3 + ((!strcmp(mix.seq,"tppm")) && (mix.t.a > 0.0)); d.t3 = 2.0*getval("taua") + 2.0*getval("taub") + 2.0*shcaco.t1 + 2.0*shcaco.t2 - 4.0*shcacolen - 2.5*getval("pwX90") - 6.0e-6; d.c4 = d.c4 + (!strcmp(mix.seq,"spinal")); d.c4 = d.c4 + ((!strcmp(mix.seq,"spinal")) && (mix.s.a > 0.0)); d.t4 = 2.0*getval("taua") + 2.0*getval("taub") + 2.0*shcaco.t1 + 2.0*shcaco.t2 - 4.0*shcacolen - 2.5*getval("pwX90") - 6.0e-6; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Up 2D int errval = (int) ((getval("taua") - shcacolen)*2.0*sw1); if ((getval("taua") - ni/(2.0*sw1) - shcacolen) < 0.0) { text_error("Error:ni is too large. Make ni equal to %d or less.\n",errval); psg_abort(1); } // Set Phase Tables settable(phH90,4,table1); settable(phXhx,4,table2); settable(phHhx,4,table3); settable(ph1Xshcaco,4,table4); settable(ph1X90,4,table5); settable(ph2X90,4,table6); settable(ph2Xshcaco,4,table7); settable(ph3X90,4,table8); settable(ph4X90,4,table9); settable(phRec,4,table10); setreceiver(phRec); // States Acquisition if (phase1 == 2) tsadd(phXhx,3,4); // Begin Sequence txphase(phXhx); decphase(phH90); obspwrf(getval("aXhx")); decpwrf(getval("aH90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to X Cross Polarization decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhx); _cp_(hx,phHhx,phXhx); decphase(zero); // Begin F1 Refocused INEPT _dseqon(mix); txphase(ph1Xshcaco); obspwrf(shcaco.a); delay(getval("taua") - d22 - shcacolen); _pboxpulse(shcaco,ph1Xshcaco); obsblank(); obspower(getval("tpwr")); delay(3.0e-6); obsunblank(); obsunblank(); txphase(ph1X90); obspwrf(getval("aX90")); delay(getval("taua") + d22 - shcacolen - getval("pwX90") - 3.0e-6); rgpulse(getval("pwX90"),ph1X90,0.0,0.0); rgpulse(getval("pwX90"),ph2X90,0.0,0.0); txphase(ph2Xshcaco); obspwrf(shcaco.a); obsunblank(); delay(getval("taub") - shcacolen - getval("pwX90")); _pboxpulse(shcaco,ph2Xshcaco); obsblank(); obspower(getval("tpwr")); delay(3.0e-6); obsunblank(); txphase(ph3X90); obspwrf(getval("aX90")); obsunblank(); delay(getval("taub") - shcacolen - getval("pwX90")/2.0 - 3.0e-6); rgpulse(getval("pwX90"),ph3X90,0.0,0.0); txphase(ph4X90); obsunblank(); _dseqoff(mix); _dseqon(dec); delay(getval("tZF") - getval("pwX90")); rgpulse(getval("pwX90"),ph4X90,0.0,0.0); // Begin Acquisition obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values PBOXPULSE shp1 = getpboxpulse("sft1A",0,1); PBOXPULSE shp2 = getpboxpulse("sft2A",0,1); PBOXPULSE shp3 = getpboxpulse("sft3A",0,1); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwX90") + shp1.pw + shp2.pw + shp3.pw; d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phX90,4,table1); settable(phAsft1,4,table2); settable(phAsft2,4,table3); settable(phAsft3,4,table4); settable(phRec,4,table5); setreceiver(phRec); // Begin Sequence txphase(phX90); decphase(zero); obspwrf(getval("aX90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // X Direct Polarization rgpulse(getval("pwX90"),phX90,0.0,0.0); delay(20.0e-6); // X Shaped Pulse _pboxpulse(shp1, phAsft1); delay(20.0e-6); // X Simultaneous Shaped Pulse _pboxsimpulse(shp1,shp2,phAsft1,phAsft2); delay(20.0e-6); // X 3-channel Simultaneous Shaped Pulse delay(20.0e-6); _pboxsim3pulse(shp1,shp2,shp3,phAsft1,phAsft2,phAsft3); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values CP hy = getcp("HY",0.0,0.0,0,1); strncpy(hy.fr,"dec",3); strncpy(hy.to,"dec2",4); putCmd("frHY='dec'\n"); putCmd("toHY='dec2'\n"); PBOXPULSE shca = getpboxpulse("shcaX",0,1); strncpy(shca.ch,"obs",3); putCmd("chXshca ='obs'\n"); PBOXPULSE sh = getpboxpulse("shY",0,1); strncpy(sh.ch,"dec2",4); putCmd("chYsh ='dec2'\n"); PBOXPULSE shco = getpboxpulse("shcoX",0,1); strncpy(shco.ch,"obs",3); putCmd("chXshco ='obs'\n"); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); DSEQ mix = getdseq("Hmix"); strncpy(mix.t.ch,"dec",3); putCmd("chHmixtppm='dec'\n"); strncpy(mix.s.ch,"dec",3); putCmd("chHmixspinal='dec'\n"); double pwsim = getval("pwX90"); if (getval("pwY90") > getval("pwX90")) pwsim = getval("pwY90"); pwsim = pwsim/2.0; double shcalen = (shca.pw + 2.0*shca.t2)/2.0; double shlen = (sh.pw + 2.0*sh.t2)/2.0; double shsim = shcalen; double simpw = shca.pw; double simt1 = shca.t1; double simt2 = shca.t2; if (shlen > shcalen) { shsim = shlen; simpw = sh.pw; simt1 = sh.t1; simt2 = sh.t2; } double shcolen = (shco.pw + 2.0*shco.t2)/2.0; double d22 = d2/2.0; // Set Constant-time Period for d2. if (d2_index == 0) d2_init = getval("d2"); double d2_ = (ni - 1)/sw1 + d2_init; putCmd("d2acqret = %f\n",roundoff(d2_,12.5e-9)); putCmd("d2dwret = %f\n",roundoff(1.0/sw1,12.5e-9)); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHY") + 2.0* simpw + shco.pw; d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = d2_ + getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = d2_ + getval("rd") + getval("ad") + at; d.c3 = d.c3 + (!strcmp(mix.seq,"tppm")); d.c3 = d.c3 + ((!strcmp(mix.seq,"tppm")) && (mix.t.a > 0.0)); d.t3 = 2.0*getval("taua") + 2.0*getval("taub") - 2.0*shsim - shcolen + 2.0*simt1 + 2.0*simt2 - pwsim - 2.0*shsim; d.c4 = d.c4 + (!strcmp(mix.seq,"spinal")); d.c4 = d.c4 + ((!strcmp(mix.seq,"spinal")) && (mix.s.a > 0.0)); d.t4 = 2.0*getval("taua") + 2.0*getval("taub") - 2.0*shsim - shcolen + 2.0*simt1 + 2.0*simt2 - pwsim - 2.0*shsim; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Up 2D int errval = (int) ((getval("taua") - shsim)*2.0*sw1); if ((getval("taua") - ni/(2.0*sw1) - shsim) < 0.0) { text_error("Error:ni is too large. Make ni equal to %d or less.\n",errval); psg_abort(1); } // Set Phase Tables settable(phH90,4,table1); settable(phHhy,4,table2); settable(phYhy,4,table3); settable(ph1Xshca,4,table4); settable(ph1Ysh,4,table5); settable(phXshco,4,table6); settable(phX90,4,table7); settable(phY90,4,table8); settable(ph2Xshca,4,table9); settable(ph2Ysh,4,table10); settable(phRec,4,table11); setreceiver(phRec); // States Acquisition if (phase1 == 2) tsadd(phYhy,1,4); // Begin Sequence txphase(ph1Xshca); decphase(phH90); dec2phase(phYhy); obspwrf(getval("aXshca")); decpwrf(getval("aH90")); dec2pwrf(getval("aYhy")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to Y Cross Polarization decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhy); _cp_(hy,phHhy,phYhy); decphase(zero); // Begin F1 INEPT _dseqon(mix); dec2phase(ph1Ysh); dec2pwrf(getval("aYsh")); delay(getval("taua") - d22 - shsim); _pboxsimpulse(shca,sh,ph1Xshca,ph1Ysh); obsblank(); obspower(getval("tpwr")); dec2power(getval("dpwr2")); delay(3.0e-6); obsunblank(); if (d22 < (shcolen + pwsim)) { txphase(phX90); dec2phase(phY90); obspwrf(getval("aX90")); dec2pwrf(getval("aY90")); delay(getval("taua") + d22 - shsim - pwsim - 3.0e-6); } else { txphase(phXshco); obspwrf(getval("aXshco")); delay(getval("taua") - shsim - shcolen - 3.0e-6); _pboxpulse(shco,phXshco); obsblank(); obspower(getval("tpwr")); delay(3.0e-6); obsunblank(); txphase(phX90); dec2phase(phY90); obspwrf(getval("aX90")); dec2pwrf(getval("aY90")); delay(d22 - shcolen - pwsim - 3.0e-6); } sim3pulse(getval("pwX90"),0.0,getval("pwY90"),phX90,zero,phY90,0.0,0.0); obsunblank(); dec2unblank(); txphase(ph2Xshca); dec2phase(ph2Ysh); delay(getval("taub") - pwsim - shsim); _pboxsimpulse(shca,sh,ph2Xshca,ph2Ysh); obsblank(); obspower(getval("tpwr")); dec2power(getval("dpwr2")); delay(3.0e-6); obsunblank(); delay(getval("taub") - shsim - 3.0e-6); _dseqoff(mix); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }