MarlinKinfit  0.4.0
BaseHardConstraint.h
Go to the documentation of this file.
1 
19 #ifndef __BASEHARDCONSTRAINT_H
20 #define __BASEHARDCONSTRAINT_H
21 
22 #include "BaseDefs.h"
23 #include "BaseConstraint.h"
24 #include "BaseFitObject.h"
25 
26 #include <vector>
27 
28 class BaseFitObject;
29 
30 // Class BasehardConstraint:
32 
70  public:
71 
72  inline BaseHardConstraint();
73 
75  virtual ~BaseHardConstraint();
76 
78  virtual void add1stDerivativesToMatrix (double *M,
79  int idim
80  ) const;
81 
83  virtual void add2ndDerivativesToMatrix (double *M,
84  int idim,
85  double lambda
86  ) const;
88  virtual void addToGlobalChi2DerVector (double *y,
89  int idim,
90  double lambda //< The lambda value
91  ) const;
93  virtual double dirDer (double *p,
94  double *w,
95  int idim,
96  double mu=1
97  );
98 
100  virtual double dirDerAbs (double *p,
101  double *w,
102  int idim,
103  double mu=1
104  );
105 
107  virtual bool secondDerivatives (int i,
108  int j,
109  double *derivatives
110  ) const = 0;
112  virtual bool firstDerivatives (int i,
113  double *derivatives
114  ) const = 0;
115 
116  virtual int getVarBasis() const = 0;
117 
119  virtual double getValue() const = 0;
120 
122  virtual double getError() const;
123 
126  virtual void getDerivatives(int idim,
127  double der[]
128  ) const = 0;
129 
131  virtual int getGlobalNum() const
132  {return globalNum;}
134  virtual void setGlobalNum (int iglobal
135  )
136  {globalNum = iglobal;}
137 
138  virtual void printFirstDerivatives() const;
139  virtual void printSecondDerivatives() const;
140 
141  virtual void test1stDerivatives ();
142  virtual void test2ndDerivatives ();
143 
145  virtual double num1stDerivative (int ifo,
146  int ilocal,
147  double eps
148  );
150  virtual double num2ndDerivative (int ifo1,
151  int ilocal1,
152  double eps1,
153  int ifo2,
154  int ilocal2,
155  double eps2
156  );
157 
158 
159 
160 
161 
162  protected:
163 
165  typedef std::vector <BaseFitObject*> FitObjectContainer;
167  typedef FitObjectContainer::iterator FitObjectIterator;
169  typedef FitObjectContainer::const_iterator ConstFitObjectIterator;
173  std::vector <double> derivatives;
176  std::vector <int> flags;
177 
180 
181 };
182 
183 BaseHardConstraint::BaseHardConstraint()
184 : fitobjects( FitObjectContainer() ), derivatives( std::vector <double> () ), flags( std::vector <int> () ), globalNum(0)
185 {
186 }
187 
188 #endif // __BASEHARDCONSTRAINT_H
FitObjectContainer::iterator FitObjectIterator
Iterator through vector of pointers to ParticleFitObjects.
Definition: BaseHardConstraint.h:167
virtual void add1stDerivativesToMatrix(double *M, int idim) const
Adds first order derivatives to global covariance matrix M.
Definition: BaseHardConstraint.cc:32
Declares class BaseConstraint.
virtual void add2ndDerivativesToMatrix(double *M, int idim, double lambda) const
Adds second order derivatives to global covariance matrix M.
Definition: BaseHardConstraint.cc:69
virtual double getError() const
Returns the error on the value of the constraint.
Definition: BaseHardConstraint.cc:205
std::vector< BaseFitObject * > FitObjectContainer
Vector of pointers to ParticleFitObjects.
Definition: BaseHardConstraint.h:165
virtual int getGlobalNum() const
Accesses position of constraint in global constraint list.
Definition: BaseHardConstraint.h:131
FitObjectContainer fitobjects
The FitObjectContainer.
Definition: BaseHardConstraint.h:171
int globalNum
Position of constraint in global constraint list.
Definition: BaseHardConstraint.h:179
std::vector< int > flags
The flags can be used to divide the FitObjectContainer into several subsets used for example to imple...
Definition: BaseHardConstraint.h:176
Abstract base class for constraints of kinematic fits.
Definition: BaseHardConstraint.h:69
virtual double num1stDerivative(int ifo, int ilocal, double eps)
Evaluates numerically the 1st derivative w.r.t. a parameter.
Definition: BaseHardConstraint.cc:292
virtual void addToGlobalChi2DerVector(double *y, int idim, double lambda) const
Add lambda times derivatives of chi squared to global derivative vector.
Definition: BaseHardConstraint.cc:193
virtual bool secondDerivatives(int i, int j, double *derivatives) const =0
Second derivatives with respect to the meta-variables of Fit objects i and j; result false if all der...
virtual ~BaseHardConstraint()
Virtual destructor.
Definition: BaseHardConstraint.cc:28
virtual bool firstDerivatives(int i, double *derivatives) const =0
First derivatives with respect to the meta-variables of Fit objects i; result false if all derivative...
virtual double getValue() const =0
Returns the value of the constraint.
virtual void getDerivatives(int idim, double der[]) const =0
Get first order derivatives.
Declares class BaseFitObject.
virtual double dirDerAbs(double *p, double *w, int idim, double mu=1)
Calculate directional derivative for abs(c)
Definition: BaseHardConstraint.cc:228
Abstract base class for constraints of kinematic fits.
Definition: BaseConstraint.h:85
std::vector< double > derivatives
The derivatives.
Definition: BaseHardConstraint.h:173
FitObjectContainer::const_iterator ConstFitObjectIterator
Constant iterator through vector of pointers to ParticleFitObjects.
Definition: BaseHardConstraint.h:169
Abstract base class for particle objects of kinematic fits.
Definition: BaseFitObject.h:110
virtual double dirDer(double *p, double *w, int idim, double mu=1)
Calculate directional derivative.
Definition: BaseHardConstraint.cc:219
virtual void setGlobalNum(int iglobal)
Sets position of constraint in global constraint list.
Definition: BaseHardConstraint.h:134
virtual double num2ndDerivative(int ifo1, int ilocal1, double eps1, int ifo2, int ilocal2, double eps2)
Evaluates numerically the 2nd derivative w.r.t. 2 parameters.
Definition: BaseHardConstraint.cc:305