EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
KalmanFitter.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file KalmanFitter.h
1 /* Copyright 2013, Ludwig-Maximilians Universität München,
2  Authors: Tobias Schlüter & Johannes Rauch
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 genfit_KalmanFitter_h
24 #define genfit_KalmanFitter_h
25 
26 #include "AbsKalmanFitter.h"
27 
28 #include <memory>
29 
30 
31 namespace genfit {
32 
33 class KalmanFitterInfo;
34 class MeasuredStateOnPlane;
35 class TrackPoint;
36 
40 class KalmanFitter : public AbsKalmanFitter {
41 
42  private:
43 
44  // These private functions are needed, otherwise strange things happen, no idea why!
45  KalmanFitter(const KalmanFitter&);
47 
48  public:
49 
50  KalmanFitter(unsigned int maxIterations = 4, double deltaPval = 1e-3, double blowUpFactor = 1e3, bool squareRootFormalism = false)
51  : AbsKalmanFitter(maxIterations, deltaPval, blowUpFactor), currentState_(nullptr),
52  squareRootFormalism_(squareRootFormalism)
53  {}
54 
56 
58  void processTrackWithRep(Track* tr, const AbsTrackRep* rep, bool resortHits = false) override;
59 
62  void processTrackPartially(Track* tr, const AbsTrackRep* rep, int startId = 0, int endId = -1);
63 
64  void useSquareRootFormalism(bool squareRootFormalism = true) {squareRootFormalism_ = squareRootFormalism;}
65 
66  private:
67  bool fitTrack(Track* tr, const AbsTrackRep* rep, double& chi2, double& ndf, int startId, int endId, int& nFailedHits);
69  const AbsTrackRep* rep, double& chi2, double& ndf, int direction);
70 
71  std::unique_ptr<MeasuredStateOnPlane> currentState_;
72 
74 
75  public:
76  ClassDefOverride(KalmanFitter,1)
77 
78 };
79 
80 } /* End of namespace genfit */
83 #endif //genfit_KalmanFitter_h