58 {
59
60
61 SG::ThinningHandle<xAOD::TrackParticleContainer> tracks (
m_inDetSGKey, ctx);
62
63
64 unsigned int nTracks = tracks->size();
65 if (nTracks==0) return StatusCode::SUCCESS;
66
67
68 std::vector<bool>
mask(nTracks,
false);
70
71
73
74
75 SG::ReadHandle<xAOD::VertexContainer> vtxC(
m_vertexKey,ctx);
77
78
79 SG::ReadHandle<xAOD::JetContainer> importedJets(
m_jetKey,ctx);
81
82
84 std::size_t ntrkmax = 0;
85
86
87 SG::ReadDecorHandle<xAOD::VertexContainer, float> sumPt2Handle(
m_sumPt2Key, ctx);
89
90
93 continue;
94 }
95
97 float sumPt = sumPt2Handle(*vertex);
101 }
102 }
103 else {
104 std::size_t ntp =
vertex->nTrackParticles();
105 if (ntp > ntrkmax) {
106 ntrkmax = ntp;
108 }
109 }
110 }
111
112 if (!primary_vertex) {
114 }
115
116
117 for (const auto *jet : *importedJets) {
118 std::vector<const xAOD::TrackParticle*> jetTracks;
120 if ( !haveJetTracks ) {
ATH_MSG_WARNING(
"Associated jet tracks not found!"); }
121 else {
122 for (auto & jetTrack : jetTracks) {
124
125 asg::AcceptData acceptData =
m_trkSelTool->accept(*jetTrack, vert_trk);
126 int index = jetTrack->index();
127 mask[
index] =
static_cast<bool>(acceptData);
128 }
129 }
130 }
131
132
133 unsigned int n_pass=0;
134 for (
unsigned int i=0;
i<nTracks; ++
i) {
135 if (mask[i]) ++n_pass;
136 }
138
139 tracks.keep (mask);
140
141 return StatusCode::SUCCESS;
142 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
std::atomic< unsigned int > m_ntot
SG::ReadHandleKey< xAOD::JetContainer > m_jetKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexKey
SG::ReadDecorHandleKey< xAOD::VertexContainer > m_sumPt2Key
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
std::atomic< unsigned int > m_npass
Gaudi::Property< std::string > m_vertexScheme
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkSelTool
Vertex_v1 Vertex
Define the latest version of the vertex class.