PandaRoot
genfit::DAF Class Reference

Determinstic Annealing Filter (DAF) implementation. More...

#include <DAF.h>

Inheritance diagram for genfit::DAF:
genfit::AbsKalmanFitter genfit::AbsFitter

Public Member Functions

 DAF (bool useRefKalman=true, double deltaWeight=1e-3, double deltaPval=1e-3)
 Create DAF. Per default, use KalmanFitterRefTrack as fitter. More...
 
 DAF (AbsKalmanFitter *kalman, double deltaWeight=1e-3, double deltaPval=1e-3)
 Create DAF. Use the provided AbsKalmanFitter as fitter. More...
 
 ~DAF ()
 
void processTrackWithRep (Track *tr, const AbsTrackRep *rep, bool resortHits=false)
 Process a track using the DAF. More...
 
void setProbCut (const double prob_cut)
 Set the probability cut for the weight calculation for the hits. More...
 
void addProbCut (const double prob_cut, const int measDim)
 Set the probability cut for the weight calculation for the hits for a specific measurement dimensionality. More...
 
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. More...
 
const std::vector< double > & getBetas ()
 
void setAnnealingScheme (double bStart, double bFinal, unsigned int nSteps)
 Configure the annealing scheme. More...
 
void setMaxIterations (unsigned int n)
 Set the maximum number of iterations. More...
 
void setConvergenceDeltaWeight (double delta)
 If all weights change less than delta between two iterations, the fit is regarded as converged. More...
 
AbsKalmanFittergetKalman () const
 
virtual void setMaxFailedHits (int val)
 
virtual void setDebugLvl (unsigned int lvl=1)
 
- Public Member Functions inherited from genfit::AbsKalmanFitter
 AbsKalmanFitter (unsigned int maxIterations=4, double deltaPval=1e-3, double blowUpFactor=1e3)
 
virtual ~AbsKalmanFitter ()
 
void getChiSquNdf (const Track *tr, const AbsTrackRep *rep, double &bChi2, double &fChi2, double &bNdf, double &fNdf) const
 
double getChiSqu (const Track *tr, const AbsTrackRep *rep, int direction=-1) const
 
double getNdf (const Track *tr, const AbsTrackRep *rep, int direction=-1) const
 
double getRedChiSqu (const Track *tr, const AbsTrackRep *rep, int direction=-1) const
 
double getPVal (const Track *tr, const AbsTrackRep *rep, int direction=-1) const
 
unsigned int getMinIterations () const
 
unsigned int getMaxIterations () const
 
double getDeltaPval () const
 
double getRelChi2Change () const
 
double getBlowUpFactor () const
 
bool getResetOffDiagonals () const
 
double getBlowUpMaxVal () const
 
eMultipleMeasurementHandling getMultipleMeasurementHandling () const
 
int getMaxFailedHits () const
 
virtual void setMinIterations (unsigned int n)
 Set the minimum number of iterations. More...
 
void setDeltaPval (double deltaPval)
 Set Convergence criterion. More...
 
void setRelChi2Change (double relChi2Change)
 
void setBlowUpFactor (double blowUpFactor)
 
void setResetOffDiagonals (bool resetOffDiagonals)
 
void setBlowUpMaxVal (double blowUpMaxVal)
 Limit the cov entries to this maximum value when blowing up the cov. Set to negative value to disable. Default is 1.E6. More...
 
void setMultipleMeasurementHandling (eMultipleMeasurementHandling mmh)
 How should multiple measurements be handled? More...
 
bool isTrackPrepared (const Track *tr, const AbsTrackRep *rep) const
 
bool isTrackFitted (const Track *tr, const AbsTrackRep *rep) const
 
bool canIgnoreWeights () const
 returns if the fitter can ignore the weights and handle the MeasurementOnPlanes as if they had weight 1. More...
 
- Public Member Functions inherited from genfit::AbsFitter
 AbsFitter ()
 
virtual ~AbsFitter ()
 
void processTrack (Track *, bool resortHits=false)
 

Additional Inherited Members

- Protected Member Functions inherited from genfit::AbsKalmanFitter
const std::vector< MeasurementOnPlane * > getMeasurements (const KalmanFitterInfo *fi, const TrackPoint *tp, int direction) const
 get the measurementsOnPlane taking the multipleMeasurementHandling_ into account More...
 
- Protected Attributes inherited from genfit::AbsKalmanFitter
unsigned int minIterations_
 Minimum number of iterations to attempt. Forward and backward are counted as one iteration. More...
 
unsigned int maxIterations_
 Maximum number of iterations to attempt. Forward and backward are counted as one iteration. More...
 
double deltaPval_
 Convergence criterion. More...
 
double relChi2Change_
 
double blowUpFactor_
 Blow up the covariance of the forward (backward) fit by this factor before seeding the backward (forward) fit. More...
 
bool resetOffDiagonals_
 Reset the off-diagonals to 0 when blowing up the cov. More...
 
double blowUpMaxVal_
 Limit the cov entries to this maxuimum value when blowing up the cov. More...
 
eMultipleMeasurementHandling multipleMeasurementHandling_
 How to handle if there are multiple MeasurementsOnPlane. More...
 
int maxFailedHits_
 
- Protected Attributes inherited from genfit::AbsFitter
unsigned int debugLvl_
 

