00001 #ifndef DataFormats_JetReco_TrackJet_h 00002 #define DataFormats_JetReco_TrackJet_h 00003 00004 00021 #include "DataFormats/JetReco/interface/Jet.h" 00022 #include "DataFormats/RecoCandidate/interface/RecoChargedRefCandidate.h" 00023 #include "DataFormats/VertexReco/interface/VertexFwd.h" 00024 00025 00026 namespace reco { 00027 00028 class TrackJet : public Jet { 00029 00030 public: 00031 00033 TrackJet(); 00035 TrackJet(const LorentzVector & fP4, const Point & fVertex); 00037 TrackJet(const LorentzVector & fP4, const Point & fVertex, const Jet::Constituents & fConstituents); 00039 virtual ~TrackJet() {} 00041 virtual TrackJet * clone () const; 00042 00044 size_t numberOfTracks() const { return numberOfDaughters(); } 00046 virtual edm::Ptr<reco::Track> track(size_t i) const; 00048 std::vector<edm::Ptr<reco::Track> > tracks() const; 00049 00051 void resetCharge(); 00053 const reco::VertexRef primaryVertex() const; 00055 void setPrimaryVertex(const reco::VertexRef & vtx); 00057 bool fromHardVertex() const { return (this->primaryVertex().index() == 0); } 00058 00060 virtual std::string print () const; 00061 00062 private: 00063 00065 virtual bool overlap(const Candidate & dummy) const; 00066 00067 private: 00068 00070 reco::VertexRef vtx_; 00071 00072 }; 00073 00074 } 00075 00076 #endif