00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SEQSAT_H
00019 #define SEQSAT_H
00020
00021 #include <odinseq/seqpulsar.h>
00022 #include <odinseq/seqgradpulse.h>
00023
00024
00037 enum satNucleus {fat=0,water};
00038
00039
00041
00049 class SeqPulsarSat : public SeqPulsar {
00050
00051 public:
00052
00053
00059 SeqPulsarSat(const STD_string& object_label="unnamedSeqPulsarSat", satNucleus nuc=fat,float bandwidth=0.3);
00060
00068 SeqPulsarSat(const STD_string& object_label,float bandwidth,
00069 double freqoffset=0.0, float flipangle=90.0, float rel_filterwidth=0.3);
00070
00071
00075 SeqPulsarSat(const SeqPulsarSat& spg);
00076
00080 SeqPulsarSat& operator = (const SeqPulsarSat& spg);
00081
00082 };
00083
00084
00086
00087
00095 class SeqSat : public SeqObjList, public virtual SeqPulsInterface, public virtual SeqGradInterface {
00096
00097
00098
00099
00100 public:
00107 SeqSat(const STD_string& object_label="unnamedSeqSat",satNucleus nuc=fat,float bandwidth=0.3, unsigned int npulses=1);
00108
00109
00113 SeqSat(const SeqSat& spg);
00114
00118 SeqSat& operator = (const SeqSat& spg);
00119
00120
00121
00122 SeqGradInterface& set_strength(float gradstrength);
00123 SeqGradInterface& invert_strength();
00124 float get_strength() const;
00125 fvector get_gradintegral() const;
00126 double get_gradduration() const;
00127 SeqGradInterface& set_gradrotmatrix(const RotMatrix& matrix);
00128
00129 private:
00130 void build_seq();
00131
00132 SeqPulsarSat puls;
00133 SeqGradConstPulse spoiler_read_pos;
00134 SeqGradConstPulse spoiler_slice_neg;
00135 SeqGradConstPulse spoiler_read_neg;
00136 SeqGradConstPulse spoiler_slice_pos;
00137 SeqGradConstPulse spoiler_phase_pos;
00138
00139 unsigned int npulses_cache;
00140
00141 };
00142
00146 #endif