00001 #ifndef DATAFORMATS_TRACKCANDIDATE_TRACKCANDIDATE_H 00002 #define DATAFORMATS_TRACKCANDIDATE_TRACKCANDIDATE_H 00003 00004 #include "DataFormats/Common/interface/RefToBase.h" 00005 #include "DataFormats/Common/interface/OwnVector.h" 00006 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" 00007 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" 00008 00009 00010 #include <utility> 00011 00023 class TrackCandidate{ 00024 public: 00025 typedef edm::OwnVector<TrackingRecHit> RecHitContainer; 00026 typedef RecHitContainer::const_iterator const_iterator; 00027 typedef std::pair<const_iterator,const_iterator> range; 00028 00029 TrackCandidate(): rh_(), seed_(), state_(), seedRef_() {} 00030 virtual ~TrackCandidate(){} 00031 00032 TrackCandidate(RecHitContainer & rh) : 00033 rh_(), seed_(), state_(), seedRef_() {rh_.swap(rh);} 00034 00035 TrackCandidate(RecHitContainer & rh, 00036 TrajectorySeed const & s, 00037 PTrajectoryStateOnDet const & st): 00038 rh_(), seed_(s), state_(st), seedRef_() {rh_.swap(rh);} 00039 00040 00041 TrackCandidate(RecHitContainer & rh, 00042 TrajectorySeed const & s, 00043 PTrajectoryStateOnDet const & st, 00044 const edm::RefToBase<TrajectorySeed> & seedRef) : 00045 rh_(), seed_(s), state_(st), seedRef_(seedRef) {rh_.swap(rh);} 00046 00047 00048 00049 00050 PTrajectoryStateOnDet const & trajectoryStateOnDet() const { return state_;} 00051 00052 range recHits() const {return std::make_pair(rh_.begin(), rh_.end());} 00053 00054 TrajectorySeed const & seed() const {return seed_;} 00055 00061 edm::RefToBase<TrajectorySeed> seedRef() const { return seedRef_; } 00062 00063 void setSeedRef(edm::RefToBase<TrajectorySeed> & seedRef) { seedRef_ = seedRef ; } 00064 00065 private: 00066 RecHitContainer rh_; 00067 TrajectorySeed seed_; 00068 PTrajectoryStateOnDet state_; 00069 edm::RefToBase<TrajectorySeed> seedRef_; 00070 }; 00071 #endif