Tomato
OxModelT1AdapterVnlCost.h
Go to the documentation of this file.
1 
7 #ifndef Tomato_OXModelT1ADAPTERVNLCOST_H
8 #define Tomato_OXModelT1ADAPTERVNLCOST_H
9 
10 #include "CmakeConfigForTomato.h"
11 #ifdef USE_VNL
12 
13 #include <vnl/vnl_cost_function.h>
14 
15 #include "OxModel.h"
16 
17 namespace Ox {
18 
19  class ModelT1AdapterVnlCost : public vnl_cost_function {
20 
21  public:
22 
23  // cost function problem formulation
24  double f(vnl_vector<double> const& params){ // override
25  //_Model->copyToParameters(params.data_block());
26  return _ModelT1->calcCostValue(params.data_block());
27  }
28 
29  // cost function gradient
30  void gradf (vnl_vector< double > const &params, vnl_vector< double > &gradient){ // override
31 
32  //_Model->copyToParameters(params.data_block());
33  _ModelT1->calcCostDerivative(params.data_block(), gradient.data_block());
34  }
35 
36  void setModel(Model<double>* _ModelT1){
37  this->_ModelT1 = _ModelT1;
38  };
39 
40  // getters
41  Model<double>* getModel(){
42  return _ModelT1;
43  };
44 
48  ModelT1AdapterVnlCost(int nDims) : vnl_cost_function(nDims){
49  _ModelT1 = 0; // nullpointer
50  };
51 
56  ModelT1AdapterVnlCost(const ModelT1AdapterVnlCost &old){
57  _ModelT1 = old._ModelT1;
58  }
59 
60  private:
61 
62  Model<double>* _ModelT1;
63  };
64 
65 } // namespace Ox
66 
67 #endif //USE_VNL
68 
69 #endif //Tomato_OXModelT1ADAPTERVNLCOST_H
Definition: OxCalculator.h:19