ATLAS Offline Software
Loading...
Searching...
No Matches
TrackParticleThinningBase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef DERIVATIONFRAMEWORK_TRACKPARTICLETHINNINGBASE_H
6#define DERIVATIONFRAMEWORK_TRACKPARTICLETHINNINGBASE_H
7
10
17
18#include "GaudiKernel/ToolHandle.h"
19
20#include <string>
21#include <atomic>
22#include <vector>
23
24namespace DerivationFramework {
25
26 class TrackParticleThinningBase : public extends<AthAlgTool, IThinningTool> {
27 public:
28 using base_class::base_class;
29
30 virtual StatusCode initialize() override;
31 virtual StatusCode finalize() override final;
32 virtual StatusCode doThinning() const override final;
33
34 protected:
35 virtual std::vector<int> updateMask(const xAOD::TrackParticleContainer*) const;
36 private:
37 //Counters and keys for xAOD::TrackParticle container
38 mutable std::atomic<unsigned int> m_ntot{}, m_npass{};
39 StringProperty m_streamName
40 { this, "StreamName", "", "Name of the stream being thinned" };
42 { this, "InDetTrackParticlesKey", "InDetTrackParticles", "" };
43
44 //Counters and keys for xAOD::TrackStateValidation and xAOD::TrackMeasurementValidation containers
45 mutable std::atomic<unsigned int> m_ntot_pix_states{}, m_npass_pix_states{};
47 { this, "InDetTrackStatesPixKey", "PixelMSOSs", "" };
48 mutable std::atomic<unsigned int> m_ntot_pix_measurements, m_npass_pix_measurements;
50 { this, "InDetTrackMeasurementsPixKey", "PixelClusters", "" };
51 mutable std::atomic<unsigned int> m_ntot_sct_states{}, m_npass_sct_states{};
53 { this, "InDetTrackStatesSctKey", "SCT_MSOSs", "" };
54 mutable std::atomic<unsigned int> m_ntot_sct_measurements{}, m_npass_sct_measurements{};
56 { this, "InDetTrackMeasurementsSctKey", "SCT_Clusters", "" };
57 mutable std::atomic<unsigned int> m_ntot_trt_states{}, m_npass_trt_states{};
59 { this, "InDetTrackStatesTrtKey", "TRT_MSOSs", "" };
60 mutable std::atomic<unsigned int> m_ntot_trt_measurements{}, m_npass_trt_measurements{};
62 { this, "InDetTrackMeasurementsTrtKey", "TRT_DriftCircles", "" };
63
64 // For P->T converter of SCT_Clusters
65 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
66
67 //logic
68 Gaudi::Property<bool> m_thinHitsOnTrack{this, "ThinHitsOnTrack", false};
69
70 //Track state types
71 // Subset of enum MeasurementType from Athena: Tracking/TrkEvent/TrkEventPrimitives/TrkEventPrimitives/TrackStateDefs.h
82
84 void selectTrackHits(const xAOD::TrackParticleContainer& inputTrackParticles,
85 const std::vector<bool>& inputMask,
86 MeasurementType detTypeToSelect,
87 std::vector<bool>& outputStatesMask, std::vector<bool>& outputMeasurementsMask) const;
88
90 (const EventContext& ctx,
91 MeasurementType detTypeToSelect,
92 const xAOD::TrackParticleContainer& inputTrackParticles,
93 const std::vector<bool>& inputMask,
96 std::atomic<unsigned int>& ntot_states,
97 std::atomic<unsigned int>& ntot_measurements,
98 std::atomic<unsigned int>& npass_states,
99 std::atomic<unsigned int>& npass_measurements) const;
100 };
101}
102
103#endif // DERIVATIONFRAMEWORK_TRACKPARTICLETHINNINGBASE_H
HandleKey object for adding thinning to an object.
SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > m_statesPixSGKey
SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > m_statesTrtSGKey
SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > m_statesSctSGKey
virtual StatusCode doThinning() const override final
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
void selectTrackHits(const xAOD::TrackParticleContainer &inputTrackParticles, const std::vector< bool > &inputMask, MeasurementType detTypeToSelect, std::vector< bool > &outputStatesMask, std::vector< bool > &outputMeasurementsMask) const
Select TrackStateValidation and TrackMeasurementValidation objects that are used in the (thinned) tra...
virtual std::vector< int > updateMask(const xAOD::TrackParticleContainer *) const
void filterTrackHits(const EventContext &ctx, MeasurementType detTypeToSelect, const xAOD::TrackParticleContainer &inputTrackParticles, const std::vector< bool > &inputMask, const SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > &statesKey, const SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > &measurementsKey, std::atomic< unsigned int > &ntot_states, std::atomic< unsigned int > &ntot_measurements, std::atomic< unsigned int > &npass_states, std::atomic< unsigned int > &npass_measurements) const
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurementsSctSGKey
SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurementsPixSGKey
SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurementsTrtSGKey
HandleKey object for adding thinning to an object.
THE reconstruction tool.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".