00001 #ifndef MuonReco_CaloMuon_h 00002 #define MuonReco_CaloMuon_h 00003 00016 #include "DataFormats/MuonReco/interface/MuonEnergy.h" 00017 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00018 #include "DataFormats/TrackReco/interface/Track.h" 00019 00020 namespace reco { 00021 00022 class CaloMuon { 00023 public: 00024 CaloMuon(); 00025 virtual ~CaloMuon(){} 00026 00028 virtual TrackRef innerTrack() const { return innerTrack_; } 00029 virtual TrackRef track() const { return innerTrack(); } 00031 virtual void setInnerTrack( const TrackRef & t ) { innerTrack_ = t; } 00032 virtual void setTrack( const TrackRef & t ) { setInnerTrack(t); } 00034 bool isEnergyValid() const { return energyValid_; } 00036 MuonEnergy calEnergy() const { return calEnergy_; } 00038 void setCalEnergy( const MuonEnergy& calEnergy ) { calEnergy_ = calEnergy; energyValid_ = true; } 00039 00043 float caloCompatibility() const { return caloCompatibility_; } 00044 void setCaloCompatibility(float input){ caloCompatibility_ = input; } 00045 bool isCaloCompatibilityValid() const { return caloCompatibility_>=0; } 00046 00048 int charge() const { return innerTrack_.get()->charge(); } 00050 double theta() const { return innerTrack_.get()->theta(); } 00052 double p() const { return innerTrack_.get()->p(); } 00054 double pt() const { return innerTrack_.get()->pt(); } 00056 double px() const { return innerTrack_.get()->px(); } 00058 double py() const { return innerTrack_.get()->py(); } 00060 double pz() const { return innerTrack_.get()->pz(); } 00062 double phi() const { return innerTrack_.get()->phi(); } 00064 double eta() const { return innerTrack_.get()->eta(); } 00065 00066 private: 00068 TrackRef innerTrack_; 00070 MuonEnergy calEnergy_; 00071 bool energyValid_; 00073 float caloCompatibility_; 00074 }; 00075 00076 } 00077 00078 00079 #endif