31 double Rcurv{0},
r{0},
z{0}, xD{0}, xN{0}, dphi{0};
37 double theta = 2.*atan(exp(-fabs(
eta)));
38 double pz = fabs(pt) / tan(
theta);
39 if (
eta < 0) pz = -pz;
46 if (rC > 0 && fabs(zC) > 0 && pt != 0 && fabs(z0) < zC) {
50 z = z0 + pz * (rC - fabs(d0)) / fabs(pt);
51 if (fabs(
z) > fabs(zC)) {
53 if (
z > 0)
z = fabs(zC);
else z = -fabs(zC);
54 r = fabs(d0) + (
z - z0) * fabs(pt) / pz;
59 if (
z > 0) etaC = -log(tan(
theta));
60 else etaC = log(tan(
theta));
65 if (fabs(d0) <=
r) phiC = phi0 - asin(fabs(d0)/
r);
67 Rcurv = fabs(pt)/(0.3*
BFIELD);
68 xD = 2. *
r*(Rcurv + d0);
70 xN = d0 * d0 +
r *
r + 2. * Rcurv * d0;
71 if (fabs(xN)/fabs(xD) > 1) {
80 phiC = phi0 - q*M_PI_2 + dphi;
86 while (phiC >
M_PI) phiC = phiC - 2. *
M_PI;
87 while (phiC < -
M_PI) phiC = phiC + 2. *
M_PI;