PandaRoot
GFDaf.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 /* Copyright 2011, Technische Universitaet Muenchen,
14 Authors: Karl Bicker, Christian Hoeppner
15 
16 This file is part of GENFIT.
17 
18 GENFIT is free software: you can redistribute it and/or modify
19 it under the terms of the GNU Lesser General Public License as published
20 by the Free Software Foundation, either version 3 of the License, or
21 (at your option) any later version.
22 
23 GENFIT is distributed in the hope that it will be useful,
24 but WITHOUT ANY WARRANTY; without even the implied warranty of
25 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 GNU Lesser General Public License for more details.
27 
28 You should have received a copy of the GNU Lesser General Public License
29 along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
30  */
35 #ifndef GFDAF_H
36 #define GFDAF_H
37 
38 #include <assert.h>
39 #include <cmath>
40 #include "GFAbsRecoHit.h"
41 #include <GFDafHit.h>
42 #include <GFKalman.h>
43 #include <GFTrack.h>
44 #include <stdlib.h>
45 #include <vector>
46 
58 class GFDaf : GFKalman {
59  public:
60  GFDaf();
61  ~GFDaf(){};
62 
65  void processTrack(GFTrack *trk);
66 
77  const std::vector<std::vector<std::vector<double>>> getWeights() { return fWeights; };
78 
87  void setProbCut(double prob_cut);
88 
94  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.);
95 
96  private:
99  std::vector<GFDafHit *> initHitsWeights(GFTrack *trk);
100 
103  std::vector<std::vector<double>> calcWeights(GFTrack *trk, double beta);
104 
107  void copySmoothing(GFTrack *source, GFTrack *target, int target_ire);
108 
109  std::vector<std::vector<std::vector<double>>> fWeights;
110  std::vector<double> fBeta;
111  std::map<int, double> fchi2Cuts;
112 };
113 
114 #endif
115 
Determinstic Annealing Filter (DAF) implementation.
Definition: GFDaf.h:58
Track object for genfit. genfit algorithms work on these objects.
Definition: GFTrack.h:71
Generic Kalman Filter implementation.
Definition: GFKalman.h:61
~GFDaf()
Definition: GFDaf.h:61
void setProbCut(double prob_cut)
Set the probabilty cut for the weight calculation for the hits.
const std::vector< std::vector< std::vector< double > > > getWeights()
Return the weights present after the track was processed.
Definition: GFDaf.h:77
void processTrack(GFTrack *trk)
Process a track using the DAF.
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.