Belle II Software  release-05-02-19
TrackConstraint.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * See https://github.com/tferber/OrcaKinfit, forked from *
4  * https://github.com/iLCSoft/MarlinKinfit *
5  * *
6  * Further information about the fit engine and the user interface *
7  * provided in MarlinKinfit can be found at *
8  * https://www.desy.de/~blist/kinfit/doc/html/ *
9  * and in the LCNotes LC-TOOL-2009-001 and LC-TOOL-2009-004 available *
10  * from http://www-flc.desy.de/lcnotes/ *
11  * *
12  * Adopted by: Torben Ferber (torben.ferber@desy.de) (TF) *
13  * *
14  * This software is provided "as is" without any warranty. *
15  **************************************************************************/
16 
17 #ifndef __TrackConstraint_H
18 #define __TrackConstraint_H
19 
20 #include<vector>
21 #include<cassert>
22 #include "analysis/OrcaKinFit/BaseConstraint.h"
23 
24 namespace Belle2 {
30  namespace OrcaKinFit {
31 
32  class TrackFitObject;
33 
34 // Class TrackConstraint:
36 
73  class TrackConstraint: public BaseConstraint {
74  public:
76  inline TrackConstraint();
78  virtual ~TrackConstraint() {};
79 
81  virtual void setFOList(std::vector <TrackFitObject*>* fitobjects_
82  )
83  {
84  for (int i = 0; i < (int) fitobjects_->size(); i++) {
85  fitobjects.push_back((*fitobjects_)[i]);
86  flags.push_back(1);
87  sign.push_back(i == 0 ? 1 : -1);
88  }
89  };
91  virtual void addToFOList(TrackFitObject& fitobject, int flag = 1
92  )
93  {
94  fitobjects.push_back(&fitobject);
95  flags.push_back(flag);
96  sign.push_back(sign.size() == 0 ? 1 : -1);
97  };
99  virtual double getValue() const = 0;
100 
103  virtual void getDerivatives(int idim, double der[]) const = 0;
105  virtual void add1stDerivativesToMatrix(double* M,
106  int idim
107  ) const
108  {assert(false);}
110  virtual void add2ndDerivativesToMatrix(double* M,
111  int idim,
112  double lambda
113  ) const
114  {assert(false);}
115 
117  virtual void addToGlobalChi2DerVector(double* y,
118  int idim,
119  double lambda //< The lambda value
120  ) const
121  {assert(false);};
122 
124  virtual int getGlobalNum() const {return globalNum;}
126  virtual void setGlobalNum(int iglobal) {globalNum = iglobal;}
127 
129  virtual void invalidateCache() const {};
130 
131  protected:
133  typedef std::vector <TrackFitObject*> FitObjectContainer;
135  typedef FitObjectContainer::iterator FitObjectIterator;
137  typedef FitObjectContainer::const_iterator ConstFitObjectIterator;
141  std::vector <double> derivatives;
144  std::vector <int> flags;
145  std::vector <double> sign;
146 
148  int globalNum;
149 
150  };
151 
153  {
154  invalidateCache();
155  }
156 
157  }// end OrcaKinFit namespace
159 } // end Belle2 namespace
160 
161 #endif // __TrackConstraint_H
Belle2::OrcaKinFit::TrackConstraint::TrackConstraint
TrackConstraint()
Creates an empty TrackConstraint object.
Definition: TrackConstraint.h:166
Belle2::OrcaKinFit::TrackConstraint::derivatives
std::vector< double > derivatives
The derivatives.
Definition: TrackConstraint.h:155
Belle2::OrcaKinFit::TrackConstraint::getDerivatives
virtual void getDerivatives(int idim, double der[]) const =0
Get first order derivatives.
Belle2::OrcaKinFit::TrackConstraint::setGlobalNum
virtual void setGlobalNum(int iglobal)
Sets position of constraint in global constraint list.
Definition: TrackConstraint.h:140
Belle2::OrcaKinFit::TrackConstraint::~TrackConstraint
virtual ~TrackConstraint()
Virtual destructor.
Definition: TrackConstraint.h:92
Belle2::OrcaKinFit::TrackConstraint::getGlobalNum
virtual int getGlobalNum() const
Accesses position of constraint in global constraint list.
Definition: TrackConstraint.h:138
Belle2::OrcaKinFit::TrackConstraint::invalidateCache
virtual void invalidateCache() const
Invalidates any cached values for the next event.
Definition: TrackConstraint.h:143
Belle2::OrcaKinFit::TrackConstraint::addToFOList
virtual void addToFOList(TrackFitObject &fitobject, int flag=1)
Adds one TrackFitObject objects to the list.
Definition: TrackConstraint.h:105
Belle2::OrcaKinFit::TrackConstraint::FitObjectContainer
std::vector< TrackFitObject * > FitObjectContainer
Vector of pointers to TrackFitObjects.
Definition: TrackConstraint.h:143
Belle2::OrcaKinFit::TrackConstraint::setFOList
virtual void setFOList(std::vector< TrackFitObject * > *fitobjects_)
Adds several TrackFitObject objects to the list.
Definition: TrackConstraint.h:95
Belle2::OrcaKinFit::TrackConstraint::getValue
virtual double getValue() const =0
Returns the value of the constraint.
Belle2::OrcaKinFit::TrackConstraint::add2ndDerivativesToMatrix
virtual void add2ndDerivativesToMatrix(double *M, int idim, double lambda) const
Adds second order derivatives to global covariance matrix M.
Definition: TrackConstraint.h:124
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::OrcaKinFit::TrackConstraint::globalNum
int globalNum
Position of constraint in global constraint list.
Definition: TrackConstraint.h:162
Belle2::OrcaKinFit::TrackConstraint::FitObjectIterator
FitObjectContainer::iterator FitObjectIterator
Iterator through vector of pointers to TrackFitObjects.
Definition: TrackConstraint.h:149
Belle2::OrcaKinFit::TrackConstraint::ConstFitObjectIterator
FitObjectContainer::const_iterator ConstFitObjectIterator
Constant iterator through vector of pointers to TrackFitObjects.
Definition: TrackConstraint.h:151
Belle2::OrcaKinFit::TrackConstraint::add1stDerivativesToMatrix
virtual void add1stDerivativesToMatrix(double *M, int idim) const
Adds first order derivatives to global covariance matrix M.
Definition: TrackConstraint.h:119
Belle2::OrcaKinFit::TrackConstraint::flags
std::vector< int > flags
The flags can be used to divide the FitObjectContainer into several subsets used for example to imple...
Definition: TrackConstraint.h:158
Belle2::OrcaKinFit::TrackConstraint::addToGlobalChi2DerVector
virtual void addToGlobalChi2DerVector(double *y, int idim, double lambda) const
Add lambda times derivatives of chi squared to global derivative matrix.
Definition: TrackConstraint.h:131
Belle2::OrcaKinFit::TrackConstraint::fitobjects
FitObjectContainer fitobjects
The FitObjectContainer.
Definition: TrackConstraint.h:153