EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
genfit::DAF Class Reference

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

#include <fun4all_GenFit/blob/master/fitters/include/DAF.h>

+ Inheritance diagram for genfit::DAF:
+ Collaboration diagram for genfit::DAF:

Public Member Functions

 DAF (bool useRefKalman=true, double deltaPval=1e-3, double deltaWeight=1e-3)
 Create DAF. Per default, use KalmanFitterRefTrack as fitter.
 
 DAF (AbsKalmanFitter *kalman, double deltaPval=1e-3, double deltaWeight=1e-3)
 Create DAF. Use the provided AbsKalmanFitter as fitter.
 
 ~DAF ()
 
void processTrackWithRep (Track *tr, const AbsTrackRep *rep, bool resortHits=false) override
 Process a track using the DAF.
 
void setProbCut (const double prob_cut)
 Set the probability cut for the weight calculation for the hits.
 
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.
 
const std::vector< double > & getBetas () const
 
void setAnnealingScheme (double bStart, double bFinal, unsigned int nSteps)
 Configure the annealing scheme.
 
void setMaxIterations (unsigned int n) override
 Set the maximum number of iterations.
 
void setConvergenceDeltaWeight (double delta)
 If all weights change less than delta between two iterations, the fit is regarded as converged.
 
AbsKalmanFittergetKalman () const
 
virtual void setMaxFailedHits (int val) override
 
virtual void setDebugLvl (unsigned int lvl=1) override
 
- 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.
 
void setDeltaPval (double deltaPval)
 Set Convergence criterion.
 
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.
 
void setMultipleMeasurementHandling (eMultipleMeasurementHandling mmh)
 How should multiple measurements be handled?
 
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.
 
- Public Member Functions inherited from genfit::AbsFitter
 AbsFitter ()
 
virtual ~AbsFitter ()
 
void processTrack (Track *, bool resortHits=false)
 

Private Member Functions

 DAF (const DAF &)
 
DAFoperator= (genfit::DAF const &)
 
bool calcWeights (Track *trk, const AbsTrackRep *rep, double beta)
 Calculate and set the weights for the next fitting pass. Return if convergence is met. The convergence criterium is the largest absolute change of all weights.
 

Private Attributes

double deltaWeight_
 
std::vector< double > betas_
 
double chi2Cuts_ [7]
 
std::unique_ptr< AbsKalmanFitterkalman_
 

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
 
- Protected Attributes inherited from genfit::AbsKalmanFitter
unsigned int minIterations_
 Minimum number of iterations to attempt. Forward and backward are counted as one iteration.
 
unsigned int maxIterations_
 Maximum number of iterations to attempt. Forward and backward are counted as one iteration.
 
double deltaPval_
 Convergence criterion.
 
double relChi2Change_
 
double blowUpFactor_
 Blow up the covariance of the forward (backward) fit by this factor before seeding the backward (forward) fit.
 
bool resetOffDiagonals_
 Reset the off-diagonals to 0 when blowing up the cov.
 
double blowUpMaxVal_
 Limit the cov entries to this maxuimum value when blowing up the cov.
 
eMultipleMeasurementHandling multipleMeasurementHandling_
 How to handle if there are multiple MeasurementsOnPlane.
 
int maxFailedHits_
 

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 49 of file DAF.h.

View newest version in sPHENIX GitHub at line 49 of file DAF.h

Constructor & Destructor Documentation

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

Create DAF. Per default, use KalmanFitterRefTrack as fitter.

Parameters
useRefKalmanIf false, use KalmanFitter as fitter.

Definition at line 43 of file DAF.cc.

View newest version in sPHENIX GitHub at line 43 of file DAF.cc

References kalman_, setAnnealingScheme(), setProbCut(), and genfit::weightedAverage.

+ Here is the call graph for this function:

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

Create DAF. Use the provided AbsKalmanFitter as fitter.

Definition at line 60 of file DAF.cc.

View newest version in sPHENIX GitHub at line 60 of file DAF.cc

References kalman_, setAnnealingScheme(), setProbCut(), and genfit::weightedAverage.

+ Here is the call graph for this function:

genfit::DAF::~DAF ( )
inline

Definition at line 68 of file DAF.h.

View newest version in sPHENIX GitHub at line 68 of file DAF.h

