Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:28:02

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