/usr/include/odinseq/seqgradspiral.h is in libodin-dev 1.8.5-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | /***************************************************************************
seqgradspiral.h - description
-------------------
begin : Tue Aug 13 2002
copyright : (C) 2001 by Thies H. Jochimsen
email : jochimse@cns.mpg.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef SEQGRADSPIRAL_H
#define SEQGRADSPIRAL_H
#include <tjutils/tjnumeric.h>
#include <odinseq/odinpulse.h>
#include <odinseq/seqgradchan.h>
#include <odinseq/seqgradwave.h>
#include <odinseq/seqgradconst.h>
#include <odinseq/seqgradchanparallel.h>
/**
* @addtogroup odinseq_internals
* @{
*/
/**
* Spiral Gradients
*/
class SeqGradSpiral: public SeqGradChanParallel, public MinimizationFunction {
public:
/**
* Constructs a spiral gradient labeled 'object_label' and the
* following properties:
* - traj: The spiral trajectory (will be modified, if neccessary)
* - dt: The dwell time
* - resolution: Spatial resolution
* - sizeRadial: The number of image points in radial direction
* - numofSegments : The number of spiral interleaves
* - inwards: Reverse trajectory so that the spiral ends in the center of k-space, in addition, rotates trajectory by 180 deg
* - optimize: Optimize trajectory for minimum readout length if trajectory has a free tunable parameter
* - nucleus: The imaging nucleus
*/
SeqGradSpiral(const STD_string& object_label, JDXtrajectory& traj, double dt, float resolution, unsigned int sizeRadial, unsigned int numofSegments, bool inwards=false, bool optimize=false, const STD_string& nucleus="");
/**
* Constructs an empty spiral gradient with the given label.
*/
SeqGradSpiral(const STD_string& object_label = "unnamedSeqGradSpiral" );
/**
* Constructs a spiral gradient which is a copy of 'sgs'
*/
SeqGradSpiral(const SeqGradSpiral& sgs);
/**
* This assignment operator will make this object become an exact copy of 'sgs'.
*/
SeqGradSpiral& operator = (const SeqGradSpiral& sgs);
/**
* Returns the size of the spiral without ramps
*/
unsigned int spiral_size() const {return denscomp.size();}
/**
* Returns the duration of the ramp that switches the gradients off
*/
double get_ramp_duration() const {return (get_gradduration()-spiral_dur);}
/**
* Sets the delay of the gradient delays preceding the spiral gradients
*/
SeqGradSpiral& set_predelay_duration(double dur);
/**
* Returns the Jacobian determinante, i.e. the correction function
* for non-uniform weighting of k-space
*/
const fvector& get_denscomp() const {return denscomp;}
/**
* Returns the k-space trajectory for the interleave 'iseg' and the given channel
*/
fvector get_ktraj(direction channel) const;
private:
void common_init() {traj_cache=0;}
void build_seq();
float readout_npts() const;
// implement virtual functions of MinimizationFunction to minimize readout duration
float evaluate(const fvector& spirpar) const;
unsigned int numof_fitpars() const {return 1;}
SeqGradWave gx;
SeqGradWave gy;
SeqGradDelay gxdelay;
SeqGradDelay gydelay;
fvector kx;
fvector ky;
fvector denscomp;
double spiral_dur;
double predelay;
// cache values for readout_npts/evaluate
JDXtrajectory* traj_cache;
double dt_cache;
float resolution_cache;
unsigned int sizeRadial_cache;
float gamma_cache;
};
//////////////////////////////////////////////////////////////////////////////////////////
/** @}
*/
#endif
|