diff --git a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp index ef36e80c978..6fea6ebc9fd 100644 --- a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp +++ b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp @@ -237,17 +237,10 @@ std::optional estimateTrackParamsFromSeed( circleCenter(1) = -1. / a * circleCenter(0) + b; // Radius is distance between circleCenter and first sp, which is at (0, 0) in // the new frame - // Sign depends on the slope a (positive vs negative) - int sign = a > 0 ? -1 : 1; - ActsScalar rho = sign / circleCenter.norm(); - - // The projection of the top space point on the transverse plane of the new - // frame - ActsScalar rn = local2.x() * local2.x() + local2.y() * local2.y(); - // The (1/tanTheta) of momentum in the new frame, - static constexpr ActsScalar G = static_cast(1. / 24.); + const ActsScalar R = circleCenter.norm(); ActsScalar invTanTheta = - local2.z() * std::sqrt(1. / rn) / (1. + G * rho * rho * rn); + local2.z() / + (2.f * R * std::asin(std::hypot(local2.x(), local2.y()) / 2.f * R)); // The momentum direction in the new frame (the center of the circle has the // coordinate (-1.*A/(2*B), 1./(2*B))) ActsScalar A = -circleCenter(0) / circleCenter(1);