diff --git a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Configuration.h b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Configuration.h index 9ed73ca9d4a31..3af54ea2f5dfc 100644 --- a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Configuration.h +++ b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Configuration.h @@ -114,9 +114,6 @@ struct IterationParameters { { return getMinSeedingClusters() - ClustersPerCell + 1; } - int NeighboursPerRoad() const noexcept { return getNSeedingLayers() - 3; } - int CellsPerRoad() const noexcept { return getNSeedingLayers() - 2; } - int TrackletsPerRoad() const noexcept { return getNSeedingLayers() - 1; } IterationSteps PassFlags{IterationStep::FirstPass, IterationStep::RebuildClusterLUT}; int NLayers = tracking::ITSNLayers; bool UseDiamond = false; @@ -147,11 +144,6 @@ struct IterationParameters { bool PerPrimaryVertexProcessing = false; bool DoUPCIteration = false; bool CreateArtefactLabels{false}; - // Reserved compatibility storage; top/bottom followers are unused by the common tracker. - float TrackFollowerNSigmaCutZ = 1.f; - float TrackFollowerNSigmaCutPhi = 1.f; - int TrackFollowerMaxHypotheses = 1; - // Track-sharing selections. bool AllowSharingFirstCluster = false; float SharedClusterMaxDeltaPhi = 0.05f; // Maximum delta phi at a shared cluster. @@ -274,45 +266,6 @@ TrackingPlan getTrackingPlan(o2::detectors::DetID::ID detId, Type mode); } // namespace TrackingMode -struct VertexingParameters { - std::string asString() const; - - IterationSteps PassFlags{IterationStep::FirstPass, IterationStep::ResetVertices}; - std::vector LayerZ = {16.333f + 1, 16.333f + 1, 16.333f + 1, 42.140f + 1, 42.140f + 1, 73.745f + 1, 73.745f + 1}; - std::vector LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f}; - int vertPerRofThreshold = 0; // Vertices per ROF that trigger a second round. - int ColBins = 1; - int RowBins = 128; - float zCut = -1.f; - float phiCut = -1.f; - float pairCut = -1.f; - float clusterCut = -1.f; - float coarseZWindow = -1.f; - float seedDedupZCut = -1.f; - float refitDedupZCut = -1.f; - float duplicateZCut = -1.f; - float finalSelectionZCut = -1.f; - float duplicateDistance2Cut = -1.f; - float tanLambdaCut = -1.f; - float NSigmaCut = -1; - float maxZPositionAllowed = -1.f; - int clusterContributorsCut = -1; - int suppressLowMultDebris = -1; - int seedMemberRadiusTime = -1; - int seedMemberRadiusZ = -1; - int maxTrackletsPerCluster = -1; - int phiSpan = -1; - int zSpan = -1; - bool SaveTimeBenchmarks = false; - - bool useTruthSeeding = false; // Replace found vertices with MC events. - - int nThreads = 1; - bool PrintMemory = false; // Print allocator usage in the epilog report. - size_t MaxMemory = std::numeric_limits::max(); - bool DropTFUponFailure = false; -}; - } // namespace o2::itsmft namespace o2::itsmft::tracking diff --git a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/GenericTrack.h b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/GenericTrack.h index dc2e16899227f..4d18ba32b4363 100644 --- a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/GenericTrack.h +++ b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/GenericTrack.h @@ -65,9 +65,6 @@ struct GenericTrack { struct TrackingCandidate { TrackSeed seed; GenericTrack track{}; - float phi{0.f}; - float eta{0.f}; - double charge{0.}; int getNumberOfClusters() const noexcept { return seed.getActiveLayerCount(); } int getClusterIndex(int position) const noexcept { return seed.getCluster(position); } diff --git a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Propagator.h b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Propagator.h index fbc22ab0c1f5e..d3343e2a4c557 100644 --- a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Propagator.h +++ b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/Propagator.h @@ -37,11 +37,6 @@ class Propagator material::MaterialTraversalDirection direction, bool chi2GateEnabled, float maxChi2, float& chi2) noexcept; - // Compatibility chi2 for two states in the same surface convention. The - // coordinate convention is selected from the states, never by the caller. - static bool stateChi2(const SurfaceTrackState& reference, const SurfaceTrackState& candidate, - float& chi2) noexcept; - // Propagate in the state’s current surface convention to its target // reference coordinate. Disk transport uses helix propagation for // |bz| > 0.01f and linear transport otherwise. Both objects are unchanged diff --git a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/TrackerTraits.h b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/TrackerTraits.h index 54e2bee6abde0..153dcbbd50441 100644 --- a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/TrackerTraits.h +++ b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/TrackerTraits.h @@ -92,16 +92,14 @@ class TrackerTraits bool buildTrackSeed(IterationContext& context, int cellPathId, const CellSeed& cell, TrackSeed& output) const; + struct RoadSeedEmission; + // Neighbour processing helper; it does not encode a detector layer count. template void processNeighbours(IterationContext& context, int iteration, CellPathId startingPath, int defaultCellPathId, int startLevel, int currentLevel, const bounded_vector& currentCellSeed, - const bounded_vector& currentCellId, - const bounded_vector& currentCellPathId, - bounded_vector& updatedCellSeed, - bounded_vector& updatedCellId, - bounded_vector& updatedCellPathIds, + bounded_vector& updatedCells, const TrackingKernelParameters& params); std::shared_ptr mTaskArena; diff --git a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/detail/SurfaceStateOperations.h b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/detail/SurfaceStateOperations.h index 6bd40075f2f0e..b3272c77242ea 100644 --- a/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/detail/SurfaceStateOperations.h +++ b/Detectors/ITSMFT/common/tracking/include/ITSMFTTracking/detail/SurfaceStateOperations.h @@ -26,7 +26,6 @@ bool rotate(SurfaceTrackState& state, float targetAlpha) noexcept; bool propagate(SurfaceTrackState& state, float targetX, float bz) noexcept; bool predictedChi2(const SurfaceTrackState& state, const SurfaceMeasurement& measurement, float& chi2) noexcept; bool update(SurfaceTrackState& state, const SurfaceMeasurement& measurement, float& chi2) noexcept; -bool stateChi2(const SurfaceTrackState& reference, const SurfaceTrackState& candidate, float& chi2) noexcept; #ifndef GPUCA_GPUCODE bool rotate(SurfaceTrackState& state, SurfaceTrackParameters& linRef, float targetAlpha, float bz) noexcept; @@ -42,7 +41,6 @@ bool propagate(SurfaceTrackState& state, SurfaceTrackParameters& linRef, float targetZ, float bz) noexcept; bool predictedChi2(const SurfaceTrackState& state, const SurfaceMeasurement& measurement, float& chi2) noexcept; bool update(SurfaceTrackState& state, const SurfaceMeasurement& measurement, float& chi2) noexcept; -bool stateChi2(const SurfaceTrackState& reference, const SurfaceTrackState& candidate, float& chi2) noexcept; #ifndef GPUCA_GPUCODE bool shiftReferenceToMeasurement(SurfaceTrackParameters& linRef, const SurfaceMeasurement& measurement) noexcept; diff --git a/Detectors/ITSMFT/common/tracking/src/Configuration.cxx b/Detectors/ITSMFT/common/tracking/src/Configuration.cxx index 8726de7c751eb..49107ad8ddf70 100644 --- a/Detectors/ITSMFT/common/tracking/src/Configuration.cxx +++ b/Detectors/ITSMFT/common/tracking/src/Configuration.cxx @@ -87,16 +87,6 @@ std::string TrackingParameters::asString() const return str; } -std::string VertexingParameters::asString() const -{ - std::string str = std::format("NColB:{} NRowB:{} MinVtxCont:{} SupLowMultDebris:{} MaxTrkltCls:{} ZCut:{} PhCut:{} PairCut:{} ClCut:{} SeedRad:{}x{}", - ColBins, RowBins, clusterContributorsCut, suppressLowMultDebris, maxTrackletsPerCluster, zCut, phiCut, pairCut, clusterCut, seedMemberRadiusTime, seedMemberRadiusZ); - if (std::numeric_limits::max() != MaxMemory) { - str += std::format(" MemLimit {:.2f} GB", double(MaxMemory) / (1024.f * 1024.f * 1024.f)); - } - return str; -} - void resetDetectorDefaults(TrackingParameters& p, detectors::DetID::ID detId) { if (detId == detectors::DetID::ITS) { diff --git a/Detectors/ITSMFT/common/tracking/src/Propagator.cxx b/Detectors/ITSMFT/common/tracking/src/Propagator.cxx index 777d77c686d1c..b3a620b35b05d 100644 --- a/Detectors/ITSMFT/common/tracking/src/Propagator.cxx +++ b/Detectors/ITSMFT/common/tracking/src/Propagator.cxx @@ -389,22 +389,6 @@ bool Propagator::attachMeasurement(SurfaceTrackState& state, const SurfaceDescri return true; } -bool Propagator::stateChi2(const SurfaceTrackState& reference, const SurfaceTrackState& candidate, - float& chi2) noexcept -{ - if (reference.kind != candidate.kind) { - return false; - } - if (reference.kind == SurfaceKind::Cylinder) { - return detail::barrel::stateChi2(reference, candidate, chi2); - } - if (reference.kind == SurfaceKind::Disk) { - return detail::forward::stateChi2(reference, candidate, chi2); - } - - return false; -} - bool Propagator::propagateToReference(SurfaceTrackState& state, float targetReferenceCoordinate, float bz) noexcept { if (state.kind == SurfaceKind::Cylinder) { diff --git a/Detectors/ITSMFT/common/tracking/src/PropagatorBarrelOperations.cxx b/Detectors/ITSMFT/common/tracking/src/PropagatorBarrelOperations.cxx index 5f54e6fde7659..4ff9dd691cbb0 100644 --- a/Detectors/ITSMFT/common/tracking/src/PropagatorBarrelOperations.cxx +++ b/Detectors/ITSMFT/common/tracking/src/PropagatorBarrelOperations.cxx @@ -16,8 +16,6 @@ #include #include "CommonConstants/MathConstants.h" -#include "GPUROOTSMatrixFwd.h" -#include // Provides covariance/curvature constants for device-visible operations; // no track object is constructed here. @@ -30,13 +28,6 @@ namespace using DenseMatrix5 = float[5][5]; -// Packed symmetric 5x5 covariance for stateChi2. MatRepSym::offset() matches -// packedCovarianceIndex exactly, so the combined covariance is built directly -// in packed storage. -using CombinedCovariance = o2::math_utils::SMatrix>; -static_assert(o2::math_utils::MatRepSym::kSize == 15, "packed symmetric 5x5 representation must hold exactly 15 floats"); -static_assert(sizeof(CombinedCovariance) == 15 * sizeof(float), "combined covariance must occupy exactly 15 floats"); - // sanitizeCovariance() upper bounds in (Y, Z, Snp, Tgl, Q2Pt) order. These // match the barrel limits used by Propagator::correctForMaterial(). constexpr float kBarrelMaxDiagonal[5] = {o2::track::kCY2max, o2::track::kCZ2max, o2::track::kCSnp2max, @@ -311,44 +302,6 @@ bool update(SurfaceTrackState& state, const SurfaceMeasurement& measurement, flo return true; } -bool stateChi2(const SurfaceTrackState& reference, const SurfaceTrackState& candidate, float& chi2) noexcept -{ - if (reference.kind != SurfaceKind::Cylinder || candidate.kind != SurfaceKind::Cylinder) { - return false; - } - if (std::abs(reference.alpha - candidate.alpha) > o2::constants::math::Epsilon) { - return false; - } - if (std::abs(reference.referenceCoordinate - candidate.referenceCoordinate) > o2::constants::math::Epsilon) { - return false; - } - - CombinedCovariance combined; - float* packed = combined.Array(); - for (uint8_t i = 0; i < 15; ++i) { - packed[i] = reference.covariance[i] + candidate.covariance[i]; - } - if (!combined.Invert()) { - return false; - } - - float diff[5]; - for (uint8_t i = 0; i < 5; ++i) { - diff[i] = reference.parameters[i] - candidate.parameters[i]; - } - float chi2diag = 0.f; - float chi2ndiag = 0.f; - for (uint8_t i = 0; i < 5; ++i) { - chi2diag += diff[i] * diff[i] * packed[packedCovarianceIndex(i, i)]; - for (uint8_t j = 0; j < i; ++j) { - chi2ndiag += diff[i] * diff[j] * packed[packedCovarianceIndex(i, j)]; - } - } - const float scratchChi2 = chi2diag + 2.f * chi2ndiag; - chi2 = scratchChi2; - return true; -} - #ifndef GPUCA_GPUCODE namespace diff --git a/Detectors/ITSMFT/common/tracking/src/PropagatorForwardOperations.cxx b/Detectors/ITSMFT/common/tracking/src/PropagatorForwardOperations.cxx index b29c30238ed25..5939066c54103 100644 --- a/Detectors/ITSMFT/common/tracking/src/PropagatorForwardOperations.cxx +++ b/Detectors/ITSMFT/common/tracking/src/PropagatorForwardOperations.cxx @@ -17,8 +17,6 @@ #include #include "CommonConstants/MathConstants.h" -#include "GPUROOTSMatrixFwd.h" -#include namespace o2::itsmft::tracking::detail::forward { @@ -27,12 +25,6 @@ namespace using DenseMatrix5 = float[5][5]; -// Packed symmetric 5x5 covariance for stateChi2. MatRepSym::offset matches -// packedCovarianceIndex (row*(row+1)/2+column), enabling direct construction. -using CombinedCovariance = o2::math_utils::SMatrix>; -static_assert(o2::math_utils::MatRepSym::kSize == 15, "packed symmetric 5x5 representation must hold exactly 15 floats"); -static_assert(sizeof(CombinedCovariance) == 15 * sizeof(float), "combined covariance must occupy exactly 15 floats"); - // Forward diagonals have no finite ceiling; non-negativity and correlations // are still checked. constexpr float kForwardNoRangeLimit = std::numeric_limits::max(); @@ -332,42 +324,6 @@ bool update(SurfaceTrackState& state, const SurfaceMeasurement& measurement, flo return true; } -bool stateChi2(const SurfaceTrackState& reference, const SurfaceTrackState& candidate, float& chi2) noexcept -{ - if (reference.kind != SurfaceKind::Disk || candidate.kind != SurfaceKind::Disk) { - return false; - } - if (std::abs(reference.referenceCoordinate - candidate.referenceCoordinate) > o2::constants::math::Epsilon) { - return false; - } - - CombinedCovariance combined; - float* packed = combined.Array(); - for (uint8_t i = 0; i < 15; ++i) { - packed[i] = reference.covariance[i] + candidate.covariance[i]; - } - if (!combined.Invert()) { - return false; - } - - // Use direct (unwrapped) differences of (X, Y, Phi, Tanl, InvQPt). - float diff[5]; - for (uint8_t i = 0; i < 5; ++i) { - diff[i] = reference.parameters[i] - candidate.parameters[i]; - } - float chi2diag = 0.f; - float chi2ndiag = 0.f; - for (uint8_t i = 0; i < 5; ++i) { - chi2diag += diff[i] * diff[i] * packed[packedCovarianceIndex(i, i)]; - for (uint8_t j = 0; j < i; ++j) { - chi2ndiag += diff[i] * diff[j] * packed[packedCovarianceIndex(i, j)]; - } - } - const float scratchChi2 = chi2diag + 2.f * chi2ndiag; - chi2 = scratchChi2; - return true; -} - #ifndef GPUCA_GPUCODE namespace diff --git a/Detectors/ITSMFT/common/tracking/src/TrackerTraits.cxx b/Detectors/ITSMFT/common/tracking/src/TrackerTraits.cxx index f81d294369577..78be2ef337515 100644 --- a/Detectors/ITSMFT/common/tracking/src/TrackerTraits.cxx +++ b/Detectors/ITSMFT/common/tracking/src/TrackerTraits.cxx @@ -54,17 +54,17 @@ namespace o2::itsmft::tracking namespace math_utils = o2::its::math_utils; using o2::its::TimeEstBC; -namespace -{ -constexpr uint8_t kCompatibilityAbsCharge = 1; -const o2::track::PID kCompatibilityPID = o2::track::PID::Pion; - -struct RoadSeedEmission { +struct TrackerTraits::RoadSeedEmission { TrackSeed seed; int cellId{-1}; int cellPathId{-1}; }; +namespace +{ +constexpr uint8_t kCompatibilityAbsCharge = 1; +const o2::track::PID kCompatibilityPID = o2::track::PID::Pion; + void reserveGenericTrackPublication(TimeFrame& frame, std::size_t candidateCount, std::size_t maxReferencesPerTrack) { auto& tracks = frame.getGenericTracks(); @@ -674,10 +674,6 @@ void TrackerTraits::findCellsNeighbours(IterationContext& context, const int ite sink.finalizeUnordered(sourceNeighbours); context.frame.getCapacityEstimator().update(key, scale, stats.requested, stats.capacity, stats.emitted, stats.spilled, stats.overflowed, stats.memoryLimited); - std::sort(sourceNeighbours.begin(), sourceNeighbours.end(), [](const auto& a, const auto& b) { - return std::tie(a.nextCellTopology, a.nextCell, a.cellTopology, a.cell) < - std::tie(b.nextCellTopology, b.nextCell, b.cellTopology, b.cell); - }); for (const auto& neighbour : sourceNeighbours) { cellsNeighboursByTarget[neighbour.nextCellTopology].push_back(neighbour); if (neighbour.level > scratch.getCells()[neighbour.nextCellTopology][neighbour.nextCell].getLevel()) { @@ -822,11 +818,7 @@ template void TrackerTraits::processNeighbours(IterationContext& context, int iteration, CellPathId startingPath, int defaultCellPathId, int startLevel, int currentLevel, const bounded_vector& currentCellSeed, - const bounded_vector& currentCellId, - const bounded_vector& currentCellPathId, - bounded_vector& updatedCellSeeds, - bounded_vector& updatedCellsIds, - bounded_vector& updatedCellsPathIds, + bounded_vector& updatedCells, const TrackingKernelParameters& params) { auto* scratch = &context.scratch; @@ -837,13 +829,25 @@ void TrackerTraits::processNeighbours(IterationContext& context, int iteration, mTaskArena->execute([&] { auto forCellNeighbours = [&](int iCell, auto&& emit) { - const auto& currentCell{currentCellSeed[iCell]}; - const int cellPathId = currentCellPathId.empty() ? defaultCellPathId : currentCellPathId[iCell]; + const auto& input = currentCellSeed[iCell]; + const auto& currentCell = [&]() -> const auto& { + if constexpr (std::is_same_v) { + return input; + } else { + return input.seed; + } + }(); + int cellId = iCell; + int cellPathId = defaultCellPathId; + if constexpr (std::is_same_v) { + cellId = input.cellId; + cellPathId = input.cellPathId; + } if (currentCell.getLevel() != currentLevel) { return; } - if (currentCellId.empty()) { + if constexpr (std::is_same_v) { for (int layer = 0; layer < activeSurfaceCount; ++layer) { const int clusterIndex = currentCell.getCluster(layer); if (clusterIndex != o2::its::constants::UnusedIndex && @@ -853,7 +857,6 @@ void TrackerTraits::processNeighbours(IterationContext& context, int iteration, } } - const int cellId = currentCellId.empty() ? iCell : currentCellId[iCell]; if (cellPathId < 0 || scratch->getCellsNeighboursLUT()[cellPathId].empty()) { return; } @@ -935,18 +938,9 @@ void TrackerTraits::processNeighbours(IterationContext& context, int iteration, }); const auto stats = sink.stats(); bounded_vector lut{mMemoryPool.get()}; - bounded_vector emissions{mMemoryPool.get()}; - sink.finalizeGrouped(static_cast(nCells), lut, emissions); + sink.finalizeGrouped(static_cast(nCells), lut, updatedCells); context.frame.getCapacityEstimator().update(key, scale, stats.requested, stats.capacity, stats.emitted, stats.spilled, stats.overflowed, stats.memoryLimited); - updatedCellSeeds.reserve(emissions.size()); - updatedCellsIds.reserve(emissions.size()); - updatedCellsPathIds.reserve(emissions.size()); - for (auto& emission : emissions) { - updatedCellSeeds.push_back(std::move(emission.seed)); - updatedCellsIds.push_back(emission.cellId); - updatedCellsPathIds.push_back(emission.cellPathId); - } }); } @@ -1000,34 +994,28 @@ void TrackerTraits::findRoads(IterationContext& context, const int iteration) continue; } - bounded_vector lastCellId(mMemoryPool.get()), updatedCellId(mMemoryPool.get()); - bounded_vector lastCellPathId(mMemoryPool.get()), updatedCellPathId(mMemoryPool.get()); - bounded_vector lastCellSeed(mMemoryPool.get()), updatedCellSeed(mMemoryPool.get()); + bounded_vector currentCells(mMemoryPool.get()), updatedCells(mMemoryPool.get()); processNeighbours(context, iteration, startId, startId.value(), startLevel, startLevel, - scratch->getCells()[startId.value()], lastCellId, lastCellPathId, - updatedCellSeed, updatedCellId, updatedCellPathId, mKernelParameters); + scratch->getCells()[startId.value()], updatedCells, mKernelParameters); int level = startLevel; - while (level > 2 && !updatedCellSeed.empty()) { - lastCellSeed.swap(updatedCellSeed); - lastCellId.swap(updatedCellId); - lastCellPathId.swap(updatedCellPathId); - deepVectorClear(updatedCellSeed); /// tame the memory peaks - deepVectorClear(updatedCellId); /// tame the memory peaks - deepVectorClear(updatedCellPathId); + while (level > 2 && !updatedCells.empty()) { + currentCells.swap(updatedCells); + deepVectorClear(updatedCells); // Release the previous expansion before producing the next one. --level; processNeighbours(context, iteration, startId, o2::its::constants::UnusedIndex, startLevel, level, - lastCellSeed, lastCellId, lastCellPathId, - updatedCellSeed, updatedCellId, updatedCellPathId, mKernelParameters); + currentCells, updatedCells, mKernelParameters); } - deepVectorClear(lastCellId); /// tame the memory peaks - deepVectorClear(lastCellPathId); /// tame the memory peaks - deepVectorClear(lastCellSeed); /// tame the memory peaks - - if (!updatedCellSeed.empty()) { - trackSeeds.reserve(trackSeeds.size() + std::count_if(updatedCellSeed.begin(), updatedCellSeed.end(), seedFilter)); - std::copy_if(updatedCellSeed.begin(), updatedCellSeed.end(), std::back_inserter(trackSeeds), seedFilter); + deepVectorClear(currentCells); + + const auto accepted = std::count_if(updatedCells.begin(), updatedCells.end(), + [&](const auto& cell) { return seedFilter(cell.seed); }); + trackSeeds.reserve(trackSeeds.size() + accepted); + for (auto& cell : updatedCells) { + if (seedFilter(cell.seed)) { + trackSeeds.push_back(std::move(cell.seed)); + } } } @@ -1060,9 +1048,6 @@ void TrackerTraits::findRoads(IterationContext& context, const int iteration) temporaryTrack.track.innerState = innerState; temporaryTrack.track.outerState = outerState; temporaryTrack.track.chi2 = chi2; - temporaryTrack.charge = innerState.parameters[4] < 0.f ? -1 : 1; - temporaryTrack.phi = innerState.kind == SurfaceKind::Cylinder ? std::asin(innerState.parameters[2]) + innerState.alpha : innerState.parameters[2]; - temporaryTrack.eta = std::asinh(innerState.parameters[3]); auto& handle = sink.local(); handle.beginProducer(iSeed); handle.emplace(std::move(temporaryTrack)); diff --git a/Detectors/ITSMFT/common/tracking/test/testMFTNormalizedRefit.cxx b/Detectors/ITSMFT/common/tracking/test/testMFTNormalizedRefit.cxx index 8b100ae944c87..702e34699326b 100644 --- a/Detectors/ITSMFT/common/tracking/test/testMFTNormalizedRefit.cxx +++ b/Detectors/ITSMFT/common/tracking/test/testMFTNormalizedRefit.cxx @@ -205,9 +205,6 @@ void checkTrackUnchanged(const TrackingCandidate& before, const TrackingCandidat BOOST_CHECK_EQUAL(static_cast(before.track.innerState.kind), static_cast(after.track.innerState.kind)); BOOST_CHECK_EQUAL(static_cast(before.track.outerState.kind), static_cast(after.track.outerState.kind)); BOOST_CHECK_EQUAL(before.track.chi2, after.track.chi2); - BOOST_CHECK_EQUAL(before.phi, after.phi); - BOOST_CHECK_EQUAL(before.eta, after.eta); - BOOST_CHECK_EQUAL(before.charge, after.charge); } } // namespace diff --git a/Detectors/ITSMFT/common/tracking/test/testPropagator.cxx b/Detectors/ITSMFT/common/tracking/test/testPropagator.cxx index 54813d96d0b08..4ab82d86445b3 100644 --- a/Detectors/ITSMFT/common/tracking/test/testPropagator.cxx +++ b/Detectors/ITSMFT/common/tracking/test/testPropagator.cxx @@ -290,21 +290,6 @@ BOOST_AUTO_TEST_CASE(AcceptedForwardPropagationSelectsFieldAndLowFieldPaths) BOOST_CHECK(!bitEqual(fieldOn, lowPositive)); } -BOOST_AUTO_TEST_CASE(PropagatorSelectsCompatibilityFromStateKind) -{ - auto cylinderReference = barrelState(); - auto cylinderCandidate = cylinderReference; - auto diskReference = diskState(); - auto diskCandidate = diskReference; - float chi2 = -1.f; - - BOOST_REQUIRE(Propagator::stateChi2(cylinderReference, cylinderCandidate, chi2)); - BOOST_CHECK_EQUAL(chi2, 0.f); - BOOST_REQUIRE(Propagator::stateChi2(diskReference, diskCandidate, chi2)); - BOOST_CHECK_EQUAL(chi2, 0.f); - BOOST_CHECK(!Propagator::stateChi2(cylinderReference, diskCandidate, chi2)); -} - // --- 3: compatible-family propagation and material effects ----------------- BOOST_AUTO_TEST_CASE(CompatibleFamilyMatchesDirectBarrelPrimitiveReplayWithoutMaterial)