File indexing completed on 2025-08-06 08:10:00
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010 #include "Acts/EventData/MultiTrajectory.hpp"
0011 #include "Acts/EventData/TrackContainer.hpp"
0012
0013 namespace Acts {
0014
0015
0016
0017
0018
0019
0020
0021
0022 template <typename track_container_t, typename track_state_container_t,
0023 template <typename> class holder_t>
0024 void calculateTrackQuantities(
0025 Acts::TrackProxy<track_container_t, track_state_container_t, holder_t,
0026 false>
0027 track) {
0028 track.chi2() = 0;
0029 track.nDoF() = 0;
0030
0031 track.nHoles() = 0;
0032 track.nMeasurements() = 0;
0033 track.nSharedHits() = 0;
0034 track.nOutliers() = 0;
0035
0036 for (const auto& trackState : track.trackStatesReversed()) {
0037 auto typeFlags = trackState.typeFlags();
0038
0039 if (typeFlags.test(Acts::TrackStateFlag::MeasurementFlag)) {
0040 if (typeFlags.test(Acts::TrackStateFlag::SharedHitFlag)) {
0041 track.nSharedHits()++;
0042 }
0043
0044 track.nMeasurements()++;
0045 track.chi2() += trackState.chi2();
0046 track.nDoF() += trackState.calibratedSize();
0047 } else if (typeFlags.test(Acts::TrackStateFlag::OutlierFlag)) {
0048 track.nOutliers()++;
0049 } else if (typeFlags.test(Acts::TrackStateFlag::HoleFlag)) {
0050 track.nHoles()++;
0051 }
0052 }
0053 }
0054 }