GENFIT Rev: NoNumberAvailable
Loading...
Searching...
No Matches
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*/
22
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
31namespace genfit {
32
34
47
51class 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_;
159
166
169
173
174 public:
175
176 ClassDef(AbsKalmanFitter, 2)
177
178};
179
180} /* End of namespace genfit */
182
183#endif //genfit_AbsKalmanFitter_h
unsigned int getMaxIterations() const
double blowUpFactor_
Blow up the covariance of the forward (backward) fit by this factor before seeding the backward (forw...
unsigned int getMinIterations() const
virtual void setMaxIterations(unsigned int n)
Set the maximum number of iterations.
double getChiSqu(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
unsigned int maxIterations_
Maximum number of iterations to attempt. Forward and backward are counted as one iteration.
void setBlowUpMaxVal(double blowUpMaxVal)
Limit the cov entries to this maximum value when blowing up the cov. Set to negative value to disable...
void setDeltaPval(double deltaPval)
Set Convergence criterion.
double getRedChiSqu(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
void setMultipleMeasurementHandling(eMultipleMeasurementHandling mmh)
How should multiple measurements be handled?
bool canIgnoreWeights() const
returns if the fitter can ignore the weights and handle the MeasurementOnPlanes as if they had weight...
bool isTrackFitted(const Track *tr, const AbsTrackRep *rep) const
double getBlowUpFactor() const
const std::vector< MeasurementOnPlane * > getMeasurements(const KalmanFitterInfo *fi, const TrackPoint *tp, int direction) const
get the measurementsOnPlane taking the multipleMeasurementHandling_ into account
double getRelChi2Change() const
double blowUpMaxVal_
Limit the cov entries to this maxuimum value when blowing up the cov.
void setRelChi2Change(double relChi2Change)
void getChiSquNdf(const Track *tr, const AbsTrackRep *rep, double &bChi2, double &fChi2, double &bNdf, double &fNdf) const
double deltaPval_
Convergence criterion.
eMultipleMeasurementHandling getMultipleMeasurementHandling() const
double getBlowUpMaxVal() const
double getPVal(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
virtual void setMaxFailedHits(int val)
virtual void setMinIterations(unsigned int n)
Set the minimum number of iterations.
bool getResetOffDiagonals() const
void setBlowUpFactor(double blowUpFactor)
bool resetOffDiagonals_
Reset the off-diagonals to 0 when blowing up the cov.
double getDeltaPval() const
unsigned int minIterations_
Minimum number of iterations to attempt. Forward and backward are counted as one iteration.
bool isTrackPrepared(const Track *tr, const AbsTrackRep *rep) const
eMultipleMeasurementHandling multipleMeasurementHandling_
How to handle if there are multiple MeasurementsOnPlane.
double getNdf(const Track *tr, const AbsTrackRep *rep, int direction=-1) const
AbsKalmanFitter(unsigned int maxIterations=4, double deltaPval=1e-3, double blowUpFactor=1e3)
void setResetOffDiagonals(bool resetOffDiagonals)
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 ...
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition Track.h:71
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition TrackPoint.h:46
Defines for I/O streams used for error and debug printing.
eMultipleMeasurementHandling
@ weightedClosestToPrediction
@ weightedClosestToReference
@ weightedClosestToReferenceWire
@ unweightedClosestToReference
@ weightedClosestToPredictionWire
@ unweightedClosestToPredictionWire
@ unweightedClosestToPrediction
@ unweightedClosestToReferenceWire
@ unweightedAverage