seqsat.h
1 /***************************************************************************
2  seqsat.h - description
3  -------------------
4  begin : Tue Oct 19 2004
5  copyright : (C) 2000-2015 by Thies H. Jochimsen
6  email : thies@jochimsen.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef SEQSAT_H
19 #define SEQSAT_H
20 
21 #include <odinseq/seqpulsar.h>
22 #include <odinseq/seqgradpulse.h>
23 
24 
37 enum satNucleus {fat=0,water};
38 
39 
41 
49 class SeqPulsarSat : public SeqPulsar {
50 
51  public:
52 
53 
59  SeqPulsarSat(const STD_string& object_label="unnamedSeqPulsarSat", satNucleus nuc=fat,float bandwidth=0.3);
60 
68  SeqPulsarSat(const STD_string& object_label,float bandwidth,
69  double freqoffset=0.0, float flipangle=90.0, float rel_filterwidth=0.3);
70 
71 
75  SeqPulsarSat(const SeqPulsarSat& spg);
76 
81 
82 };
83 
84 
86 
87 
95 class SeqSat : public SeqObjList, public virtual SeqPulsInterface, public virtual SeqGradInterface {
96 
97  // virtual functions of SeqPulsInterface are marshalled to puls
98  // virtual functions of SeqFreqChanInterface are marshalled to puls
99 
100  public:
107  SeqSat(const STD_string& object_label="unnamedSeqSat",satNucleus nuc=fat,float bandwidth=0.3, unsigned int npulses=1);
108 
109 
113  SeqSat(const SeqSat& spg);
114 
118  SeqSat& operator = (const SeqSat& spg);
119 
120 
121  // overloading virtual function from SeqGradInterface
122  SeqGradInterface& set_strength(float gradstrength);
124  float get_strength() const;
125  fvector get_gradintegral() const;
126  double get_gradduration() const;
128 
129  private:
130  void build_seq();
131 
132  SeqPulsarSat puls;
133  SeqGradConstPulse spoiler_read_pos;
134  SeqGradConstPulse spoiler_slice_neg;
135  SeqGradConstPulse spoiler_read_neg;
136  SeqGradConstPulse spoiler_slice_pos;
137  SeqGradConstPulse spoiler_phase_pos;
138 
139  unsigned int npulses_cache;
140 
141 };
142 
146 #endif
SeqGradInterface & set_gradrotmatrix(const RotMatrix &matrix)
SeqPulsarSat(const STD_string &object_label="unnamedSeqPulsarSat", satNucleus nuc=fat, float bandwidth=0.3)
Saturation pulse.
Definition: seqsat.h:49
Saturation pulse + spoilers.
Definition: seqsat.h:95
float get_strength() const
Definition: seqpulsar.h:95
Container for sequence objects.
Definition: seqlist.h:86
SeqGradInterface & set_strength(float gradstrength)
Rotation Matrix.
Definition: geometry.h:67
SeqPulsarSat & operator=(const SeqPulsarSat &spg)
Constant gradient pulse.
Definition: seqgradpulse.h:41
Pulsar pulses, combines OdinPulse and SeqPulsNdim.
Definition: seqpulsar.h:41
satNucleus
Definition: seqsat.h:37
double get_gradduration() const
SeqGradInterface & invert_strength()
fvector get_gradintegral() const