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())
418 }
419
420
421 if (tp)
422 trackparticles <<
tp;
423 if (trk)
424 tracks << trk;
425 }
426
427}
bool isValid() const
Test to see if the link can be dereferenced.
ElementType cachedElement() const
Return the cached element, if any.
std::vector< Trk::VxTrackAtVertex * > * vxTrackAtVertex(void)
Unconst pointer to the vector of tracks Required by some of the vertex fitters.