seqpulsndim.h
1 /***************************************************************************
2  seqpulsndim.h - description
3  -------------------
4  begin : Wed Aug 8 2001
5  copyright : (C) 2000-2015 by Thies H. Jochimsen
6  email : thies@jochimsen.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef SEQPULSNDIM_H
19 #define SEQPULSNDIM_H
20 
21 #include <odinseq/seqpuls.h>
22 #include <odinseq/seqparallel.h>
23 
24 
25 struct SeqPulsNdimObjects; // forward declaration
26 
27 
41 class SeqPulsNdim : public SeqParallel, public virtual SeqPulsInterface, public Handled<SeqPulsNdim*> {
42 
43  // virtual functions of SeqPulsInterface are marshalled to sp
44  // virtual functions of SeqFreqChanInterface are marshalled to sp
45 
46  public:
47 
51  SeqPulsNdim(const STD_string& object_label = "unnamedSeqPulsNdim" );
52 
56  SeqPulsNdim(const SeqPulsNdim& spnd);
57 
58 
62  ~SeqPulsNdim();
63 
67  SeqPulsNdim& set_rfwave(const cvector& waveform);
68 
72  SeqPulsNdim& set_gradwave(direction dir, const fvector& waveform);
73 
77  SeqPulsNdim& set_B1max(float b1max);
78 
82  cvector get_rfwave() const;
83 
87  fvector get_gradwave(direction dir) const;
88 
92  SeqPulsNdim& set_grad_shift_offset(float grad_shift_offset);
93 
97  virtual int get_dims() const;
98 
99  // virtual functions of SeqPulsInterface are (mostly) marshalled to sp, except:
100  SeqPulsInterface& set_pulsduration(float pulsduration);
101  float get_magnetic_center() const;
102 
103 
104  // forwarding virtual functions of SeqVector to sp
105  SeqVector& set_indexvec(const ivector& iv);
106 
107 
111  SeqPulsNdim& operator = (const SeqPulsNdim& spnd);
112 
117 
118 
119  protected:
120  SeqPulsNdim& set_system_flipangle(float angle);
121 
122  SeqPulsNdim& build_seq();
123 
124  private:
125  int dims;
126  double gradshift;
127 
128  SeqPulsNdimObjects* objs;
129 
130 };
131 
132 
136 #endif
SeqPulsNdim(const STD_string &object_label="unnamedSeqPulsNdim")
virtual int get_dims() const
fvector get_gradwave(direction dir) const
cvector get_rfwave() const
SeqPulsNdim & set_grad_shift_offset(float grad_shift_offset)
SeqPulsNdim & set_gradwave(direction dir, const fvector &waveform)
float get_magnetic_center() const
RF Pulse + gradients.
Definition: seqpulsndim.h:41
SeqPulsInterface & set_pulsduration(float pulsduration)
direction
Definition: odinpara.h:38
SeqPulsNdim & set_rfwave(const cvector &waveform)
SeqPulsNdim & operator=(const SeqPulsNdim &spnd)
SeqPulsNdim & operator+=(SeqGradChanList &sgcl)
SeqPulsNdim & set_B1max(float b1max)