00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SEQGRADVEC_H
00019 #define SEQGRADVEC_H
00020
00021 #include <odinseq/seqgradchan.h>
00022 #include <odinseq/seqvec.h>
00023
00024
00038 class SeqGradVector : public SeqGradChan, public SeqVector {
00039
00040 public:
00048 SeqGradVector(const STD_string& object_label,direction gradchannel,
00049 float maxgradstrength,const fvector& trimarray, double gradduration);
00050
00054 SeqGradVector(const SeqGradVector& sgv);
00055
00059 SeqGradVector(const STD_string& object_label = "unnamedSeqGradVector");
00060
00064 SeqGradVector& set_trims(const fvector& trims);
00065
00069 fvector get_trims() const {return trimvals;}
00070
00071
00075 SeqGradVector& operator = (const SeqGradVector& sgv);
00076
00077
00078 private:
00079 friend class SeqGradSubVector;
00080 friend class SeqGradVectorPulse;
00081
00082
00083 bool prep();
00084
00085
00086 SeqGradChan& get_subchan(double starttime, double endtime) const;
00087 STD_string get_grdpart(float matrixfactor) const;
00088 float get_integral() const {return get_current_strength()*get_gradduration();}
00089
00090
00091
00092 svector get_vector_commands(const STD_string& iterator) const;
00093 unsigned int get_vectorsize() const;
00094 bool prep_iteration() const;
00095 bool is_qualvector() const {return false;}
00096 svector get_reord_vector_commands(const STD_string& iterator) const;
00097
00098
00099 float get_current_strength() const;
00100
00101 const SeqGradVector* parent;
00102
00103 fvector trimvals;
00104 };
00105
00106
00107
00108
00112
00113
00114
00115
00116
00117
00118
00119 #endif