00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SEQGRADPHASE_H
00019 #define SEQGRADPHASE_H
00020
00021 #include <odinseq/seqgradpulse.h>
00022 #include <odinseq/seqsimvec.h>
00023
00024 #define DEFAULT_ACL_BANDS 4
00025
00037 class SeqGradPhaseEnc : public SeqGradVectorPulse {
00038
00039 public:
00040
00055 SeqGradPhaseEnc(const STD_string& object_label, unsigned int nsteps,
00056 float fov, direction gradchannel, float gradstrength,
00057 encodingScheme scheme=linearEncoding, reorderScheme reorder=noReorder,
00058 unsigned int nsegments=1, unsigned int reduction=1, unsigned int acl_bands=DEFAULT_ACL_BANDS,
00059 float partial_fourier=0.0, const STD_string& nucleus="");
00060
00075 SeqGradPhaseEnc(const STD_string& object_label, unsigned int nsteps,
00076 float fov, float gradduration, direction gradchannel,
00077 encodingScheme scheme=linearEncoding, reorderScheme reorder=noReorder,
00078 unsigned int nsegments=1, unsigned int reduction=1, unsigned int acl_bands=DEFAULT_ACL_BANDS,
00079 float partial_fourier=0.0, const STD_string& nucleus="");
00080
00081
00085 SeqGradPhaseEnc(const STD_string& object_label="unnamedSeqGradPhaseEnc") : SeqGradVectorPulse(object_label) {}
00086
00090 SeqGradPhaseEnc(const SeqGradPhaseEnc& sgpe) {SeqGradPhaseEnc::operator = (sgpe);}
00091
00095 SeqGradPhaseEnc& operator = (const SeqGradPhaseEnc& sgpe) {SeqGradVectorPulse::operator = (sgpe); return *this;}
00096
00097
00098 private:
00099 void init_encoding(unsigned int nsteps,encodingScheme scheme, reorderScheme reorder, unsigned int nsegments, unsigned int reduction, unsigned int acl_bands, float partial_fourier);
00100
00101 };
00102
00103
00105
00106
00113 class SeqGradPhaseEncFlowComp : public SeqGradChanList {
00114
00115 public:
00116
00132 SeqGradPhaseEncFlowComp(const STD_string& object_label, double t0, unsigned int nsteps,
00133 float fov, direction gradchannel, float gradstrength,
00134 encodingScheme scheme=linearEncoding, reorderScheme reorder=noReorder,
00135 unsigned int nsegments=1, unsigned int reduction=1, unsigned int acl_bands=DEFAULT_ACL_BANDS,
00136 float partial_fourier=0.0, const STD_string& nucleus="");
00137
00138
00142 SeqGradPhaseEncFlowComp(const STD_string& object_label="unnamedSeqGradPhaseEncFlowComp") : SeqGradChanList(object_label) {}
00143
00147 SeqGradPhaseEncFlowComp(const SeqGradPhaseEncFlowComp& sgpefc) {SeqGradPhaseEncFlowComp::operator = (sgpefc);}
00148
00152 SeqGradPhaseEncFlowComp& operator = (const SeqGradPhaseEncFlowComp& sgpefc);
00153
00157 operator const SeqVector& () const {return simvec;}
00158
00159 private:
00160
00161 void build_seq();
00162
00163 static void calc_flowcomp_pe(float& negfact, float& tc, float Gpos, float M0, float t0, float slewrate);
00164
00165 SeqGradVectorPulse pos;
00166 SeqGradVectorPulse neg;
00167 SeqSimultanVector simvec;
00168
00169 };
00170
00174 #endif