FairRoot/PandaRoot
GFDaf.h
Go to the documentation of this file.
1 /* Copyright 2011, Technische Universitaet Muenchen,
2 Authors: Karl Bicker, Christian Hoeppner
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 GFDAF_H
24 #define GFDAF_H
25 
26 #include<assert.h>
27 #include<cmath>
28 #include<GFAbsRecoHit.h>
29 #include<GFDafHit.h>
30 #include<GFKalman.h>
31 #include<GFTrack.h>
32 #include<stdlib.h>
33 #include<vector>
34 
46 class GFDaf: GFKalman {
47  public:
48 
49  GFDaf();
50  ~GFDaf() { };
51 
54  void processTrack(GFTrack* trk);
55 
66  const std::vector<std::vector<std::vector<double> > > getWeights() { return fWeights; };
67 
76  void setProbCut(double prob_cut);
77 
83  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.);
84 
85  private:
86 
89  std::vector<GFDafHit*> initHitsWeights(GFTrack* trk);
90 
93  std::vector<std::vector<double> > calcWeights(GFTrack* trk, double beta);
94 
97  void copySmoothing(GFTrack* source, GFTrack* target, int target_ire);
98 
99  std::vector<std::vector<std::vector<double> > > fWeights;
100  std::vector<double> fBeta;
101  std::map<int,double> fchi2Cuts;
102 
103 };
104 
105 #endif
106 
Determinstic Annealing Filter (DAF) implementation.
Definition: GFDaf.h:46
std::vector< GFDafHit * > initHitsWeights(GFTrack *trk)
Initialize the GFDafHit and their weights before the fit.
Definition: GFDaf.cxx:203
Track object for genfit. genfit algorithms work on these objects.
Definition: GFTrack.h:60
Generic Kalman Filter implementation.
Definition: GFKalman.h:50
~GFDaf()
Definition: GFDaf.h:50
void setProbCut(double prob_cut)
Set the probabilty cut for the weight calculation for the hits.
Definition: GFDaf.cxx:143
std::map< int, double > fchi2Cuts
Definition: GFDaf.h:101
std::vector< std::vector< double > > calcWeights(GFTrack *trk, double beta)
Calculate the weights for the next fitting pass.
Definition: GFDaf.cxx:80
std::vector< std::vector< std::vector< double > > > fWeights
Definition: GFDaf.h:99
void copySmoothing(GFTrack *source, GFTrack *target, int target_ire)
Copy the smoothing matrices from the source track to the target.
Definition: GFDaf.cxx:238
const std::vector< std::vector< std::vector< double > > > getWeights()
Return the weights present after the track was processed.
Definition: GFDaf.h:66
void processTrack(GFTrack *trk)
Process a track using the DAF.
Definition: GFDaf.cxx:30
GFTrack * trk
Definition: checkgenfit.C:13
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.
Definition: GFDaf.cxx:174
std::vector< double > fBeta
Definition: GFDaf.h:100
GFDaf()
Definition: GFDaf.cxx:21