17 #ifndef __BASEFITTER_H
18 #define __BASEFITTER_H
30 namespace OrcaKinFit {
34 class BaseHardConstraint;
35 class BaseSoftConstraint;
50 virtual ~BaseFitter();
51 virtual void addFitObject(BaseFitObject* fitobject_);
52 virtual void addFitObject(BaseFitObject& fitobject_);
53 virtual void addConstraint(BaseConstraint* constraint_);
54 virtual void addConstraint(BaseConstraint& constraint_);
55 virtual void addHardConstraint(BaseHardConstraint* constraint_);
56 virtual void addHardConstraint(BaseHardConstraint& constraint_);
57 virtual void addSoftConstraint(BaseSoftConstraint* constraint_);
58 virtual void addSoftConstraint(BaseSoftConstraint& constraint_);
59 virtual std::vector<BaseFitObject*>* getFitObjects();
60 virtual std::vector<BaseHardConstraint*>* getConstraints();
61 virtual std::vector<BaseSoftConstraint*>* getSoftConstraints();
62 virtual double fit() = 0;
63 virtual int getError()
const = 0;
64 virtual double getProbability()
const = 0;
65 virtual double getChi2()
const = 0;
66 virtual int getDoF()
const = 0;
67 virtual int getIterations()
const = 0;
70 virtual bool initialize() = 0;
91 typedef std::vector <BaseFitObject*> FitObjectContainer;
92 typedef std::vector <BaseHardConstraint*> ConstraintContainer;
93 typedef std::vector <BaseSoftConstraint*> SoftConstraintContainer;
95 typedef FitObjectContainer::iterator FitObjectIterator;
96 typedef ConstraintContainer::iterator ConstraintIterator;
97 typedef SoftConstraintContainer::iterator SoftConstraintIterator;
99 FitObjectContainer fitobjects;
100 ConstraintContainer constraints;
101 SoftConstraintContainer softconstraints;
112 std::map<std::string, double> traceValues;
122 #endif // __BASEFITTER_H