![]() |
PandaRoot
|
Determinstic Annealing Filter (DAF) implementation. More...
#include <GFDaf.h>
Public Member Functions | |
GFDaf () | |
~GFDaf () | |
void | processTrack (GFTrack *trk) |
Process a track using the DAF. More... | |
const std::vector< std::vector< std::vector< double > > > | getWeights () |
Return the weights present after the track was processed. More... | |
void | setProbCut (double prob_cut) |
Set the probabilty cut for the weight calculation for the hits. More... | |
void | setBetas (double b1, double b2, 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... | |
Determinstic Annealing Filter (DAF) implementation.
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.
GFDaf::GFDaf | ( | ) |
|
inline |
|
inline |
Return the weights present after the track was processed.
The DAF uses special effective hits defined in the class GFDafHit. A GFDafHit is a wrappe class and contains all the real hits from one plane. The structure of the return vector of getWeights allows to reconstruct in what way the hits were grouped: the outermost vector represents the track representation, there is one entry per track representation. The middle vector represents the effective hits, and the innermost vector contains the real hits contained in the corresponding effective hit.
Definition at line 65 of file GFDaf.h.
References setBetas(), and setProbCut().
void GFDaf::setBetas | ( | double | b1, |
double | b2, | ||
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 two temperatures. The maximum would ten tempertatures.
Referenced by getWeights().
void GFDaf::setProbCut | ( | double | prob_cut | ) |
Set the probabilty cut for the weight calculation for the hits.
Currently supported are the values 0.01 0.005, and 0.001. The corresponding chi2 cuts for different hits dimensionalities are hardcoded in the implementation because I did not yet figure out how to calculate them. Please feel very welcome to change the implementtion if you know how to do it.
Referenced by getWeights().