Tomato
OxSignCalculator.h
Go to the documentation of this file.
1 
7 #ifndef Tomato_OXSIGNCALCULATOR_H
8 #define Tomato_OXSIGNCALCULATOR_H
9 
10 #include "KWUtil.h"
11 
12 namespace Ox {
13 
20  template< typename MeasureType >
22 
23  public:
24 
25  // getters
26  virtual const MeasureType *getInvTimes() const {
27  if (!_InvTimes) throw std::runtime_error("SignCalculator: _InvTimes equals 0. Set _InvTimes");
28  return _InvTimes;
29  }
30 
31  virtual const MeasureType *getSigMag() const {
32  if (!_SigMag) throw std::runtime_error("SignCalculator: _SigMag equals 0. Set _SigMag");
33  return _SigMag;
34  }
35 
36  virtual const MeasureType *getSigPha() const {
37  if (!_SigPha) throw std::runtime_error("SignCalculator: _SigPha equals 0. Set _SigPha");
38  return _SigPha;
39  }
40 
41  virtual MeasureType *getSignal() {
42  if (!_Signal) throw std::runtime_error("SignCalculator: _SigMag equals 0. Set _SigMag");
43  return _Signal;
44  }
45 
46  virtual MeasureType *getSigns() {
47  if (!_Signs) throw std::runtime_error("SignCalculator: _Signs equals 0. Set _Signs");
48  return _Signs;
49  }
50 
51  virtual int getNSamples() {
52  if (!_nSamples) throw std::runtime_error("SignCalculator: _nSamples equals 0. Set _nSamples");
53  return _nSamples;
54  }
55 
56  //setters
57  virtual void setInvTimes(const MeasureType *_InvTimes) { SignCalculator::_InvTimes = _InvTimes; }
58  virtual void setSigMag(const MeasureType *_SigMag) { SignCalculator::_SigMag = _SigMag; }
59  virtual void setSigPha(const MeasureType *_SigPha) { SignCalculator::_SigPha = _SigPha; }
60  virtual void setSignal(MeasureType *_Signal) { SignCalculator::_Signal = _Signal; }
61  virtual void setSigns(MeasureType *_Signs) { SignCalculator::_Signs = _Signs; }
62  virtual void setNSamples(int _nSamples) { SignCalculator::_nSamples = _nSamples; }
63 
68  virtual int calculateSign() = 0;
69 
70  virtual void disp(){
71  int nSamples = this->getNSamples();
72  std::cout << "\nYou called disp() on a SignCalculator object " << this << " with nSamples: " << getNSamples();
73  KWUtil::printArray(_InvTimes != 0, nSamples, _InvTimes, (char*)"\nInvTimes: ");
74  KWUtil::printArray(_SigMag != 0, nSamples, _SigMag, (char*)"\nSigMag: ");
75  KWUtil::printArray(_SigPha != 0, nSamples, _SigPha, (char*)"\nSigPha: ");
76  KWUtil::printArray(_Signal != 0, nSamples, _Signal, (char*)"\nSignal: ");
77  KWUtil::printArray(_Signs != 0, nSamples, _Signs, (char*)"\nSigns: ");
78  std::cout << std::endl;
79  }
80 
85  _InvTimes = 0;
86  _SigMag = 0;
87  _SigPha = 0;
88  _Signal = 0;
89  _Signs = 0;
90  }
91 
97  _nSamples = 0;
98  };
99 
105  _nSamples = old._nSamples;
106  };
107 
112  virtual SignCalculator<MeasureType> *newByCloning() = 0; //{ return new SignCalculator<MeasureType>(*this); }
113 
118  virtual ~SignCalculator(){};
119 
120  protected:
121  const MeasureType* _InvTimes;
122  const MeasureType* _SigMag; // original one
123  const MeasureType* _SigPha; // original one
124  MeasureType* _Signal; // we will be working with this one
125  MeasureType* _Signs; // we will be working with this one
126  int _nSamples;
127 
128  };
129 } //namespace Ox
130 
131 #endif //Tomato_OXSIGNCALCULATOR_H
virtual ~SignCalculator()
do not forget about the virtual destructor, see https://stackoverflow.com/questions/461203/when-to-us...
Definition: OxSignCalculator.h:118
virtual SignCalculator< MeasureType > * newByCloning()=0
SignCalculator(const SignCalculator &old)
copy constructor
Definition: OxSignCalculator.h:103
void setAllPointersToNull()
set all the pointers to zero
Definition: OxSignCalculator.h:84
Definition: OxSignCalculator.h:21
SignCalculator()
constructor
Definition: OxSignCalculator.h:95
virtual int calculateSign()=0
Definition: OxCalculator.h:19