SND@LHC Software
Loading...
Searching...
No Matches
DAF.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_DAF_h
24#define genfit_DAF_h
25
26#include "AbsKalmanFitter.h"
27
28#include <vector>
29#include <map>
30
31
32namespace genfit {
33
48class DAF : public AbsKalmanFitter {
49
50 private:
51
52 DAF(const DAF&);
54
55 public:
56
62 DAF(bool useRefKalman = true, double deltaWeight = 1e-3, double deltaPval = 1e-3);
66 DAF(AbsKalmanFitter* kalman, double deltaWeight = 1e-3, double deltaPval = 1e-3);
67 ~DAF() {};
68
70 void processTrackWithRep(Track* tr, const AbsTrackRep* rep, bool resortHits = false);
71
78 void setProbCut(const double prob_cut);
79
81 void addProbCut(const double prob_cut, const int measDim);
82
89 void setBetas(double b1,double b2=-1, double b3=-1., double b4=-1., double b5=-1., double b6=-1., double b7=-1., double b8=-1., double b9=-1., double b10=-1.);
90
96 void setAnnealingScheme(double bStart, double bFinal, unsigned int nSteps);
97
98 void setMaxIterations(unsigned int n) {maxIterations_ = n; betas_.resize(maxIterations_,betas_.back());}
99
101 void setConvergenceDeltaWeight(double delta) {deltaWeight_ = delta;}
102
103 AbsKalmanFitter* getKalman() const {return kalman_.get();}
104
105 virtual void setMaxFailedHits(int val) {getKalman()->setMaxFailedHits(val);}
106
107 virtual void setDebugLvl(unsigned int lvl = 1) {AbsFitter::setDebugLvl(lvl); if (lvl > 1) getKalman()->setDebugLvl(lvl-1);}
108
109 private:
110
115 bool calcWeights(Track* trk, const AbsTrackRep* rep, double beta);
116
117
118 double deltaWeight_; // convergence criterium
119 std::vector<double> betas_;
120 std::map<int,double> chi2Cuts_;
121#ifndef __CINT__
122 boost::scoped_ptr<AbsKalmanFitter> kalman_;
123#else
125#endif
126
127 public:
128
129 ClassDef(DAF,1)
130
131};
132
133} /* End of namespace genfit */
136#endif //genfit_DAF_h
virtual void setDebugLvl(unsigned int lvl=1)
Definition AbsFitter.h:50
Abstract base class for Kalman fitter and derived fitting algorithms.
unsigned int maxIterations_
Maximum number of iterations to attempt. Forward and backward are counted as one iteration.
virtual void setMaxFailedHits(int val)
Abstract base class for a track representation.
Definition AbsTrackRep.h:66
Determinstic Annealing Filter (DAF) implementation.
Definition DAF.h:48
std::vector< double > betas_
Definition DAF.h:119
void setBetas(double b1, double b2=-1, double b3=-1., double b4=-1., double b5=-1., double b6=-1., double b7=-1., double b8=-1., double b9=-1., double b10=-1.)
Configure the annealing scheme.
Definition DAF.cc:194
bool calcWeights(Track *trk, const AbsTrackRep *rep, double beta)
Calculate and set the weights for the next fitting pass. Return if convergence is met....
Definition DAF.cc:254
void setAnnealingScheme(double bStart, double bFinal, unsigned int nSteps)
Configure the annealing scheme.
Definition DAF.cc:230
DAF & operator=(genfit::DAF const &)
AbsKalmanFitter * getKalman() const
Definition DAF.h:103
void addProbCut(const double prob_cut, const int measDim)
Set the probability cut for the weight calculation for the hits for a specific measurement dimensiona...
Definition DAF.cc:179
std::map< int, double > chi2Cuts_
Definition DAF.h:120
void setConvergenceDeltaWeight(double delta)
If all weights change less than delta between two iterations, the fit is regarded as converged.
Definition DAF.h:101
DAF(const DAF &)
double deltaWeight_
Definition DAF.h:118
~DAF()
Definition DAF.h:67
virtual void setMaxFailedHits(int val)
Definition DAF.h:105
virtual void setDebugLvl(unsigned int lvl=1)
Definition DAF.h:107
void setProbCut(const double prob_cut)
Set the probability cut for the weight calculation for the hits.
Definition DAF.cc:173
void setMaxIterations(unsigned int n)
Set the maximum number of iterations.
Definition DAF.h:98
void processTrackWithRep(Track *tr, const AbsTrackRep *rep, bool resortHits=false)
Process a track using the DAF.
Definition DAF.cc:75
boost::scoped_ptr< AbsKalmanFitter > kalman_
Definition DAF.h:122
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition Track.h:71
Matrix inversion tools.
Definition AbsBField.h:29