124 {
125
128
131 } else {
132 ATH_MSG_ERROR(
"Failed loading IdTrackparticleContainer container");
133 return StatusCode::FAILURE;
134 }
135
136
139 } else {
141 return StatusCode::FAILURE;
142 }
143
144 std::vector<const xAOD::Vertex*> outVtxContainer;
145
146
147
148 std::vector<xAOD::Iso::IsolationType> cones(
m_cones.size());
149
150 for (
unsigned int i = 0;
i <
m_cones.size();
i++)
152
153
155 return xAOD::Iso::coneSize(i) > xAOD::Iso::coneSize(j);
156 });
157
158
159 for (auto vertex : *vertexContainer) {
160
162 for (std::vector<std::string>::const_iterator flagItr =
m_passFlags.begin(); flagItr !=
m_passFlags.end();
163 ++flagItr) {
164 SG::Accessor<Char_t> flagAcc(*flagItr);
165 if (flagAcc.isAvailable(*vertex) && flagAcc(*vertex) != 0) {
167 break;
168 }
169 }
170
173
174 } else {
177 continue;
178 outVtxContainer.push_back(vertex);
179 }
180 }
181
182 TLorentzVector candidate;
183
184 std::set<const xAOD::TrackParticle*> exclusionset;
185
186 for (
auto part :
vertex->trackParticleLinks()) {
187
188 candidate += (*part)->p4();
189
190
191
194 exclusionset.insert(partID);
195 } else
196 exclusionset.insert(*part);
197 }
198
199
200
201
203 static const SG::ConstAccessor<std::vector<ElementLink<DataVector<xAOD::Vertex_v1> > > >
204 V0VertexLinksAcc("V0VertexLinks");
205 auto V0VertLink = V0VertexLinksAcc(*vertex);
206 const xAOD::Vertex* V0Vert = V0VertLink.at(0).getDataPtr()->at(0);
208 candidate += (*part)->p4();
209 exclusionset.insert(*part);
210 }
211 }
212
213
214
218
219
220
221
222
223
224 xAOD::TrackCorrection corrlist;
226
227 const string vtxType_name[3] = {"SumPt", "A0", "Z0"};
228
229 xAOD::BPhysHelper vertex_h(vertex);
230
231
233
235 continue;
236
238 for (
unsigned int i = 0;
i < cones.size();
i++) {
240 }
241
243 if(refVtx == nullptr){
245 continue;
246 }
247 xAOD::TrackIsolation
result;
248
250 m_trackIsoTool->trackIsolation(result, candidate_slyTrack, cones, corrlist, refVtx, &exclusionset,
251 idTrackParticleContainer);
252
253
254 for (
unsigned int i = 0;
i < cones.size();
i++) {
255
257 variableName += vtxType_name[vertex_type];
258
259 SG::Decorator<float> isolation(variableName);
260 isolation(*vertex) =
result.ptcones[
i];
261 }
262 } else {
263 for (
size_t i = 0;
i <
vertex->nTrackParticles();
i++) {
264 m_trackIsoTool->trackIsolation(result, *
vertex->trackParticle(i), cones, corrlist, refVtx, &exclusionset,
265 idTrackParticleContainer);
266
267 for (unsigned int j = 0; j < cones.size(); j++) {
269 variableName += vtxType_name[vertex_type];
270 variableName += "_trk";
271 variableName += std::to_string(i + 1);
272 SG::Decorator<float> isolation(variableName);
273 isolation(*vertex) =
result.ptcones[j];
274 }
275 }
276 }
277 }
278
279 }
280 }
281
282 return StatusCode::SUCCESS;
283}
#define ATH_MSG_WARNING(x)
#define CHECK(...)
Evaluate an expression and check for errors.
void makePrivateStore()
Create a new (empty) private store for this object.
pv_type
: Enum type of the PV
void setDefiningParameters(float d0, float z0, float phi0, float theta, float qOverP)
Set the defining parameters.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
retrieve(aClass, aKey=None)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
IsolationType
Overall enumeration for isolation types in xAOD files.
@ coreTrackPtr
tracks pointer
std::string toString(const IsoType &iso)
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Iso::IsolationTrackCorrectionBitset trackbitset