# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg"
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg"
;****************************************************************
;
; Source
;
; Copyright (c) 1995-2000
; BRUKER MEDICAL GMBH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;****************************************************************

;derived from msme_tomo.gcu2 by mah 12.10.2000

# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/Avance.incl" 1
;Avance.incl
;
;avance-version (02/08/12)


;switch between high and low stage oh H amplifier



;use 2H channel for lock or pulse (lockswitch)



;allow for 2H decoupling (lockswitch)



;turn lock-hold on/off (BSMS)



;switch between 1H or 19F output (H amplifier)



;select output for 19F (amplifier)



;homospoil on/off (BSMS)



;for Q-switch probes



;for mixing probe



;gating pulse for RX22, ADC and HPPR



















;not active












































;Id
# 15 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/DBX.include" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1996
; Bruker Medizintechnik GmbH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;
; $Locker:  $
; $State: Exp $
; $Revision: 1.1 $
; Revision 1.2  1996/02/01  07:44:13  fe
; removed dublicated RCS header
;
; Revision 1.1  1996/01/09  10:03:28  appadmin
; Autocheckin during RCSinit
;
;
;****************************************************************
;DBX.include
define delay aqq
"aqq=dw*td"
















define delay deparx
define delay derxadc
define delay rdeadc

"deparx=derx-depa"
"derxadc=deadc-derx"
"rdeadc=de-deadc"
# 16 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2


define delay dur2
define delay dur25
define delay dur27
define delay dur4
define delay aqqmde1
"dur2 = d2 - 10u*2"
"dur25= d25 - 10u*2"
"dur27= d27 + 10u - 10u*2" ; increased dur27 by 10u
"d25= d25 - 10u"		   ; decereased d25 by 10 u
"dur4=d4-de+de1"
"aqqmde1=td*dw+depa-de1"

"l1 = ds"

preset off

if (!IMND_hft_mode)
{
lgrad r2d<2d>=ACQ_size[1]      ; From XwinNmr3.0 on possible
}
if (IMND_hft_mode)
{
lgrad IMND_hft_grad<2d>=ACQ_size[1]      ; From XwinNmr3.0 on possible
}
lgrad r3d<3d>=L[17]

# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/MEDSPEC.include" 1
;MEDSPEC.include

	if (Coil_operation == Single_Coil)
	  {
          2u setnmr3|11           ;Single-Coil-Operation
	  }
	if (Coil_operation == Cross_Coil)
	  {
          2u setnmr3^11           ;Cross-Coil-Operation
	  }


         fq1b receive	;select DDSB for receive as default

         if (CONFIG_preemp_type >= GREAT_60)
         {
            200u setnmr0|34|33|32 ; Disable blanking pulse
         }

# 44 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2


start,	2m
if(IMND_evolution_trigger)
{
  if(ACQ_scan_type==Scan_Experiment)
  {
	10u
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/trigger" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1996
; Bruker Medizintechnik GmbH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;
; $Locker:  $
; $State: Exp $
; Log: trigger
; Revision 3.4.2.2  2002/08/13 12:04:31  pfre
; Bugfix: 3229 replace setnmr by macros
;
; Revision 3.4.2.1  2002/08/06 11:00:38  dwe
; change trigger syntax
;
; Revision 3.4  2002/01/22 13:27:28  mah
; AvUnify:  Unified Pulseprograms for AV
;
; Revision 3.3  1997/09/30 14:01:58  gh
; Update from methods group
;
;
;****************************************************************

  ;trigger module
        10u     setnmr3|8       ;trigger enable on
        10u     trigpl1
        10u     setnmr3^8       ;trigger enable off, continue
        d7
# 52 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

  }
}
	zgrad	r3d

;----------------------------------------------------------------
; Start of 3D Loop 
;----------------------------------------------------------------

start3, 
if (!IMND_hft_mode)
{
	zgrad   r2d
}
if (IMND_hft_mode)
{
	zgrad   IMND_hft_grad
}
;----------------------------------------------------------------
; Start of 2D-Loop 
;----------------------------------------------------------------

start2,	10u
if (ACQ_rare_factor != 1)
{
  if (!IMND_hft_mode)
  {
	sgrad   r2d
  }
  if (IMND_hft_mode)
  {
	sgrad   IMND_hft_grad
  }
}
;----------------------------------------------------------------
; Start of NA-Loop 
;----------------------------------------------------------------

