/usr/include/odinseq/seqdec.h is in libodin-dev 1.8.8-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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | /***************************************************************************
seqdec.h - description
-------------------
begin : Fri Sep 7 2001
copyright : (C) 2000-2014 by Thies H. Jochimsen
email : thies@jochimsen.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 SEQDEC_H
#define SEQDEC_H
#include <tjutils/tjembed.h>
#include <odinseq/seqlist.h>
#include <odinseq/seqfreq.h>
#include <odinseq/seqsimvec.h>
#include <odinseq/seqdriver.h>
/**
* @ingroup odinseq_internals
* The base class for platform specific drivers of decoupling periods
*/
class SeqDecouplingDriver : public SeqDriverBase {
public:
SeqDecouplingDriver() {}
virtual ~SeqDecouplingDriver() {}
virtual bool prep_driver(double decdur, int channel, float decpower, const STD_string& program, double pulsedur) = 0;
virtual void event(eventContext& context, double start) const = 0;
virtual double get_preduration() const = 0;
virtual double get_postduration() const = 0;
virtual STD_string get_preprogram(programContext& context, const STD_string& iteratorcommand) const = 0;
virtual STD_string get_postprogram(programContext& context) const = 0;
virtual SeqDecouplingDriver* clone_driver() const = 0;
};
////////////////////////////////////////////////////////////////////////////
/**
* @addtogroup odinseq
* @{
*/
/**
* \brief Decoupling period
*
* This class represents a decoupling container which can hold a part
* of the sequence where decoupling is switched on.
*/
class SeqDecoupling : public SeqObjList, public Embed<SeqDecoupling,SeqObjBase>, public SeqFreqChan {
public:
/**
* Constructs a container for a sequence part at which decoupling will be switched on
* with the following properties:
* - nucleus: The nucleus for which the decoupling should be performed.
* - decpower: The maximum power for the decoupling program.
* - freqlist: Frequency list for the decoupler.
* - decprog: The file name of the decoupling program which will be used. If none
* is specified, continuous wave decouling will be used.
* - decpulsduration: If a decoupling program is given, this parameter determines
* the pulse duration of each single pulse in a composite pulse
* decoupling scheme.
*/
SeqDecoupling(const STD_string& object_label,const STD_string& nucleus,float decpower,const dvector& freqlist=0,
const STD_string decprog="",float decpulsduration=0.0);
/**
* Constructs a decoupling container which is a copy of 'sd'
*/
SeqDecoupling(const SeqDecoupling& sd);
/**
* Constructs an empty decoupling container with the given label.
*/
SeqDecoupling(const STD_string& object_label="unnamedSeqDecoupling");
/**
* This function specifies that during the sequence part 'so' decoupling
* will be switched on.
*/
SeqDecoupling& operator () (const SeqObjBase& so);
/**
* Returns the decoupling power
*/
float get_decpower() const {return power;}
/**
* Sets the decoupling power
*/
void set_decpower(float p) {power=p;}
/**
* Returns the decoupling program
*/
STD_string get_program() const;
/**
* Sets the decoupling program
*/
void set_program(const STD_string& p);
/**
* Returns the decoupling pulse duration for Composite Pulse Decoupling
*/
double get_pulsduration() const;
/**
* Sets the decoupling pulse duration for Composite Pulse Decoupling
*/
void set_pulsduration(float d);
/**
* This assignment operator will make this object become an exact copy of 'sd'.
*/
SeqDecoupling& operator = (const SeqDecoupling& sd);
// implementing virtual functions of SeqTreeObj
double get_duration() const;
unsigned int event(eventContext& context) const;
// overwriting virtual function from SeqFreqChan
STD_string get_program(programContext& context) const;
double get_freqchan_duration() const {return get_duration();}
unsigned int get_freqlistindex() const {return 2;}
const SeqVector& get_freqlist_vector() const;
SeqValList get_freqvallist(freqlistAction action) const;
void clear_container();
private:
friend class Embed<SeqDecoupling,SeqObjBase>;
int set_body(const SeqObjBase& so);
// overwriting virtual functions from SeqClass
bool prep();
float power;
STD_string decprogram;
double pulsduration;
mutable SeqDriverInterface<SeqDecouplingDriver> decdriver;
SeqSimultanVector instvec;
};
/** @}
*/
#endif
|