MarlinKinfit  0.4.0
SoftGaussParticleConstraint.h
Go to the documentation of this file.
1 
19 #ifndef __SOFTGAUSSPARTICLECONSTRAINT_H
20 #define __SOFTGAUSSPARTICLECONSTRAINT_H
21 
22 #include<vector>
23 #include<cassert>
24 #include "BaseSoftConstraint.h"
25 #include "BaseFitObject.h"
26 
27 class ParticleFitObject;
28 
29 // Class SoftGaussParticleConstraint:
31 
69  public:
71  SoftGaussParticleConstraint(double sigma_
72  );
75 
77  virtual void setFOList(std::vector <ParticleFitObject*> *fitobjects_
78  ){
79  for (int i = 0; i < (int) fitobjects_->size(); i++) {
80  fitobjects.push_back ((*fitobjects_)[i]);
81  flags.push_back (1);
82  }
83  };
85  virtual void addToFOList(ParticleFitObject& fitobject, int flag = 1
86  ){
87  fitobjects.push_back (&fitobject);
88  flags.push_back (flag);
89  };
91  virtual void resetFOList(){
92  fitobjects.resize (0);
93  flags.resize (0);
94  };
95 
97  virtual double getValue() const = 0;
98 
100  virtual double getChi2() const;
101 
103  virtual double getError() const;
104 
106  virtual double getSigma() const;
107 
109  virtual double setSigma(double sigma_
110  );
111 
114  virtual void getDerivatives(int idim,
115  double der[]
116  ) const = 0;
118  virtual void add2ndDerivativesToMatrix(double *M,
119  int idim
120  ) const;
121 
123  virtual void addToGlobalChi2DerVector (double *y,
124  int idim
125  ) const;
126 
127 
129  virtual void invalidateCache() const
130  {}
131 
132  void test1stDerivatives ();
133  void test2ndDerivatives ();
134 
136  double num1stDerivative (int ifo,
137  int ilocal,
138  double eps
139  );
141  double num2ndDerivative (int ifo1,
142  int ilocal1,
143  double eps1,
144  int ifo2,
145  int ilocal2,
146  double eps2
147  );
148 
149  int getVarBasis() const;
150 
151  protected:
152 
154  virtual bool secondDerivatives (int i,
155  int j,
156  double *derivatives
157  ) const = 0;
159  virtual bool firstDerivatives (int i,
160  double *derivatives
161  ) const = 0;
162 
163 
165  typedef std::vector <ParticleFitObject *> FitObjectContainer;
167  typedef FitObjectContainer::iterator FitObjectIterator;
169  typedef FitObjectContainer::const_iterator ConstFitObjectIterator;
173  std::vector <double> derivatives;
176  std::vector <int> flags;
177 
179  double sigma;
180 
181  enum { VAR_BASIS=BaseDefs::VARBASIS_EPXYZ }; // this means that the constraint knows about E,px,py,pz
182 
183 };
184 
185 #endif // __SOFTGAUSSPARTICLECONSTRAINT_H
virtual void setFOList(std::vector< ParticleFitObject * > *fitobjects_)
Adds several ParticleFitObject objects to the list.
Definition: SoftGaussParticleConstraint.h:77
Abstract base class for constraints of kinematic fits.
Definition: SoftGaussParticleConstraint.h:68
SoftGaussParticleConstraint(double sigma_)
Creates an empty SoftGaussParticleConstraint object.
Definition: SoftGaussParticleConstraint.cc:32
double sigma
The sigma of the Gaussian.
Definition: SoftGaussParticleConstraint.h:179
double num1stDerivative(int ifo, int ilocal, double eps)
Evaluates numerically the 1st derivative w.r.t. a parameter.
Definition: SoftGaussParticleConstraint.cc:310
virtual bool firstDerivatives(int i, double *derivatives) const =0
First derivatives with respect to the 4-vector of Fit objects i; result false if all derivatives are ...
virtual double getChi2() const
Returns the chi2.
Definition: SoftGaussParticleConstraint.cc:49
std::vector< int > flags
The flags can be used to divide the FitObjectContainer into several subsets used for example to imple...
Definition: SoftGaussParticleConstraint.h:176
std::vector< double > derivatives
The derivatives.
Definition: SoftGaussParticleConstraint.h:173
virtual void getDerivatives(int idim, double der[]) const =0
Get first order derivatives.
virtual void addToGlobalChi2DerVector(double *y, int idim) const
Add derivatives of chi squared to global derivative matrix.
Definition: SoftGaussParticleConstraint.cc:242
virtual double getSigma() const
Returns the sigma.
Definition: SoftGaussParticleConstraint.cc:38
virtual void add2ndDerivativesToMatrix(double *M, int idim) const
Adds second order derivatives to global covariance matrix M.
Definition: SoftGaussParticleConstraint.cc:90
Abstract base class for particle objects of kinematic fits.
Definition: ParticleFitObject.h:63
virtual void resetFOList()
Resests ParticleFitObject list.
Definition: SoftGaussParticleConstraint.h:91
Abstract base class for soft constraints of kinematic fits.
Definition: BaseSoftConstraint.h:64
std::vector< ParticleFitObject * > FitObjectContainer
Vector of pointers to ParticleFitObjects.
Definition: SoftGaussParticleConstraint.h:165
FitObjectContainer::const_iterator ConstFitObjectIterator
Constant iterator through vector of pointers to ParticleFitObjects.
Definition: SoftGaussParticleConstraint.h:169
virtual void invalidateCache() const
Invalidates any cached values for the next event.
Definition: SoftGaussParticleConstraint.h:129
Declares class BaseFitObject.
FitObjectContainer fitobjects
The FitObjectContainer.
Definition: SoftGaussParticleConstraint.h:171
virtual ~SoftGaussParticleConstraint()
Virtual destructor.
Definition: SoftGaussParticleConstraint.h:74
Declares class BaseSoftConstraint.
virtual double getValue() const =0
Returns the value of the constraint function.
virtual double setSigma(double sigma_)
Sets the sigma.
Definition: SoftGaussParticleConstraint.cc:43
virtual double getError() const
Returns the error on the value of the constraint.
Definition: SoftGaussParticleConstraint.cc:54
FitObjectContainer::iterator FitObjectIterator
Iterator through vector of pointers to ParticleFitObjects.
Definition: SoftGaussParticleConstraint.h:167
virtual void addToFOList(ParticleFitObject &fitobject, int flag=1)
Adds one ParticleFitObject objects to the list.
Definition: SoftGaussParticleConstraint.h:85
virtual bool secondDerivatives(int i, int j, double *derivatives) const =0
Second derivatives with respect to the 4-vectors of Fit objects i and j; result false if all derivati...
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: SoftGaussParticleConstraint.cc:323