394{
395 tracks.clear();
396 trackparticles.clear();
397 if (!vtx)
398 return;
399
400 const std::vector<Trk::VxTrackAtVertex*> * tmpVxTAVtx = vtx->
vxTrackAtVertex();
401 for ( std::vector<Trk::VxTrackAtVertex*>::const_iterator itr = tmpVxTAVtx->begin(); itr != tmpVxTAVtx->end(); ++itr) {
402 Trk::ITrackLink *
link = *itr ? (*itr)->trackOrParticleLink() : 0;
403 if (!link) continue;
404
405
406
407 Trk::LinkToTrackParticleBase* linkToTrackParticle =
dynamic_cast<Trk::LinkToTrackParticleBase*
>(
link);
408 const Trk::TrackParticleBase * tp((linkToTrackParticle && linkToTrackParticle->isValid())?linkToTrackParticle->cachedElement():0);
409
410
411 const Trk::Track* trk(0);
412 if (tp) {
413 trk = tp->originalTrack();
414 } else {
415 Trk::LinkToTrack* linkToTrack =
dynamic_cast<Trk::LinkToTrack*
>(
link);
416 if (linkToTrack && linkToTrack->isValid())
417 trk = linkToTrack->cachedElement();
418 }
419
420
421 if (tp)
422 trackparticles << tp;
423 if (trk)
424 tracks << trk;
425 }
426
427}
std::vector< Trk::VxTrackAtVertex * > * vxTrackAtVertex(void)
Unconst pointer to the vector of tracks Required by some of the vertex fitters.
pointer & link(pointer p) const
Return a reference to the link for an element.