MarlinKinfit  0.4.0
BaseFitObject.h
Go to the documentation of this file.
1 
43 #ifndef __BASEFITOBJECT_H
44 #define __BASEFITOBJECT_H
45 
46 #include <iostream>
47 
48 #include "BaseDefs.h"
49 
50 // Class BaseFitObject
52 
111  public:
113  BaseFitObject();
114 
116  BaseFitObject (const BaseFitObject& rhs
117  );
120  );
121 
123  virtual ~BaseFitObject();
124 
126  virtual BaseFitObject *copy() const = 0;
127 
129  virtual BaseFitObject& assign (const BaseFitObject& source
130  );
131 
133  virtual bool setParam (int ilocal,
134  double par_,
135  bool measured_,
136  bool fixed_ = false
137  );
138 
140  virtual bool setParam (int ilocal,
141  double par_
142  );
143 
145  virtual bool updateParams (double p[],
146  int idim
147  );
148 
150  virtual bool setMParam (int ilocal,
151  double mpar_
152  );
153 
155  virtual bool setError (int ilocal,
156  double err_
157  );
158 
160  virtual bool setCov (int ilocal,
161  int jlocal,
162  double cov_
163  );
164 
167  virtual bool setGlobalParNum (int ilocal,
168  int iglobal
169  );
170 
172  virtual bool fixParam (int ilocal,
173  bool fix=true
174  );
176  virtual bool releaseParam (int ilocal
177  )
178  { return fixParam (ilocal, false); }
179 
181  virtual bool isParamFixed (int ilocal
182  ) const;
183 
185  virtual double getParam (int ilocal
186  ) const;
188  virtual const char *getParamName (int ilocal
189  ) const { return "???";}
191  // virtual const char *getName () const { return name ? name : "???";}
192  virtual const char *getName () const; // { return name ? name : "???";}
194  virtual void setName (const char * name_);
196  virtual double getMParam (int ilocal
197  ) const;
199  virtual double getError (int ilocal
200  ) const;
202  virtual double getCov (int ilocal,
203  int jlocal
204  ) const;
206  virtual double getRho (int ilocal,
207  int jlocal
208  ) const;
210  virtual bool isParamMeasured (int ilocal
211  ) const;
213  virtual int getGlobalParNum(int ilocal
214  ) const;
216  virtual int getNPar() const=0;
218  virtual int getNMeasured() const;
220  virtual int getNUnmeasured() const;
222  virtual int getNFree() const;
224  virtual int getNFixed() const;
225 
227  virtual double getChi2() const;
228 
230  virtual double getDChi2DParam(int ilocal
231  ) const ;
232 
234  virtual double getD2Chi2DParam2(int ilocal,
235  int jlocal
236  ) const;
237 
239  virtual std::ostream& printParams (std::ostream& os
240  ) const;
241 
243  virtual std::ostream& printRhoValues (std::ostream& os
244  ) const;
245 
247  virtual std::ostream& print1stDerivatives (std::ostream& os
248  ) const;
249 
251  virtual std::ostream& print2ndDerivatives (std::ostream& os
252  ) const;
253 
255  virtual std::ostream& print (std::ostream& os
256  ) const = 0;
257 
258 
260  virtual void invalidateCache() const {cachevalid=false;};
261  virtual void updateCache() const=0;
262 
263  // these are the mothods that fill the fitter's matrices/vectors
264 
267  virtual void addToGlobCov(double *glcov,
268  int idim
269  ) const;
270 
272  virtual void addToGlobalChi2DerVector (double *y,
273  int idim
274  ) const;
275 
277  virtual void addToGlobalChi2DerMatrix (double *M,
278  int idim
279  ) const;
280 
282  virtual void addToGlobalChi2DerVector (double *y,
283  int idim,
284  double lambda,
285  double der[],
286  int metaSet
287  ) const;
288 
289  // seems not to be used DJeans
290  // virtual void addToDerivatives (double der[], int idim,
291  // double factor[], int metaSet) const;
292 
293  virtual void addTo1stDerivatives (double M[],
294  int idim,
295  double der[],
296  int kglobal,
297  int metaSet
298  ) const;
299 
300  virtual void addTo2ndDerivatives (double der2[], int idim, double factor[], int metaSet) const;
301  virtual void addTo2ndDerivatives (double M[], int idim, double lambda, double der[], int metaSet) const;
302 
303  // DANIEL added
304  // derivatives of intermediate variables wrt object's local parameters
305  // these must be implemented by the derived classes for each type of object
306  virtual double getFirstDerivative_Meta_Local( int iMeta ,
307  int ilocal ,
308  int metaSet
309  ) const = 0;
310 
311  virtual double getSecondDerivative_Meta_Local( int iMeta,
312  int ilocal ,
313  int jlocal ,
314  int metaSet
315  ) const = 0;
316 
317  virtual void initCov();
318 
319  virtual double getError2 (double der[], int metaset) const;
320 
321  virtual void getDerivatives (double der[], int idim) const = 0;
322 
323 
324  protected:
325  char *name;
326  const static double eps2;
327 
328  // DANIEL moved all of this stuff to BaseFitObject
329  // it costs some extra memory, since everything has dimension of largest # of parameters
330  // but avoid a lot of almost-duplication in the derived classes
331 
333  virtual bool calculateCovInv() const;
334 
336  double par[BaseDefs::MAXPAR];
338  double mpar[BaseDefs::MAXPAR];
340  bool measured[BaseDefs::MAXPAR];
342  bool fixed[BaseDefs::MAXPAR];
344  int globalParNum [BaseDefs::MAXPAR];
346  double cov [BaseDefs::MAXPAR][BaseDefs::MAXPAR];
348  mutable double covinv [BaseDefs::MAXPAR][BaseDefs::MAXPAR];
350  mutable bool covinvvalid;
352  mutable bool cachevalid;
353  // end DANIEL adds
354 
355 };
356 
360 inline std::ostream& operator<< (std::ostream& os,
361  const BaseFitObject& bfo
362  ) {
363  return bfo.print(os);
364 }
365 
366 #endif // __BASEFITOBJECT_H
367 
virtual void addToGlobalChi2DerMatrix(double *M, int idim) const
Add 2nd derivatives of chi squared to global derivative matrix.
Definition: BaseFitObject.cc:480
virtual bool setError(int ilocal, double err_)
Set error of parameter ilocal; return: success.
Definition: BaseFitObject.cc:349
virtual BaseFitObject * copy() const =0
Return a new copy of itself.
virtual int getNFixed() const
Get number of fixed parameters of this FitObject.
Definition: BaseFitObject.cc:125
virtual std::ostream & print2ndDerivatives(std::ostream &os) const
print the 2nd derivatives wrt metaSet 0 (E, px, py, pz)
Definition: BaseFitObject.cc:169
virtual bool isParamMeasured(int ilocal) const
Get measured flag for parameter ilocal.
Definition: BaseFitObject.cc:418
virtual double getCov(int ilocal, int jlocal) const
Get covariance between parameters ilocal and jlocal.
Definition: BaseFitObject.cc:407
virtual int getNFree() const
Get number of free parameters of this FitObject.
Definition: BaseFitObject.cc:120
virtual bool setGlobalParNum(int ilocal, int iglobal)
Set number of parameter ilocal in global list return true signals OK.
Definition: BaseFitObject.cc:377
virtual bool isParamFixed(int ilocal) const
Returns whether parameter is fixed.
Definition: BaseFitObject.cc:424
BaseFitObject & operator=(const BaseFitObject &rhs)
Assignment.
Definition: BaseFitObject.cc:62
std::ostream & operator<<(std::ostream &os, const BaseConstraint &bc)
Prints out a BaseConstraint, using its print method.
Definition: BaseConstraint.h:128
virtual bool updateParams(double p[], int idim)
Read values from global vector, readjust vector; return: significant change.
Definition: BaseFitObject.cc:186
virtual std::ostream & print(std::ostream &os) const =0
print object to ostream
virtual void invalidateCache() const
invalidate any cached quantities
Definition: BaseFitObject.h:260
virtual std::ostream & print1stDerivatives(std::ostream &os) const
print the 1st derivatives wrt metaSet 0 (E, px, py, pz)
Definition: BaseFitObject.cc:156
virtual std::ostream & printParams(std::ostream &os) const
print the parameters and errors
Definition: BaseFitObject.cc:131
virtual int getGlobalParNum(int ilocal) const
Get global parameter number of parameter ilocal.
Definition: BaseFitObject.cc:384
bool measured[BaseDefs::MAXPAR]
measured flag
Definition: BaseFitObject.h:340
virtual double getMParam(int ilocal) const
Get measured value of parameter ilocal.
Definition: BaseFitObject.cc:396
virtual double getRho(int ilocal, int jlocal) const
Get correlation coefficient between parameters ilocal and jlocal.
Definition: BaseFitObject.cc:413
virtual bool setParam(int ilocal, double par_, bool measured_, bool fixed_=false)
Set value and measured flag of parameter i; return: significant change.
Definition: BaseFitObject.cc:317
virtual bool calculateCovInv() const
Calculate the inverse of the covariance matrix.
Definition: BaseFitObject.cc:224
virtual double getChi2() const
Get chi squared from measured and fitted parameters.
Definition: BaseFitObject.cc:430
virtual ~BaseFitObject()
Virtual destructor.
Definition: BaseFitObject.cc:90
bool cachevalid
flag for valid cache
Definition: BaseFitObject.h:352
virtual void addToGlobalChi2DerVector(double *y, int idim) const
Add derivatives of chi squared to global derivative vector.
Definition: BaseFitObject.cc:502
virtual bool releaseParam(int ilocal)
Release a parameter.
Definition: BaseFitObject.h:176
virtual int getNPar() const =0
Get total number of parameters of this FitObject.
double mpar[BaseDefs::MAXPAR]
measured parameters
Definition: BaseFitObject.h:338
virtual bool setCov(int ilocal, int jlocal, double cov_)
Set covariance of parameters ilocal and jlocal; return: success.
Definition: BaseFitObject.cc:359
virtual const char * getParamName(int ilocal) const
Get name of parameter ilocal.
Definition: BaseFitObject.h:188
virtual void addToGlobCov(double *glcov, int idim) const
Add covariance matrix elements to global covariance matrix of size idim x idim.
Definition: BaseFitObject.cc:206
double cov[BaseDefs::MAXPAR][BaseDefs::MAXPAR]
local covariance matrix
Definition: BaseFitObject.h:346
virtual double getD2Chi2DParam2(int ilocal, int jlocal) const
Get second derivative of chi squared w.r.t. parameters ilocal1 and ilocal2.
Definition: BaseFitObject.cc:466
BaseFitObject()
Default constructor.
Definition: BaseFitObject.cc:42
virtual double getError(int ilocal) const
Get error of parameter ilocal.
Definition: BaseFitObject.cc:402
double par[BaseDefs::MAXPAR]
fit parameters
Definition: BaseFitObject.h:336
virtual double getDChi2DParam(int ilocal) const
Get derivative of chi squared w.r.t. parameter ilocal.
Definition: BaseFitObject.cc:453
int globalParNum[BaseDefs::MAXPAR]
global paramter number for each parameter
Definition: BaseFitObject.h:344
virtual double getParam(int ilocal) const
Get current value of parameter ilocal.
Definition: BaseFitObject.cc:390
virtual const char * getName() const
Get object's name.
Definition: BaseFitObject.cc:106
virtual void setName(const char *name_)
Set object's name.
Definition: BaseFitObject.cc:98
bool fixed[BaseDefs::MAXPAR]
fixed flag
Definition: BaseFitObject.h:342
Abstract base class for particle objects of kinematic fits.
Definition: BaseFitObject.h:110
virtual BaseFitObject & assign(const BaseFitObject &source)
Assign from anther object, if of same type.
Definition: BaseFitObject.cc:70
virtual int getNMeasured() const
Get number of measured parameters of this FitObject.
Definition: BaseFitObject.cc:110
double covinv[BaseDefs::MAXPAR][BaseDefs::MAXPAR]
inverse pf local covariance matrix
Definition: BaseFitObject.h:348
virtual std::ostream & printRhoValues(std::ostream &os) const
print the correlation coefficients
Definition: BaseFitObject.cc:144
bool covinvvalid
flag for valid inverse covariance matrix
Definition: BaseFitObject.h:350
virtual int getNUnmeasured() const
Get number of unmeasured parameters of this FitObject.
Definition: BaseFitObject.cc:115
virtual bool setMParam(int ilocal, double mpar_)
Set measured value of parameter ilocal; return: success.
Definition: BaseFitObject.cc:339
virtual bool fixParam(int ilocal, bool fix=true)
Fix a parameter (fix=true), or release it (fix=false)
Definition: BaseFitObject.cc:371