ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkVertexFitter
TrkVKalVrtCore
src
cfNewP.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrkVKalVrtCore/cfNewP.h
"
6
#include <cmath>
7
8
namespace
Trk
{
9
10
void
cfnewp
(
const
long
int
ich,
const
double
*parold,
const
double
*
ref
,
11
double
*s,
double
*parnew,
double
*per)
12
{
13
14
double
dphi, coth, hper, zper, zeps, r__, cs, xc, yc, sn, sipart, eps;
15
16
/* ------------------------------------------------------------*/
17
/* This routine propagates the trajectory parameters */
18
/* w.r.t to a new reference point. */
19
/* RETURNED POSITION IS NOT A POSITION OF CLOSEST APPROACH */
20
/* BUT PERIGEE ASSUMIMG THAT REF IS */
21
/* A CENTER OF COORDINATE SYSTEM */
22
/* */
23
/* INPUT: ICH Charge(-1,0,1) */
24
/* PAROLD Initial parameters(EPS,H,THE,PHI,1./R) */
25
/* REF Position of new reference point */
26
/* OUTPUT: S Curved abcissa of new perigee */
27
/* PARNEW Parameters evaluated at new perigee */
28
/* PER Position of new perigee */
29
/* Author: V.Kostyukhin */
30
/* ------------------------------------------------------------*/
31
/* Parameter adjustments */
32
--per;
33
--parnew;
34
--
ref
;
35
--parold;
36
37
eps = parold[1];
38
sn = sin(parold[4]);
39
cs = cos(parold[4]);
40
coth = 1. / tan(parold[3]);
41
zeps = parold[2];
42
43
/* Neutral track */
44
if
( ich == 0) {
45
hper = eps -
ref
[1] * sn +
ref
[2] * cs;
46
dphi = 0.;
47
(*s) =
ref
[1] * cs +
ref
[2] * sn;
48
zper = zeps + coth * (*s) -
ref
[3];
49
}
else
{
50
r__ = 1. / parold[5];
51
sipart = 1.;
52
if
(r__ < 0.) sipart = -1.;
53
/* -- Centre of the circle and perigee */
54
xc = (eps - r__) * sn -
ref
[1];
55
yc = -(eps - r__) * cs-
ref
[2];
56
hper = r__ - sipart * sqrt(xc*xc + yc*yc);
57
/* -- Phi */
58
double
tmp_prec= - eps - cs*
ref
[2] + sn*
ref
[1];
59
dphi = atan2(sipart * (
ref
[1]*cs +
ref
[2]*sn),
60
sipart * (r__ + tmp_prec) );
61
(*s) = r__*dphi;
62
/* -- Z at VXOLD */
63
zper = zeps + coth * (*s) -
ref
[3];
64
}
65
parnew[1] = hper;
66
parnew[2] = zper;
67
parnew[3] = parold[3];
68
parnew[4] = parold[4] + dphi;
69
70
/* check 2*pi period in phi */
71
while
(parnew[4] > 6.2831853071794) parnew[4] -= 6.2831853071794;
72
while
(parnew[4] <-6.2831853071794) parnew[4] += 6.2831853071794;
73
74
75
76
parnew[5] = parold[5];
77
per[1] =
ref
[1] + sin(parold[4] + dphi) * hper;
78
per[2] =
ref
[2] - cos(parold[4] + dphi) * hper;
79
per[3] =
ref
[3] + zper;
80
}
81
82
83
}
/* End of VKalVrtCore namespace */
ref
const std::regex ref(r_ef)
cfNewP.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::cfnewp
void cfnewp(const long int ich, const double *parold, const double *ref, double *s, double *parnew, double *per)
Definition
cfNewP.cxx:10
Generated on
for ATLAS Offline Software by
1.17.0