Analysis Software
Documentation for
sPHENIX
simulation software
Home page
Related Pages
Modules
Namespaces
Classes
Files
Examples
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
AbsKalmanFitter.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file AbsKalmanFitter.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_AbsKalmanFitter_h
24
#define genfit_AbsKalmanFitter_h
25
26
#include "
AbsFitter.h
"
27
#include "
MeasurementOnPlane.h
"
28
#include "
TrackPoint.h
"
29
30
31
namespace
genfit {
32
33
class
KalmanFitterInfo;
34
35
enum
eMultipleMeasurementHandling
{
36
weightedAverage
,
37
unweightedAverage
,
38
weightedClosestToReference
,
39
unweightedClosestToReference
,
40
weightedClosestToPrediction
,
41
unweightedClosestToPrediction
,
42
weightedClosestToReferenceWire
,
43
unweightedClosestToReferenceWire
,
44
weightedClosestToPredictionWire
,
45
unweightedClosestToPredictionWire
46
};
47
51
class
AbsKalmanFitter
:
public
AbsFitter
{
52
53
public
:
54
55
AbsKalmanFitter
(
unsigned
int
maxIterations = 4,
double
deltaPval = 1
e
-3,
double
blowUpFactor = 1e3)
56
:
AbsFitter
(),
minIterations_
(2),
maxIterations_
(maxIterations),
deltaPval_
(deltaPval),
relChi2Change_
(0.2),
57
blowUpFactor_
(blowUpFactor),
resetOffDiagonals_
(
true
),
blowUpMaxVal_
(1.E6),
58
multipleMeasurementHandling_
(
unweightedClosestToPredictionWire
),
59
maxFailedHits_
(-1) {
60
if
(
minIterations_
>
maxIterations_
)
61
minIterations_
=
maxIterations_
;
62
}
63
64
virtual
~AbsKalmanFitter
() {;}
65
66
//virtual void fitTrack(Track* tr, const AbsTrackRep* rep, double& chi2, double& ndf, int direction) = 0;
67
68
void
getChiSquNdf
(
const
Track
* tr,
const
AbsTrackRep
* rep,
double
& bChi2,
double
&
fChi2
,
double
& bNdf,
double
& fNdf)
const
;
69
double
getChiSqu
(
const
Track
* tr,
const
AbsTrackRep
* rep,
int
direction = -1)
const
;
70
double
getNdf
(
const
Track
* tr,
const
AbsTrackRep
* rep,
int
direction = -1)
const
;
71
double
getRedChiSqu
(
const
Track
* tr,
const
AbsTrackRep
* rep,
int
direction = -1)
const
;
72
double
getPVal
(
const
Track
* tr,
const
AbsTrackRep
* rep,
int
direction = -1)
const
;
73
74
unsigned
int
getMinIterations
()
const
{
return
minIterations_
;}
75
unsigned
int
getMaxIterations
()
const
{
return
maxIterations_
;}
76
double
getDeltaPval
()
const
{
return
deltaPval_
;}
77
double
getRelChi2Change
()
const
{
return
relChi2Change_
;}
78
double
getBlowUpFactor
()
const
{
return
blowUpFactor_
;}
79
bool
getResetOffDiagonals
()
const
{
return
resetOffDiagonals_
;}
80
double
getBlowUpMaxVal
()
const
{
return
blowUpMaxVal_
;}
81
eMultipleMeasurementHandling
getMultipleMeasurementHandling
()
const
{
return
multipleMeasurementHandling_
;}
82
int
getMaxFailedHits
()
const
{
return
maxFailedHits_
;}
83
85
virtual
void
setMinIterations
(
unsigned
int
n
) {
minIterations_
= std::max((
unsigned
int
)1,n);
if
(
maxIterations_
<
minIterations_
)
maxIterations_
=
minIterations_
;}
87
virtual
void
setMaxIterations
(
unsigned
int
n
) {
maxIterations_
=
n
;
if
(
minIterations_
>
maxIterations_
)
minIterations_
=
maxIterations_
;}
88
95
void
setDeltaPval
(
double
deltaPval) {
deltaPval_
= deltaPval;}
96
106
void
setRelChi2Change
(
double
relChi2Change) {
relChi2Change_
= relChi2Change;}
107
108
void
setBlowUpFactor
(
double
blowUpFactor) {
blowUpFactor_
= blowUpFactor;}
109
void
setResetOffDiagonals
(
bool
resetOffDiagonals) {
resetOffDiagonals_
= resetOffDiagonals;}
111
119
void
setBlowUpMaxVal
(
double
blowUpMaxVal) {
blowUpMaxVal_
= blowUpMaxVal;}
120
122
void
setMultipleMeasurementHandling
(
eMultipleMeasurementHandling
mmh) {
multipleMeasurementHandling_
= mmh;}
123
124
virtual
void
setMaxFailedHits
(
int
val) {
maxFailedHits_
= val;}
125
126
bool
isTrackPrepared
(
const
Track
* tr,
const
AbsTrackRep
* rep)
const
;
127
bool
isTrackFitted
(
const
Track
* tr,
const
AbsTrackRep
* rep)
const
;
128
130
bool
canIgnoreWeights
()
const
;
131
132
protected
:
133
135
const
std::vector<MeasurementOnPlane *>
getMeasurements
(
const
KalmanFitterInfo
* fi,
const
TrackPoint
*
tp
,
int
direction)
const
;
136
138
unsigned
int
minIterations_
;
139
141
unsigned
int
maxIterations_
;
148
double
deltaPval_
;
158
double
relChi2Change_
;
159
161
double
blowUpFactor_
;
163
bool
resetOffDiagonals_
;
165
double
blowUpMaxVal_
;
166
168
eMultipleMeasurementHandling
multipleMeasurementHandling_
;
169
172
int
maxFailedHits_
;
173
174
public
:
175
176
ClassDef(
AbsKalmanFitter
, 2)
177
178
};
179
180
}
/* End of namespace genfit */
183
#endif //genfit_AbsKalmanFitter_h
GenFit
blob
master
fitters
include
AbsKalmanFitter.h
Built by
Jin Huang
. updated:
Sat Feb 17 2024 22:18:17
using
1.8.2 with
sPHENIX GitHub integration