seqacqread.h
1 /***************************************************************************
2  seqacqread.h - description
3  -------------------
4  begin : Tue Aug 13 2002
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 SEQACQREAD_H
19 #define SEQACQREAD_H
20 
21 #include <odinseq/seqacq.h>
22 #include <odinseq/seqdelay.h>
23 #include <odinseq/seqgradconst.h>
24 #include <odinseq/seqgradtrapez.h>
25 #include <odinseq/seqparallel.h>
26 
37 class SeqAcqRead : public virtual SeqAcqInterface, public SeqParallel {
38 
39  // virtual functions of SeqFreqChanInterface are marhshalled to acq
40 
41  public:
42 
60  SeqAcqRead(const STD_string& object_label,double sweepwidth,unsigned int read_size,
61  float fov, direction gradchannel, float os_factor=1.0,
62  float partial_fourier=0.0, bool partial_fourier_at_end=false,
63  const STD_string& nucleus="", const dvector& phaselist=0, const dvector& freqlist=0,
64  float timestep = 0.0, rampType rampmode = linear);
65 
69  SeqAcqRead(const SeqAcqRead& sar);
70 
74  SeqAcqRead(const STD_string& object_label="unnamedSeqAcqRead");
75 
79  SeqAcqRead& operator = (const SeqAcqRead& sar);
80 
84  const SeqGradTrapez& get_readgrad() const {return read;}
85 
86 
87  // marshalling virtual functions of SeqAcqInterface to acq, except:
88  double get_acquisition_center() const;
89  double get_acquisition_start() const;
90  SeqAcqInterface& set_sweepwidth(double sw, float os_factor); // produce warning
91 
92 
93 
94  private:
95  friend class SeqGradEcho;
96 
97  // overloaded for SeqAcqDeph
98  const SeqVector* get_dephgrad(SeqGradChanParallel& dephobj, bool rephase) const;
99 
100  void build_seq();
101 
102  void common_init();
103 
104  float corrected_partfour; // helper during construction
105 
106  SeqAcq acq;
107  SeqGradTrapez read;
108  SeqDelay middelay;
109  SeqGradDelay midgrad;
110  SeqDelay tozero;
111 
112  SeqGradTrapez readdephgrad;
113  SeqGradTrapez readrephgrad;
114 
115 };
116 
122 #endif
Trapezoidal gradient.
Acquisition + readout gradient.
Definition: seqacqread.h:37
SeqAcqRead & operator=(const SeqAcqRead &sar)
const SeqGradTrapez & get_readgrad() const
Definition: seqacqread.h:84
Acquisition.
Definition: seqacq.h:206
double get_acquisition_center() const
Gradient echo module.
Definition: seqgradecho.h:45
SeqAcqInterface & set_sweepwidth(double sw, float os_factor)
Timing delay.
Definition: seqdelay.h:54
Gradient delay.
Definition: seqgradconst.h:84
double get_acquisition_start() const
rampType
Definition: seqgradramp.h:42
direction
Definition: odinpara.h:38
SeqAcqRead(const STD_string &object_label, double sweepwidth, unsigned int read_size, float fov, direction gradchannel, float os_factor=1.0, float partial_fourier=0.0, bool partial_fourier_at_end=false, const STD_string &nucleus="", const dvector &phaselist=0, const dvector &freqlist=0, float timestep=0.0, rampType rampmode=linear)