CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h

Go to the documentation of this file.
00001 #ifndef SiStripRecHit1D_H
00002 #define SiStripRecHit1D_H
00003 
00004 #include "DataFormats/TrackingRecHit/interface/RecHit1D.h"
00005 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h"
00006 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
00007 #include "DataFormats/Common/interface/DetSetVector.h"
00008 #include "DataFormats/Common/interface/DetSetVectorNew.h"
00009 #include "DataFormats/Common/interface/RefGetter.h"
00010 
00011 #include "float.h"
00012 
00013 class SiStripRecHit1D : public RecHit1D{
00014 public:
00015 
00016  SiStripRecHit1D(): RecHit1D(),cluster_(),clusterRegional_(),
00017     sigmaPitch_(-1.){}
00018 
00019   ~SiStripRecHit1D() {} 
00020 
00021   typedef edm::Ref<edmNew::DetSetVector<SiStripCluster>,SiStripCluster > ClusterRef;
00022   SiStripRecHit1D( const LocalPoint&, const LocalError&,
00023                    const DetId&, 
00024                    ClusterRef const&  cluster); 
00025 
00026   typedef edm::Ref< edm::LazyGetter<SiStripCluster>, SiStripCluster, edm::FindValue<SiStripCluster> >  ClusterRegionalRef;
00027   SiStripRecHit1D( const LocalPoint&, const LocalError&,
00028                    const DetId&, 
00029                    ClusterRegionalRef const& cluster);
00030   
00032   SiStripRecHit1D(const SiStripRecHit2D*);
00033 
00034   virtual SiStripRecHit1D * clone() const {return new SiStripRecHit1D( * this); }
00035   
00036   ClusterRegionalRef const&  cluster_regional()  const { return clusterRegional_;}
00037 
00038   ClusterRef const&  cluster()  const { return cluster_;}
00039 
00040   virtual void getKfComponents( KfComponentsHolder & holder ) const ; 
00041 
00042   virtual LocalPoint localPosition() const;
00043 
00044   virtual LocalError localPositionError() const;
00045 
00046   bool hasPositionAndError() const ; 
00047 
00048   
00049 
00050   void setClusterRef(ClusterRef const & ref) { cluster_ = ref; }
00051   void setClusterRegionalRef(ClusterRegionalRef const & ref) { clusterRegional_ = ref; }
00052   
00053   virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const;
00054   
00055   double sigmaPitch() const { return sigmaPitch_;}
00056   void setSigmaPitch(double sigmap) const { sigmaPitch_=sigmap;}
00057 
00058 
00059   virtual std::vector<const TrackingRecHit*> recHits() const;
00060   virtual std::vector<TrackingRecHit*> recHits();
00061 
00062 
00063  private:
00064   void throwExceptionUninitialized(const char *where) const;
00065   
00066   LocalPoint pos_;
00067   LocalError err_;
00068 
00069   // DetSetVector ref
00070   ClusterRef cluster_;
00071 
00072   // SiStripRefGetter ref.
00073   ClusterRegionalRef clusterRegional_;
00074 
00076   mutable double sigmaPitch_;  // transient....
00077  
00078 };
00079 
00080 // Comparison operators
00081 inline bool operator<( const SiStripRecHit1D& one, const SiStripRecHit1D& other) {
00082   if ( one.geographicalId() < other.geographicalId() ) {
00083     return true;
00084   } else {
00085     return false;
00086   }
00087 }
00088 
00089 #endif