ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkVertexFitter
TrkVKalVrtCore
src
cfMomentum.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrkVKalVrtCore/cfMomentum.h
"
6
#include "
TrkVKalVrtCore/CommonPars.h
"
7
#include "
TrkVKalVrtCore/TrkVKalVrtCoreBase.h
"
8
#include "
TrkVKalVrtCore/VKalVrtBMag.h
"
9
#include <cmath>
10
#include <array>
11
#include <iostream>
12
13
namespace
Trk
{
14
15
void
vkPerigeeToP
(
const
double
*perig3,
double
*pp,
double
effectiveBMAG)
16
{
17
double
constB = effectiveBMAG *
vkalMagCnvCst
;
18
double
phiv = perig3[1];
19
double
pt = std::abs( constB/perig3[2] );
20
pp[0] = pt * cos(phiv);
21
pp[1] = pt * sin(phiv);
22
pp[2] = pt / tan(perig3[0]);
23
}
24
25
std::array<double, 4>
getFitParticleMom
(
const
VKTrack
* trk,
const
VKVertex
*vk)
26
{
27
std::array<double, 4> p{};
28
double
fieldPos[3];
29
fieldPos[0]=vk->
refIterV
[0]+vk->
fitV
[0];
30
fieldPos[1]=vk->
refIterV
[1]+vk->
fitV
[1];
31
fieldPos[2]=vk->
refIterV
[2]+vk->
fitV
[2];
32
double
vBx,vBy,vBz,magConst;
33
Trk::vkalMagFld::getMagFld
(fieldPos[0], fieldPos[1], fieldPos[2],vBx,vBy,vBz,(vk->
vk_fitterControl
).get());
34
magConst =
Trk::vkalMagFld::getEffField
(vBx, vBy, vBz, trk->
fitP
[1], trk->
fitP
[0]) *
Trk::vkalMagFld::getCnvCst
();
35
36
double
cth = 1. / tan( trk->
fitP
[0]);
37
double
phi
= trk->
fitP
[1];
38
double
pt = std::abs( magConst/trk->
fitP
[2] );
39
double
m = trk->
getMass
();
40
p[0] = pt * cos(
phi
);
41
p[1] = pt * sin(
phi
);
42
p[2] = pt * cth;
43
p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
44
return
p;
45
}
46
std::array<double, 4>
getFitParticleMom
(
const
VKTrack
* trk,
double
effectiveBMAG)
47
{
48
std::array<double, 4> p{};
49
double
magConst = effectiveBMAG *
vkalMagCnvCst
;
50
51
double
cth = 1. / tan( trk->
fitP
[0]);
52
double
phi
= trk->
fitP
[1];
53
double
pt = std::abs( magConst/trk->
fitP
[2] );
54
double
m = trk->
getMass
();
55
p[0] = pt * cos(
phi
);
56
p[1] = pt * sin(
phi
);
57
p[2] = pt * cth;
58
p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
59
return
p;
60
}
61
62
std::array<double, 4>
getIniParticleMom
(
const
VKTrack
* trk,
const
VKVertex
*vk)
63
{
64
std::array<double, 4> p{};
65
double
vBx,vBy,vBz,magConst;
66
Trk::vkalMagFld::getMagFld
(vk->
refIterV
[0],vk->
refIterV
[1],vk->
refIterV
[2],vBx,vBy,vBz,(vk->
vk_fitterControl
).get());
67
magConst =
Trk::vkalMagFld::getEffField
(vBx, vBy, vBz, trk->
iniP
[1], trk->
iniP
[0]) *
Trk::vkalMagFld::getCnvCst
();
68
69
double
cth = 1. / tan( trk->
iniP
[0]);
70
double
phi
= trk->
iniP
[1];
71
double
pt = std::abs( magConst/trk->
iniP
[2] );
72
double
m = trk->
getMass
();
73
p[0] = pt * cos(
phi
);
74
p[1] = pt * sin(
phi
);
75
p[2] = pt * cth;
76
p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
77
return
p;
78
}
79
std::array<double, 4>
getIniParticleMom
(
const
VKTrack
* trk,
double
effectiveBMAG)
80
{
81
std::array<double, 4> p{};
82
double
magConst = effectiveBMAG *
vkalMagCnvCst
;
83
84
double
cth = 1. / tan( trk->
iniP
[0]);
85
double
phi
= trk->
iniP
[1];
86
double
pt = std::abs( magConst/trk->
iniP
[2] );
87
double
m = trk->
getMass
();
88
p[0] = pt * cos(
phi
);
89
p[1] = pt * sin(
phi
);
90
p[2] = pt * cth;
91
p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
92
return
p;
93
}
94
95
96
std::array<double, 4>
getCnstParticleMom
(
const
VKTrack
* trk,
const
VKVertex
*vk )
97
{
98
std::array<double, 4> p{};
99
double
cnstPos[3];
100
cnstPos[0]=vk->
refIterV
[0]+vk->
cnstV
[0];
101
cnstPos[1]=vk->
refIterV
[1]+vk->
cnstV
[1];
102
cnstPos[2]=vk->
refIterV
[2]+vk->
cnstV
[2];
103
double
vBx,vBy,vBz,magConst;
104
Trk::vkalMagFld::getMagFld
(cnstPos[0],cnstPos[1],cnstPos[2],vBx,vBy,vBz,(vk->
vk_fitterControl
).get());
105
magConst =
Trk::vkalMagFld::getEffField
(vBx, vBy, vBz, trk->
cnstP
[1], trk->
cnstP
[0]) *
Trk::vkalMagFld::getCnvCst
();
106
107
double
cth = 1. / tan( trk->
cnstP
[0]);
108
double
phi
= trk->
cnstP
[1];
109
double
pt = std::abs( magConst/trk->
cnstP
[2] );
110
double
m = trk->
getMass
();
111
p[0] = pt * cos(
phi
);
112
p[1] = pt * sin(
phi
);
113
p[2] = pt * cth;
114
p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
115
return
p;
116
}
117
std::array<double, 4>
getCnstParticleMom
(
const
VKTrack
* trk,
double
effectiveBMAG )
118
{
119
std::array<double, 4> p{};
120
double
magConst = effectiveBMAG *
vkalMagCnvCst
;
121
122
double
cth = 1. / tan( trk->
cnstP
[0]);
123
double
phi
= trk->
cnstP
[1];
124
double
pt = std::abs( magConst/trk->
cnstP
[2] );
125
double
m = trk->
getMass
();
126
p[0] = pt * cos(
phi
);
127
p[1] = pt * sin(
phi
);
128
p[2] = pt * cth;
129
p[3] = sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2] + m*m );
130
return
p;
131
}
132
133
}
CommonPars.h
vkalMagCnvCst
#define vkalMagCnvCst
Definition
CommonPars.h:23
TrkVKalVrtCoreBase.h
VKalVrtBMag.h
cfMomentum.h
Trk::VKTrack
Definition
TrkVKalVrtCoreBase.h:63
Trk::VKTrack::getMass
double getMass() const
Definition
TrkVKalVrtCoreBase.h:99
Trk::VKTrack::fitP
double fitP[3]
Definition
TrkVKalVrtCoreBase.h:75
Trk::VKTrack::iniP
double iniP[3]
Definition
TrkVKalVrtCoreBase.h:82
Trk::VKTrack::cnstP
double cnstP[3]
Definition
TrkVKalVrtCoreBase.h:79
Trk::VKVertex
Definition
TrkVKalVrtCoreBase.h:127
Trk::VKVertex::cnstV
double cnstV[3]
Definition
TrkVKalVrtCoreBase.h:142
Trk::VKVertex::refIterV
double refIterV[3]
Definition
TrkVKalVrtCoreBase.h:145
Trk::VKVertex::fitV
double fitV[3]
Definition
TrkVKalVrtCoreBase.h:139
Trk::VKVertex::vk_fitterControl
std::unique_ptr< VKalVrtControl > vk_fitterControl
Definition
TrkVKalVrtCoreBase.h:193
Trk::vkalMagFld::getMagFld
static void getMagFld(const double, const double, const double, double &, double &, double &, const VKalVrtControlBase *)
Definition
VKalVrtBMag.cxx:24
Trk::vkalMagFld::getEffField
static double getEffField(double bx, double by, double bz, double phi, double theta)
Definition
VKalVrtBMag.h:60
Trk::vkalMagFld::getCnvCst
static double getCnvCst()
Definition
VKalVrtBMag.h:59
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::vkPerigeeToP
void vkPerigeeToP(const double *perig3, double *pp, double effectiveBMAG)
Definition
cfMomentum.cxx:15
Trk::getIniParticleMom
std::array< double, 4 > getIniParticleMom(const VKTrack *trk, const VKVertex *vk)
Definition
cfMomentum.cxx:62
Trk::phi
@ phi
Definition
ParamDefs.h:75
Trk::getCnstParticleMom
std::array< double, 4 > getCnstParticleMom(const VKTrack *trk, const VKVertex *vk)
Definition
cfMomentum.cxx:96
Trk::getFitParticleMom
std::array< double, 4 > getFitParticleMom(const VKTrack *trk, const VKVertex *vk)
Definition
cfMomentum.cxx:25
Generated on
for ATLAS Offline Software by
1.17.0