Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-26 08:20:24

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/EventData/BoundTrackParameters.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 #include "Acts/Utilities/Logger.hpp"
0014 #include "ActsExamples/EventData/Index.hpp"
0015 #include "ActsExamples/EventData/SimHit.hpp"
0016 #include "ActsExamples/EventData/SimParticle.hpp"
0017 #include "ActsExamples/EventData/Track.hpp"
0018 #include "ActsExamples/EventData/TruthMatching.hpp"
0019 
0020 #include <optional>
0021 
0022 namespace Acts {
0023 class Surface;
0024 }
0025 
0026 namespace ActsExamples {
0027 
0028 /// The track-state parameters to extract.
0029 enum class TrackParameterType {
0030   /// Parameters before the measurement update
0031   Predicted,
0032   /// Parameters after the measurement update
0033   Filtered,
0034   /// Smoothed parameters
0035   Smoothed,
0036   /// Smoothed parameters with the state's own measurement removed
0037   Unbiased,
0038 };
0039 
0040 /// Compute the truth bound track parameters on a surface from the simulated
0041 /// hits of a measurement.
0042 ///
0043 /// Position, direction, and time are averaged over the simulated hits, the
0044 /// momentum is taken from the first one, and charge and hypothesis from the
0045 /// given particle.
0046 ///
0047 /// @note The hits are averaged regardless of which particle produced them, so
0048 ///       a merged cluster gives a mixture. Same as `RootTrackParameterWriter`.
0049 ///
0050 /// @param gctx The geometry context
0051 /// @param surface The surface to express the truth parameters on
0052 /// @param measurementIndex The index of the measurement on the surface
0053 /// @param particle The truth particle
0054 /// @param simHits The simulated hits container
0055 /// @param measurementSimHitsMap Map from measurement index to simulated hits
0056 /// @param logger A logger for messages
0057 /// @return The parameters without covariance, or nullopt without truth hits
0058 std::optional<Acts::BoundTrackParameters> truthParametersOnSurface(
0059     const Acts::GeometryContext& gctx, const Acts::Surface& surface,
0060     Index measurementIndex, const SimParticle& particle,
0061     const SimHitContainer& simHits,
0062     const MeasurementSimHitsMap& measurementSimHitsMap,
0063     const Acts::Logger& logger);
0064 
0065 /// Extract the reconstructed bound track parameters on the reference surface
0066 /// of a track state.
0067 ///
0068 /// @param state The track state to extract the parameters from
0069 /// @param parameterType Which parameters; if not set, the best available ones
0070 ///        (smoothed, filtered, or predicted). `Unbiased` is never picked
0071 ///        implicitly and has to be requested
0072 /// @param hypothesis The particle hypothesis for the parameters
0073 /// @return The parameters with covariance, or nullopt without a reference
0074 ///         surface or matching parameters
0075 std::optional<Acts::BoundTrackParameters> recoParametersOnSurface(
0076     const ConstTrackStateProxy& state,
0077     std::optional<TrackParameterType> parameterType,
0078     const Acts::ParticleHypothesis& hypothesis);
0079 
0080 }  // namespace ActsExamples