CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/DataFormats/TrackerRecHit2D/interface/TrackerSingleRecHit.h

Go to the documentation of this file.
00001 #ifndef TrackerSingleRecHit_H
00002 #define TrackerSingleRecHit_H
00003 
00004 
00005 #include "DataFormats/TrackerRecHit2D/interface/BaseTrackerRecHit.h"
00006 #include "DataFormats/TrackerRecHit2D/interface/OmniClusterRef.h"
00007 
00008 
00009 /*  a Hit composed by a "single" measurement
00010  * it has a reference to a cluster and a local position&error
00011  */
00012 class TrackerSingleRecHit : public BaseTrackerRecHit { 
00013 public:
00014 
00015   typedef BaseTrackerRecHit Base;
00016 
00017   TrackerSingleRecHit(){}
00018   
00019   
00020   typedef OmniClusterRef::ClusterPixelRef ClusterPixelRef;
00021   typedef OmniClusterRef::ClusterStripRef ClusterStripRef;
00022   typedef OmniClusterRef::ClusterRegionalRef ClusterRegionalRef;
00023 
00024 
00025   // no position (as in persistent)
00026   TrackerSingleRecHit(DetId id,
00027                       OmniClusterRef const&  clus) : 
00028     Base(id, trackerHitRTTI::single), cluster_(clus){}
00029   
00030   TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00031                       DetId id,
00032                       OmniClusterRef const&  clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00033 
00034   TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00035                       DetId id,
00036                       ClusterPixelRef const&  clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00037 
00038   TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00039                       DetId id,
00040                       ClusterStripRef const&  clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00041 
00042   TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00043                       DetId id,  
00044                       ClusterRegionalRef const& clus) :  Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00045   
00046   // used by trackMerger (to be improved)
00047   virtual OmniClusterRef const & firstClusterRef() const  GCC11_FINAL { return cluster_;}
00048 
00049   OmniClusterRef const & omniClusterRef() const { return cluster_;}
00050   OmniClusterRef const & omniCluster() const { return cluster_;}
00051   // for rekeying...
00052   OmniClusterRef & omniClusterRef()  { return cluster_;}
00053   OmniClusterRef & omniCluster()  { return cluster_;}
00054 
00055   ClusterPixelRef cluster_pixel()  const { 
00056     return cluster_.cluster_pixel();
00057   }
00058   
00059   ClusterStripRef cluster_strip()  const { 
00060     return cluster_.cluster_strip();
00061   }
00062   
00063   ClusterRegionalRef cluster_regional()  const { 
00064     return cluster_.cluster_regional();
00065   }
00066 
00067   SiStripCluster const & stripCluster() const { 
00068     return cluster_.stripCluster();
00069   }  
00070 
00071   // void setClusterRef(const &  OmniClusterRef ref) {  cluster_ =ref;}
00072   void setClusterPixelRef(ClusterPixelRef const & ref) {  cluster_ = OmniClusterRef(ref); }
00073   void setClusterStripRef(ClusterStripRef const & ref) {  cluster_ = OmniClusterRef(ref); }
00074   void setClusterRegionalRef(ClusterRegionalRef const & ref) { cluster_ = OmniClusterRef(ref); }
00075 
00076 
00077 
00078   virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const  GCC11_FINAL;
00079 
00080 
00081   bool sharesInput(TrackerSingleRecHit const & other) const {
00082     return cluster_== other.cluster_;
00083   }
00084 
00085   bool sameCluster( OmniClusterRef const & oh) const {
00086     return oh == cluster_;
00087   }
00088 
00089   virtual std::vector<const TrackingRecHit*> recHits() const;
00090   virtual std::vector<TrackingRecHit*> recHits();
00091 
00092 private:
00093  
00094  // new game
00095   OmniClusterRef cluster_;
00096  
00097 };
00098 
00099 #endif