00001 #ifndef _PFDisplacedTrackerVertex_H 00002 #define _PFDisplacedTrackerVertex_H 00003 00004 // class which contains the secondary PFRecTracks 00005 // this dataformat will be used to create PFBlockElementNuclTrack 00006 00007 // \author Maxime Gouzevitch 00008 00009 #include "DataFormats/ParticleFlowReco/interface/PFDisplacedVertex.h" 00010 #include "DataFormats/ParticleFlowReco/interface/PFDisplacedVertexFwd.h" 00011 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h" 00012 #include "DataFormats/ParticleFlowReco/interface/PFRecTrackFwd.h" 00013 00014 namespace reco { 00015 class PFDisplacedTrackerVertex { 00016 00017 public : 00018 00019 PFDisplacedTrackerVertex() {} 00020 PFDisplacedTrackerVertex( const PFDisplacedVertexRef& nuclref, const PFRecTrackRefVector& pfRecTracks) : displacedVertexRef_(nuclref), pfRecTracks_(pfRecTracks) {} 00021 00022 const PFRecTrackRefVector pfRecTracks() const {return pfRecTracks_;} 00023 00024 const bool isIncomingTrack(const reco::PFRecTrackRef originalTrack) const { 00025 reco::TrackBaseRef trackBaseRef(originalTrack->trackRef()); 00026 return displacedVertexRef_->isIncomingTrack(trackBaseRef); 00027 } 00028 00029 const bool isOutgoingTrack(const reco::PFRecTrackRef originalTrack) const { 00030 reco::TrackBaseRef trackBaseRef(originalTrack->trackRef()); 00031 return displacedVertexRef_->isOutgoingTrack(trackBaseRef); 00032 } 00033 00034 const PFDisplacedVertexRef displacedVertexRef() const {return displacedVertexRef_;} 00035 00036 private : 00037 // Reference to the initial DisplacedTrackerVertex 00038 PFDisplacedVertexRef displacedVertexRef_; 00039 00040 // Collection of the secondary PFRecTracks 00041 PFRecTrackRefVector pfRecTracks_; 00042 00043 }; 00044 00046 typedef std::vector<PFDisplacedTrackerVertex> PFDisplacedTrackerVertexCollection; 00048 typedef edm::Ref<PFDisplacedTrackerVertexCollection> PFDisplacedTrackerVertexRef; 00050 typedef edm::RefVector<PFDisplacedTrackerVertexCollection> PFDisplacedTrackerVertexRefVector; 00051 } 00052 #endif