start1,
if (ACQ_trigger_enable)
{
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/trigger" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1996
; Bruker Medizintechnik GmbH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;
; $Locker:  $
; $State: Exp $
; Log: trigger
; Revision 3.4.2.2  2002/08/13 12:04:31  pfre
; Bugfix: 3229 replace setnmr by macros
;
; Revision 3.4.2.1  2002/08/06 11:00:38  dwe
; change trigger syntax
;
; Revision 3.4  2002/01/22 13:27:28  mah
; AvUnify:  Unified Pulseprograms for AV
;
; Revision 3.3  1997/09/30 14:01:58  gh
; Update from methods group
;
;
;****************************************************************

  ;trigger module
        10u     setnmr3|8       ;trigger enable on
        10u     trigpl1
        10u     setnmr3^8       ;trigger enable off, continue
        d7
# 93 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

}
;----------------------------------------------------------------
; Start of Movie Loop
;----------------------------------------------------------------

movie, zgrad slice

;----------------------------------------------------------------
; Start of Slice Loop
;----------------------------------------------------------------

slice, 2m	fq8b:f1
if(IMND_mtcflag)
{
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/mtc" 1
;****************************************************************
; Source
;
; Copyright (c) 1996
; Bruker Medizintechnik GmbH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;
; $Locker:  $
; $State: Exp $
; Log: mtc
; Revision 3.4  2002/01/22 13:27:28  mah
; AvUnify:  Unified Pulseprograms for AV
;
; Revision 3.3  1997/09/30 14:01:50  gh
; Update from methods group
;
;
;****************************************************************

 ; mtc module
 ;
 ; dwe 6/4/95
 ;
        300u
	d8	fq3:f1
    mtc,d12	gatepulse 1
		p12:sp4	ph0
        lo to mtc times l12

# 108 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

}
if(IMND_suppression)
{
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/watersup" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1995-2000
; BRUKER MEDICAL GMBH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;****************************************************************

;water suppression module
;
;derived from 'water' bye MAH 12.10.2000
;
    15m grad{ (-25,no_scale) | (-25,no_scale) | (-25,no_scale) } 
     4m groff  

     d8 fq3:f1
     5u
     p10:sp2
    15m grad{ (25,no_scale)  | (0)            | (0)            }
     4m groff

     d8 fq3:f1
     5u
     p10:sp2
    15m grad{ (0)            | (25,no_scale)  | (0)            }
     4m groff

     d8 fq3:f1
     5u
     p10:sp2
    15m grad{ (0)            | (0)            | (25,no_scale)  }
     4m groff
# 112 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

}
if(IMND_fatflag) 
{
     1m     fq3:f1
     d8	    gatepulse 1
     p11:sp3
     5m grad{ (0) | (0) | (t20, no_scale) }
     d4 groff
}
if(IMND_invflag )
{
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/inversion" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1995-2000
; BRUKER MEDICAL GMBH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;****************************************************************

; inversion module
;
; MAH 12.10.2000
;

lgrad IMND_InvRecov_grad=L[12]
 
	200u
	200u zgrad IMND_InvRecov_grad
	d4 grad{(0)|(0)|IMND_InvRecov_grad(100,no_scale)}

inclist1,   20u	fq1:f1
		lo to inclist1 times l11
	d8 gatepulse 1
	p14:sp6	ph2		;Inversion
	4m
	d4 groff

	if(L[10]>0)
	{
inclist2,   20u	fq1:f1
		lo to inclist2 times l10
	}
# 124 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

		d6				;Correction-Time
}
if(IMND_FovSat_flag)
{
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/fovsat" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1995-2000
; BRUKER MEDICAL GMBH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;****************************************************************

;fov saturation module 
;
;dervived from 'fovsat' by MAH 12.10.2000
; 
lgrad IMND_FovSat_grad = L[13]
	200u 
	zgrad IMND_FovSat_grad
fov,    d4 grad{IMND_FovSat_grad(100,direct_scale) | (0) | (0) } fq3:f1
    	d8		gatepulse 1
        p13:sp5		ph0
        4m grad{ (0) | (0) | IMND_FovSat_spoiler(100,no_scale) }
	igrad IMND_FovSat_grad
        lo to fov times l13
	d4 ph0 groff
# 129 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

}
if(IMND_InflowSat_flag)
{
# 1 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/inflowsat" 1
;****************************************************************
;
; Source
;
; Copyright (c) 1995-2000
; BRUKER MEDICAL GMBH
; D-76275 Ettlingen, Germany
;
; All Rights Reserved
;
;****************************************************************

;inflow saturation module
;
;dervived from 'inflowsat' by MAH 12.10.2000
;
lgrad IMND_InflowSat_grad = L[14]

	zgrad IMND_InflowSat_grad
inflow,	d4 grad{ (0) | (0) | IMND_InflowSat_grad(100,no_scale) } fq2:f1
       	d8		gatepulse 1
       	p14:sp7		ph0
       	4m grad{ (0) |(0)  | IMND_InflowSat_spoiler(100,no_scale) }
	igrad IMND_InflowSat_grad
	lo to inflow times l14
	d4 ph0 groff
# 133 "/opt/Pv3.0.1/exp/stan/nmr/lists/pp/msme_tomo.ppg" 2

}
if(!IMND_invflag)
{	
	200u
}

	5m grad{ (t0,no_scale) | (0) | (0) }	fq1:f1	
	d4 grad{ (0) | (0) | (t20,no_scale) }	gatepulse 1	; slice-selection

	p1:sp0		ph0		;+90-Grad
	d1 grad{ (t1,no_scale) | (t11,no_scale) | (t21,no_scale) }

