CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10/src/DataFormats/EgammaReco/interface/ElectronSeed.h

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_ ; // hcal over ecal seed cluster energy using first hcal depth
00107     float hcalDepth2OverEcal_ ; // hcal over ecal seed cluster energy using 2nd hcal depth
00108     bool isEcalDriven_ ;
00109     bool isTrackerDriven_ ;
00110 
00111  } ;
00112 
00113  }
00114 
00115 #endif