Member Function Documentation

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.

Definition at line 180 of file DAF.cc.

View newest version in sPHENIX GitHub at line 180 of file DAF.cc

References chi2Cuts_, and genfit::Exception::setFatal().

Referenced by setProbCut().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool genfit::DAF::calcWeights ( Track trk,
const AbsTrackRep rep,
double  beta 
)
private

Calculate and set the weights for the next fitting pass. Return if convergence is met. The convergence criterium is the largest absolute change of all weights.

Definition at line 218 of file DAF.cc.

View newest version in sPHENIX GitHub at line 218 of file DAF.cc

References genfit::KalmanFitterInfo::areWeightsFixed(), chi2Cuts_, genfit::AbsFitter::debugLvl_, genfit::debugOut, deltaWeight_, Acts::UnitConstants::e, genfit::errorOut, genfit::MeasuredStateOnPlane::getCov(), genfit::KalmanFitterInfo::getMeasurementOnPlane(), genfit::KalmanFitterInfo::getNumMeasurements(), genfit::Track::getPointsWithMeasurement(), genfit::KalmanFitterInfo::getResidual(), genfit::StateOnPlane::getState(), genfit::MeasurementOnPlane::getWeight(), genfit::Exception::info(), genfit::tools::invertMatrix(), M_PI, phi, genfit::MeasurementOnPlane::setWeight(), and genfit::Exception::what().

Referenced by processTrackWithRep().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 84 of file DAF.h.

View newest version in sPHENIX GitHub at line 84 of file DAF.h

References betas_.

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

Definition at line 98 of file DAF.h.

View newest version in sPHENIX GitHub at line 98 of file DAF.h

References kalman_.

Referenced by setDebugLvl(), and setMaxFailedHits().

+ Here is the caller graph for this function:

DAF& genfit::DAF::operator= ( genfit::DAF const &  )
private
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_.

Definition at line 194 of file DAF.cc.

View newest version in sPHENIX GitHub at line 194 of file DAF.cc

References betas_, genfit::AbsKalmanFitter::maxIterations_, and genfit::AbsKalmanFitter::minIterations_.

Referenced by DAF().

+ Here is the caller graph for this function:

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 96 of file DAF.h.

View newest version in sPHENIX GitHub at line 96 of file DAF.h

References Acts::Test::delta, and deltaWeight_.

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

Reimplemented from genfit::AbsFitter.

Definition at line 102 of file DAF.h.

View newest version in sPHENIX GitHub at line 102 of file DAF.h

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

+ Here is the call graph for this function:

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

Reimplemented from genfit::AbsKalmanFitter.

Definition at line 100 of file DAF.h.

View newest version in sPHENIX GitHub at line 100 of file DAF.h

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

+ Here is the call graph for this function:

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

Set the maximum number of iterations.

Reimplemented from genfit::AbsKalmanFitter.

Definition at line 93 of file DAF.h.

View newest version in sPHENIX GitHub at line 93 of file DAF.h

References betas_, genfit::AbsKalmanFitter::maxIterations_, and n.

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);

Definition at line 174 of file DAF.cc.

View newest version in sPHENIX GitHub at line 174 of file DAF.cc

References addProbCut().

Referenced by DAF().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

std::vector<double> genfit::DAF::betas_
private

Definition at line 114 of file DAF.h.

View newest version in sPHENIX GitHub at line 114 of file DAF.h

Referenced by getBetas(), processTrackWithRep(), setAnnealingScheme(), and setMaxIterations().

double genfit::DAF::chi2Cuts_[7]
private

Definition at line 115 of file DAF.h.

View newest version in sPHENIX GitHub at line 115 of file DAF.h

Referenced by addProbCut(), and calcWeights().

double genfit::DAF::deltaWeight_
private

Definition at line 113 of file DAF.h.

View newest version in sPHENIX GitHub at line 113 of file DAF.h

Referenced by calcWeights(), and setConvergenceDeltaWeight().

std::unique_ptr<AbsKalmanFitter> genfit::DAF::kalman_
private

Definition at line 120 of file DAF.h.

View newest version in sPHENIX GitHub at line 120 of file DAF.h

Referenced by DAF(), getKalman(), and processTrackWithRep().


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