;----------------------------------------------------------------
; Rare/Echo Loop
;----------------------------------------------------------------
rare1,

if (ACQ_rare_factor != 1)
{
 if (!IMND_hft_mode)
  {
	0u rgrad   r2d
  }
  if (IMND_hft_mode)
  {
	0u rgrad   IMND_hft_grad
  }
}

rare,	d4 grad{ (0) | (0) | (t20,no_scale) }	gatepulse 1	; slice-selection
if(IMND_pulse_flag)
{
	d14
}
	p2:sp1		ph1		;180-Grad
if(IMND_pulse_flag)
{
	d14
}
if(!IMND_split)							; phase-encoding
{
  if(!IMND_hft_mode)
  {
    if (ACQ_rare_factor==1)
    {
	10u grad{ (t2,no) | r2d(t12,no) | (t22,no) + r3d(t19,no) }
    }
    if (ACQ_rare_factor!=1)
    {
	10u grad{ (t2,no) | (t11,no)+r2d(t12,no) | (t22,no) + r3d(t19,no) }
    }
  }								
  if(IMND_hft_mode)
  {
    if (ACQ_rare_factor==1)
    {
	10u grad{ (t2,no) | IMND_hft_grad(t12,no) | (t22,no) + r3d(t19,no) }
    }
    if (ACQ_rare_factor!=1)
    {
	10u grad{ (t2,no) | (t11,no)+IMND_hft_grad(t12,no) | (t22,no) + r3d(t19,no) }
    }
  }

	10u
	dur2    :e
}
if(IMND_split)
{
	10u grad{ (0) | (0) | (t22,no_scale) }
	10u
	dur25
	d26 groff
  if(!IMND_hft_mode)
  {
    if (ACQ_rare_factor==1)
    {
	d27 :e grad{ (t2,no_scale) | r2d(t12,no_scale) | r3d(t19,no_scale) }
    }
    if (ACQ_rare_factor!=1)
    {
	d27 :e grad{ (t2,no) | (t11,no) + r2d(t12,no) | r3d(t19,no) }
    }
  }
  if(IMND_hft_mode)
  {
    if (ACQ_rare_factor==1)
    {
	d27 :e grad{ (t2,no_scale) | IMND_hft_grad(t12,no_scale) | r3d(t19,no_scale) }
    }
    if (ACQ_rare_factor!=1)
    {
	d27 :e grad{ (t2,no) | (t11,no) + IMND_hft_grad(t12,no) | r3d(t19,no) }
    }
  }
}
 	dur4 :e grad{ (t0,no_scale) | (0) | (0) } 	;read grad
        deparx     adc ph4 setnmr3^4 syrec fqatofqb:f1 \n derxadc     ph1:r setnmr8|6 				\n rdeadc     setnmr3|0					; needs de time
        aqqmde1   

if(!IMND_split)
{
  if(!IMND_hft_mode)						; phase-decoding
  {
 	10u grad{ (t3,no) | r2d(t13,no) | (t23,no) + r3d(t18,no) }  
  }
  if(IMND_hft_mode)
  {
	10u grad{ (t3,no) | IMND_hft_grad(t13,no) | (t23,no) + r3d(t18,no) }  
  }
}
if(IMND_split)
{
  if(!IMND_hft_mode)						; phase-decoding
  {
 	10u     grad{ (t3,no) | r2d(t13,no) | r3d(t18,no) }
  }
  if(IMND_hft_mode)
  {
	10u     grad{ (t3,no) | IMND_hft_grad(t13,no) | r3d(t18,no) }
  }
}

if(!IMND_split)
{
        dur2
}
if (IMND_split)
{
	dur27
	d26 groff
	d25 grad{ (0) | (0) | (t23,no_scale) }
}
        1u 
 	1u  
	8u eoscnp

if (ACQ_rare_factor > 1)
{
  if (!IMND_hft_mode)
  {
	0u igrad   r2d
  }
  if (IMND_hft_mode)
  {
	0u igrad   IMND_hft_grad
  }
  lo to rare times ACQ_rare_factor

  lo to rare1 times NECHOES/ACQ_rare_factor
}
if (ACQ_rare_factor <= 1)
{
  lo to rare times NECHOES
}

