7 #ifndef Tomato_OXSTARTPOINTCALCULATOR_H 8 #define Tomato_OXSTARTPOINTCALCULATOR_H 20 template<
typename MeasureType >
32 const MeasureType *getInputStartPoint()
const {
33 return _InputStartPoint;
36 MeasureType *getCalculatedStartPoint()
const {
37 if (!_CalculatedStartPoint)
throw std::runtime_error(
"_CalculatedStartPoint equals 0. Set _CalculatedStartPoint");
38 return _CalculatedStartPoint;
41 int getNDims()
const {
return _nDims; }
44 virtual void setInputStartPoint(
const MeasureType *_InputStartPoint) {
47 delete[] this->_InputStartPoint;
48 this->_InputStartPoint =
new MeasureType[this->_nDims];
49 _nDimsChanged =
false;
52 if (!_InputStartPoint) {
53 this->_InputStartPoint =
new MeasureType[this->_nDims];
56 for (
int i = 0; i < this->getNDims(); i++){
57 StartPointCalculator::_InputStartPoint[i] = _InputStartPoint[i];
62 virtual void setNDims(
int _nDims) {
63 if (StartPointCalculator::_nDims != _nDims) {
64 StartPointCalculator::_nDims = _nDims;
69 virtual void setInvTimes(
const MeasureType *_InvTimes) { StartPointCalculator::_InvTimes = _InvTimes; }
70 virtual void setEchoTimes(
const MeasureType *_EchoTimes) { StartPointCalculator::_EchoTimes = _EchoTimes; }
71 virtual void setSigMag(
const MeasureType *_SigMag) { StartPointCalculator::_SigMag = _SigMag; }
72 virtual void setSigns(
const MeasureType *_Signs) { StartPointCalculator::_Signs = _Signs; }
73 virtual void setCalculatedStartPoint(MeasureType *_CalculatedStartPoint) { StartPointCalculator::_CalculatedStartPoint = _CalculatedStartPoint; }
74 virtual void setNSamples(
int _nSamples) { StartPointCalculator::_nSamples = _nSamples; }
78 std::cout <<
"\nYou called disp() on a StartPointCalculator object " <<
this 79 <<
" with nSamples: " << _nSamples
80 <<
" nDims: " << _nDims;
81 KWUtil::printArray(_InvTimes != 0, _nSamples, _InvTimes, (
char*)
"\nInvTimes: ");
82 KWUtil::printArray(_EchoTimes != 0, _nSamples, _InvTimes, (
char*)
"\nEchoTimes: ");
83 KWUtil::printArray(_SigMag != 0, _nSamples, _SigMag, (
char*)
"\nSigMag: ");
84 KWUtil::printArray(_Signs != 0, _nSamples, _Signs, (
char*)
"\nSigns: ");
85 KWUtil::printArray(_nDims, this->getCalculatedStartPoint(), (
char*)
"\nStart point: ");
93 _CalculatedStartPoint = 0;
109 _nDimsChanged =
false;
119 _nSamples = old._nSamples;
121 _nDimsChanged = old._nDimsChanged;
135 delete [] this->_InputStartPoint;
139 MeasureType* _InputStartPoint;
140 MeasureType* _CalculatedStartPoint;
142 const MeasureType* _InvTimes;
143 const MeasureType* _EchoTimes;
144 const MeasureType* _SigMag;
145 const MeasureType* _Signs;
155 #endif //Tomato_OXSTARTPOINTCALCULATOR_H void setAllPointersToNull()
set all the pointers to zero
Definition: OxStartPointCalculator.h:91
StartPointCalculator(const StartPointCalculator &old)
copy constructor
Definition: OxStartPointCalculator.h:115
virtual ~StartPointCalculator()
do not forget about the virtual destructor, see https://stackoverflow.com/questions/461203/when-to-us...
Definition: OxStartPointCalculator.h:134
virtual StartPointCalculator< MeasureType > * newByCloning()=0
Definition: OxStartPointCalculator.h:21
StartPointCalculator()
constructor
Definition: OxStartPointCalculator.h:103
Definition: OxCalculator.h:19
virtual int calculateStartPoint()=0