ATLAS Offline Software
Loading...
Searching...
No Matches
TrackParticleThinning.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6// TrackParticleThinning.h, (c) ATLAS Detector software
8
9#ifndef DERIVATIONFRAMEWORK_TRACKPARTICLETHINNING_H
10#define DERIVATIONFRAMEWORK_TRACKPARTICLETHINNING_H
11
14
21
22#include "GaudiKernel/ToolHandle.h"
23
24#include <string>
25#include <atomic>
26#include <vector>
27
29
30namespace DerivationFramework {
31
32 class TrackParticleThinning : public extends<ExpressionParserUser<AthAlgTool>, IThinningTool> {
33 public:
34 TrackParticleThinning(const std::string& t, const std::string& n, const IInterface* p);
36 virtual StatusCode initialize() override;
37 virtual StatusCode finalize() override;
38 virtual StatusCode doThinning() const override;
39
40 private:
41 //Expression for object thinning selection
42 std::string m_selectionString;
43
44 //Counters and keys for xAOD::TrackParticle container
45 mutable std::atomic<unsigned int> m_ntot, m_npass;
46 StringProperty m_streamName
47 { this, "StreamName", "", "Name of the stream being thinned" };
49 { this, "InDetTrackParticlesKey", "InDetTrackParticles", "" };
50
51 //Counters and keys for xAOD::TrackStateValidation and xAOD::TrackMeasurementValidation containers
52 mutable std::atomic<unsigned int> m_ntot_pix_states, m_npass_pix_states;
54 { this, "InDetTrackStatesPixKey", "PixelMSOSs", "" };
55 mutable std::atomic<unsigned int> m_ntot_pix_measurements, m_npass_pix_measurements;
57 { this, "InDetTrackMeasurementsPixKey", "PixelClusters", "" };
58 mutable std::atomic<unsigned int> m_ntot_sct_states, m_npass_sct_states;
60 { this, "InDetTrackStatesSctKey", "SCT_MSOSs", "" };
61 mutable std::atomic<unsigned int> m_ntot_sct_measurements, m_npass_sct_measurements;
63 { this, "InDetTrackMeasurementsSctKey", "SCT_Clusters", "" };
64 mutable std::atomic<unsigned int> m_ntot_trt_states, m_npass_trt_states;
66 { this, "InDetTrackStatesTrtKey", "TRT_MSOSs", "" };
67 mutable std::atomic<unsigned int> m_ntot_trt_measurements, m_npass_trt_measurements;
69 { this, "InDetTrackMeasurementsTrtKey", "TRT_DriftCircles", "" };
70
71 // For P->T converter of SCT_Clusters
72 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
73
74 //logic
76
77 //Track state types
78 // Subset of enum MeasurementType from Athena: Tracking/TrkEvent/TrkEventPrimitives/TrkEventPrimitives/TrackStateDefs.h
89
91 void selectTrackHits(const xAOD::TrackParticleContainer& inputTrackParticles,
92 const std::vector<bool>& inputMask,
93 MeasurementType detTypeToSelect,
94 std::vector<bool>& outputStatesMask, std::vector<bool>& outputMeasurementsMask) const;
95
97 (const EventContext& ctx,
98 MeasurementType detTypeToSelect,
99 const xAOD::TrackParticleContainer& inputTrackParticles,
100 const std::vector<bool>& inputMask,
103 std::atomic<unsigned int>& ntot_states,
104 std::atomic<unsigned int>& ntot_measurements,
105 std::atomic<unsigned int>& npass_states,
106 std::atomic<unsigned int>& npass_measurements) const;
107 };
108}
109
110#endif // DERIVATIONFRAMEWORK_TRACKPARTICLETHINNING_H
HandleKey object for adding thinning to an object.
std::atomic< unsigned int > m_npass_sct_measurements
std::atomic< unsigned int > m_npass_pix_measurements
SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurementsTrtSGKey
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::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurementsPixSGKey
std::atomic< unsigned int > m_ntot_trt_measurements
SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > m_statesTrtSGKey
SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > m_statesPixSGKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
SG::ThinningHandleKey< xAOD::TrackStateValidationContainer > m_statesSctSGKey
std::atomic< unsigned int > m_npass_trt_measurements
SG::ThinningHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurementsSctSGKey
virtual StatusCode doThinning() const override
std::atomic< unsigned int > m_ntot_sct_measurements
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...
std::atomic< unsigned int > m_ntot_pix_measurements
TrackParticleThinning(const std::string &t, const std::string &n, const IInterface *p)
HandleKey object for adding thinning to an object.
THE reconstruction tool.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".