pulseprogram 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363
  1. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  2. ;****************************************************************
  3. ;
  4. ; Copyright (c) 2018
  5. ; Bruker BioSpin MRI GmbH
  6. ; D-76275 Ettlingen, Germany
  7. ;
  8. ; All Rights Reserved
  9. ;
  10. ; FLASH - a gradient echo imaging method
  11. ;
  12. ;****************************************************************
  13. ;
  14. ; d0 - TR padding
  15. ; d1 - T1 padding
  16. ; d2 - T2 padding
  17. ; d3 = PVM_RiseTime
  18. ; d4 = PVM_RampTime
  19. ; d8 = SCON / BLKTR_MAN (Amplifier preblanking)
  20. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include" 1
  21. ;****************************************************************
  22. ;
  23. ; $Source$
  24. ;
  25. ; Copyright (c) 2006
  26. ; Bruker BioSpin MRI GmbH
  27. ; D-76275 Ettlingen, Germany
  28. ;
  29. ; All Rights Reserved
  30. ;
  31. ;;****************************************************************
  32. ;MRI.include
  33. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/Avance.incl" 1
  34. ;Avance3.incl
  35. ; for AV III
  36. ;
  37. ;avance-version (13/06/17)
  38. ;
  39. ;$CLASS=HighRes Incl
  40. ;$COMMENT=
  41. # 169 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/Avance.incl"
  42. ;$Id: Avance3.incl,v 1.9.6.1 2013/06/17 15:32:55 pfre Exp $
  43. # 14 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include" 2
  44. define delay aqq
  45. define delay deparx
  46. define delay derxadc
  47. define delay rdepa
  48. # 21 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  49. "aqq=dw*td"
  50. "rdepa=de-depa"
  51. "deparx=depa-derx"
  52. "derxadc=derx-deadc"
  53. ; contents of De2.incl - usage for different hardware versions to
  54. ; be checked - intermediate solution to support Jobs
  55. define delay rde1
  56. # 31 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  57. "rde1=de-de1"
  58. # 44 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  59. ; end of contents of De2.incl
  60. # 65 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  61. # 74 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  62. # 128 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  63. # 129 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  64. # 141 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MRI.include"
  65. # 20 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg" 2
  66. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 1
  67. ;****************************************************************
  68. ;
  69. ; Copyright (c) 2003-2007
  70. ; Bruker BioSpin MRI GmbH
  71. ; D-76275 Ettlingen, Germany
  72. ;
  73. ; $Id$
  74. ;
  75. ; All Rights Reserved
  76. ;
  77. ; Declaration of pulseprogram parameters and subroutines for
  78. ; preparation modules
  79. ;
  80. ; Must be included after MRI.include!
  81. ;
  82. ;****************************************************************
  83. ;**** Fat Suppression ****
  84. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FatSupDef.mod" 1
  85. ;****************************************************************
  86. ;
  87. ; Copyright (c) 2018
  88. ; Bruker BioSpin MRI GmbH
  89. ; D-76275 Ettlingen, Germany
  90. ;
  91. ; $Id$
  92. ;
  93. ; All Rights Reserved
  94. ;
  95. ; FatSupDef.mod : Declaration of Fat Suppression Subroutine
  96. ;
  97. ;****************************************************************
  98. if (PVM_FatSupPerform == Yes)
  99. {
  100. define pulse fatSupPul = {$PVM_FatSupRfLength}
  101. define list<frequency> fatSupList = {$PVM_FatSupFL}
  102. define delay fatSupRamp = {$PVM_FatSupRampTime}
  103. define delay fatSupAmp = {$PVM_FatSupAmpEnable}
  104. define delay fatSupWait = {$PVM_FatSupGradWait}
  105. define delay fatSupSpoil = {$PVM_FatSupSpoilDur}
  106. ; convert from ms to s
  107. "fatSupRamp = fatSupRamp / 1000"
  108. "fatSupAmp = fatSupAmp / 1000"
  109. "fatSupWait = fatSupWait / 1000"
  110. "fatSupSpoil = fatSupSpoil / 1000"
  111. }
  112. subroutine FatSup
  113. # 20 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  114. ;**** Flow Saturation ****
  115. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FlowSatDef.mod" 1
  116. ;****************************************************************
  117. ;
  118. ; Copyright (c) 2018
  119. ; Bruker BioSpin MRI GmbH
  120. ; D-76275 Ettlingen, Germany
  121. ;
  122. ; $Id$
  123. ;
  124. ; All Rights Reserved
  125. ;
  126. ; FlowSatDef.mod: Declaration of subroutines for Flow Saturation
  127. ; call
  128. ; subr FlowSat()
  129. ; subr FlowSatInit()
  130. ; subr FlowSatInc()
  131. ;
  132. ;****************************************************************
  133. if(PVM_InFlowSatOnOff == 1)
  134. {
  135. define list<frequency> modlis4 = {$PVM_InFlowSatFL}
  136. define list<grad_scalar> flowSatGrad={$PVM_InFlowSatGrad}
  137. define delay SfD0 = {$PVM_SfD0}
  138. define delay SfD1 = {$PVM_SfD1}
  139. define delay SfD2 = {$PVM_SfD2}
  140. # 28 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  141. define pulse SfP0 = {$PVM_SfP0}
  142. define loopcounter SfLp0 = {$PVM_SfLp0}
  143. }
  144. subroutine FlowSat
  145. subroutine FlowSatInc
  146. subroutine FlowSatInit
  147. # 24 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  148. ;**** Inversion Pulse ****
  149. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/InvPulseDef.mod" 1
  150. ;****************************************************************
  151. ;
  152. ; Copyright (c) 2002-2007
  153. ; Bruker BioSpin MRI GmbH
  154. ; D-76275 Ettlingen, Germany
  155. ;
  156. ; $Id$
  157. ;
  158. ; All Rights Reserved
  159. ;
  160. ; InvPulseDef.mod : Declaration of Inversion Pulse subroutine
  161. ;
  162. ; call
  163. ; subr InvPulse()
  164. ;
  165. ;****************************************************************
  166. ;
  167. ; PVM_InvRFPulseArr :
  168. ;
  169. ; sp22 TPQQ[14].name : PVM_InvRFPulsePropertyArr[0].Filename
  170. ;
  171. ; PVM_IpP0 : PVM_InvRFPulseArr[0].PulseLength
  172. ;
  173. ; PVM_IpD2 : PVM_InvPulseDelay[0]
  174. ; PVM_IpD3 : PVM_InvPulseSpoilTime[0]
  175. ; PVM_IpD1 : CONFIG_amplifier _enable
  176. ; PVM_IpD0 : PVM_RampTime
  177. ;
  178. if(PVM_InvPulseOnOff == 1)
  179. {
  180. define list<frequency> modlis2= {$PVM_InvPulseOffsetHz}
  181. define delay IpD0 = {$PVM_IpD0}
  182. define delay IpD1 = {$PVM_IpD1}
  183. define delay IpD2 = {$PVM_IpD2}
  184. define delay IpD3 = {$PVM_IpD3}
  185. define pulse IpP0 = {$PVM_IpP0}
  186. }
  187. subroutine InvPulse
  188. # 28 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  189. ;**** Magnetisation Transfer ****
  190. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MagTransDef.mod" 1
  191. ;****************************************************************
  192. ; $Source$
  193. ;
  194. ; Copyright (c) 2005-2007
  195. ; Bruker BioSpin MRI GmbH
  196. ; D-76275 Ettlingen, Germany
  197. ;
  198. ; All Rights Reserved
  199. ;
  200. ; MagTransDef.mod: Declaration of subroutine for Magnetization
  201. ; transfer
  202. ; call
  203. ; subr MagTrans()
  204. ;
  205. ; $Id$
  206. ;****************************************************************
  207. ;**** Magnetisation Transfer Module ****
  208. if(PVM_MagTransOnOff)
  209. {
  210. define list<frequency> modlis3 = {$PVM_MagTransFL}
  211. define delay MtD0 = {$PVM_MtD0}
  212. define delay MtD1 = {$PVM_MtD1}
  213. define delay MtD2 = {$PVM_MtD2}
  214. define delay MtD3 = {$PVM_MtD3}
  215. # 28 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/MagTransDef.mod"
  216. define pulse MtP0 = {$PVM_MtP0}
  217. define loopcounter MtLp0 = {$PVM_MtLp0}
  218. }
  219. subroutine MagTrans
  220. # 32 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  221. ;**** Saturation Transfer ****
  222. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatTransDef.mod" 1
  223. ;****************************************************************
  224. ; $Source$
  225. ;
  226. ; Copyright (c) 2018
  227. ; Bruker BioSpin MRI GmbH
  228. ; D-76275 Ettlingen, Germany
  229. ;
  230. ; All Rights Reserved
  231. ;
  232. ; SatTransDef.mod: Declaration of subroutine for Saturation transfer
  233. ; call
  234. ; subr SatTrans()
  235. ;
  236. ; $Id$
  237. ;****************************************************************
  238. ;**** Saturation Transfer Module ****
  239. ; PVM_SatTransFL: List of offset frequencies to be measured.
  240. ; PVM_SattransNPulses: Number of pulses used in one saturation event
  241. ; PVM_SattransPowerList: List of RF amplitudes for saturation pulses.
  242. ; Two elements long: first element: 0 Watt,
  243. ; used for one reference scan. Subsequent scans
  244. ; use amplitude as specified in UI.
  245. ; StReference: If PVM_SatTransRefScan is On then list StRfPower
  246. ; has two elements (1st is zero for reference scan)
  247. ; If RefScan is Off then lsit has only one element.
  248. ; Nevertheless we increment to avoid another 'if'
  249. # 31 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatTransDef.mod"
  250. if(PVM_SatTransOnOff)
  251. {
  252. define list<frequency> modlis5 = {$PVM_SatTransFL}
  253. define list<power> StRfPower = {$PVM_SatTransPowerList}
  254. define delay StD0 = {$PVM_StD0}
  255. define delay StD1 = {$PVM_StD1}
  256. define delay StD2 = {$PVM_StD2}
  257. define delay StD3 = {$PVM_StD3}
  258. define pulse StP0 = {$PVM_StP0}
  259. define loopcounter StNPulses = {$PVM_SatTransNPulses}
  260. define loopcounter StReference
  261. "StReference = 1"
  262. }
  263. subroutine SatTransInit
  264. subroutine SatTransInc
  265. subroutine SatTrans
  266. # 36 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  267. ;**** Saturation Pulse ****
  268. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatPulseDef.mod" 1
  269. ;****************************************************************
  270. ;
  271. ; Copyright (c) 2002-2003
  272. ; Bruker BioSpin MRI GmbH
  273. ; D-76275 Ettlingen, Germany
  274. ;
  275. ; $Id$
  276. ;
  277. ; All Rights Reserved
  278. ;
  279. ; SatPulseDef.mod : Declaration of Saturation Pulse subroutines
  280. ; call
  281. ; subr SatPulse()
  282. ;
  283. ;****************************************************************
  284. ;
  285. ; PVM_SatRFPulseArr :
  286. ;
  287. ; sp28 DPQQ[12].name : PVM_SatRFPulsePropertyArr[0].Filename
  288. ; sp29 DPQQ[13].name : PVM_SatRFPulsePropertyArr[1].Filename
  289. ; sp30 DPQQ[14].name : PVM_SatRFPulsePropertyArr[2].Filename
  290. ; sp31 DPQQ[15].name : PVM_SatRFPulsePropertyArr[3].Filename
  291. ;
  292. ; PVM_SpP0 : PVM_SatRFPulseArr[0].PulseLength
  293. ; PVM_SpP1 : PVM_SatRFPulseArr[1].PulseLength
  294. ; PVM_SpP2 : PVM_SatRFPulseArr[2].PulseLength
  295. ; PVM_SpP3 : PVM_SatRFPulseArr[3].PulseLength
  296. ;
  297. ; PVM_SpD2 : PVM_SatPulseDelay1[0]
  298. ; PVM_SpD6 : PVM_SatPulseSpoilTime[0]
  299. ; PVM_SpD10 : PVM_SatPulseDelay2[0]
  300. ; PVM_SpD3 : PVM_SatPulseSpoilTime[1]
  301. ; PVM_SpD7 : PVM_SatPulseDelay1[1]
  302. ; PVM_SpD11 : PVM_SatPulseDelay2[1]
  303. ; PVM_SpD4 : PVM_SatPulseDelay1[2]
  304. ; PVM_SpD8 : PVM_SatPulseSpoilTime[2]
  305. ; PVM_SpD12 : PVM_SatPulseDelay2[2]
  306. ; PVM_SpD5 : PVM_SatPulseDelay1[3]
  307. ; PVM_SpD9 : PVM_SatPulseSpoilTime[3]
  308. ; PVM_SpD13 : PVM_SatPulseDelay2[3]
  309. ;
  310. if(PVM_SatPulseOnOff == 1)
  311. {
  312. define list<frequency> modlis7 = {$PVM_SatPulseOffsetHz}
  313. define delay SpD0 = {$PVM_SpD0}
  314. define delay SpD1 = {$PVM_SpD1}
  315. define delay SpD2 = {$PVM_SpD2}
  316. define delay SpD3 = {$PVM_SpD3}
  317. define delay SpD4 = {$PVM_SpD4}
  318. define delay SpD5 = {$PVM_SpD5}
  319. define delay SpD6 = {$PVM_SpD6}
  320. define delay SpD7 = {$PVM_SpD7}
  321. define delay SpD8 = {$PVM_SpD8}
  322. define delay SpD9 = {$PVM_SpD9}
  323. define delay SpD10 = {$PVM_SpD10}
  324. define delay SpD11 = {$PVM_SpD11}
  325. define delay SpD12 = {$PVM_SpD12}
  326. define delay SpD13 = {$PVM_SpD13}
  327. define pulse SpP0 = {$PVM_SpP0}
  328. define pulse SpP1 = {$PVM_SpP1}
  329. define pulse SpP2 = {$PVM_SpP2}
  330. define pulse SpP3 = {$PVM_SpP3}
  331. # 66 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatPulseDef.mod"
  332. }
  333. subroutine SatPulse
  334. # 40 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  335. ;*** FOV Saturation ***
  336. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FovSatDef.mod" 1
  337. ;****************************************************************
  338. ;
  339. ; Copyright (c) 2018
  340. ; Bruker BioSpin MRI GmbH
  341. ; D-76275 Ettlingen, Germany
  342. ;
  343. ; $Id$
  344. ;
  345. ; All Rights Reserved
  346. ;
  347. ; FovSat.mod : Declaration of FOV Saturation subroutine
  348. ; call: subr FovSat()
  349. ;
  350. ;****************************************************************
  351. if (PVM_FovSatOnOff == On)
  352. {
  353. define pulse fovSatPul = {$PVM_FovSatRfLength}
  354. define list<frequency> fovSatList = {$PVM_FovSatFL}
  355. define delay fovSatRamp = {$PVM_FovSatRampTime}
  356. define delay fovSatAmp = {$PVM_FovSatAmpEnable}
  357. define delay fovSatWait = {$PVM_FovSatGradWait}
  358. define delay fovSatSpoil = {$PVM_FovSatSpoilDur}
  359. # 27 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FovSatDef.mod"
  360. ; convert from ms to s
  361. "fovSatRamp = fovSatRamp / 1000"
  362. "fovSatAmp = fovSatAmp / 1000"
  363. "fovSatWait = fovSatWait / 1000"
  364. "fovSatSpoil = fovSatSpoil / 1000"
  365. }
  366. subroutine FovSat
  367. # 55 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FovSatDef.mod"
  368. ; backwards compatibility
  369. subroutine SatSlices
  370. # 44 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  371. ;**** Black Blood ****
  372. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/BlBloodDef.mod" 1
  373. ;****************************************************************
  374. ;
  375. ; Copyright (c) 2007
  376. ; Bruker BioSpin MRI GmbH
  377. ; D-76275 Ettlingen, Germany
  378. ;
  379. ; $Id$
  380. ;
  381. ; All Rights Reserved
  382. ;
  383. ; BlBloodDef.mod : Declaration of Black blood subroutine
  384. ;
  385. ; call
  386. ; subr BlBlood(ph0) : Black blood preparation with RF phaselist
  387. ; ph0
  388. ;
  389. ;****************************************************************
  390. if(PVM_BlBloodOnOff)
  391. {
  392. define list<frequency> modlis8 = {$PVM_BlBloodFL}
  393. define delay BlbD0 = {$PVM_BlbD0}
  394. define delay BlbD1 = {$PVM_BlbD1}
  395. define delay BlbD2 = {$PVM_BlbD2}
  396. define delay BlbD3 = {$PVM_BlbD3}
  397. define pulse BlbP0 = {$PVM_BlbP0}
  398. }
  399. subroutine BlBlood
  400. # 48 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  401. ;**** Trigger ****
  402. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod" 1
  403. ;****************************************************************
  404. ;
  405. ; Copyright (c) 1998-2003
  406. ; Bruker BioSpin MRI GmbH
  407. ; D-76275 Ettlingen, Germany
  408. ;
  409. ; All Rights Reserved
  410. ;
  411. ; TriggerDef.mod - Trigger Module
  412. ;
  413. ;****************************************************************
  414. if (PVM_TriggerModule == On)
  415. {
  416. define delay trigDur = {$PVM_TriggerDur}
  417. define delay trigDel = {$PVM_TriggerDelay}
  418. ; convert from ms to s
  419. "trigDur = trigDur / 1000"
  420. "trigDel = trigDel / 1000"
  421. }
  422. subroutine Trigger
  423. subroutine TriggerPhase
  424. subroutine TriggerSlice
  425. # 52 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  426. ;**** Trigger Out ****
  427. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerOutDef.mod" 1
  428. ;****************************************************************
  429. ;
  430. ; Copyright (c) 2003
  431. ; Bruker BioSpin MRI GmbH
  432. ; D-76275 Ettlingen, Germany
  433. ;
  434. ; All Rights Reserved
  435. ; $Id$
  436. ;****************************************************************
  437. if (PVM_TriggerOutOnOff == On)
  438. {
  439. define delay trigOutDur = {$PVM_TriggerOutDur}
  440. define delay trigOutDel = {$PVM_TriggerOutDelay}
  441. ; convert from ms to s
  442. "trigOutDur = trigOutDur / 1000"
  443. "trigOutDel = trigOutDel / 1000"
  444. }
  445. subroutine TriggerOut
  446. subroutine TriggerOutStart
  447. subroutine TriggerOutSlice
  448. subroutine TriggerOutVolume
  449. # 56 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  450. ;**** Outer Volume Suppression ****
  451. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/WsOvsDef.mod" 1
  452. ;****************************************************************
  453. ;
  454. ; Copyright (c) 2005-2007
  455. ; Bruker BioSpin MRI GmbH
  456. ; D-76275 Ettlingen, Germany
  457. ;
  458. ; $Id$
  459. ;
  460. ; All Rights Reserved
  461. ;
  462. ; WsOvsDef.mod: Declaration of water suppression and Outer
  463. ; volume suppression subroutines
  464. ;
  465. ; call
  466. ; subr Ovs(ph0) ; execution of OVS with ph0 phaselist
  467. ;
  468. ; subr WsOvs(ph0,ph1) : execution of OVS with ph0 and WS with ph1
  469. ; phaselist
  470. ;****************************************************************
  471. ;**** OuterVolumeSuppression ****
  472. if(PVM_OvsOnOff == 1)
  473. {
  474. define list<frequency> Ovslist={$PVM_OvsFrequencyList}
  475. define delay OvsD0 = {$PVM_OvsD0}
  476. define delay OvsD1 = {$PVM_OvsD1}
  477. define pulse OvsP0 = {$PVM_OvsP0}
  478. }
  479. subroutine Ovs
  480. # 62 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/WsOvsDef.mod"
  481. ;*** WaterSuppression Module with OVS ****
  482. if (PVM_WsMode)
  483. {
  484. define list<frequency> Wslist={$PVM_WsOffsetHz}
  485. define pulse WsP0 = {$PVM_WsP0}
  486. define pulse WsP1 = {$PVM_WsP1}
  487. define pulse WsP2 = {$PVM_WsP2}
  488. define delay WsNp0
  489. "WsNp0 = WsP0"
  490. define delay WsNp1
  491. "WsNp1 = WsP1"
  492. define delay WsNp2
  493. "WsNp2 = WsP2"
  494. define list<delay> ChD1={$PVM_ChppgD1}
  495. define list<delay> ChD2={$PVM_ChppgD2}
  496. define list<delay> VpD1={$PVM_VpppgD1}
  497. define list<delay> VpD2={$PVM_VpppgD2}
  498. # 82 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/WsOvsDef.mod"
  499. }
  500. subroutine WsOvsMain
  501. subroutine WsOvs
  502. subroutine Ws
  503. # 60 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  504. ;**** Solvent Suppression module ****
  505. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/WsSatDef.mod" 1
  506. ;******************************************************************
  507. ;
  508. ; Copyright (c) 2002-2007
  509. ; Bruker BioSpin MRI GmbH
  510. ; D-76275 Ettlingen, Germany
  511. ;
  512. ; $Id$
  513. ;
  514. ; All Rights Reserved
  515. ;
  516. ; WsSatDef.mod - Declaration of water suppression and FOV saturation
  517. ; subroutines
  518. ; call
  519. ; subr WsSat(ph0) : execution of WS with ph0 phaselist and
  520. ; FOV saturation (as passed as argument)
  521. ;
  522. ;*******************************************************************
  523. ; Definitions for WsPpgParams are included in WsOvsDef.mod
  524. subroutine WsSatMain
  525. subroutine WsSat
  526. # 64 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  527. ;**** Selective Inversion Recovery ****
  528. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SelSliceIrDef.mod" 1
  529. ;****************************************************************
  530. ;
  531. ; Copyright (c) 2018
  532. ; Bruker BioSpin MRI GmbH
  533. ; D-76275 Ettlingen, Germany
  534. ;
  535. ; $Id$
  536. ;
  537. ; All Rights Reserved
  538. ;
  539. ; SlicelSelIr.mod : declaration of slice Selective Inversion
  540. ; Recovery subroutine
  541. ; call SliceSelIr()
  542. ;
  543. ;
  544. ;****************************************************************
  545. if(PVM_SelIrOnOff)
  546. {
  547. define list<frequency> IrFL = {$PVM_SelIrFL}
  548. define delay IrD0 = {$PVM_SelIrD0} ; PVM_InterInvDelay
  549. define delay IrD1 = {$PVM_SelIrD1} ; PVM_InterInvEndDelay[0]
  550. define delay IrD2 = {$PVM_SelIrD2} ; Spoiler duration
  551. define delay IrD3 = {$PVM_SelIrD3} ; Gatepulse duration
  552. define delay IrD4 = {$PVM_SelIrD4} ; risetime
  553. # 28 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SelSliceIrDef.mod"
  554. define pulse IrP0 = {$PVM_SelIrP0}
  555. define loopcounter IrL0 = {$PVM_SelIrL0}
  556. define loopcounter IrL1
  557. }
  558. subroutine SliceSelIr
  559. # 68 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  560. ;**** Tagging ****
  561. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TagDef.mod" 1
  562. ;****************************************************************
  563. ;
  564. ; Copyright (c) 2018
  565. ; Bruker BioSpin MRI GmbH
  566. ; D-76275 Ettlingen, Germany
  567. ;
  568. ; $Id$
  569. ;
  570. ; All Rights Reserved
  571. ;
  572. ; TagDef.mod : Declaration of tagging subroutine
  573. ; call
  574. ; subr Tagging()
  575. ;
  576. ;****************************************************************
  577. if(PVM_TaggingOnOff)
  578. {
  579. define list<frequency> taggfreq={$PVM_TaggingFL}
  580. define delay TaggD0 = {$PVM_TaggingD0}
  581. define delay TaggD1 = {$PVM_TaggingD1}
  582. define delay TaggD2 = {$PVM_TaggingD2}
  583. define delay TaggD3 = {$PVM_TaggingD3}
  584. define delay TaggD4 = {$PVM_TaggingD4}
  585. define delay TaggD5 = {$PVM_TaggingD5}
  586. # 28 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TagDef.mod"
  587. define pulse TaggP0 = {$PVM_TaggingP0}
  588. define loopcounter TaggL0 = {$PVM_TaggingLp0}
  589. }
  590. subroutine Tagging
  591. # 72 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  592. ;**** Noe ****
  593. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/NoeDef.mod" 1
  594. ;****************************************************************
  595. ;
  596. ; Copyright (c) 2007
  597. ; Bruker BioSpin MRI GmbH
  598. ; D-76275 Ettlingen, Germany
  599. ;
  600. ; $Id$
  601. ;
  602. ; All Rights Reserved
  603. ;
  604. ; NoeDef.mod: Declaration of Nuclear Overhouser Enhancement
  605. ; subroutine
  606. ; call
  607. ; subr Noe()
  608. ;
  609. ;****************************************************************
  610. if(PVM_NoeOnOff == On)
  611. {
  612. define delay NoeD0 = {$PVM_NoeD0}
  613. define delay NoeD1 = {$PVM_NoeD1}
  614. }
  615. subroutine Noe
  616. # 76 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  617. ;**** Evolution ****
  618. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/EvolutionDef.mod" 1
  619. ;****************************************************************
  620. ;
  621. ; Copyright (c) 1998-2003
  622. ; Bruker BioSpin MRI GmbH
  623. ; D-76275 Ettlingen, Germany
  624. ;
  625. ; All Rights Reserved
  626. ;
  627. ; EvolutionDef.mod - Evolution Module
  628. ;
  629. ;****************************************************************
  630. if (PVM_EvolutionOnOff == On)
  631. {
  632. define delay evolDel = {$PVM_EvolutionDelay}
  633. define list<delay> evolTime = {$PVM_EvolutionTime}
  634. }
  635. subroutine Evolution
  636. # 80 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  637. ;**** Drift Compensation ****
  638. # 1 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/DriftComp.mod" 1
  639. ;==========================================================
  640. ; subroutine for drift compensation
  641. ;==========================================================
  642. if (PVM_DriftCompNavOnOff == On)
  643. {
  644. define list<frequency> txfq = {$PVM_DriftCompNavTxFrq}
  645. define list<frequency> rxfq = {$PVM_DriftCompNavRxFrq}
  646. define pulse DCP0 = {$PVM_DriftCompNavP0}
  647. define delay DCD0 = {$PVM_DriftCompNavD0}
  648. define delay DCD1 = {$PVM_DriftCompNavD1}
  649. define delay DCD2 = {$PVM_DriftCompNavD2}
  650. define delay DCD3 = {$PVM_DriftCompNavD3}
  651. define delay DCD4 = {$PVM_DriftCompNavD4}
  652. define delay DCD5 = {$PVM_DriftCompNavD5}
  653. define delay DCD6
  654. "DCD6 = 10u - de"
  655. define list<phase> dcph = { 0 }
  656. }
  657. subroutine DriftComp
  658. # 84 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  659. # 21 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg" 2
  660. # 23 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  661. preset off
  662. define delay denab
  663. "denab = d3 - de"
  664. define list<phase> phaselist = {$RFPhaseList}
  665. define list<frequency> fq1list = {$ACQ_O1_list}
  666. # 31 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  667. if (ACQ_jobs_size > 1)
  668. {
  669. 3u setrtp1|1 \n 7u setrtp1^1 \n 1m swj1 \n 1m dccorr1 \n 3u setrtp1|1 \n 187u setrtp1^1 \n 1u setrtp1|1 \n 9u setrtp1^1 \n 1m swj2 \n 1m dccorr2 \n 3u setrtp1|1 \n 7u setrtp1^1 \n 1m swj1 \n if (CONFIG_preemp_type == GREAT_60) \n { \n if (CONFIG_instrument_type != Avance_III) \n { \n 500m setnmr0|34|33|32 \n } \n else \n { \n 200u setnmr0|34|33|32 \n } \n } \n if (CONFIG_preemp_type == DPP_with_SW_Blanking) \n {\n 10u ctrlgrad 0 \n 10u grad{(0)|(0)|(0) } \n 200u setnmr0|34|33|32 \n }\n if (CONFIG_preemp_type == DPP) \n { \n 10u groff \n }
  670. } else {
  671. dccorr \n \n if (CONFIG_preemp_type == GREAT_60) \n { \n if (CONFIG_instrument_type != Avance_III) \n { \n 500m setnmr0|34|33|32 \n } \n else \n { \n 200u setnmr0|34|33|32 \n } \n } \n if (CONFIG_preemp_type == DPP_with_SW_Blanking) \n {\n 10u ctrlgrad 0 \n 10u grad{(0)|(0)|(0) } \n 200u setnmr0|34|33|32 \n }\n if (CONFIG_preemp_type == DPP) \n { \n 10u groff \n }
  672. }
  673. # 41 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  674. grad_zero_for_gs <ACQ_spatial_phase_1, ACQ_spatial_phase_2>
  675. subr FlowSatInit
  676. ;EXEC_begin FlowSatInit FlowSatInit()
  677. # 54 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  678. if(PVM_InFlowSatOnOff == 1)
  679. {
  680. 0u modlis4.res
  681. 0u flowSatGrad.res
  682. }
  683. ;EXEC_end FlowSatInit
  684. # 44 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  685. subr SatTransInit
  686. ;EXEC_begin SatTransInit SatTransInit()
  687. # 48 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatTransDef.mod"
  688. if(PVM_SatTransOnOff)
  689. {
  690. 0u modlis5.res
  691. 0u StRfPower.res
  692. }
  693. ;EXEC_end SatTransInit
  694. # 45 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  695. 10u recph ph1
  696. # 48 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  697. start, 10u fq8(receive):f1
  698. subr DriftComp
  699. ;EXEC_begin DriftComp DriftComp()
  700. # 23 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/DriftComp.mod"
  701. if(PVM_DriftCompYesNo == Yes)
  702. {
  703. 20u reload B0 ;close to nav acq
  704. if(PVM_DriftCompNavOnOff == On)
  705. {
  706. 10u swj2
  707. 1u setrtp1|1 \n 9u setrtp1^1 ;lasts 10u
  708. 10u rxfq(receive):f1
  709. 5u txfq:f1
  710. DCD0 gatepulse 1
  711. (DCP0 :sp55 dcph):f1
  712. DCD6 ;is 10u-de
  713. (rde1 sync de1 adc2 dcph syrec) (1u 1u dcph:r):f1 (de) ;is de
  714. DCD1 cpdngs18:f1
  715. 169u ;delay for scan shift
  716. 10u eoscnp #1
  717. DCD2 grad_ramp{PVM_DriftCompNavSpoilAmp,PVM_DriftCompNavSpoilAmp,PVM_DriftCompNavSpoilAmp}
  718. DCD3 ;delay after eoscnp #0 requires about 45u
  719. DCD4 swj1 ;requires about 65u
  720. 3u setrtp1|1 \n 7u setrtp1^1 ;lasts 10u
  721. DCD5
  722. DCD2 grad_off
  723. }
  724. }
  725. ;EXEC_end DriftComp
  726. # 50 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  727. if(PVM_BlBloodOnOff == On)
  728. {
  729. subr TriggerSlice
  730. ;EXEC_begin TriggerSlice TriggerSlice()
  731. # 45 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  732. if (PVM_TriggerMode == per_Slice)
  733. {
  734. ;EXEC_begin Trigger Trigger()
  735. # 23 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  736. if (PVM_TriggerModule == On)
  737. {
  738. trigDur setnmr3|6
  739. trigDur trignl1
  740. trigDur trigpe3
  741. trigDur setnmr3^6
  742. trigDel
  743. }
  744. ;EXEC_end Trigger
  745. }
  746. ;EXEC_end TriggerSlice
  747. # 54 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  748. }
  749. subr BlBlood
  750. ;EXEC_begin BlBlood BlBlood(phase ph0)
  751. # 30 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/BlBloodDef.mod"
  752. if(PVM_BlBloodOnOff)
  753. {
  754. 10u modlis8:f1
  755. 10u
  756. BlbD3 gatepulse 1
  757. (BlbP0 :sp46 ph0):f1
  758. BlbD2 grad_ramp{0, 0, PVM_BlbGrad}
  759. 0u modlis8.inc
  760. 10u
  761. 10u modlis8:f1
  762. 10u
  763. BlbD3 gatepulse 1
  764. (BlbP0 :sp46 ph0):f1
  765. BlbD2 grad_off
  766. BlbD1 modlis8.inc grad_ramp{0, 0, PVM_BlBloodSpoilAmp}
  767. BlbD0 grad_off
  768. 0u modlis8.inc
  769. }
  770. ;EXEC_end BlBlood
  771. # 56 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  772. subr TriggerSlice
  773. ;EXEC_begin TriggerSlice TriggerSlice()
  774. # 45 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  775. if (PVM_TriggerMode == per_Slice)
  776. {
  777. ;EXEC_begin Trigger Trigger()
  778. # 23 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  779. if (PVM_TriggerModule == On)
  780. {
  781. trigDur setnmr3|6
  782. trigDur trignl1
  783. trigDur trigpe3
  784. trigDur setnmr3^6
  785. trigDel
  786. }
  787. ;EXEC_end Trigger
  788. }
  789. ;EXEC_end TriggerSlice
  790. # 57 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  791. subr Tagging
  792. ;EXEC_begin Tagging Tagging()
  793. # 32 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TagDef.mod"
  794. if(PVM_TaggingOnOff)
  795. {
  796. 0u taggfreq.res
  797. if(PVM_TaggingMode == DANTE)
  798. {
  799. 10u taggfreq:f1
  800. TaggD4 grad_ramp{PVM_TaggingGradAmp1, PVM_TaggingGradAmp2,0}
  801. TaggD5 gatepulse 1
  802. (TaggP0: sp45):f1
  803. tag119, TaggD2
  804. TaggD5 gatepulse 1
  805. (TaggP0: sp45):f1
  806. lo to tag119 times TaggL0
  807. TaggD4 grad_off
  808. if(PVM_TaggingDir == Tagging_grid)
  809. {
  810. TaggD1 taggfreq.inc
  811. 10u taggfreq:f1
  812. TaggD5 gatepulse 1
  813. TaggD4 grad_ramp{PVM_TaggingGradAmp3,PVM_TaggingGradAmp4,0}
  814. (TaggP0: sp45):f1
  815. tag220, TaggD2
  816. TaggD5 gatepulse 1
  817. (TaggP0: sp45):f1
  818. lo to tag220 times TaggL0
  819. TaggD4 grad_off
  820. }
  821. }
  822. if(PVM_TaggingMode == SPAMM)
  823. {
  824. 10u taggfreq:f1
  825. TaggD5 gatepulse 1
  826. (TaggP0: sp45):f1
  827. tag321, TaggD2 grad_ramp{PVM_TaggingGradAmp1,PVM_TaggingGradAmp2,0}
  828. TaggD4 grad_off
  829. TaggD5 gatepulse 1
  830. (TaggP0: sp45):f1
  831. lo to tag321 times TaggL0
  832. if(PVM_TaggingDir == Tagging_grid)
  833. {
  834. TaggD1 taggfreq.inc
  835. 10u taggfreq:f1
  836. TaggD5 gatepulse 1
  837. (TaggP0: sp45):f1
  838. tag422, TaggD2 grad_ramp{PVM_TaggingGradAmp3,PVM_TaggingGradAmp4,0}
  839. TaggD4 grad_off
  840. TaggD5 gatepulse 1
  841. (TaggP0: sp45):f1
  842. lo to tag422 times TaggL0
  843. }
  844. }
  845. 10u
  846. TaggD3 grad_ramp{PVM_TaggingSpoilAmp,0,0}
  847. TaggD4 grad_off
  848. TaggD0
  849. }
  850. ;EXEC_end Tagging
  851. # 58 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  852. # 60 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  853. ;----------------------- handle dummy scans ------------------------
  854. if( l5 >= 1) ; dummy scans
  855. {
  856. dummy, 10u
  857. ;---------------------- preparation modules ------------------------
  858. subr TriggerPhase
  859. ;EXEC_begin TriggerPhase TriggerPhase()
  860. # 37 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  861. if (PVM_TriggerMode == per_PhaseStep)
  862. {
  863. ;EXEC_begin Trigger Trigger()
  864. # 23 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  865. if (PVM_TriggerModule == On)
  866. {
  867. trigDur setnmr3|6
  868. trigDur trignl1
  869. trigDur trigpe3
  870. trigDur setnmr3^6
  871. trigDel
  872. }
  873. ;EXEC_end Trigger
  874. }
  875. ;EXEC_end TriggerPhase
  876. # 66 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  877. subr FlowSat
  878. ;EXEC_begin FlowSat FlowSat()
  879. # 33 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  880. if(PVM_InFlowSatOnOff == 1)
  881. {
  882. flow123, SfD0 modlis4:f1 grad_ramp{0, 0, flowSatGrad*100}
  883. SfD1 gatepulse 1
  884. (SfP0 :sp44):f1
  885. SfD2 grad_ramp{0, 0, PVM_InFlowSatSpoilGrad}
  886. SfD0 grad_off
  887. }
  888. ;EXEC_end FlowSat
  889. # 67 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  890. subr FovSat
  891. ;EXEC_begin FovSat FovSat()
  892. # 34 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FovSatDef.mod"
  893. if (PVM_FovSatOnOff == On)
  894. {
  895. 5u PVM_FovSatGrad.res
  896. 5u fovSatList.res
  897. fov24, fovSatRamp grad_ramp<magnet_coord>{PVM_FovSatGrad[]}
  898. 10u fovSatList:f1
  899. fovSatAmp gatepulse 1
  900. (fovSatPul :sp41):f1
  901. fovSatSpoil grad_ramp{0, 0, PVM_FovSatSpoilAmp}
  902. 0u fovSatList.inc
  903. 0u PVM_FovSatGrad.inc
  904. lo to fov24 times PVM_FovSatNSlices
  905. fovSatRamp grad_off
  906. fovSatWait
  907. }
  908. ;EXEC_end FovSat
  909. # 68 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  910. subr SatTrans
  911. ;EXEC_begin SatTrans SatTrans()
  912. # 73 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatTransDef.mod"
  913. if(PVM_SatTransOnOff)
  914. {
  915. 10u StRfPower:f1
  916. pulse25, StD1 modlis5:f1
  917. StD0 gatepulse 1
  918. StP0: sp43(currentpower):f1
  919. lo to pulse25 times StNPulses
  920. StD2 grad_ramp{0, 0, PVM_SatTransSpoil.ampl}
  921. StD3 grad_off
  922. }
  923. ;EXEC_end SatTrans
  924. # 69 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  925. subr FatSup
  926. ;EXEC_begin FatSup FatSup()
  927. # 32 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FatSupDef.mod"
  928. if (PVM_FatSupPerform == Yes)
  929. {
  930. 10u fatSupList:f1
  931. fatSupAmp gatepulse 1
  932. (fatSupPul :sp40):f1
  933. fatSupSpoil grad_ramp{0, 0, PVM_FatSupSpoilAmp}
  934. fatSupRamp grad_off
  935. fatSupWait
  936. }
  937. ;EXEC_end FatSup
  938. # 70 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  939. d6 grad_ramp{0, 0, g9}
  940. # 74 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  941. ;------------------------ slice selection --------------------------
  942. d3 grad_ramp{0, 0, g0} fq1list:f1
  943. d8 gatepulse 1
  944. (p0:sp0 phaselist):f1
  945. d4 grad_off
  946. ;---------- slice rephase, read dephase, phase encoding -----------
  947. d10 grad_ramp{g2, ACQ_spatial_phase_1*g3, g1+ACQ_spatial_phase_2*g4}
  948. d2 grad_off
  949. ;----------------------- frequency encoding ------------------------
  950. d3 grad_ramp{g5, 0, 0}
  951. aqq
  952. # 88 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  953. ;------------------ read spoiler + phase encoding ------------------
  954. d11 grad_ramp{g6, ACQ_spatial_phase_1*g7, ACQ_spatial_phase_2*g8} ; 2nd and 3rd dims
  955. d12 grad_ramp{g6, 0, 0}
  956. d3 grad_off
  957. d0
  958. 0u phaselist.inc ; phase list for RF spoiling
  959. lo to dummy times l5
  960. }
  961. acquisition, 10u
  962. # 100 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  963. ;---------------------- preparation modules ------------------------
  964. subr TriggerPhase
  965. ;EXEC_begin TriggerPhase TriggerPhase()
  966. # 37 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  967. if (PVM_TriggerMode == per_PhaseStep)
  968. {
  969. ;EXEC_begin Trigger Trigger()
  970. # 23 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/TriggerDef.mod"
  971. if (PVM_TriggerModule == On)
  972. {
  973. trigDur setnmr3|6
  974. trigDur trignl1
  975. trigDur trigpe3
  976. trigDur setnmr3^6
  977. trigDel
  978. }
  979. ;EXEC_end Trigger
  980. }
  981. ;EXEC_end TriggerPhase
  982. # 101 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  983. subr FlowSat
  984. ;EXEC_begin FlowSat FlowSat()
  985. # 33 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  986. if(PVM_InFlowSatOnOff == 1)
  987. {
  988. flow126, SfD0 modlis4:f1 grad_ramp{0, 0, flowSatGrad*100}
  989. SfD1 gatepulse 1
  990. (SfP0 :sp44):f1
  991. SfD2 grad_ramp{0, 0, PVM_InFlowSatSpoilGrad}
  992. SfD0 grad_off
  993. }
  994. ;EXEC_end FlowSat
  995. # 102 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  996. subr FovSat
  997. ;EXEC_begin FovSat FovSat()
  998. # 34 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FovSatDef.mod"
  999. if (PVM_FovSatOnOff == On)
  1000. {
  1001. 5u PVM_FovSatGrad.res
  1002. 5u fovSatList.res
  1003. fov27, fovSatRamp grad_ramp<magnet_coord>{PVM_FovSatGrad[]}
  1004. 10u fovSatList:f1
  1005. fovSatAmp gatepulse 1
  1006. (fovSatPul :sp41):f1
  1007. fovSatSpoil grad_ramp{0, 0, PVM_FovSatSpoilAmp}
  1008. 0u fovSatList.inc
  1009. 0u PVM_FovSatGrad.inc
  1010. lo to fov27 times PVM_FovSatNSlices
  1011. fovSatRamp grad_off
  1012. fovSatWait
  1013. }
  1014. ;EXEC_end FovSat
  1015. # 103 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1016. subr SatTrans
  1017. ;EXEC_begin SatTrans SatTrans()
  1018. # 73 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatTransDef.mod"
  1019. if(PVM_SatTransOnOff)
  1020. {
  1021. 10u StRfPower:f1
  1022. pulse28, StD1 modlis5:f1
  1023. StD0 gatepulse 1
  1024. StP0: sp43(currentpower):f1
  1025. lo to pulse28 times StNPulses
  1026. StD2 grad_ramp{0, 0, PVM_SatTransSpoil.ampl}
  1027. StD3 grad_off
  1028. }
  1029. ;EXEC_end SatTrans
  1030. # 104 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1031. subr FatSup
  1032. ;EXEC_begin FatSup FatSup()
  1033. # 32 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FatSupDef.mod"
  1034. if (PVM_FatSupPerform == Yes)
  1035. {
  1036. 10u fatSupList:f1
  1037. fatSupAmp gatepulse 1
  1038. (fatSupPul :sp40):f1
  1039. fatSupSpoil grad_ramp{0, 0, PVM_FatSupSpoilAmp}
  1040. fatSupRamp grad_off
  1041. fatSupWait
  1042. }
  1043. ;EXEC_end FatSup
  1044. # 105 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1045. d6 grad_ramp{0, 0, g9}
  1046. ;------------------------ slice selection --------------------------
  1047. d3 grad_ramp{0, 0, g0} fq1list:f1
  1048. d8 gatepulse 1
  1049. (p0:sp0 phaselist):f1
  1050. d4 grad_off
  1051. # 115 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1052. ;---------- slice rephase, read dephase, phase encoding -----------
  1053. d10 grad_ramp{g2, ACQ_spatial_phase_1*g3, g1+ACQ_spatial_phase_2*g4}
  1054. d2 grad_off
  1055. ;----------------------- frequency encoding ------------------------
  1056. denab grad_ramp{g5, 0, 0}
  1057. (rde1 sync de1 adc1 syrec) (1u 1u phaselist:r):f1 (de);ph1 used (see recph)
  1058. aqq cpdngs17:f1
  1059. # 125 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1060. ;------------------ read spoiler + phase encoding ------------------
  1061. d11 grad_ramp{g6, ACQ_spatial_phase_1*g7, ACQ_spatial_phase_2*g8} ; 2nd and 3rd dims
  1062. d12 grad_ramp{g6, 0, 0}
  1063. d3 grad_off
  1064. d0 eoscnp #0
  1065. 0u phaselist.inc ; phase list for RF spoiling
  1066. ;----------------------------- 2d-loop -----------------------------
  1067. 0u ACQ_spatial_phase_1.inc
  1068. lo to acquisition times l1
  1069. ;---------------------- slice and movie loop -----------------------
  1070. subr FlowSatInc
  1071. ;EXEC_begin FlowSatInc FlowSatInc()
  1072. # 46 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  1073. if(PVM_InFlowSatOnOff == 1)
  1074. {
  1075. 0u modlis4.inc
  1076. }
  1077. ;EXEC_end FlowSatInc
  1078. # 137 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1079. # 139 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1080. 0u grad_matrix.inc
  1081. 0u fq1list.inc
  1082. lo to start times NI
  1083. ;------------------------- averaging loop --------------------------
  1084. lo to start times NA
  1085. d20
  1086. # 148 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1087. ;----------------------------- 3d-loop -----------------------------
  1088. 0u ACQ_spatial_phase_2.inc
  1089. lo to start times l2
  1090. ;---------------------- motion averaging loop ----------------------
  1091. lo to start times NAE
  1092. ;-------------------------- sattrans loop --------------------------
  1093. subr SatTransInc
  1094. ;EXEC_begin SatTransInc SatTransInc()
  1095. # 58 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/SatTransDef.mod"
  1096. if(PVM_SatTransOnOff)
  1097. {
  1098. 0u modlis5.inc
  1099. if "StReference == 1"
  1100. {
  1101. 0u StRfPower.inc
  1102. "StReference = 0" ;switch off after 1st 'inc'
  1103. }
  1104. }
  1105. ;EXEC_end SatTransInc
  1106. # 156 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1107. ;------------------------- repetition loop -------------------------
  1108. subr Evolution
  1109. ;EXEC_begin Evolution Evolution()
  1110. # 19 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/EvolutionDef.mod"
  1111. if (PVM_EvolutionOnOff == On)
  1112. {
  1113. if (PVM_EvolutionMode == Variable_Delay)
  1114. {
  1115. evolTime
  1116. evolTime.inc
  1117. }
  1118. else
  1119. {
  1120. evolDel
  1121. }
  1122. }
  1123. ;EXEC_end Evolution
  1124. # 159 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1125. lo to start times NR
  1126. # 163 "/opt/PV-7.0.0/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1127. if (ACQ_scan_type != Scan_Experiment) \n{ \n goto start \n}
  1128. exit
  1129. ph0 = 0
  1130. ph1 = 0