00001 #ifndef EgammaCandidates_SiStripElectron_h
00002 #define EgammaCandidates_SiStripElectron_h
00003
00004
00005
00006
00007
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <vector>
00025
00026
00027
00028 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h"
00029 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
00030 #include "DataFormats/Common/interface/RefVector.h"
00031
00032
00033
00034 namespace reco {
00035
00036 class SiStripElectron : public RecoCandidate {
00037 public:
00039 SiStripElectron() : RecoCandidate() { }
00041 SiStripElectron(const reco::SuperClusterRef& superCluster,
00042 Charge q,
00043 const std::vector<SiStripRecHit2D>& rphiRecHits,
00044 const std::vector<SiStripRecHit2D>& stereoRecHits,
00045 double superClusterPhiVsRSlope,
00046 double phiVsRSlope,
00047 double phiAtOrigin,
00048 double chi2,
00049 int ndof,
00050 double pt,
00051 double pz,
00052 double zVsRSlope,
00053 unsigned int numberOfStereoHits,
00054 unsigned int numberOfBarrelRphiHits,
00055 unsigned int numberOfEndcapZphiHits)
00056 : RecoCandidate(q, LorentzVector(pt*cos(phiAtOrigin), pt*sin(phiAtOrigin), pz,
00057 sqrt( pt*pt + pz*pz + 0.000510*0.000510)), Point(0,0,0), -11 * q )
00058 , superCluster_(superCluster)
00059 , rphiRecHits_(rphiRecHits)
00060 , stereoRecHits_(stereoRecHits)
00061 , superClusterPhiVsRSlope_(superClusterPhiVsRSlope)
00062 , phiVsRSlope_(phiVsRSlope)
00063 , phiAtOrigin_(phiAtOrigin)
00064 , chi2_(chi2)
00065 , ndof_(ndof)
00066 , pt_(pt)
00067 , pz_(pz)
00068 , zVsRSlope_(zVsRSlope)
00069 , numberOfStereoHits_(numberOfStereoHits)
00070 , numberOfBarrelRphiHits_(numberOfBarrelRphiHits)
00071 , numberOfEndcapZphiHits_(numberOfEndcapZphiHits) { }
00072
00074 SiStripElectron(const SiStripElectron& rhs)
00075 : RecoCandidate(rhs)
00076 , superCluster_(rhs.superCluster())
00077 , rphiRecHits_(rhs.rphiRecHits())
00078 , stereoRecHits_(rhs.stereoRecHits())
00079 , superClusterPhiVsRSlope_(rhs.superClusterPhiVsRSlope())
00080 , phiVsRSlope_(rhs.phiVsRSlope())
00081 , phiAtOrigin_(rhs.phiAtOrigin())
00082 , chi2_(rhs.chi2())
00083 , ndof_(rhs.ndof())
00084 , pt_(rhs.pt())
00085 , pz_(rhs.pz())
00086 , zVsRSlope_(rhs.zVsRSlope())
00087 , numberOfStereoHits_(rhs.numberOfStereoHits())
00088 , numberOfBarrelRphiHits_(rhs.numberOfBarrelRphiHits())
00089 , numberOfEndcapZphiHits_(rhs.numberOfEndcapZphiHits()) { }
00090
00092 SiStripElectron( Charge q, const LorentzVector & p4, const Point & vtx = Point( 0, 0, 0 ) ) :
00093 RecoCandidate( q, p4, vtx, -11 * q ) { }
00095 virtual ~SiStripElectron();
00097 virtual SiStripElectron * clone() const;
00099 virtual reco::SuperClusterRef superCluster() const;
00100
00102 const std::vector<SiStripRecHit2D>& rphiRecHits() const { return rphiRecHits_; }
00104 const std::vector<SiStripRecHit2D>& stereoRecHits() const { return stereoRecHits_; }
00105
00107 double superClusterPhiVsRSlope() const { return superClusterPhiVsRSlope_; }
00109 double phiVsRSlope() const { return phiVsRSlope_; }
00111 double phiAtOrigin() const { return phiAtOrigin_; }
00113 double chi2() const { return chi2_; }
00115 int ndof() const { return ndof_; }
00116
00118 double pt() const { return pt_; }
00120 double pz() const { return pz_; }
00121
00123 double zVsRSlope() const { return zVsRSlope_; }
00124
00126 unsigned int numberOfStereoHits() const { return numberOfStereoHits_; }
00128 unsigned int numberOfBarrelRphiHits() const { return numberOfBarrelRphiHits_; }
00130 unsigned int numberOfEndcapZphiHits() const { return numberOfEndcapZphiHits_; }
00131
00132 bool isElectron() const;
00133 private:
00135 virtual bool overlap( const Candidate & ) const;
00137 reco::SuperClusterRef superCluster_;
00138 std::vector<SiStripRecHit2D> rphiRecHits_;
00139 std::vector<SiStripRecHit2D> stereoRecHits_;
00140
00141 double superClusterPhiVsRSlope_;
00142 double phiVsRSlope_;
00143 double phiAtOrigin_;
00144 double chi2_;
00145 int ndof_;
00146
00147 double pt_;
00148 double pz_;
00149
00150 double zVsRSlope_;
00151
00152 unsigned int numberOfStereoHits_;
00153 unsigned int numberOfBarrelRphiHits_;
00154 unsigned int numberOfEndcapZphiHits_;
00155 };
00156 }
00157
00158 #endif