seqacqspiral.h
1 /***************************************************************************
2  seqacqspiral.h - description
3  -------------------
4  begin : Tue Nov 11 2003
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 SEQACQSPIRAL_H
19 #define SEQACQSPIRAL_H
20 
21 #include <odinseq/seqlist.h>
22 #include <odinseq/seqparallel.h>
23 #include <odinseq/seqacq.h>
24 #include <odinseq/seqdelay.h>
25 #include <odinseq/seqgradspiral.h>
26 #include <odinseq/seqrotmatrixvector.h>
27 #include <odinseq/seqgradtrapez.h>
28 
39 class SeqAcqSpiral : public virtual SeqAcqInterface, public SeqObjList {
40 
41  // virtual functions of SeqFreqChanInterface are marhshalled to acq
42 
43  public:
44 
45 
59  SeqAcqSpiral(const STD_string& object_label,double sweepwidth, float fov,
60  unsigned int sizeRadial, unsigned int numofSegments, LDRtrajectory& traj,
61  bool inout=false, bool optimize=false, const STD_string& nucleus="",const dvector& phaselist=0);
62 
63 
67  SeqAcqSpiral(const SeqAcqSpiral& sas);
68 
69 
70 
74  SeqAcqSpiral(const STD_string& object_label="unnamedSeqAcqSpiral");
75 
80 
81 
85  const SeqVector& get_segment_vector() const {return rotvec;}
86 
87 
91  fvector get_ktraj(unsigned int iseg, direction channel) const;
92 
97  fvector get_denscomp() const;
98 
99 
100  // marshalling virtual functions of SeqAcqInterface to acq, except:
101  double get_acquisition_center() const {return preacq.get_duration()+acq.get_acquisition_center();}
102  double get_acquisition_start() const {return preacq.get_duration()+acq.get_acquisition_start();}
103  SeqAcqInterface& set_sweepwidth(double sw, float os_factor); // produce warning
104 
105 
106  private:
107 
108  // overwriting virtual functions from SeqClass
109  bool prep();
110 
111  void common_init();
112 
113  void build_seq();
114 
115  SeqParallel par;
116 
117  SeqGradSpiral spirgrad_in;
118  SeqGradSpiral spirgrad_out;
119 
120  SeqDelay preacq;
121  SeqAcq acq;
122 
123  SeqGradTrapezParallel gbalance;
124 
125  SeqRotMatrixVector rotvec;
126 
127  bool inout_traj;
128 };
129 
133 #endif
Acquisition + spiral gradient.
Definition: seqacqspiral.h:39
Vector of SeqRotMatrix&#39;s.
SeqAcqSpiral & operator=(const SeqAcqSpiral &sas)
SeqAcqInterface & set_sweepwidth(double sw, float os_factor)
fvector get_denscomp() const
Container for sequence objects.
Definition: seqlist.h:86
double get_acquisition_start() const
Definition: seqacqspiral.h:102
Acquisition.
Definition: seqacq.h:206
double get_acquisition_center() const
Definition: seqacqspiral.h:101
3 simultaneous trapezoids
double get_duration() const
Timing delay.
Definition: seqdelay.h:54
SeqAcqSpiral(const STD_string &object_label, double sweepwidth, float fov, unsigned int sizeRadial, unsigned int numofSegments, LDRtrajectory &traj, bool inout=false, bool optimize=false, const STD_string &nucleus="", const dvector &phaselist=0)
double get_acquisition_center() const
direction
Definition: odinpara.h:38
const SeqVector & get_segment_vector() const
Definition: seqacqspiral.h:85
double get_acquisition_start() const
Definition: seqacq.h:292
fvector get_ktraj(unsigned int iseg, direction channel) const