00001 #ifndef DataFormats_TauReco_BaseTau_h 00002 #define DataFormats_TauReco_BaseTau_h 00003 00004 /* class BaseTau 00005 * base class 00006 * authors: Simone Gennai (simone.gennai@cern.ch), Ludovic Houchu (Ludovic.Houchu@cern.ch) 00007 * created: Jun 21 2007, 00008 * revised: Sep 4 2007 00009 */ 00010 #include "DataFormats/Math/interface/LorentzVector.h" 00011 #include "DataFormats/TauReco/interface/BaseTauFwd.h" 00012 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h" 00013 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00014 00015 #include <limits> 00016 00017 00018 namespace reco { 00019 class BaseTau : public RecoCandidate { 00020 public: 00021 BaseTau(); 00022 BaseTau(Charge q,const LorentzVector &,const Point & = Point(0,0,0)); 00023 virtual ~BaseTau(){} 00024 BaseTau* clone()const; 00025 00026 // rec. jet Lorentz-vector combining (Tracks and neutral ECAL Island BasicClusters) or (charged hadr. PFCandidates and gamma PFCandidates) 00027 math::XYZTLorentzVector alternatLorentzVect()const; 00028 void setalternatLorentzVect(math::XYZTLorentzVector); 00029 00030 // leading Track 00031 virtual reco::TrackRef leadTrack() const; 00032 void setleadTrack(const TrackRef&); 00033 00034 // Tracks which passed quality cuts and are inside a tracker signal cone around leading Track 00035 virtual const reco::TrackRefVector& signalTracks() const; 00036 void setsignalTracks(const TrackRefVector&); 00037 00038 // Tracks which passed quality cuts and are inside a tracker isolation annulus around leading Track 00039 virtual const reco::TrackRefVector& isolationTracks() const; 00040 void setisolationTracks(const TrackRefVector&); 00041 private: 00042 // check overlap with another candidate 00043 virtual bool overlap(const Candidate&)const; 00044 math::XYZTLorentzVector alternatLorentzVect_; 00045 reco::TrackRef leadTrack_; 00046 reco::TrackRefVector signalTracks_, isolationTracks_; 00047 }; 00048 } 00049 #endif