Detailed Description

Determinstic Annealing Filter (DAF) implementation.

Author
Christian Höppner (Technische Universität München, original author)
Karl Bicker (Technische Universität München)

The DAF is an iterative Kalman filter with annealing. It is capable of fitting tracks which are contaminated with noise hits. The algorithm is taken from the references R. Fruehwirth & A. Strandlie, Computer Physics Communications 120 (1999) 197-214 and CERN thesis: Dissertation by Matthias Winkler.

The weights which were assigned to the hits by the DAF are accessible in the MeasurementOnPlane objects in the KalmanFitterInfo objects.

Definition at line 47 of file DAF.h.

Constructor & Destructor Documentation

◆ DAF() [1/2]

genfit::DAF::DAF ( bool  useRefKalman = true,
double  deltaWeight = 1e-3,
double  deltaPval = 1e-3 
)

Create DAF. Per default, use KalmanFitterRefTrack as fitter.

Parameters
useRefKalmanIf false, use KalmanFitter as fitter.

◆ DAF() [2/2]

genfit::DAF::DAF ( AbsKalmanFitter kalman,
double  deltaWeight = 1e-3,
double  deltaPval = 1e-3 
)

Create DAF. Use the provided AbsKalmanFitter as fitter.

◆ ~DAF()

genfit::DAF::~DAF ( )
inline

Definition at line 64 of file DAF.h.

References addProbCut(), processTrackWithRep(), setBetas(), and setProbCut().

64 {};

Member Function Documentation

◆ addProbCut()

void genfit::DAF::addProbCut ( const double  prob_cut,
const int  measDim 
)

Set the probability cut for the weight calculation for the hits for a specific measurement dimensionality.

Referenced by ~DAF().

◆ getBetas()

const std::vector<double>& genfit::DAF::getBetas ( )
inline

Definition at line 88 of file DAF.h.

References setAnnealingScheme().

88 { return betas_; }

◆ getKalman()

AbsKalmanFitter* genfit::DAF::getKalman ( ) const
inline

Definition at line 106 of file DAF.h.

Referenced by setDebugLvl(), and setMaxFailedHits().

106 { return kalman_.get(); }

◆ processTrackWithRep()

void genfit::DAF::processTrackWithRep ( Track tr,
const AbsTrackRep rep,
bool  resortHits = false 
)
virtual

Process a track using the DAF.

Implements genfit::AbsFitter.

Referenced by ~DAF().

◆ setAnnealingScheme()

void genfit::DAF::setAnnealingScheme ( double  bStart,
double  bFinal,
unsigned int  nSteps 
)

Configure the annealing scheme.

Set a start and end temperature and the number of steps. A logarithmic sequence of temperatures will be calculated. Also sets minIterations_ and maxIterations_.

Referenced by getBetas().

◆ setBetas()

void genfit::DAF::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.

In the current implementation you need to provide at least one temperature and not more then ten temperatures. Also sets minIterations_ and maxIterations_.

Referenced by ~DAF().

◆ setConvergenceDeltaWeight()

void genfit::DAF::setConvergenceDeltaWeight ( double  delta)
inline

If all weights change less than delta between two iterations, the fit is regarded as converged.

Definition at line 104 of file DAF.h.

104 { deltaWeight_ = delta; }

◆ setDebugLvl()

virtual void genfit::DAF::setDebugLvl ( unsigned int  lvl = 1)
inlinevirtual

Reimplemented from genfit::AbsFitter.

Definition at line 110 of file DAF.h.

References getKalman(), and genfit::AbsFitter::setDebugLvl().

111  {
113  if (lvl > 1)
114  getKalman()->setDebugLvl(lvl - 1);
115  }
virtual void setDebugLvl(unsigned int lvl=1)
Definition: AbsFitter.h:49
AbsKalmanFitter * getKalman() const
Definition: DAF.h:106

◆ setMaxFailedHits()

virtual void genfit::DAF::setMaxFailedHits ( int  val)
inlinevirtual

Reimplemented from genfit::AbsKalmanFitter.

Definition at line 108 of file DAF.h.

References getKalman(), and genfit::AbsKalmanFitter::setMaxFailedHits().

108 { getKalman()->setMaxFailedHits(val); }
AbsKalmanFitter * getKalman() const
Definition: DAF.h:106
virtual void setMaxFailedHits(int val)

◆ setMaxIterations()

void genfit::DAF::setMaxIterations ( unsigned int  n)
inlinevirtual

Set the maximum number of iterations.

Reimplemented from genfit::AbsKalmanFitter.

Definition at line 97 of file DAF.h.

References genfit::AbsKalmanFitter::maxIterations_.

98  {
99  maxIterations_ = n;
100  betas_.resize(maxIterations_, betas_.back());
101  }
unsigned int maxIterations_
Maximum number of iterations to attempt. Forward and backward are counted as one iteration.

◆ setProbCut()

void genfit::DAF::setProbCut ( const double  prob_cut)

Set the probability cut for the weight calculation for the hits.

By default the cut values for measurements of dimensionality from 1 to 5 are calculated. If you what to have cut values for an arbitrary measurement dimensionality use addProbCut(double prob_cut, int maxDim);

Referenced by ~DAF().


The documentation for this class was generated from the following file: