pulseprogram 42 KB

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