ODIN
seqgradspiral.h
1 /***************************************************************************
2  seqgradspiral.h - description
3  -------------------
4  begin : Tue Aug 13 2002
5  copyright : (C) 2000-2021 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 SEQGRADSPIRAL_H
19 #define SEQGRADSPIRAL_H
20 
21 #include <tjutils/tjnumeric.h>
22 
23 #include <odinseq/odinpulse.h>
24 #include <odinseq/seqgradchan.h>
25 #include <odinseq/seqgradwave.h>
26 #include <odinseq/seqgradconst.h>
27 #include <odinseq/seqgradchanparallel.h>
28 
29 
39 
40  public:
53  SeqGradSpiral(const STD_string& object_label, LDRtrajectory& traj, double dt, float resolution, unsigned int sizeRadial, unsigned int numofSegments, bool inwards=false, bool optimize=false, const STD_string& nucleus="");
54 
58  SeqGradSpiral(const STD_string& object_label = "unnamedSeqGradSpiral" );
59 
64 
69 
70 
74  unsigned int spiral_size() const {return denscomp.size();}
75 
79  double get_ramp_duration() const {return (get_gradduration()-spiral_dur);}
80 
81 
86 
91  const fvector& get_denscomp() const {return denscomp;}
92 
96  fvector get_ktraj(direction channel) const;
97 
98 
99  private:
100  void common_init() {traj_cache=0;}
101  void build_seq();
102 
103  float readout_npts() const;
104 
105  // implement virtual functions of MinimizationFunction to minimize readout duration
106  float evaluate(const fvector& spirpar) const;
107  unsigned int numof_fitpars() const {return 1;}
108 
109  SeqGradWave gx;
110  SeqGradWave gy;
111 
112  SeqGradDelay gxdelay;
113  SeqGradDelay gydelay;
114 
115  fvector kx;
116  fvector ky;
117 
118  fvector denscomp;
119 
120  double spiral_dur;
121  double predelay;
122 
123  // cache values for readout_npts/evaluate
124  LDRtrajectory* traj_cache;
125  double dt_cache;
126  float resolution_cache;
127  unsigned int sizeRadial_cache;
128  float gamma_cache;
129 
130 };
131 
133 
134 
135 
139 #endif
double get_gradduration() const
Gradient delay.
Definition: seqgradconst.h:84
SeqGradSpiral(const SeqGradSpiral &sgs)
double get_ramp_duration() const
Definition: seqgradspiral.h:79
SeqGradSpiral(const STD_string &object_label="unnamedSeqGradSpiral")
fvector get_ktraj(direction channel) const
SeqGradSpiral & operator=(const SeqGradSpiral &sgs)
SeqGradSpiral(const STD_string &object_label, LDRtrajectory &traj, double dt, float resolution, unsigned int sizeRadial, unsigned int numofSegments, bool inwards=false, bool optimize=false, const STD_string &nucleus="")
const fvector & get_denscomp() const
Definition: seqgradspiral.h:91
unsigned int spiral_size() const
Definition: seqgradspiral.h:74
SeqGradSpiral & set_predelay_duration(double dur)
Gradient Waveform.
Definition: seqgradwave.h:36
direction
Definition: odinpara.h:41