Tomato
OxCalculator.hxx
Go to the documentation of this file.
1 
7 #ifndef Tomato_OXCALCULATORT1_HXX
8 #define Tomato_OXCALCULATORT1_HXX
9 
10 #include "OxCalculator.h"
11 
12 namespace Ox {
13 
14  /* ****************** */
15  /* *** GETTERS *** */
16  /* ****************** */
17 
18  template<typename MeasureType>
19  std::map<std::string, MeasureType>
20  Calculator<MeasureType>
21  ::getResults() const {
22  return _Results;
23  }
24 
25  template< typename MeasureType >
26  Model<MeasureType>*
28  ::getModel() const {
29  if (!_Model) {
30  throw std::runtime_error("Calculator: _Model equals 0. Set _Model");
31  }
32  return _Model;
33  }
34 
35  template< typename MeasureType >
38  ::getFitter() const {
39  if (!_Fitter) {
40  throw std::runtime_error("Calculator: _Fitter equals 0. Set _Fitter");
41  }
42  return _Fitter;
43  }
44 
45  template< typename MeasureType >
49  return _StartPointCalculator;
50  }
51 
52  template< typename MeasureType >
55  ::getSignCalculator() const {
56  return _SignCalculator;
57  }
58 
59  template< typename MeasureType >
60  const MeasureType *
62  ::getInvTimes() const {
63  return _InvTimes;
64  }
65 
66  template< typename MeasureType >
67  const MeasureType *
69  ::getEchoTimes() const {
70  return _EchoTimes;
71  }
72 
73  template< typename MeasureType >
74  const MeasureType *
76  ::getRepTimes() const {
77  return _RepTimes;
78  }
79 
80  template< typename MeasureType >
81  const MeasureType *
83  ::getRelAcqTimes() const {
84  return _RelAcqTimes;
85  }
86 
87  template< typename MeasureType >
88  const MeasureType *
90  ::getSigMag() const {
91  if (!_SigMag) {
92  throw std::runtime_error("Calculator: _SigMag equals 0. Set _SigMag" );
93  };
94  return _SigMag;
95  }
96 
97  template< typename MeasureType >
98  const MeasureType *
100  ::getSigPha() const {
101  return _SigPha;
102  }
103 
104  template< typename MeasureType >
105  const MeasureType *
107  ::getNoise() const {
108  return _Noise;
109  }
110 
111  template< typename MeasureType >
112  MeasureType *
114  ::getSignal() const {
115  return _Signal;
116  }
117 
118  template< typename MeasureType >
119  MeasureType *
121  ::getSigns() const {
122  return _Signs;
123  }
124 
125  template< typename MeasureType >
126  MeasureType *
129  return _StartPoint;
130  }
131 
132 
133  template< typename MeasureType >
134  MeasureType
136  ::getMeanCutOff() const {
137  return _MeanCutOff;
138  }
139 
140  template< typename MeasureType >
141  int
143  ::getNSamples() const {
144  if (!_nSamples) {
145  throw std::runtime_error("Calculator: _nSamples equals 0. Set _nSamples");
146  };
147  return _nSamples;
148  }
149 
150  template< typename MeasureType >
151  int
153  ::getNDims() const {
154  if (!_nDims) {
155  throw std::runtime_error("Calculator: _nDims equals 0. Set _nDims");
156  };
157  return _nDims;
158  }
159 
160  /* ****************** */
161  /* *** SETTERS *** */
162  /* ****************** */
163 
164  // setters for the 'has a' classes
165  template< typename MeasureType >
166  void
169  setNDims(_Model->getNDims());
170  Calculator::_Model = _Model;
171  }
172 
173  template< typename MeasureType >
174  void
177  Calculator::_Fitter = _Fitter;
178  }
179 
180  template< typename MeasureType >
181  void
184  Calculator::_SignCalculator = _SignCalculator;
185  }
186 
187  template< typename MeasureType >
188  void
191  Calculator::_StartPointCalculator = _StartPointCalculator;
192  }
193 
194  // setters for the data
195  template< typename MeasureType >
196  void
198  ::setInvTimes(const MeasureType *_InvTimes) {
199  Calculator::_InvTimes = _InvTimes;
200  }
201 
202  template< typename MeasureType >
203  void
205  ::setEchoTimes(const MeasureType *_EchoTimes) {
206  Calculator::_EchoTimes = _EchoTimes;
207  }
208 
209  template< typename MeasureType >
210  void
212  ::setSigMag(const MeasureType *_SigMag) {
213  Calculator::_SigMag = _SigMag;
214  }
215 
216  template< typename MeasureType >
217  void
219  ::setSigPha(const MeasureType *_SigPha) {
220  Calculator::_SigPha = _SigPha;
221  }
222 
223  template< typename MeasureType >
224  void
226  ::setNoise(const MeasureType *_Noise) {
227  Calculator::_Noise = _Noise;
228  }
229 
230  template< typename MeasureType >
231  void
233  ::setMeanCutOff(MeasureType _MeanCutOff) {
234  Calculator::_MeanCutOff = _MeanCutOff;
235  }
236 
237  template< typename MeasureType >
238  void
240  ::setNSamples(int nSamples) {
241 
242  delete [] _Signal; _Signal = 0;
243  delete [] _Signs; _Signs = 0;
244 
245  Calculator::_nSamples = nSamples;
246 
247  _Signal = new MeasureType[nSamples];
248  _Signs = new MeasureType[nSamples];
249 
250  for (int i = 0; i < nSamples; ++i){
251  _Signal[i] = 0;
252  _Signs[i] = 1;
253  }
254  }
255 
260  template< typename MeasureType >
261  void
263  ::setNDims(int nDims){
264 
265  delete [] _StartPoint; _StartPoint = 0;
266  delete [] _ParametersAfterFitting; _ParametersAfterFitting = 0;
267 
268  Calculator::_nDims = nDims;
269 
270  _StartPoint = new MeasureType[nDims];
271  _ParametersAfterFitting = new MeasureType[nDims];
272 
273  for (int i = 0; i < nDims; ++i){
274  _StartPoint[i] = 0;
275  _ParametersAfterFitting[i] = 0;
276  }
277  }
278 
279  template<typename MeasureType>
281  return _ParametersAfterFitting;
282  }
283 
284  template< typename MeasureType >
285  void
288  int nSamples = this->getNSamples();
289  std::cout << "\nYou called disp() on a Calculator object " << this
290  << " with nSamples: " << nSamples
291  << " nDims: " << _nDims;
292  KWUtil::printArray(_InvTimes != 0, nSamples, _InvTimes, (char*)"\nInvTimes: ");
293  KWUtil::printArray(_EchoTimes != 0, nSamples, _EchoTimes, (char*)"\nEchoTimes: ");
294  KWUtil::printArray(_RepTimes != 0, nSamples, _RepTimes, (char*)"\nRepTimes: ");
295  KWUtil::printArray(_RelAcqTimes != 0, nSamples, _RelAcqTimes, (char*)"\nRelAcqTimes: ");
296  KWUtil::printArray(_SigMag != 0, nSamples, _SigMag, (char*)"\nSigMag: ");
297  KWUtil::printArray(_SigPha != 0, nSamples, _SigPha, (char*)"\nSigPha: ");
298  KWUtil::printArray(_Noise != 0, nSamples, _Noise, (char*)"\nNoise: ");
299  KWUtil::printArray(_Signal != 0, nSamples, _Signal, (char*)"\nSignal: ");
300  KWUtil::printArray(_Signs != 0, nSamples, _Signs, (char*)"\nSigns: ");
301  KWUtil::printArray(_StartPoint != 0, _nDims, _StartPoint, (char*)"\nStart point: ");
302  std::cout << std::endl;
303  if(_Model) {
304  std::cout << "This Calculator contains the following Model object: ";
305  _Model->disp();
306  }
307 
308  if(_Fitter) {
309  std::cout << "This Calculator contains the following Fitter object: ";
310  _Fitter->disp();
311  }
312 
313  if(_SignCalculator) {
314  std::cout << "This Calculator contains the following SignCalculator object: ";
315  _SignCalculator->disp();
316  };
317 
318  if(_StartPointCalculator) {
319  std::cout << "This Calculator contains the following StartPointCalculator object: ";
320  _StartPointCalculator->disp();
321  };
322  }
323 
324 } //namespace Ox
325 
326 #endif //Tomato_OXCALCULATORT1_H
virtual int getNSamples() const
Definition: OxCalculator.hxx:143
virtual int getNDims() const
Definition: OxCalculator.hxx:153
virtual void disp()
show me your ModelT1
Definition: OxModel.hxx:26
Container for a model function, cost function and Least-Squares function. And derivatives.
Definition: OxModel.h:26
virtual const MeasureType * getSigMag() const
Definition: OxCalculator.hxx:90
virtual void setNDims(int _nDims)
Definition: OxCalculator.hxx:263
void disp()
show me your Model
Definition: OxCalculator.hxx:287
Definition: OxCalculator.h:28
virtual void disp()
show me your Fitter
Definition: OxFitter.h:77
Definition: OxSignCalculator.h:21
Definition: OxStartPointCalculator.h:21
Definition: OxFitter.h:22
virtual const MeasureType * getSigPha() const
Definition: OxCalculator.hxx:100
Definition: OxCalculator.h:19
virtual Model< MeasureType > * getModel() const
Definition: OxCalculator.hxx:28
virtual void setNSamples(int _nSamples)
Definition: OxCalculator.hxx:240
virtual Fitter< MeasureType > * getFitter() const
Definition: OxCalculator.hxx:38