59 {
60
61 const EventContext& ctx = Gaudi::Hive::currentContext();
62
63
64 SG::ThinningHandle<xAOD::TrackParticleContainer> tracks (
m_inDetSGKey, ctx);
65
66
67 unsigned int nTracks = tracks->size();
68 if (nTracks==0) return StatusCode::SUCCESS;
69
70
71 std::vector<bool>
mask(nTracks,
false);
73
74
76
77
78 SG::ReadHandle<xAOD::VertexContainer> vtxC(
m_vertexKey,ctx);
80
81
82 SG::ReadHandle<xAOD::JetContainer> importedJets(
m_jetKey,ctx);
84
85
87 std::size_t ntrkmax = 0;
88
89
90 SG::ReadDecorHandle<xAOD::VertexContainer, float> sumPt2Handle(
m_sumPt2Key, ctx);
92
93
96 continue;
97 }
98
100 float sumPt = sumPt2Handle(*vertex);
104 }
105 }
106 else {
107 std::size_t ntp =
vertex->nTrackParticles();
108 if (ntp > ntrkmax) {
109 ntrkmax = ntp;
111 }
112 }
113 }
114
115 if (!primary_vertex) {
117 }
118
119
120 for (const auto *jet : *importedJets) {
121 std::vector<const xAOD::TrackParticle*> jetTracks;
123 if ( !haveJetTracks ) {
ATH_MSG_WARNING(
"Associated jet tracks not found!"); }
124 else {
125 for (auto & jetTrack : jetTracks) {
127
128 asg::AcceptData acceptData =
m_trkSelTool->accept(*jetTrack, vert_trk);
129 int index = jetTrack->index();
130 mask[
index] =
static_cast<bool>(acceptData);
131 }
132 }
133 }
134
135
136 unsigned int n_pass=0;
137 for (
unsigned int i=0;
i<nTracks; ++
i) {
138 if (mask[i]) ++n_pass;
139 }
141
142 tracks.keep (mask);
143
144 return StatusCode::SUCCESS;
145 }
#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.