00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SEQACQSPIRAL_H
00019 #define SEQACQSPIRAL_H
00020
00021 #include <odinseq/seqlist.h>
00022 #include <odinseq/seqparallel.h>
00023 #include <odinseq/seqacq.h>
00024 #include <odinseq/seqdelay.h>
00025 #include <odinseq/seqgradspiral.h>
00026 #include <odinseq/seqrotmatrixvector.h>
00027 #include <odinseq/seqgradtrapez.h>
00028
00039 class SeqAcqSpiral : public virtual SeqAcqInterface, public SeqObjList {
00040
00041
00042
00043 public:
00044
00045
00059 SeqAcqSpiral(const STD_string& object_label,double sweepwidth, float fov,
00060 unsigned int sizeRadial, unsigned int numofSegments, JDXtrajectory& traj,
00061 bool inout=false, bool optimize=false, const STD_string& nucleus="",const dvector& phaselist=0);
00062
00063
00067 SeqAcqSpiral(const SeqAcqSpiral& sas);
00068
00069
00070
00074 SeqAcqSpiral(const STD_string& object_label="unnamedSeqAcqSpiral");
00075
00079 SeqAcqSpiral& operator = (const SeqAcqSpiral& sas);
00080
00081
00085 const SeqVector& get_segment_vector() const {return rotvec;}
00086
00087
00091 fvector get_ktraj(unsigned int iseg, direction channel) const;
00092
00097 fvector get_denscomp() const;
00098
00099
00100
00101 double get_acquisition_center() const {return preacq.get_duration()+acq.get_acquisition_center();}
00102 double get_acquisition_start() const {return preacq.get_duration()+acq.get_acquisition_start();}
00103 SeqAcqInterface& set_sweepwidth(double sw, float os_factor);
00104
00105
00106 private:
00107
00108
00109 bool prep();
00110
00111 void common_init();
00112
00113 void build_seq();
00114
00115 SeqParallel par;
00116
00117 SeqGradSpiral spirgrad_in;
00118 SeqGradSpiral spirgrad_out;
00119
00120 SeqDelay preacq;
00121 SeqAcq acq;
00122
00123 SeqGradTrapezParallel gbalance;
00124
00125 SeqRotMatrixVector rotvec;
00126
00127 bool inout_traj;
00128 };
00129
00133 #endif