Go to the documentation of this file.00001 #ifndef ElectronSeed_h
00002 #define ElectronSeed_h 1
00003
00013 #include "DataFormats/EgammaReco/interface/ElectronSeedFwd.h"
00014 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h"
00015 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
00016 #include "DataFormats/TrajectoryState/interface/TrackCharge.h"
00017 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
00018 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00019 #include "DataFormats/Common/interface/RefToBase.h"
00020 #include "DataFormats/Common/interface/Ref.h"
00021
00022 #include <vector>
00023 #include <limits>
00024
00025 namespace reco
00026 {
00027
00028 class ElectronSeed : public TrajectorySeed
00029 {
00030 public :
00031
00032 typedef edm::OwnVector<TrackingRecHit> RecHitContainer ;
00033 typedef edm::RefToBase<CaloCluster> CaloClusterRef ;
00034 typedef edm::Ref<TrackCollection> CtfTrackRef ;
00035
00036 static std::string const & name()
00037 {
00038 static std::string const name_("ElectronSeed") ;
00039 return name_;
00040 }
00041
00043 ElectronSeed() ;
00044 ElectronSeed( const TrajectorySeed & ) ;
00045 ElectronSeed( PTrajectoryStateOnDet & pts, RecHitContainer & rh, PropagationDirection & dir ) ;
00046 ElectronSeed * clone() const { return new ElectronSeed(*this) ; }
00047 virtual ~ElectronSeed() ;
00048
00050 void setCtfTrack( const CtfTrackRef & ) ;
00051 void setCaloCluster
00052 ( const CaloClusterRef &,
00053 unsigned char hitsMask =0,
00054 int subDet2 =0, int subDet1 =0,
00055 float hoe1 =std::numeric_limits<float>::infinity(),
00056 float hoe2 =std::numeric_limits<float>::infinity() ) ;
00057 void setNegAttributes
00058 ( float dRz2 =std::numeric_limits<float>::infinity(),
00059 float dPhi2 =std::numeric_limits<float>::infinity(),
00060 float dRz1 =std::numeric_limits<float>::infinity(),
00061 float dPhi1 =std::numeric_limits<float>::infinity() ) ;
00062 void setPosAttributes
00063 ( float dRz2 =std::numeric_limits<float>::infinity(),
00064 float dPhi2 =std::numeric_limits<float>::infinity(),
00065 float dRz1 =std::numeric_limits<float>::infinity(),
00066 float dPhi1 =std::numeric_limits<float>::infinity() ) ;
00067
00069 CtfTrackRef ctfTrack() const { return ctfTrack_ ; }
00070 CaloClusterRef caloCluster() const { return caloCluster_ ; }
00071 unsigned char hitsMask() const { return hitsMask_ ; }
00072 int subDet2() const { return subDet2_ ; }
00073 float dRz2() const { return dRz2_ ; }
00074 float dPhi2() const { return dPhi2_ ; }
00075 float dRz2Pos() const { return dRz2Pos_ ; }
00076 float dPhi2Pos() const { return dPhi2Pos_ ; }
00077 int subDet1() const { return subDet1_ ; }
00078 float dRz1() const { return dRz1_ ; }
00079 float dPhi1() const { return dPhi1_ ; }
00080 float dRz1Pos() const { return dRz1Pos_ ; }
00081 float dPhi1Pos() const { return dPhi1Pos_ ; }
00082 float hoe1() const { return hcalDepth1OverEcal_ ; }
00083 float hoe2() const { return hcalDepth2OverEcal_ ; }
00084
00086 TrackCharge getCharge() const { return startingState().parameters().charge() ; }
00087
00088 bool isEcalDriven() const { return isEcalDriven_ ; }
00089 bool isTrackerDriven() const { return isTrackerDriven_ ; }
00090
00091 private:
00092
00093 CtfTrackRef ctfTrack_ ;
00094 CaloClusterRef caloCluster_ ;
00095 unsigned char hitsMask_ ;
00096 int subDet2_ ;
00097 float dRz2_ ;
00098 float dPhi2_ ;
00099 float dRz2Pos_ ;
00100 float dPhi2Pos_ ;
00101 int subDet1_ ;
00102 float dRz1_ ;
00103 float dPhi1_ ;
00104 float dRz1Pos_ ;
00105 float dPhi1Pos_ ;
00106 float hcalDepth1OverEcal_ ;
00107 float hcalDepth2OverEcal_ ;
00108 bool isEcalDriven_ ;
00109 bool isTrackerDriven_ ;
00110
00111 } ;
00112
00113 }
00114
00115 #endif