Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:23:46

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 "ActsExamples/EventData/Index.hpp"
0012 #include "ActsExamples/EventData/ProtoTrack.hpp"
0013 #include "ActsExamples/EventData/Trajectories.hpp"
0014 #include "ActsFatras/EventData/Barcode.hpp"
0015 
0016 #include <cstddef>
0017 #include <vector>
0018 
0019 namespace ActsExamples {
0020 struct Trajectories;
0021 
0022 /// Associate a particle to its hit count within a proto track.
0023 struct ParticleHitCount {
0024   ActsFatras::Barcode particleId;
0025   std::size_t hitCount;
0026 };
0027 
0028 /// Identify all particles that contribute to the proto track.
0029 ///
0030 /// @param[in] hitParticlesMap Map hit indices to contributing particles
0031 /// @param[in] protoTrack The proto track to classify
0032 /// @param[out] particleHitCounts List of contributing particles
0033 ///
0034 /// The list of contributing particles is ordered according to their hit count,
0035 /// i.e. the first element is the majority particle that contributes the most
0036 /// hits to the track. There can be both hits without a generating particle
0037 /// (noise hits) and hits that have more than one generating particle. The sum
0038 /// of the particle hit count must not be identical to the size of the proto
0039 /// track.
0040 void identifyContributingParticles(
0041     const IndexMultimap<ActsFatras::Barcode>& hitParticlesMap,
0042     const ProtoTrack& protoTrack,
0043     std::vector<ParticleHitCount>& particleHitCounts);
0044 
0045 /// Identify all particles that contribute to a trajectory.
0046 ///
0047 /// @param[in] hitParticlesMap Map hit indices to contributing particles
0048 /// @param[in] trajectories The input trajectories to classify
0049 /// @param[in] trajectoryTip Which trajectory in the trajectories to use
0050 /// @param[out] particleHitCounts List of contributing particles
0051 ///
0052 /// See `identifyContributingParticles` for proto tracks for further
0053 /// information.
0054 void identifyContributingParticles(
0055     const IndexMultimap<ActsFatras::Barcode>& hitParticlesMap,
0056     const Trajectories& trajectories, std::size_t trajectoryTip,
0057     std::vector<ParticleHitCount>& particleHitCounts);
0058 
0059 void identifyContributingParticles(
0060     const IndexMultimap<ActsFatras::Barcode>& hitParticlesMap,
0061     const ConstTrackContainer::ConstTrackProxy& track,
0062     std::vector<ParticleHitCount>& particleHitCounts);
0063 
0064 }  // namespace ActsExamples