;----------------------------------------------------------------
; Echo/Rare Loop finished
;----------------------------------------------------------------

if (IMND_flipback)				
{
    	d4 grad{ (0) | (0) | (t20,no_scale) }	gatepulse 1	; slice selection
  if(IMND_pulse_flag)
  {
	d14
  }
        p2:sp1:f1	ph1	;180-Grad
  if(IMND_pulse_flag)
  {
	d14
  }
    	d1 grad{ (t1,no) | (t11,no) | (t21,no) }		; read.t0 slice.t3
    	d4 grad{ (0) | (0) | (t20,no_scale) }	gatepulse 1	; slice selection
  if (IMND_invflag)
  {
	p1:sp0	ph0						; Back +90-Grad
  }
  if (!IMND_invflag)
  {
	p1:sp0	ph2	;Back -90-Grad
  }
}
	d20 grad { (t4,no_scale) | (t14,no_scale) | (t24,no) }	;long spoiler
	d21 groff
if(IMND_auto_adv)
{
  if(l15)
  {
fq1loop,1u	fq1:f1
	1u
	5u	fq8b:f1
	1u
    if(IMND_InflowSat_flag)
    {
	1u	fq2:f1
	5u
      if(L[16]==2)
      {
	1u	fq2:f1
	5u
      }
    }
	5u
	lo to fq1loop times l15
  }
}
	2.5u  igrad slice
	lo to slice times NSLICES;		Slice-Loop

;----------------------------------------------------------------
; Slice Loop finished
;----------------------------------------------------------------

	5u
	lo to movie times l26;			Movie-Loop

;----------------------------------------------------------------
; Movie Loop finished
;----------------------------------------------------------------

	2.5u		ipp0
	2.5u		ipp2
	2.5u		ip4*2
	lo to start1 times NA;			Averaging-Loop
;----------------------------------------------------------------
; NA Loop finished
;----------------------------------------------------------------
	2.5u		rpp0
	2.5u		rpp2
	2.5u		rp4
if(IMND_evolution)
{
        5u
 if (ACQ_rare_factor == 1)
 {
  if (!IMND_hft_mode)
  {
	5u igrad   r2d
  }
  if (IMND_hft_mode)
  {
	5u igrad   IMND_hft_grad
  }
 } 
 if (ACQ_rare_factor != 1)
 {
	5u
 }

        lo to start2 times l23                  ;2D-Loop with Evolution
}
if(!IMND_evolution)
{
        5u
	if "l1 == 0" goto skip
	"l1 = l1 - 1"
  if (ACQ_rare_factor > 1)
  { 
    if (!IMND_hft_mode)
    {	
	zgrad   r2d
    } 
    if (IMND_hft_mode)
    {	
	zgrad   IMND_hft_grad
    }
  }
	goto start2
skip,	5u      
 if (ACQ_rare_factor == 1)
 {
  if (!IMND_hft_mode)
  {
	5u igrad   r2d
  }
  if (IMND_hft_mode)
  {
	5u igrad   IMND_hft_grad
  }
 }
 if (ACQ_rare_factor != 1)
 {
	5u
 }
  if(IMND_auto_adv)
  {
	lo to start2 times l23
  }
  ;-------------------------------------------------------------
  ; Reloop incorrect
  ; correct: loto start2 times ACQ_size[1]/ACQ_rare_factor
  ;-------------------------------------------------------------
  if(!IMND_auto_adv)				; Normal 2D-Loop
  {
    if (ACQ_rare_factor > 0)
    {
      lo to start2 times ACQ_size[1]/ACQ_rare_factor
    }
    if (ACQ_rare_factor <= 0)
    {
      lo to start2 times ACQ_size[1]
    }
  }
} 
;----------------------------------------------------------------
; 2D Loop finished
;----------------------------------------------------------------
	5u      igrad r3d	
    	lo to start3 times l17;			3D-Loop

;----------------------------------------------------------------
; 3D Loop finished
;----------------------------------------------------------------

	vd	ivd
if(IMND_auto_adv)
{
	1u	fq1:f1
	1u
	5u	fq8b:f1
	1u
  if(IMND_InflowSat_flag)
  {
	5u	fq2:f1
	5u
    if(L[16] == 2)
    {
	5u	fq2:f1
	5u
    }
  }
}
	lo to start times NR;			Evolution-Loop
	5u
	goto start
exit

ph0 = 0 2
ph1 = 1
ph2 = 2 0
ph3 = 3
ph4 = 0
