ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkVertexFitter
TrkVKalVrtCore
src
DerclcAng.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/DerclcAng.h
"
6
#include "
TrkVKalVrtCore/CommonPars.h
"
7
#include "
TrkVKalVrtCore/Derivt.h
"
8
#include "
TrkVKalVrtCore/TrkVKalVrtCoreBase.h
"
9
#include <algorithm>
10
#include <cmath>
11
#include <iostream>
12
13
namespace
Trk
{
14
15
16
//
17
// Angular constraints calculation in new data model.
18
//
19
// cnstV and cnstP values are used!!!
20
//-----------------------------------------------
21
22
void
calcPhiConstraint
(
VKPhiConstraint
* cnst)
23
{
24
VKConstraintBase
* base_cnst =
static_cast<
VKConstraintBase
*
>
( cnst);
25
const
VKVertex
* vk=cnst->
getOriginVertex
();
26
int
NTRK = vk->
TrackList
.size();
27
int
i,j;
28
double
Scale
=1.;
// Scaling for better precision VK 28.03.2011 Wrong for error matrix!!! Should always be 1.!!!
29
30
double
diff
=0., aa=0;
31
std::vector<double> deriv(NTRK,0);
32
for
(i=0; i<NTRK-1; i++){
33
for
(j=i+1; j<NTRK; j++){
34
diff
= vk->
TrackList
[i]->cnstP[1] - vk->
TrackList
[j]->cnstP[1];
35
while
(
diff
>
M_PI
)
diff
-= 2.*
M_PI
;
36
while
(
diff
< -
M_PI
)
diff
+= 2.*
M_PI
;
37
aa +=
diff
*
Scale
;
38
deriv[i] +=
Scale
;
39
deriv[j] -=
Scale
;
40
}
41
}
42
43
int
numCNST=0;
//constraint number. Single constraint in this case
44
base_cnst->
h0t
[numCNST].X = 0.;
45
base_cnst->
h0t
[numCNST].Y = 0.;
46
base_cnst->
h0t
[numCNST].Z = 0.;
47
for
(i=0; i<NTRK; i++){
48
base_cnst->
f0t
[i][numCNST].X = 0.;
49
base_cnst->
f0t
[i][numCNST].Y = deriv[i];
50
base_cnst->
f0t
[i][numCNST].Z = 0.;
51
}
52
base_cnst->
aa
[numCNST]=aa;
53
//std::cout.precision(11);
54
//std::cout<<" new delta Phi="<<base_cnst->aa[numCNST]<<'\n';
55
//std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
56
// <<base_cnst->f0t[0][numCNST].Z<<'\n';
57
//std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
58
// <<base_cnst->f0t[1][numCNST].Z<<'\n';
59
}
60
61
void
calcThetaConstraint
(
VKThetaConstraint
* cnst)
62
{
63
VKConstraintBase
* base_cnst =
static_cast<
VKConstraintBase
*
>
( cnst);
64
const
VKVertex
* vk=cnst->
getOriginVertex
();
65
int
NTRK = vk->
TrackList
.size();
66
int
i,j;
67
double
Scale
=1.;
// Scaling for better precision VK 28.03.2011 Wrong for error matrix!!! Should always be 1.!!!
68
69
double
diff
=0., der=0., aa=0;
70
std::vector<double> deriv(NTRK,0);
71
for
(i=0; i<NTRK-1; i++){
72
for
(j=i+1; j<NTRK; j++){
73
diff
= sin(vk->
TrackList
[i]->cnstP[0] - vk->
TrackList
[j]->cnstP[0])*
Scale
;
74
der =
Scale
;
75
aa +=
diff
;
76
deriv[i] += der;
77
deriv[j] -= der;
78
}
79
}
80
81
int
numCNST=0;
//constraint number. Single constraint in this case
82
base_cnst->
h0t
[numCNST].X = 0.;
83
base_cnst->
h0t
[numCNST].Y = 0.;
84
base_cnst->
h0t
[numCNST].Z = 0.;
85
for
(i=0; i<NTRK; i++){
86
base_cnst->
f0t
[i][numCNST].X = deriv[i];
87
base_cnst->
f0t
[i][numCNST].Y = 0.;
88
base_cnst->
f0t
[i][numCNST].Z = 0.;
89
}
90
base_cnst->
aa
[numCNST]=aa;
91
//std::cout.precision(11);
92
//std::cout<<" new delta Theta="<<base_cnst->aa[numCNST]<<'\n';
93
//std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
94
// <<base_cnst->f0t[0][numCNST].Z<<'\n';
95
//std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
96
// <<base_cnst->f0t[1][numCNST].Z<<'\n';
97
}
98
99
void
calcPlaneConstraint
(
VKPlaneConstraint
* cnst)
100
{
101
VKConstraintBase
* base_cnst =
static_cast<
VKConstraintBase
*
>
( cnst);
102
const
VKVertex
* vk=cnst->
getOriginVertex
();
103
int
NTRK = vk->
TrackList
.size();
104
double
curV[3] = {vk->
refIterV
[0]+vk->
cnstV
[0], vk->
refIterV
[1]+vk->
cnstV
[1],vk->
refIterV
[2]+vk->
cnstV
[2]};
105
106
107
int
numCNST=0;
//constraint number. Single constraint in this case
108
base_cnst->
h0t
[numCNST].X = cnst->
getA
();
109
base_cnst->
h0t
[numCNST].Y = cnst->
getB
();
110
base_cnst->
h0t
[numCNST].Z = cnst->
getC
();
111
for
(
int
i=0; i<NTRK; i++){
112
base_cnst->
f0t
[i][numCNST].X = 0.;
113
base_cnst->
f0t
[i][numCNST].Y = 0.;
114
base_cnst->
f0t
[i][numCNST].Z = 0.;
115
}
116
base_cnst->
aa
[numCNST]=cnst->
getA
()*curV[0]+cnst->
getB
()*curV[1]+cnst->
getC
()*curV[2] - cnst->
getD
() ;
117
//std::cout<<" new plane="<<base_cnst->aa[numCNST]<<'\n';
118
//std::cout<<(*cnst)<<'\n';
119
}
120
void
calcRadiusConstraint
(
VKRadiusConstraint
* cnst)
121
{
122
VKConstraintBase
* base_cnst =
dynamic_cast<
VKConstraintBase
*
>
( cnst);
123
const
VKVertex
* vk=cnst->
getOriginVertex
();
124
int
NTRK = vk->
TrackList
.size();
125
double
curV[3] = {vk->
refIterV
[0]+vk->
cnstV
[0], vk->
refIterV
[1]+vk->
cnstV
[1],vk->
refIterV
[2]+vk->
cnstV
[2]};
126
int
numCNST=0;
//constraint number. Single constraint in this case
127
base_cnst->
h0t
[numCNST].X = 2.*(curV[0]-cnst->
getRefX
());
128
base_cnst->
h0t
[numCNST].Y = 2.*(curV[1]-cnst->
getRefY
());
129
base_cnst->
h0t
[numCNST].Z = 0;
130
for
(
int
i=0; i<NTRK; i++){
131
base_cnst->
f0t
[i][numCNST].X = 0.;
132
base_cnst->
f0t
[i][numCNST].Y = 0.;
133
base_cnst->
f0t
[i][numCNST].Z = 0.;
134
}
135
base_cnst->
aa
[numCNST]=cnst->
getRC
()*cnst->
getRC
() - std::pow(curV[0]-cnst->
getRefX
(),2.) - std::pow(curV[1]-cnst->
getRefY
(),2.);
136
}
137
138
}
/* End of namespace */
139
M_PI
#define M_PI
Definition
ActiveFraction.h:14
CommonPars.h
DerclcAng.h
Derivt.h
diff
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition
Jet.cxx:631
TrkVKalVrtCoreBase.h
Trk::VKConstraintBase
Definition
Derivt.h:26
Trk::VKConstraintBase::f0t
std::vector< std::vector< Vect3DF > > f0t
Definition
Derivt.h:39
Trk::VKConstraintBase::getOriginVertex
const VKVertex * getOriginVertex() const
Definition
Derivt.h:32
Trk::VKConstraintBase::h0t
std::vector< Vect3DF > h0t
Definition
Derivt.h:40
Trk::VKConstraintBase::aa
std::vector< double > aa
Definition
Derivt.h:38
Trk::VKPhiConstraint
Definition
Derivt.h:69
Trk::VKPlaneConstraint
Definition
Derivt.h:111
Trk::VKPlaneConstraint::getB
double getB() const
Definition
Derivt.h:117
Trk::VKPlaneConstraint::getC
double getC() const
Definition
Derivt.h:118
Trk::VKPlaneConstraint::getA
double getA() const
Definition
Derivt.h:116
Trk::VKPlaneConstraint::getD
double getD() const
Definition
Derivt.h:119
Trk::VKRadiusConstraint
Definition
Derivt.h:129
Trk::VKRadiusConstraint::getRefX
double getRefX() const
Definition
Derivt.h:135
Trk::VKRadiusConstraint::getRC
double getRC() const
Definition
Derivt.h:134
Trk::VKRadiusConstraint::getRefY
double getRefY() const
Definition
Derivt.h:136
Trk::VKThetaConstraint
Definition
Derivt.h:77
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::TrackList
std::vector< std::unique_ptr< VKTrack > > TrackList
Definition
TrkVKalVrtCoreBase.h:166
Scale
void Scale(TH1 *h, double d=1)
Definition
comparitor.cxx:79
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::calcThetaConstraint
void calcThetaConstraint(VKThetaConstraint *cnst)
Definition
DerclcAng.cxx:61
Trk::calcPlaneConstraint
void calcPlaneConstraint(VKPlaneConstraint *cnst)
Definition
DerclcAng.cxx:99
Trk::calcPhiConstraint
void calcPhiConstraint(VKPhiConstraint *cnst)
Definition
DerclcAng.cxx:22
Trk::calcRadiusConstraint
void calcRadiusConstraint(VKRadiusConstraint *cnst)
Definition
DerclcAng.cxx:120
Generated on
for ATLAS Offline Software by
1.17.0