00001 #ifndef __PFBlockElementBrem__ 00002 #define __PFBlockElementBrem__ 00003 00004 #include <iostream> 00005 00006 #include "DataFormats/ParticleFlowReco/interface/PFBlockElementTrack.h" 00007 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h" 00008 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h" 00009 #include "DataFormats/ParticleFlowReco/interface/PFBrem.h" 00010 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00011 00012 namespace reco { 00013 00017 class PFBlockElementBrem : public PFBlockElement { 00018 public: 00019 00020 PFBlockElementBrem() {} 00021 00022 PFBlockElementBrem(const GsfPFRecTrackRef& gsfref, const double DeltaP, const double SigmaDeltaP, const unsigned int indTrajPoint); 00023 00024 00025 PFBlockElement* clone() const { return new PFBlockElementBrem(*this); } 00026 void Dump(std::ostream& out = std::cout, 00027 const char* tab = " " ) const; 00028 00029 00030 GsfPFRecTrackRef GsftrackRefPF() const { 00031 return GsftrackRefPF_; 00032 } 00033 00035 reco::GsfTrackRef GsftrackRef() const { 00036 return GsftrackRef_; 00037 } 00038 00039 const PFRecTrack & trackPF() const 00040 { return ((*GsftrackRefPF()).PFRecBrem()[(indPoint_-2)]);} 00041 00042 00043 double DeltaP() const {return deltaP_;} 00044 double SigmaDeltaP() const {return sigmadeltaP_;} 00045 unsigned int indTrajPoint() const {return indPoint_;} 00046 00048 const math::XYZPointF& positionAtECALEntrance() const { 00049 return positionAtECALEntrance_; 00050 } 00051 00052 00053 private: 00054 00056 GsfPFRecTrackRef GsftrackRefPF_; 00057 00059 reco::GsfTrackRef GsftrackRef_; 00060 00061 double deltaP_; 00062 double sigmadeltaP_; 00063 unsigned int indPoint_; 00064 math::XYZPointF positionAtECALEntrance_; 00065 00066 }; 00067 } 00068 00069 #endif 00070