File indexing completed on 2025-08-05 08:08:11
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Seeding/detail/StrawLineFitAuxiliaries.hpp"
0012
0013 #include "Acts/Definitions/Units.hpp"
0014 #include "Acts/Surfaces/detail/LineHelper.hpp"
0015 #include "Acts/Utilities/StringHelpers.hpp"
0016
0017 namespace Acts::Experimental::detail {
0018
0019 template <CompositeSpacePoint Point_t>
0020 int StrawLineFitAuxiliaries::strawSign(const Line_t& line,
0021 const Point_t& strawSp) {
0022 if (!strawSp.isStraw()) {
0023 return 0;
0024 }
0025 const double dist = Acts::detail::LineHelper::signedDistance(
0026 line.position(), line.direction(), strawSp.localPosition(),
0027 strawSp.sensorDirection());
0028 return dist > 0. ? 1 : -1;
0029 }
0030
0031 template <CompositeSpacePoint Point_t>
0032 void StrawLineFitAuxiliaries::updateSpatialResidual(const Line_t& line,
0033 const Point_t& spacePoint) {
0034 if (spacePoint.isStraw()) {
0035
0036 const auto& wireDir{spacePoint.sensorDirection()};
0037
0038 const Vector hitMinSeg = spacePoint.localPosition() - line.position();
0039
0040 if (!updateStrawResidual(line, hitMinSeg, wireDir,
0041 spacePoint.driftRadius())) {
0042 return;
0043 }
0044
0045 if (m_cfg.calcAlongStraw && spacePoint.measuresLoc0()) {
0046
0047
0048
0049 updateAlongTheStraw(line, hitMinSeg, wireDir);
0050 }
0051 } else {
0052 updateStripResidual(line, spacePoint.planeNormal(),
0053 spacePoint.toNextSensor(), spacePoint.sensorDirection(),
0054 spacePoint.localPosition(), spacePoint.measuresLoc1(),
0055 spacePoint.measuresLoc0());
0056 }
0057 }
0058
0059 }