61 std::array<float, 3>
x0;
65 Double_t s = (pnt[0] -
x0[0]) * norm[0] + (pnt[1] -
x0[1]) * norm[1] + (pnt[2] -
x0[2]) * norm[2];
67 Double_t dist = 99999, distPrev = dist;
70 std::array<float, 3>
x, p;
72 while (TMath::Abs(dist) > 0.00001) {
79 dist = (
x[0] - pnt[0]) * norm[0] + (
x[1] - pnt[1]) * norm[1] + (
x[2] - pnt[2]) * norm[2];
80 if (TMath::Abs(dist) >= TMath::Abs(distPrev)) {
88 for (Int_t
i = 0;
i < 3;
i++) {
107 std::array<float, 3>
x0;
116 TVector3 trackDirection(1., 1., 1.);
117 trackDirection.SetMag(1);
118 trackDirection.SetTheta(getTheta());
119 trackDirection.SetPhi(getPhi());
122 x.at(0) += trackDirection.X() *
len;
123 x.at(1) += trackDirection.Y() *
len;
124 x.at(2) += trackDirection.Z() *
len;
132 Double_t pp = getP();
134 Double_t
a = -
kB2C * bz * getSign();
135 Double_t rho =
a / pp;
136 x.at(0) += p.at(0) * TMath::Sin(rho *
len) /
a - p.at(1) * (1 - TMath::Cos(rho *
len)) /
a;
137 x.at(1) += p.at(1) * TMath::Sin(rho *
len) /
a + p.at(0) * (1 - TMath::Cos(rho *
len)) /
a;
138 x.at(2) += p.at(2) *
len / pp;
139 Double_t p0 = p.at(0);
140 p.at(0) = p0 * TMath::Cos(rho *
len) - p.at(1) * TMath::Sin(rho *
len);
141 p.at(1) = p.at(1) * TMath::Cos(rho *
len) + p0 * TMath::Sin(rho *
len);