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 EventContext& ctx) const override final;
33
34 protected:
35 virtual std::vector<int> updateMask(const EventContext& ctx, const xAOD::TrackParticleContainer*) const;
37 { this, "InDetTrackParticlesKey", "InDetTrackParticles", "" };
38
39 private:
40 //Counters and keys for xAOD::TrackParticle container
41 mutable std::atomic<unsigned int> m_ntot{}, m_npass{};
42 StringProperty m_streamName
43 { this, "StreamName", "", "Name of the stream being thinned" };
44
45 //Counters and keys for xAOD::TrackStateValidation and xAOD::TrackMeasurementValidation containers
46 mutable std::atomic<unsigned int> m_ntot_pix_states{}, m_npass_pix_states{};
48 { this, "InDetTrackStatesPixKey", "PixelMSOSs", "" };
49 mutable std::atomic<unsigned int> m_ntot_pix_measurements, m_npass_pix_measurements;
51 { this, "InDetTrackMeasurementsPixKey", "PixelClusters", "" };
52 mutable std::atomic<unsigned int> m_ntot_sct_states{}, m_npass_sct_states{};
54 { this, "InDetTrackStatesSctKey", "SCT_MSOSs", "" };
55 mutable std::atomic<unsigned int> m_ntot_sct_measurements{}, m_npass_sct_measurements{};
57 { this, "InDetTrackMeasurementsSctKey", "SCT_Clusters", "" };
58 mutable std::atomic<unsigned int> m_ntot_trt_states{}, m_npass_trt_states{};
60 { this, "InDetTrackStatesTrtKey", "TRT_MSOSs", "" };
61 mutable std::atomic<unsigned int> m_ntot_trt_measurements{}, m_npass_trt_measurements{};
63 { this, "InDetTrackMeasurementsTrtKey", "TRT_DriftCircles", "" };
64
65 // For P->T converter of SCT_Clusters
66 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
67
68 //logic
69 Gaudi::Property<bool> m_thinHitsOnTrack{this, "ThinHitsOnTrack", false};
70
71 //Track state types
72 // Subset of enum MeasurementType from Athena: Tracking/TrkEvent/TrkEventPrimitives/TrkEventPrimitives/TrackStateDefs.h
83
85 void selectTrackHits(const xAOD::TrackParticleContainer& inputTrackParticles,
86 const std::vector<bool>& inputMask,
87 MeasurementType detTypeToSelect,
88 std::vector<bool>& outputStatesMask, std::vector<bool>& outputMeasurementsMask) const;
89
91 (const EventContext& ctx,
92 MeasurementType detTypeToSelect,
93 const xAOD::TrackParticleContainer& inputTrackParticles,
94 const std::vector<bool>& inputMask,
97 std::atomic<unsigned int>& ntot_states,
98 std::atomic<unsigned int>& ntot_measurements,
99 std::atomic<unsigned int>& npass_states,
100 std::atomic<unsigned int>& npass_measurements) const;
101 };
102}
103
104#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
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 EventContext &ctx, 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
virtual StatusCode doThinning(const EventContext &ctx) const override final
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".