00001 #ifndef EgammaCandidates_Photon_h 00002 #define EgammaCandidates_Photon_h 00003 00012 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h" 00013 #include "DataFormats/EgammaCandidates/interface/ConversionFwd.h" 00014 #include "DataFormats/EgammaReco/interface/SuperCluster.h" 00015 00016 namespace reco { 00017 00018 class Photon : public RecoCandidate { 00019 public: 00021 Photon() : RecoCandidate() { } 00023 Photon( const LorentzVector & p4, Point caloPos, 00024 const SuperClusterRef scl, 00025 float HoE, 00026 bool hasPixelSeed=false, const Point & vtx = Point( 0, 0, 0 ) ); 00028 virtual ~Photon(); 00030 virtual Photon * clone() const; 00032 virtual reco::SuperClusterRef superCluster() const; 00034 std::vector<reco::ConversionRef> conversions() const ; 00036 void setSuperCluster( const reco::SuperClusterRef & r ) { superCluster_ = r; } 00038 void addConversion( const reco::ConversionRef & r ) { conversions_.push_back(r); } 00040 void setVertex(const Point & vertex); 00042 math::XYZPoint caloPosition() const {return caloPosition_;} 00044 float hadronicOverEm() const {return hadOverEm_;} 00046 bool hasPixelSeed() const { return pixelSeed_; } 00048 bool isConverted() const; 00049 00050 private: 00052 virtual bool overlap( const Candidate & ) const; 00054 math::XYZPoint caloPosition_; 00056 reco::SuperClusterRef superCluster_; 00057 // vector of references to Conversions 00058 std::vector<reco::ConversionRef> conversions_; 00059 00060 float hadOverEm_; 00061 bool pixelSeed_; 00062 00063 }; 00064 00065 } 00066 00067 #endif