GENFIT  Rev:NoNumberAvailable
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
AbsKalmanFitter.h
Go to the documentation of this file.
1 /* Copyright 2013, Ludwig-Maximilians Universität München,
2  Authors: Tobias Schlüter & Johannes Rauch
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
23 #ifndef genfit_AbsKalmanFitter_h
24 #define genfit_AbsKalmanFitter_h
25 
26 #include "AbsFitter.h"
27 #include "MeasurementOnPlane.h"
28 #include "TrackPoint.h"
29 
30 
31 namespace genfit {
32 
33 class KalmanFitterInfo;
34 
46 };
47 
51 class AbsKalmanFitter : public AbsFitter {
52 
53  public:
54 
55  AbsKalmanFitter(unsigned int maxIterations = 4, double deltaPval = 1e-3, double blowUpFactor = 1e3)
56  : AbsFitter(), minIterations_(2), maxIterations_(maxIterations), deltaPval_(deltaPval), relChi2Change_(0.2),
57  blowUpFactor_(blowUpFactor), resetOffDiagonals_(true), blowUpMaxVal_(1.E6),
59  maxFailedHits_(-1) {
62  }
63 
64  virtual ~AbsKalmanFitter() {;}
65 
66  //virtual void fitTrack(Track* tr, const AbsTrackRep* rep, double& chi2, double& ndf, int direction) = 0;
67 
68  void getChiSquNdf(const Track* tr, const AbsTrackRep* rep, double& bChi2, double& fChi2, double& bNdf, double& fNdf) const;
69  double getChiSqu(const Track* tr, const AbsTrackRep* rep, int direction = -1) const;
70  double getNdf(const Track* tr, const AbsTrackRep* rep, int direction = -1) const;
71  double getRedChiSqu(const Track* tr, const AbsTrackRep* rep, int direction = -1) const;
72  double getPVal(const Track* tr, const AbsTrackRep* rep, int direction = -1) const;
73 
74  unsigned int getMinIterations() const {return minIterations_;}
75  unsigned int getMaxIterations() const {return maxIterations_;}
76  double getDeltaPval() const {return deltaPval_;}
77  double getRelChi2Change() const {return relChi2Change_;}
78  double getBlowUpFactor() const {return blowUpFactor_;}
80  double getBlowUpMaxVal() const {return blowUpMaxVal_;}
82  int getMaxFailedHits() const {return maxFailedHits_;}
83 
85  virtual void setMinIterations(unsigned int n) {minIterations_ = std::max((unsigned int)1,n); if (maxIterations_ < minIterations_) maxIterations_ = minIterations_;}
88 
95  void setDeltaPval(double deltaPval) {deltaPval_ = deltaPval;}
96 
106  void setRelChi2Change(double relChi2Change) {relChi2Change_ = relChi2Change;}
107 
108  void setBlowUpFactor(double blowUpFactor) {blowUpFactor_ = blowUpFactor;}
109  void setResetOffDiagonals(bool resetOffDiagonals) {resetOffDiagonals_ = resetOffDiagonals;}
111 
119  void setBlowUpMaxVal(double blowUpMaxVal) {blowUpMaxVal_= blowUpMaxVal;}
120 
123 
124  virtual void setMaxFailedHits(int val) {maxFailedHits_ = val;}
125 
126  bool isTrackPrepared(const Track* tr, const AbsTrackRep* rep) const;
127  bool isTrackFitted(const Track* tr, const AbsTrackRep* rep) const;
128 
130  bool canIgnoreWeights() const;
131 
132  protected:
133 
135  const std::vector<MeasurementOnPlane *> getMeasurements(const KalmanFitterInfo* fi, const TrackPoint* tp, int direction) const;
136 
138  unsigned int minIterations_;
139 
141  unsigned int maxIterations_;
148  double deltaPval_;
159 
166 
169 
173 
174  public:
175 
176  ClassDef(AbsKalmanFitter, 2)
177 
178 };
179 
180 } /* End of namespace genfit */
183 #endif //genfit_AbsKalmanFitter_h
double blowUpMaxVal_
Limit the cov entries to this maxuimum value when blowing up the cov.
unsigned int maxIterations_
Maximum number of iterations to attempt. Forward and backward are counted as one iteration.
double getNdf(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
virtual void setMaxFailedHits(int val)
unsigned int getMaxIterations() const
double getDeltaPval() const
void setBlowUpMaxVal(double blowUpMaxVal)
Limit the cov entries to this maximum value when blowing up the cov. Set to negative value to disable...
bool resetOffDiagonals_
Reset the off-diagonals to 0 when blowing up the cov.
double getBlowUpMaxVal() const
eMultipleMeasurementHandling
eMultipleMeasurementHandling getMultipleMeasurementHandling() const
unsigned int minIterations_
Minimum number of iterations to attempt. Forward and backward are counted as one iteration.
void setMultipleMeasurementHandling(eMultipleMeasurementHandling mmh)
How should multiple measurements be handled?
unsigned int getMinIterations() const
double deltaPval_
Convergence criterion.
void setRelChi2Change(double relChi2Change)
double getRelChi2Change() const
eMultipleMeasurementHandling multipleMeasurementHandling_
How to handle if there are multiple MeasurementsOnPlane.
bool isTrackFitted(const Track *tr, const AbsTrackRep *rep) const
double getBlowUpFactor() const
Abstract base class for fitters.
Definition: AbsFitter.h:35
void setBlowUpFactor(double blowUpFactor)
int getMaxFailedHits() const
bool canIgnoreWeights() const
returns if the fitter can ignore the weights and handle the MeasurementOnPlanes as if they had weight...
Abstract base class for a track representation.
Definition: AbsTrackRep.h:66
Collects information needed and produced by a AbsKalmanFitter implementations and is specific to one ...
bool getResetOffDiagonals() const
void getChiSquNdf(const Track *tr, const AbsTrackRep *rep, double &bChi2, double &fChi2, double &bNdf, double &fNdf) const
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:50
bool isTrackPrepared(const Track *tr, const AbsTrackRep *rep) const
double blowUpFactor_
Blow up the covariance of the forward (backward) fit by this factor before seeding the backward (forw...
void setResetOffDiagonals(bool resetOffDiagonals)
double getPVal(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
double getChiSqu(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
Abstract base class for Kalman fitter and derived fitting algorithms.
virtual void setMaxIterations(unsigned int n)
Set the maximum number of iterations.
virtual void setMinIterations(unsigned int n)
Set the minimum number of iterations.
const std::vector< MeasurementOnPlane * > getMeasurements(const KalmanFitterInfo *fi, const TrackPoint *tp, int direction) const
get the measurementsOnPlane taking the multipleMeasurementHandling_ into account
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition: Track.h:71
AbsKalmanFitter(unsigned int maxIterations=4, double deltaPval=1e-3, double blowUpFactor=1e3)
double getRedChiSqu(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
void setDeltaPval(double deltaPval)
Set Convergence criterion.
Defines for I/O streams used for error and debug printing.