00001 /*************************************************************************** 00002 seqpulsndim.h - description 00003 ------------------- 00004 begin : Wed Aug 8 2001 00005 copyright : (C) 2001 by Thies H. Jochimsen 00006 email : jochimse@cns.mpg.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef SEQPULSNDIM_H 00019 #define SEQPULSNDIM_H 00020 00021 #include <odinseq/seqpuls.h> 00022 #include <odinseq/seqparallel.h> 00023 00024 00025 struct SeqPulsNdimObjects; // forward declaration 00026 00027 00041 class SeqPulsNdim : public SeqParallel, public virtual SeqPulsInterface, public Handled<SeqPulsNdim*> { 00042 00043 // virtual functions of SeqPulsInterface are marshalled to sp 00044 // virtual functions of SeqFreqChanInterface are marshalled to sp 00045 00046 public: 00047 00051 SeqPulsNdim(const STD_string& object_label = "unnamedSeqPulsNdim" ); 00052 00056 SeqPulsNdim(const SeqPulsNdim& spnd); 00057 00058 00062 ~SeqPulsNdim(); 00063 00067 SeqPulsNdim& set_rfwave(const cvector& waveform); 00068 00072 SeqPulsNdim& set_gradwave(direction dir, const fvector& waveform); 00073 00077 SeqPulsNdim& set_B1max(float b1max); 00078 00082 cvector get_rfwave() const; 00083 00087 fvector get_gradwave(direction dir) const; 00088 00092 SeqPulsNdim& set_grad_shift_offset(float grad_shift_offset); 00093 00097 virtual int get_dims() const; 00098 00099 // virtual functions of SeqPulsInterface are (mostly) marshalled to sp, except: 00100 SeqPulsInterface& set_pulsduration(float pulsduration); 00101 float get_magnetic_center() const; 00102 00103 00104 // forwarding virtual functions of SeqVector to sp 00105 SeqVector& set_indexvec(const ivector& iv); 00106 00107 00111 SeqPulsNdim& operator = (const SeqPulsNdim& spnd); 00112 00116 SeqPulsNdim& operator += (SeqGradChanList& sgcl); 00117 00118 00119 protected: 00120 SeqPulsNdim& set_system_flipangle(float angle); 00121 00122 SeqPulsNdim& build_seq(); 00123 00124 private: 00125 int dims; 00126 double gradshift; 00127 00128 SeqPulsNdimObjects* objs; 00129 00130 }; 00131 00132 00136 #endif
1.5.6