CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/DataFormats/EgammaCandidates/interface/SiStripElectron.h

Go to the documentation of this file.
00001 #ifndef EgammaCandidates_SiStripElectron_h
00002 #define EgammaCandidates_SiStripElectron_h
00003 // -*- C++ -*-
00004 //
00005 // Package:     EgammaCandidates
00006 // Class  :     SiStripElectron
00007 // 
00016 //
00017 // Original Author:  Jim Pivarski
00018 //         Created:  Fri May 26 15:43:14 EDT 2006
00019 // $Id: SiStripElectron.h,v 1.14 2008/11/03 17:33:44 nancy Exp $
00020 //
00021 
00022 // system include files
00023 
00024 #include <vector>
00025 
00026 // user include files
00027 
00028 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h"
00029 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
00030 #include "DataFormats/Common/interface/RefVector.h" 
00031 
00032 // forward declarations
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