MarlinKinfit  0.4.0
TrackConstraint.h
Go to the documentation of this file.
1 
9 #ifndef __TrackConstraint_H
10 #define __TrackConstraint_H
11 
12 #include<vector>
13 #include<cassert>
14 #include "BaseConstraint.h"
15 
16 class TrackFitObject;
17 
18 // Class TrackConstraint:
20 
58  public:
60  inline TrackConstraint();
62  virtual ~TrackConstraint() {};
63 
65  virtual void setFOList(std::vector <TrackFitObject*> *fitobjects_
66  ){
67  for (int i = 0; i < (int) fitobjects_->size(); i++) {
68  fitobjects.push_back ((*fitobjects_)[i]);
69  flags.push_back (1);
70  sign.push_back (i == 0 ? 1 : -1);
71  }
72  };
74  virtual void addToFOList(TrackFitObject& fitobject, int flag = 1
75  ){
76  fitobjects.push_back (&fitobject);
77  flags.push_back (flag);
78  sign.push_back (sign.size() == 0 ? 1 : -1);
79  };
81  virtual double getValue() const = 0;
82 
85  virtual void getDerivatives(int idim, double der[]) const = 0;
87  virtual void add1stDerivativesToMatrix(double *M,
88  int idim
89  ) const
90  {assert (false);}
92  virtual void add2ndDerivativesToMatrix (double *M,
93  int idim,
94  double lambda
95  ) const
96  {assert (false);}
97 
99  virtual void addToGlobalChi2DerVector (double *y,
100  int idim,
101  double lambda //< The lambda value
102  ) const
103  {assert (false);};
104 
106  virtual int getGlobalNum() const {return globalNum;}
108  virtual void setGlobalNum(int iglobal) {globalNum = iglobal;}
109 
111  virtual void invalidateCache() const {};
112 
113  protected:
115  typedef std::vector <TrackFitObject *> FitObjectContainer;
117  typedef FitObjectContainer::iterator FitObjectIterator;
119  typedef FitObjectContainer::const_iterator ConstFitObjectIterator;
123  std::vector <double> derivatives;
126  std::vector <int> flags;
127  std::vector <double> sign;
128 
131 
132 };
133 
135  invalidateCache();
136 }
137 
138 #endif // __TrackConstraint_H
virtual void getDerivatives(int idim, double der[]) const =0
Get first order derivatives.
Abstract base class for constraints of kinematic fits.
Definition: TrackConstraint.h:57
virtual void add1stDerivativesToMatrix(double *M, int idim) const
Adds first order derivatives to global covariance matrix M.
Definition: TrackConstraint.h:87
Declares class BaseConstraint.
FitObjectContainer fitobjects
The FitObjectContainer.
Definition: TrackConstraint.h:121
virtual int getGlobalNum() const
Accesses position of constraint in global constraint list.
Definition: TrackConstraint.h:106
virtual ~TrackConstraint()
Virtual destructor.
Definition: TrackConstraint.h:62
std::vector< int > flags
The flags can be used to divide the FitObjectContainer into several subsets used for example to imple...
Definition: TrackConstraint.h:126
virtual double getValue() const =0
Returns the value of the constraint.
virtual void add2ndDerivativesToMatrix(double *M, int idim, double lambda) const
Adds second order derivatives to global covariance matrix M.
Definition: TrackConstraint.h:92
std::vector< TrackFitObject * > FitObjectContainer
Vector of pointers to TrackFitObjects.
Definition: TrackConstraint.h:111
virtual void addToFOList(TrackFitObject &fitobject, int flag=1)
Adds one TrackFitObject objects to the list.
Definition: TrackConstraint.h:74
int globalNum
Position of constraint in global constraint list.
Definition: TrackConstraint.h:130
virtual void invalidateCache() const
Invalidates any cached values for the next event.
Definition: TrackConstraint.h:111
TrackConstraint()
Creates an empty TrackConstraint object.
Definition: TrackConstraint.h:134
virtual void addToGlobalChi2DerVector(double *y, int idim, double lambda) const
Add lambda times derivatives of chi squared to global derivative matrix.
Definition: TrackConstraint.h:99
FitObjectContainer::const_iterator ConstFitObjectIterator
Constant iterator through vector of pointers to TrackFitObjects.
Definition: TrackConstraint.h:119
virtual void setGlobalNum(int iglobal)
Sets position of constraint in global constraint list.
Definition: TrackConstraint.h:108
Abstract base class for constraints of kinematic fits.
Definition: BaseConstraint.h:85
FitObjectContainer::iterator FitObjectIterator
Iterator through vector of pointers to TrackFitObjects.
Definition: TrackConstraint.h:117
virtual void setFOList(std::vector< TrackFitObject * > *fitobjects_)
Adds several TrackFitObject objects to the list.
Definition: TrackConstraint.h:65
std::vector< double > derivatives
The derivatives.
Definition: TrackConstraint.h:123