ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkVertexFitter
TrkVKalVrtCore
TrkVKalVrtCore
TrkVKalVrtCoreBase.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef TrkVKalVrtCoreBase_VKalVrtCore_H
6
#define TrkVKalVrtCoreBase_VKalVrtCore_H
7
8
#include "
TrkVKalVrtCore/TrkVKalVrtCore.h
"
9
#include "
TrkVKalVrtCore/ForVrtClose.h
"
10
#include "
TrkVKalVrtCore/CommonPars.h
"
11
#include <vector>
12
#include <iosfwd>
13
14
namespace
Trk
{
15
16
17
class
VKConstraintBase
;
18
class
VKVertex
;
19
20
class
CascadeEvent
21
{
22
public
:
23
int
cascadeNV
;
24
int
nearPrmVertex
;
25
double
getSCALE
()
const
{
return
m_SCALE
;};
26
void
setSCALE
(
double
S) {
m_SCALE
=S;};
27
double
getAccuracyConstraint
()
const
{
return
m_accuracyConstraint
; };
28
void
setAccuracyConstraint
(
double
C
) {
m_accuracyConstraint
=
C
; };
29
std::unique_ptr<double[]>
fullCovMatrix
;
30
std::vector< std::unique_ptr<VKVertex> >
cascadeVertexList
;
31
std::vector<int>
matrixPnt
;
32
CascadeEvent
();
33
~CascadeEvent
();
34
35
private
:
36
double
m_SCALE
;
37
double
m_accuracyConstraint
;
38
39
40
};
41
42
class
TWRK
// collection of temporary arrays for
43
{
44
public
:
45
TWRK
() { };
// cppcheck-suppress uninitMemberVar; bypass initialization
46
~TWRK
() =
default
;
//default destructor allows compiler to optimize out method in this case.
47
48
public
:
49
double
tt
[3];
// U_i vector (see Billoir...)
50
double
wb
[9];
51
double
wc
[6];
52
double
wci
[6];
53
double
wbci
[9];
54
double
drdp
[2][3];
// for "pass near" constraint
55
double
parf0
[3];
// parameter shifts during iteration
56
double
part
[3];
// temporary array for fostfit optimization
57
};
58
59
//
60
// Main container for all track related information in vertex fit
61
//--------------------------------------------------------------------
62
class
VKTrack
63
{
64
public
:
65
VKTrack
(
long
int
,
const
double
[],
const
double
[],
VKVertex
*,
double
);
66
~VKTrack
() =
default
;
//default destructor allows compiler to optimize out method.
67
// VKTrack(const VKTrack & src); //copy
68
friend
std::ostream&
operator<<
( std::ostream& out,
const
VKTrack
& track );
69
70
public
:
71
long
int
Id
;
//track ID number
72
int
Charge
;
//track charge
73
74
// Fitted track perameters at vertex VKVErtex->fitV
75
double
fitP
[3]{};
76
double
Chi2
;
77
78
// Track perameters at vertex VKVErtex->cnstV for constraint calculations
79
double
cnstP
[3]{};
80
81
// ALL is estimated at VKVErtex->iniV posision - start position of the fit
82
double
iniP
[3]{};
//perigee parameters assuming that track passes through iniXYZ
83
84
// ALL is estimated at VKVErtex->refIterV posision - iteration reference position
85
double
Perig
[5]{};
//perigee parameters prepared for vertex estimation
86
double
WgtM
[15]{};
//symmetric weight matrix prepared for vertex estimation
87
double
WgtM_save
[15]{};
//copy of weight matrix for speed optimisation
88
89
// All for robustification
90
double
rmnd
[5]{};
//remnants with respect to fitted vertex position
91
double
e
[5]{};
//eigenvalues of weight matrix
92
double
v
[5][5]{};
//corresponding eigenvectors of weight matrix
93
94
// ALL is estimated at VKVErtex->refXYZ posision - reference position for vertex fit
95
double
refPerig
[5]{};
//perigee parameters
96
double
refCovar
[15]{};
//symmetric covariance matrix
97
98
public
:
99
double
getMass
()
const
{
return
m_mass
;}
100
void
setMass
(
double
M){
m_mass
=M;}
101
double
a0
()
const
{
return
Perig
[0];}
102
double
z
()
const
{
return
Perig
[1];}
103
double
theta
()
const
{
return
Perig
[2];}
104
double
phi
()
const
{
return
Perig
[3];}
105
double
invR
()
const
{
return
Perig
[4];}
106
double
r_a0
()
const
{
return
refPerig
[0];}
107
double
r_z
()
const
{
return
refPerig
[1];}
108
double
r_theta
()
const
{
return
refPerig
[2];}
109
double
r_phi
()
const
{
return
refPerig
[3];}
110
double
r_invR
()
const
{
return
refPerig
[4];}
111
112
public
:
113
void
setCurrent
(
const
double
[],
const
double
[]);
// set iteration (current) track parameters
114
void
setReference
(
const
double
[],
const
double
[]);
// set reference track parameters
115
void
restoreCurrentWgt
();
// restore track WGT from saved copy
116
117
private
:
118
119
VKVertex
*
m_originVertex
;
120
double
m_mass
;
//track mass
121
122
};
123
124
125
126
class
VKVertex
127
{
128
public
:
129
VKVertex
(
const
VKalVrtControl
&);
130
VKVertex
(
VKVertex
&&) noexcept = default;
131
VKVertex
();
132
~
VKVertex
();
133
VKVertex
(
const
VKVertex
& src);
//copy
134
VKVertex
& operator= (
const
VKVertex
& src);
//assign
135
VKVertex
& operator= (
VKVertex
&&) noexcept = default;
//move
136
137
public:
// Relative coordinates with respect to refIterV[]
138
double
Chi2
;
// vertex Chi2
139
double
fitV
[3]{};
//fitted vertex position on given iteration step
140
double
fitVcov
[6]{};
//symmetric covariance matrix of fitted vertex
141
double
iniV
[3]{};
//starting point for the fit.
142
double
cnstV
[3]{};
//position for constraint values calculation. May be different from fitV or iniV
143
144
public
:
//Global coordinates
145
double
refIterV
[3]{};
//initial point for iteration step and target for preparatory
146
//track extrapolation. At this point Perig[] and WgtM[] for each track are defined.
147
double
refV
[3]{};
//reference point for given vertex. At this point refPerig[] and refCovar[]
148
//for each track are defined
149
150
int
useApriorVertex
;
//for a priory vertex position knowledge usage
151
double
apriorV
[3]{};
//global coordinates (the same as refV and refIterV)
152
double
apriorVWGT
[6]{};
//weight matrix of a priori vertex
153
154
155
bool
passNearVertex
;
// needed for "passing near vertex" constraint
156
bool
passWithTrkCov
;
// Vertex, CovVertex, Charge and derivatives
157
double
fitMom
[3]{};
// are in ForVrtClose structure
158
double
fitCovXYZMom
[21]{};
// Mom and CovMom are here because they are used also for other purposes
159
ForVrtClose
FVC
;
160
161
162
double
T
[3]{};
// save T(see Billoir) vector for futher use
163
double
wa
[6]{};
// save WA matrix for futher use
164
double
dxyz0
[3]{};
// unconstrained shift of vertex on current iteration. Needed for PostFit
165
166
std::vector<std::unique_ptr<VKTrack> >
TrackList
;
167
std::vector<std::unique_ptr<TWRK> >
tmpArr
;
168
std::vector<std::unique_ptr<VKConstraintBase> >
ConstraintList
;
169
170
171
void
setRefV
(
double
v
[3])
noexcept
;
172
void
setCnstV
(
double
v
[3])
noexcept
;
173
void
setRefIterV
(
double
v
[])
noexcept
;
174
void
setIniV
(
double
v
[3])
noexcept
;
175
void
setFitV
(
double
v
[3])
noexcept
;
176
177
178
VKVertex
*
nextCascadeVrt
;
179
std::vector<VKVertex*>
includedVrt
;
// these vertices are NOT owned by given object.
180
double
savedVrtMomCov
[21]{};
// saved covariance WITHOUT pointing constraint
181
// for correct cascade error definition
182
public
:
183
184
bool
truncatedStep
;
185
int
existFullCov
;
186
//this is quite large to 0 initialize here
187
double
ader
[(3*
vkalNTrkM
+3)*(3*
vkalNTrkM
+3)];
// was [903][903]
188
189
public
:
// Object with defining information for VKalVrtCore library.
190
// Each vertex has a copy of VKalVrtControl object what allows
191
// to fit it independently with individual set of constraints.
192
// See Cascade code.
193
std::unique_ptr<VKalVrtControl>
vk_fitterControl
;
194
};
195
196
197
198
199
}
// end of namespace bracket
200
201
#endif
CommonPars.h
vkalNTrkM
#define vkalNTrkM
Definition
CommonPars.h:22
ForVrtClose.h
TrkVKalVrtCore.h
Trk::CascadeEvent::getAccuracyConstraint
double getAccuracyConstraint() const
Definition
TrkVKalVrtCoreBase.h:27
Trk::CascadeEvent::CascadeEvent
CascadeEvent()
Definition
TrkVKalVrtCoreBase.cxx:18
Trk::CascadeEvent::m_accuracyConstraint
double m_accuracyConstraint
Definition
TrkVKalVrtCoreBase.h:37
Trk::CascadeEvent::getSCALE
double getSCALE() const
Definition
TrkVKalVrtCoreBase.h:25
Trk::CascadeEvent::nearPrmVertex
int nearPrmVertex
Definition
TrkVKalVrtCoreBase.h:24
Trk::CascadeEvent::cascadeNV
int cascadeNV
Definition
TrkVKalVrtCoreBase.h:23
Trk::CascadeEvent::setSCALE
void setSCALE(double S)
Definition
TrkVKalVrtCoreBase.h:26
Trk::CascadeEvent::m_SCALE
double m_SCALE
Definition
TrkVKalVrtCoreBase.h:36
Trk::CascadeEvent::matrixPnt
std::vector< int > matrixPnt
Definition
TrkVKalVrtCoreBase.h:31
Trk::CascadeEvent::setAccuracyConstraint
void setAccuracyConstraint(double C)
Definition
TrkVKalVrtCoreBase.h:28
Trk::CascadeEvent::fullCovMatrix
std::unique_ptr< double[]> fullCovMatrix
Definition
TrkVKalVrtCoreBase.h:29
Trk::CascadeEvent::cascadeVertexList
std::vector< std::unique_ptr< VKVertex > > cascadeVertexList
Definition
TrkVKalVrtCoreBase.h:30
Trk::CascadeEvent::~CascadeEvent
~CascadeEvent()
Trk::TWRK::~TWRK
~TWRK()=default
Trk::TWRK::parf0
double parf0[3]
Definition
TrkVKalVrtCoreBase.h:55
Trk::TWRK::wci
double wci[6]
Definition
TrkVKalVrtCoreBase.h:52
Trk::TWRK::drdp
double drdp[2][3]
Definition
TrkVKalVrtCoreBase.h:54
Trk::TWRK::wc
double wc[6]
Definition
TrkVKalVrtCoreBase.h:51
Trk::TWRK::wb
double wb[9]
Definition
TrkVKalVrtCoreBase.h:50
Trk::TWRK::part
double part[3]
Definition
TrkVKalVrtCoreBase.h:56
Trk::TWRK::TWRK
TWRK()
Definition
TrkVKalVrtCoreBase.h:45
Trk::TWRK::tt
double tt[3]
Definition
TrkVKalVrtCoreBase.h:49
Trk::TWRK::wbci
double wbci[9]
Definition
TrkVKalVrtCoreBase.h:53
Trk::VKConstraintBase
Definition
Derivt.h:26
Trk::VKTrack::operator<<
friend std::ostream & operator<<(std::ostream &out, const VKTrack &track)
Definition
TrkVKalVrtCoreBase.cxx:103
Trk::VKTrack::getMass
double getMass() const
Definition
TrkVKalVrtCoreBase.h:99
Trk::VKTrack::rmnd
double rmnd[5]
Definition
TrkVKalVrtCoreBase.h:90
Trk::VKTrack::a0
double a0() const
Definition
TrkVKalVrtCoreBase.h:101
Trk::VKTrack::v
double v[5][5]
Definition
TrkVKalVrtCoreBase.h:92
Trk::VKTrack::Chi2
double Chi2
Definition
TrkVKalVrtCoreBase.h:76
Trk::VKTrack::refPerig
double refPerig[5]
Definition
TrkVKalVrtCoreBase.h:95
Trk::VKTrack::r_theta
double r_theta() const
Definition
TrkVKalVrtCoreBase.h:108
Trk::VKTrack::r_a0
double r_a0() const
Definition
TrkVKalVrtCoreBase.h:106
Trk::VKTrack::~VKTrack
~VKTrack()=default
Trk::VKTrack::Charge
int Charge
Definition
TrkVKalVrtCoreBase.h:72
Trk::VKTrack::WgtM_save
double WgtM_save[15]
Definition
TrkVKalVrtCoreBase.h:87
Trk::VKTrack::r_z
double r_z() const
Definition
TrkVKalVrtCoreBase.h:107
Trk::VKTrack::m_mass
double m_mass
Definition
TrkVKalVrtCoreBase.h:120
Trk::VKTrack::refCovar
double refCovar[15]
Definition
TrkVKalVrtCoreBase.h:96
Trk::VKTrack::setReference
void setReference(const double[], const double[])
Definition
TrkVKalVrtCoreBase.cxx:85
Trk::VKTrack::setCurrent
void setCurrent(const double[], const double[])
Definition
TrkVKalVrtCoreBase.cxx:79
Trk::VKTrack::Perig
double Perig[5]
Definition
TrkVKalVrtCoreBase.h:85
Trk::VKTrack::fitP
double fitP[3]
Definition
TrkVKalVrtCoreBase.h:75
Trk::VKTrack::m_originVertex
VKVertex * m_originVertex
Definition
TrkVKalVrtCoreBase.h:119
Trk::VKTrack::r_invR
double r_invR() const
Definition
TrkVKalVrtCoreBase.h:110
Trk::VKTrack::iniP
double iniP[3]
Definition
TrkVKalVrtCoreBase.h:82
Trk::VKTrack::Id
long int Id
Definition
TrkVKalVrtCoreBase.h:71
Trk::VKTrack::z
double z() const
Definition
TrkVKalVrtCoreBase.h:102
Trk::VKTrack::restoreCurrentWgt
void restoreCurrentWgt()
Definition
TrkVKalVrtCoreBase.cxx:90
Trk::VKTrack::VKTrack
VKTrack(long int, const double[], const double[], VKVertex *, double)
Definition
TrkVKalVrtCoreBase.cxx:56
Trk::VKTrack::WgtM
double WgtM[15]
Definition
TrkVKalVrtCoreBase.h:86
Trk::VKTrack::invR
double invR() const
Definition
TrkVKalVrtCoreBase.h:105
Trk::VKTrack::cnstP
double cnstP[3]
Definition
TrkVKalVrtCoreBase.h:79
Trk::VKTrack::phi
double phi() const
Definition
TrkVKalVrtCoreBase.h:104
Trk::VKTrack::r_phi
double r_phi() const
Definition
TrkVKalVrtCoreBase.h:109
Trk::VKTrack::e
double e[5]
Definition
TrkVKalVrtCoreBase.h:91
Trk::VKTrack::theta
double theta() const
Definition
TrkVKalVrtCoreBase.h:103
Trk::VKTrack::setMass
void setMass(double M)
Definition
TrkVKalVrtCoreBase.h:100
Trk::VKVertex
Definition
TrkVKalVrtCoreBase.h:127
Trk::VKVertex::passNearVertex
bool passNearVertex
Definition
TrkVKalVrtCoreBase.h:155
Trk::VKVertex::fitVcov
double fitVcov[6]
Definition
TrkVKalVrtCoreBase.h:140
Trk::VKVertex::savedVrtMomCov
double savedVrtMomCov[21]
Definition
TrkVKalVrtCoreBase.h:180
Trk::VKVertex::Chi2
double Chi2
Definition
TrkVKalVrtCoreBase.h:138
Trk::VKVertex::VKVertex
VKVertex(const VKalVrtControl &)
Definition
TrkVKalVrtCoreBase.cxx:136
Trk::VKVertex::setRefIterV
void setRefIterV(double v[]) noexcept
Definition
TrkVKalVrtCoreBase.cxx:157
Trk::VKVertex::setFitV
void setFitV(double v[3]) noexcept
Definition
TrkVKalVrtCoreBase.cxx:159
Trk::VKVertex::cnstV
double cnstV[3]
Definition
TrkVKalVrtCoreBase.h:142
Trk::VKVertex::setCnstV
void setCnstV(double v[3]) noexcept
Definition
TrkVKalVrtCoreBase.cxx:160
Trk::VKVertex::refIterV
double refIterV[3]
Definition
TrkVKalVrtCoreBase.h:145
Trk::VKVertex::includedVrt
std::vector< VKVertex * > includedVrt
Definition
TrkVKalVrtCoreBase.h:179
Trk::VKVertex::refV
double refV[3]
Definition
TrkVKalVrtCoreBase.h:147
Trk::VKVertex::fitMom
double fitMom[3]
Definition
TrkVKalVrtCoreBase.h:157
Trk::VKVertex::apriorV
double apriorV[3]
Definition
TrkVKalVrtCoreBase.h:151
Trk::VKVertex::useApriorVertex
int useApriorVertex
Definition
TrkVKalVrtCoreBase.h:150
Trk::VKVertex::existFullCov
int existFullCov
Definition
TrkVKalVrtCoreBase.h:185
Trk::VKVertex::setIniV
void setIniV(double v[3]) noexcept
Definition
TrkVKalVrtCoreBase.cxx:158
Trk::VKVertex::VKVertex
VKVertex(VKVertex &&) noexcept=default
Trk::VKVertex::passWithTrkCov
bool passWithTrkCov
Definition
TrkVKalVrtCoreBase.h:156
Trk::VKVertex::TrackList
std::vector< std::unique_ptr< VKTrack > > TrackList
Definition
TrkVKalVrtCoreBase.h:166
Trk::VKVertex::ader
double ader[(3 *vkalNTrkM+3) *(3 *vkalNTrkM+3)]
Definition
TrkVKalVrtCoreBase.h:187
Trk::VKVertex::ConstraintList
std::vector< std::unique_ptr< VKConstraintBase > > ConstraintList
Definition
TrkVKalVrtCoreBase.h:168
Trk::VKVertex::T
double T[3]
Definition
TrkVKalVrtCoreBase.h:162
Trk::VKVertex::FVC
ForVrtClose FVC
Definition
TrkVKalVrtCoreBase.h:159
Trk::VKVertex::wa
double wa[6]
Definition
TrkVKalVrtCoreBase.h:163
Trk::VKVertex::fitCovXYZMom
double fitCovXYZMom[21]
Definition
TrkVKalVrtCoreBase.h:158
Trk::VKVertex::VKVertex
VKVertex()
Definition
TrkVKalVrtCoreBase.cxx:140
Trk::VKVertex::setRefV
void setRefV(double v[3]) noexcept
Definition
TrkVKalVrtCoreBase.cxx:156
Trk::VKVertex::tmpArr
std::vector< std::unique_ptr< TWRK > > tmpArr
Definition
TrkVKalVrtCoreBase.h:167
Trk::VKVertex::iniV
double iniV[3]
Definition
TrkVKalVrtCoreBase.h:141
Trk::VKVertex::apriorVWGT
double apriorVWGT[6]
Definition
TrkVKalVrtCoreBase.h:152
Trk::VKVertex::nextCascadeVrt
VKVertex * nextCascadeVrt
Definition
TrkVKalVrtCoreBase.h:178
Trk::VKVertex::fitV
double fitV[3]
Definition
TrkVKalVrtCoreBase.h:139
Trk::VKVertex::truncatedStep
bool truncatedStep
Definition
TrkVKalVrtCoreBase.h:184
Trk::VKVertex::dxyz0
double dxyz0[3]
Definition
TrkVKalVrtCoreBase.h:164
Trk::VKVertex::vk_fitterControl
std::unique_ptr< VKalVrtControl > vk_fitterControl
Definition
TrkVKalVrtCoreBase.h:193
Trk::VKalVrtControl
Definition
TrkVKalVrtCore.h:44
C
struct color C
const
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::v
@ v
Definition
ParamDefs.h:78
Trk::ForVrtClose
Definition
ForVrtClose.h:21
Generated on
for ATLAS Offline Software by
1.17.0