00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SEQACQREAD_H
00019 #define SEQACQREAD_H
00020
00021 #include <odinseq/seqacq.h>
00022 #include <odinseq/seqdelay.h>
00023 #include <odinseq/seqgradconst.h>
00024 #include <odinseq/seqgradtrapez.h>
00025 #include <odinseq/seqparallel.h>
00026
00037 class SeqAcqRead : public virtual SeqAcqInterface, public SeqParallel {
00038
00039
00040
00041 public:
00042
00060 SeqAcqRead(const STD_string& object_label,double sweepwidth,unsigned int read_size,
00061 float fov, direction gradchannel, float os_factor=1.0,
00062 float partial_fourier=0.0, bool partial_fourier_at_end=false,
00063 const STD_string& nucleus="", const dvector& phaselist=0, const dvector& freqlist=0,
00064 float timestep = 0.0, rampType rampmode = linear);
00065
00069 SeqAcqRead(const SeqAcqRead& sar);
00070
00074 SeqAcqRead(const STD_string& object_label="unnamedSeqAcqRead");
00075
00079 SeqAcqRead& operator = (const SeqAcqRead& sar);
00080
00084 const SeqGradTrapez& get_readgrad() const {return read;}
00085
00086
00087
00088 double get_acquisition_center() const;
00089 double get_acquisition_start() const;
00090 SeqAcqInterface& set_sweepwidth(double sw, float os_factor);
00091
00092
00093
00094 private:
00095 friend class SeqGradEcho;
00096
00097
00098 const SeqVector* get_dephgrad(SeqGradChanParallel& dephobj, bool rephase) const;
00099
00100 void build_seq();
00101
00102 void common_init();
00103
00104 float corrected_partfour;
00105
00106 SeqAcq acq;
00107 SeqGradTrapez read;
00108 SeqDelay middelay;
00109 SeqGradDelay midgrad;
00110 SeqDelay tozero;
00111
00112 SeqGradTrapez readdephgrad;
00113 SeqGradTrapez readrephgrad;
00114
00115 };
00116
00122 #endif