74{
75
77 std::vector<bool> vtxMask(vertexContainer->size(), true);
78 int vtxTot = 0;
79 int nVtxPass = 0;
80
82 std::vector<SG::ReadDecorHandle<xAOD::VertexContainer, Char_t>> handles;
85 handles.emplace_back(key, ctx);
86 if(!handles.back().isPresent()) return StatusCode::FAILURE;
87 }
88 for(auto vtxItr = vertexContainer->cbegin(); vtxItr!=vertexContainer->cend(); ++vtxItr, ++k) {
90
93 else{
94 for(auto &flagAcc : handles) {
95 if(flagAcc(*vtx) != 0) {
97 vtxTot++;
98 break;
99 }
100 }
101 }
102
103
104 if(vtxMask[k] == false)continue;
105
107
109
110 nVtxPass++;
111
112
113 std::vector<const xAOD::TrackParticle*> presentVertex, compareVertex;
114
115
116 presentVertex.clear();
119 }
120 sort( presentVertex.begin(), presentVertex.end() );
121
122
124 for(auto vtxLoopItr = vtxItr+1; vtxLoopItr!=vertexContainer->cend(); vtxLoopItr++, loop_k++){
125
127
128
130
131
132 if(vtxMask[loop_k]){
133
134 compareVertex.clear();
137 }
138
139 std::sort( compareVertex.begin(), compareVertex.end());
140
141 vtxMask[loop_k] = false;
142
144 ATH_MSG_DEBUG(std::setw(14)<<compareVertex[0]<<std::setw(14) << compareVertex[1]<<std::setw(14)<<compareVertex[2]);
145 ATH_MSG_DEBUG(std::setw(14)<<presentVertex[0]<<std::setw(14) << presentVertex[1]<<std::setw(14)<<presentVertex[2]);
146
148 if( compareVertex[j] != presentVertex[j] ){vtxMask[loop_k] = true; break;}
149 }
150 ATH_MSG_DEBUG(
"Verdict:"<<(vtxMask[loop_k]?
"keep":
"erase") );
151 }
152
153 }
154
155 }
156 }
157
158
159 vertexContainer.keep(vtxMask);
160
161 m_nVtxTot.fetch_add( vtxTot, std::memory_order_relaxed);
162 m_nVtxPass.fetch_add( nVtxPass, std::memory_order_relaxed);
163
164
165
166 return StatusCode::SUCCESS;
167}
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
const TrackParticle * trackParticle(size_t i) const
Get the pointer to a given track that was used in vertex reco.
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Vertex_v1 Vertex
Define the latest version of the vertex class.