00001 #ifndef DataFormats_ParticleFlowReco_GsfPFRecTrack_h 00002 #define DataFormats_ParticleFlowReco_GsfPFRecTrack_h 00003 00004 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h" 00005 #include "DataFormats/ParticleFlowReco/interface/PFRecTrackFwd.h" 00006 /* #include "DataFormats/Common/interface/RefToBase.h" */ 00007 #include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h" 00008 #include "DataFormats/ParticleFlowReco/interface/PFBrem.h" 00009 #include <iostream> 00010 00011 namespace reco { 00012 00023 class GsfPFRecTrack : public PFRecTrack 00024 { 00025 00026 public: 00027 GsfPFRecTrack(){}; 00028 GsfPFRecTrack(double charge, 00029 AlgoType_t algoType, 00030 int trackId, 00031 const reco::GsfTrackRef& gtrackref, 00032 const edm::Ref<std::vector<PFRecTrack> >& kfpfrectrackref); 00033 00034 00035 00037 const reco::GsfTrackRef& 00038 gsfTrackRef() const {return gsfTrackRef_;} 00039 00041 const edm::Ref<std::vector<PFRecTrack> >& 00042 kfPFRecTrackRef() const {return kfPFRecTrackRef_;} 00044 void addBrem( const reco::PFBrem& brem); 00045 00047 void calculateBremPositionREP(); 00048 00050 const std::vector<reco::PFBrem>& PFRecBrem()const {return pfBremVec_;} 00051 00053 int trackId() const {return trackId_;} 00054 00055 00057 void addConvBremPFRecTrackRef(const reco::PFRecTrackRef& pfrectracksref); 00058 00060 const std::vector<reco::PFRecTrackRef>& convBremPFRecTrackRef() const {return assoPFRecTrack_;} 00061 00062 private: 00064 reco::GsfTrackRef gsfTrackRef_; 00065 00067 reco::PFRecTrackRef kfPFRecTrackRef_; 00068 00070 std::vector<reco::PFBrem> pfBremVec_; 00071 00073 std::vector<reco::PFRecTrackRef> assoPFRecTrack_; 00074 00076 int trackId_; 00077 }; 00078 00079 00080 } 00081 00082 #endif