C++ main module for mmsd Package  1.0
MMSD_GaussianModel.h
Go to the documentation of this file.
1 #ifndef MMSD_GaussianModel_H
2 #define MMSD_GaussianModel_H
3 
4 
5 #include "MMSD_Model.h"
8 #include "MMSD_GaussianCluster.h"
9 
23 class MMSD_GaussianModel : public virtual MMSD_Model {
24  SP_OBJECT(MMSD_GaussianModel);
25  // ATTRIBUTES
26 
27 public:
28  static const tFlag FLURY_GAUTSCHI_LAW;
29  static const tFlag STIEFEL_LAW;
30 
31 private:
32 
33  tFlag mGaussianLaw;
34  int mGaussianLawMaximumIterationsNumber;
35 
36 protected:
37  // METHODS
38 
39  // CONSTRUCTORS
40 
42  MMSD_GaussianModel(void);
43 
44 
45 
46  // DESTRUCTORS
47 
48 
51  virtual ~MMSD_GaussianModel(void);
52 
53 
54 
55 public:
56  //----------------
57  // NEW constructors
58  // ---------------
59 
62  inline static SP::MMSD_GaussianModel New() {
63  return New(FLURY_GAUTSCHI_LAW,6);
64  }
67  inline static SP::MMSD_GaussianModel New(const tFlag& gaussianLaw,const int& nIterations) {
68  SP::MMSD_GaussianModel p(new MMSD_GaussianModel(),
70  p->setThis(p);
71  p->setGaussianLawMaximumIterationsNumber(nIterations);
72  p->setGaussianLaw(gaussianLaw);
73  return p;
74  }
75 
76  // SET & GET Methods
77  // ==================
78 
81  inline void setGaussianLaw(const tFlag& f) {
82  mGaussianLaw=f;
83  }
86  inline int getGaussianLaw() const {
87  return mGaussianLaw;
88  }
91  inline void setGaussianLawMaximumIterationsNumber(const int& n) {
92  mGaussianLawMaximumIterationsNumber=n;
93  };
97  return mGaussianLawMaximumIterationsNumber;
98  };
99 
100  // SPECIALIZATION Methods
101  // ========================
102 
105  virtual SP::MMSD_Law NewLawInstance() const {
106  if (getGaussianLaw()==STIEFEL_LAW)
108  else
110  };
113  virtual SP::MMSD_Cluster NewClusterInstance() const {
114  return MMSD_GaussianCluster::New();
115  };
116 
117 };
118 
119 #endif
void setGaussianLawMaximumIterationsNumber(const int &n)
set the maximum iterations number
Definition: MMSD_GaussianModel.h:91
static SP::MMSD_FluryGautschiGaussianLaw New()
create an instance of gaussian law
Definition: MMSD_FluryGautschiGaussianLaw.h:57
int getGaussianLaw() const
get the method
Definition: MMSD_GaussianModel.h:86
static const tFlag STIEFEL_LAW
Definition: MMSD_GaussianModel.h:29
static const tFlag FLURY_GAUTSCHI_LAW
Definition: MMSD_GaussianModel.h:28
MMSD_GaussianModel(void)
create an object
Definition: MMSD_GaussianModel.cpp:6
virtual SP::MMSD_Cluster NewClusterInstance() const
create a cluster instance
Definition: MMSD_GaussianModel.h:113
static SP::MMSD_GaussianModel New(const tFlag &gaussianLaw, const int &nIterations)
create a Gaussian Model with a gaussian law see MMSD_GaussianModel::FLURY_GAUTSCHI_LAW or MMSD_Gaussi...
Definition: MMSD_GaussianModel.h:67
virtual SP::MMSD_Law NewLawInstance() const
create a law instance
Definition: MMSD_GaussianModel.h:105
static SP::MMSD_GaussianCluster New()
create a new instance of cluster
Definition: MMSD_GaussianCluster.h:65
virtual ~MMSD_GaussianModel(void)
destroy an object.
Definition: MMSD_GaussianModel.cpp:13
This class describes a Gaussain Model inherits from MMSD_Model.
Definition: MMSD_GaussianModel.h:23
static SP::MMSD_StiefelGaussianLaw New()
create an instance of Stiefel Gaussian law
Definition: MMSD_StiefelGaussianLaw.h:57
DEFINE_SPTR(MMSD_GaussianModel)
This class is a general MMSD Model.
Definition: MMSD_Model.h:41
double getMinEigenValue() const
get min eigen value for eigen value decomposition of property covariance matrix law ...
Definition: MMSD_Model.h:193
void setGaussianLaw(const tFlag &f)
set the method
Definition: MMSD_GaussianModel.h:81
int getGaussianLawMaximumIterationsNumber() const
get the number of iterations done
Definition: MMSD_GaussianModel.h:96
static SP::MMSD_GaussianModel New()
create a Gaussian Model
Definition: MMSD_GaussianModel.h:62
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:106
#define tFlag
Definition: types.h:14